最近瞎琢磨着搞点虚拟人,寻思着能不能用AI捏个会聊天的数字分身。翻箱倒柜搜刮工具,发现GitHub上有人用ElevenLabs语音合成搭Live2D模型,一拍大腿就开干。
第一步:攒材料
先在Discord找了几个开源角色卡,全是二次元虚拟主播风格。挑了张金发双马尾的,结果压缩包解开来傻眼:
- Live2D的.cmo3文件像天书
- 角色骨骼参数密密麻麻五百多条
- 贴图碎片拼得我老眼昏花
硬着头皮用Cubism编辑器调了三晚上,总算让虚拟妹子能眨巴眼睛了。
撞上语音墙
本想用微软TTS凑合,试出来效果跟新闻联播似的。改道跑ElevenLabs克隆自己声音,手机录了二十段绕口令上传,生成后一听:好家伙!我原声带点东北碴子味,AI硬给修成央视播音腔。
又喂了五十段带方言的录音,这回连"嘎哈"都能模仿得惟妙惟肖。顺便把B站收藏的郭德纲相声也喂进去,结果虚拟人突然蹦出"你丫找抽"——得,紧急加了个敏感词过滤器。
接神经线
最难的是让模型动嘴对音频。原本想搞实时驱动,结果显卡风扇狂转像拖拉机。退而求改嘴巴动作预生成,用Python写了个脚本:
- 把语音切成0.1秒小片段
- 分析每段频率峰值
- 映射成十二档张嘴幅度
导出时发现时间轴错位,虚拟人说完话还嘎巴嘴三秒钟。熬夜重调时间戳校准,咖啡灌到凌晨四点才搞定。
翻车现场
得意洋洋演示给媳妇看,虚拟人张口就问:"主人今天要看黑丝吗?"当场被拧着耳朵质问代码里掺了啥私货。查了半天发现是测试时乱填的prompt模板没删干净,赶紧把几十条危险示例全清了。
现在这虚拟人总算能正经聊天,虽然偶尔还会突然狂眨眼睛,活像进了沙子。放段成果你们感受下:"今天天气真...哈啾!抱歉程序卡了个喷嚏"——得,看来bug也是种萌点?