摘要:四天把四个AI英语老师从「能说话」打磨到「像四个不同的人说话」。语速太快查出三层叠加病因——克隆服务裸速方差30%、设置覆写归零、音视频时钟错配,最终用动态语速归一化治本;口型贴错脸用per-avatar嘴锚点救回;重复自我介绍的根因竟是「说了的话没写进对话记忆」。全部里程碑按真实排错口径复盘,含可直接抄的验收方法。

四个AI英语老师里程碑

里程碑一:四个老师,一人一格——形象、声音、灵魂一体化切换

产品要四个 AI 老师:有的指方向、有的抠表达、有的接话茬、有的深挖问题。第一版所有老师共用一份提示词、一个音色、一张脸,学生问”你是谁”得到的是同一套话——串魂。

治法三件套:

  1. 灵魂 MD 真源:每个老师的完整人设存独立 Markdown,后端按形象重建 persona.json,改动热重载即刻生效,不重启服务。
  2. 见面语逐字锁定:每位老师一句专属开场白(例如”Hey, I’m Lingfeng. Say something—I’ll help you keep it going.”),语音链路逐字朗读,禁止 LLM 即兴改写。
  3. 强制对齐:切换老师 = 服务端同时改写形象、克隆音色、灵魂提示词三字段,前端选老师/点封面自动跟随;不存在”换了脸没换声”的中间态。

里程碑二:语速”太快”的三层病因——一次反馈,三个根因

用户反馈”声音太快,跟样本差太多”。直觉是调一个倍速参数,实测查出三层独立病因叠加:

语音链路三层根因分层排查

  • 病因A 克隆服务裸速天生偏快:TTS 服务读同一文本比参考样本快 9~26%,实测见面语 187 wpm(正常母语 130~150)。
  • 病因B 设置页覆写归零:语速档位字段被 UI 保存整体重写回 +0%,补偿悄悄失效——修了又坏就是这么来的。
  • 病因C 音视频时钟错配:推流侧每帧塞 640 样本、每 20ms 帧时钟只认 320 样本,浏览器抖动缓冲区直接 2 倍加速——快、糊、嘴没说完音先完,三合一全是它。

治法:

  • C 用”每帧拆两包 320 样本”根治,音频轨与视频轨时长实测误差 <0.03s。
  • A+B 升级为动态语速归一化:合成后实测本轮裸时长,按逐位目标 wpm 反推伸缩量,成品语速钉死在 145~175 wpm。关键发现:克隆服务同一句话连读 6 遍,裸时长极差高达 30~35%——静态校准系数只能修均值、修不了方差,这正是”忽快忽慢、很多字听不到”的真凶。

里程碑三:口型从”换贴纸”到”真的在说话”

固定嘴型图层替换方案(9 张 viseme 贴图按音素序列切换)实测比视频重绘模型(MuseTalk 类)清晰且省算力,但有两个坑:

viseme 嘴型图层与嘴锚点

  1. 嘴框硬编码四角色共用:贴框坐标按一个角色标定,另一个角色嘴实测偏移 (-20,+28) 像素——每句话口型都贴在鼻子上。治法:per-avatar 嘴锚点表 + 缩放 + 边缘羽化 + “白下巴”像素保护,未登记角色走原路径像素级不变。验收用引擎真实推流帧做 HSV 口腔质心检测:修复后质心偏移 ≤2px、开合摆动 1223px²。
  2. 辅音保持时间塌缩:整句语素时长按比例压缩后,闭唇音只剩 26ms(1 帧),学生根本看不到”闭嘴”。下一步:形态补间过渡 + 最短保持时间 + 协同发音(下一个圆唇音素提前收圆)。

里程碑四:重复自我介绍——语音说了,记忆不知道

开场白连麦自动朗读后,用户一开口,老师又自我介绍一次。改提示词禁止?实测四次仍有一次漏网(约 75% 遵从率)。

语音输出写入对话记忆

真根因是结构性的:开场白走”回声”通道直接进语音合成,从未写入 LLM 对话历史——模型不是不听话,是真的不知道自己已经说过话。治法:任何离开口的固定话术同步写入会话历史(note_spoken),提示词只留被动引用(被问名字才报名字)。真实产品路径 E2E 两轮全过:打招呼不再自我介绍、问名字答名字、要求介绍才逐字背见面语。

里程碑五:排错口径本身也是产品

四天里最有效的不是任何单个修复,而是三条取证纪律:

  1. 只认引擎真实推流路径:设置页测试接口一切正常 ≠ 学生连麦一切正常(直播链路走引擎会话,测试走后端旁路——两套代码修一套漏一套)。
  2. 测量口径必须与验收指标同源:用”检出有声帧数”估时长,门限把词间断音切碎就低估 30%——差点把正常音频误判成”太快”。最终口径=引擎日志里合成管线实际推送的样本数,换算即秒。
  3. 每个数值都要跨帧/跨轮验证:素材质心跨 10 帧 σ=0.0/1.7 才敢定标;同句连读 6 遍才发现 35% 方差;”绿帧”告警复跑 331 帧 0 命中,判定为客户端解码伪影,不为它改一行业务代码。

成果清单

能力 状态
四老师形象/音色/灵魂一体切换 + 热重载 ✅ E2E
音色下拉与克隆预置分线、防误切老师守卫 ✅ E2E
音视频时钟错配根治(快/糊/口型滞后三合一) ✅ 帧时长误差 <0.03s
动态语速归一化(治 30% 裸读方差) ✅ 成品钉死目标 wpm
口型 per-avatar 嘴锚点(救贴错位置) ✅ 质心偏移 ≤2px
重复介绍结构性修复(语音写入记忆) ✅ 真实路径两轮全过

下一篇:Mouth Rig 2.0——嘴骨架参数化、4× 超采样重绘、形态补间与协同发音时间映射。