点击上方蓝字关注我

|
|
|
正文
自从上次发了那个本地部署的实时语音数字人源码项目文章后,有不少朋友在问,想学开发数字人,但没基础不知道从何下手,问能不能跟我学。挨个单独教我肯定没时间,另外,我对自己也很了解,半桶水的代码都是网上自学非科班出身,很怕误人子弟,都是一一婉拒了。
实时对话AI数字人源码,我用一周时间重写了实时数字人:按住说话,就能和你聊天,还会换装,语音识别+大模型+实时视频合成+角色切换
但我总是各种念头想法,明明出来散步晒太阳逼着自己离开电脑,但脑子里想法一下就来了。比如,就拿这个训练数字人,其实很简单啊,我可能说不清楚,但我可以写一个示例代码给你看啊,让你根据这基本的流程跑一个结果出来啊,你不就搞懂了。
所以,回家就写了这篇文章,算是说清楚了一个能对口型的数字人是怎么来的。
也有人问,手头没有GPU,能不能用CPU训练? 我把这个项目起名叫Easy_Human,它也可以用cpu训练,它能做的事情挺直观的:用一段人物视频和一段音频,它就能训练出一个基础的模型,让视频里的人按照音频的节奏张嘴说话。听起来简单,但实际上它所包含的技术原理已经被广泛地应用到了各种高级的数字人项目当中。
源码在最后,需要的可以下载参考,开源免费!
它到底在做什么?
简单说,这个项目训练的是一个"翻译器"。只是翻译的不是语言,而是把音频信号翻译成嘴型动作。
想象一下,你对着镜子说话,镜子里的你也在说话,我们要做的,就是让AI学会这种"同步"——听到什么声音,就做出对应的嘴型。
核心要点
1. 音频包含语音信息
-
音频不只是声音,还包含“是什么音”的信息 -
例如“a”音、“o”音、“i”音
2. 口型有规律
-
不同音的口型不同 -
“a”音嘴巴张开,“o”音嘴巴圆形
3. AI学习对应关系
-
看大量“音频+口型”配对 -
学会“什么音对应什么口型”
4. 推理时应用
-
听到新音频 -
根据学到的规律生成对应口型
为什么有效
-
规律性:人类说话有规律,同样的音对应基本相同的口型 -
可预测性:听到“啊”可以预测嘴巴张开 -
大数据学习:训练数据越多,学习效果越好
最简单的类比
就像翻译:
-
音频是“源语言”(包含语音信息) -
口型是“目标语言”(需要生成的视觉信息) -
AI是“翻译器”(把音频“翻译”成口型)
整个流程分三步:预处理、训练、推理。
预处理就是把视频里的人脸抠出来,把音频转换成特征。训练就是让模型学习"听到这个声音,应该长什么样"。推理就是给一段新音频,生成对应的嘴型。
有点像学外语,先背单词(预处理),然后练习对话(训练),最后实际应用(推理)。
我最近在准备学外语,哪位朋友有好的学英文的工具或者方法论,可以传授一下,感谢
技术原理:U-Net的另一种用法
项目用的是U-Net架构。如果你做过图像分割,应对这个架构不陌生,这里用它来做音频到图像的映射。
U-Net的特点是有编码器和解码器,中间有个瓶颈层。在这个项目里,编码器处理人脸的下半部分(主要是嘴部区域),解码器生成新的嘴型。音频特征在瓶颈层融合进去,就像给模型一个"提示":现在该说什么话了。
具体来说,模型接收两个输入:人脸下半部分(168x84像素)和音频的Mel特征(80维)。输出是生成的人脸下半部分。
CPU训练?真的可以
这是很多人关心的问题。答案是:可以,但要有心理准备。
项目支持CPU训练。训练脚本里有设备选择逻辑,默认是auto,会自动检测有没有GPU。如果没有,就用CPU。你也可以明确指定--device cpu。
但CPU训练会慢很多。粗略估算了下,如果用CPU训练,一个epoch可能需要几十分钟甚至更久,而GPU可能只需要几分钟。如果你有几千帧的训练数据,训练100个epoch,CPU可能要跑好几天。
如果你只是学习原理,或者数据量不大,CPU完全够用,推理也能跑。
怎么用?
使用流程挺简单,以下是我认为需要注意的地方。
首先是数据准备。你需要一个2-5分钟的视频,帧率25fps,音频采样率16000Hz。视频里最好只有一个人,而且人脸要清晰。如果视频里人动来动去,或者光线不好,效果会打折扣。
然后运行预处理脚本,提取人脸和音频特征。这一步会生成两个文件夹:face/存人脸图片,audio/存音频特征。如果视频有1732帧,就会生成1732张人脸图片和1732个音频特征向量。
接下来是训练。运行python train.py,模型就开始学习了。训练过程中,你可以看到loss在下降。如果loss一直不降,可能是学习率太大,或者数据有问题。
训练完成后,会生成两个模型文件:best.pth和last.pth。通常用best.pth,这是验证集上表现最好的模型。
最后是推理。把你要用的音频文件放到input/文件夹,运行python inference.py,模型就会生成对应的嘴型。然后再运行python reapply_faces.py,把生成的人脸贴回原视频,就得到最终结果了。
一些细节和坑
这个项目,还有几个地方需要注意。
一个是数据对齐。视频帧和音频特征必须一一对应,否则训练出来的模型会"口型不对"。项目里有对齐逻辑,但如果你自己准备数据,要确保帧率匹配。
还有一个是batch size。CPU训练时,batch size不要设太大,否则内存可能不够。默认是8,如果内存紧张,可以改成4甚至2。
训练时如果loss一直不降,可以试试降低学习率。默认学习率是3e-6,已经比较小了,但如果还是不行,可以再调小一点。
关于CPU训练的补充说明
实际使用中,CPU和GPU的差距主要体现在速度上。CPU是串行计算,GPU是并行计算。对于深度学习这种计算密集型任务,GPU的优势很明显。
写在最后
这项目主要还是学习,我训练这个示例模型的时间只花了几个小时,视频素材时长也只有不到一分钟,所以它的效果还不够好,可以看到数字人的嘴部区域还有些模糊,主要是走一个完整的流程,从数据预处理到模型训练,再到推理应用,每一步都有代码,都有注释。
对于想入门数字人技术的开发者来说,可以让你知道了解U-Net是怎么用的,音频特征是怎么提取,模型是怎么训练的。这些知识,比单纯调用API更有价值。
在公众号:老成教你玩互联网 上回复【easyhuman】即可免费下载。
另外特别说明一下,因时间精力有限本人不闲聊也不接受任何的免费咨询,请不要来pua我,我谢你。下面这个案例演示的源码有售。
实时对话AI数字人源码,我用一周时间重写了实时数字人:按住说话,就能和你聊天,还会换装,语音识别+大模型+实时视频合成+角色切换
跟我学AI+自媒体,一人公司创富不是梦!
更多AI黑科技软件系列:
一键直播换脸软件,开源免费,整合一键包,低配电脑cpu可运行
一键追爆款数字人系统源码,是作弊吗?抖音你在怕什么:数字人+AI改写+一键追爆款,数字人替普通人出镜,24小时自动生产爆款视频
公众号自动化运营神器,一键公众号文章生成配图排版发布工具,本地部署源码#公众号运营 #公众号运营教程
图片人物唱歌模型,本地部署一键整合包,我愿称之为迄今为止最强的模型#图片人物唱歌 #数字人MV #AI唱歌视频
实时对话AI数字人源码,我用一周时间重写了实时数字人:按住说话,就能和你聊天,还会换装,语音识别+大模型+实时视频合成+角色切换
AI自动修图神器,LuminarNeo最新免费版,全网都收费
AI图片高清放大工具,免费下载Upscayl一键秒变高清大图


