发布于 更新于 约 6 分钟读完 · 2,156 字

本文目录 10 节
  1. 一句话律
  2. 背景
  3. 原理:拼音级评分把症状分离
  4. 方法步骤(可照做)
  5. 多音字换稿铁律的新实例
  6. 排错与边界(实测踩坑)
  7. 新实例:ASR 也能抓 audio tag 泄漏(2026-08-05)
  8. 新实例:AI 同期对白的逐字核对与字幕定时(2026-09-29)
  9. 落地工程(库外裸路径)
  10. 关联文档

TTS 旁白也能蒙眼质检 — ASR 拼音级评分与多 take 选优

入档:2026-07-02 触发项目:desk-pond《工位池塘》发布视频旁白修复轮(创作者反馈:语言不清、口水音重、多音字读错) 性质:蒙眼剪辑法的 TTS 质检域扩展。AI 听不见 TTS 的好坏,但 ASR 听得见——用代码”听”,人只做最终验收。

一句话律

无调拼音错误率量咬字,有调减无调量声调;系统性声调偏差换稿不抽卡。

背景

ElevenLabs 生成的中文旁白,创作者审听报出三个问题:咬字含糊、口水音重、多音字读错。AI 无法听音频,以往只能”改参数→请人再听”盲迭代。本轮验证了一条闭环:用本地 Whisper 转写 + 拼音级评分,把三个听感问题拆成可测量的指标,人只在最后验收一次。

原理:拼音级评分把症状分离

直接对比汉字转写会被同音字污染(池塘→吃堂不是咬字问题,是 ASR 选字)。转成拼音后分两把尺:

无调拼音 CER   = 纯咬字清晰度(同音字不计错)
有调 CER − 无调 CER = 声调/多音字误读残留

desk-pond 实测:问题版无调 CER 34.1%(ASR 都听不懂),修复版 0.8%。声调差把”染上”读成 rán、“任务”读成 rénwù 这类误读精确定位到字。

方法步骤(可照做)

  1. 归因先查官方:咬字含糊/多余杂音 → ElevenLabs 官方 troubleshooting 明确指认 style 过高产生”语速不稳、发音错误、多余杂音”(建议归零),stability 过低产生”含糊、怪异表演”。desk-pond 从 style 0.45/stability 0.38 改到 style 0/stability 0.50,咬字指标直接从 34.1% 修到接近噪声底。
  2. 每段多 take 抽卡(同参数 3 take),ASR 无调 CER 评分自动选优——TTS 输出方差大,选优比调参便宜。
  3. 声调残留分类:落在多音字上且多 take 一致 → 系统性偏差,换稿(见铁律);落在单读音字上 → 不存在”读错多音字”的可能,属 ASR 噪声或语气尾音,不追。
  4. 换稿后同尺复测,声调差应归零(desk-pond 三个问题句:0% / 0% / 3.8%)。
  5. 口水音三重处理:style 归零(除源)→ adeclick(去口点)→ 温和噪声门 agate(threshold -36dB/ratio 2/最多压 ~10dB,压间隙不动语音)。间隙电平实测再降 0.4–4.5dB。
  6. 人只验收一次:以上全部跑完再请创作者听,而不是每改一版听一版。

多音字换稿铁律的新实例

母本规则见 2026-06-09_Remotion全片音频字幕BGM复盘_v1(误读就改写法,不搞注音/SSML,caption=ttsText 同步)。本轮新增三例:

误读换稿
染上(rǎn→rán,3 take 一致)对工作上瘾
一项任务(rèn→rén)做完一件事
只增不减(zhǐ→zhī)、漏了(lòu→lóu)只会变多,不会变少。哪天没来

判据升级:多 take 一致误读 = 模型系统性偏差,继续抽卡无解(同 蒙眼剪辑法_方法论笔记_v1 洞察 5”训练数据盲区绕开不硬怼”的 TTS 版)。

排错与边界(实测踩坑)

  • ASR 噪声底约 5%:whisper-small 对短句的解码有边界抖动(同一 take 带静音转写全对、掐掉静音”瘾”翻成”营”)。单句 CER ≤5% 不要再追,那是尺子的极限不是音频的问题。
  • 处理器会伤懒音色的字尾:噪声门/adeclick 对”慵懒拖尾”型音色的句尾轻音有破坏风险——每次处理后必须 ASR 复测,发现指标变差就对该段回退处理。
  • 间隙杂音密度、adeclick 检测率都不是合格的口水音指标(气声/辅音污染读数,对任何语音都报 3.5–4%)。可信的是:除源(style)+ 处理(declick/gate)+ 间隙电平差,最终听感仍归人耳。
  • 慵懒听感的真相:低 stability/高 style 带来的”懒”是不稳定副产品,修参数后语速从 2.9 字/秒回到 5+ 字/秒。想要”懒但清晰”,慵懒要靠 Voice Design 描述承担,不靠参数摇骰子。
  • 国内网络 whisper 模型下载:huggingface_hub 直连/镜像均失败,用 curl 经本地代理逐文件从 hf-mirror 拉,库加载本地目录。

新实例:ASR 也能抓 audio tag 泄漏(2026-08-05)

同一把尺子的新用法。Eleven v3 有个已记录的失效模式:音色与要求的表演不匹配时,模型会把 [sighs] 这类标签当普通文本念出来——成片里出现角色一本正经念出英文单词,而且要到剪辑时才发现。

这个失效完全可以机检:转录一遍,看中文台词里有没有蹦出标签词。判据比拼音 CER 还简单,是个二值判断。

《1000人后室大逃亡》配音工序实测:3 个音色 × 4 组(无 tag / 中文台词+英文 tag / 中文台词+中文 tag / 英文对照)= 12 次,零泄漏。顺带发现两条:

  • 中文 tag 至少不比英文差:[叹气] 三个音色里两个产生可听见的叹气(转录里出现「唉」——那是叹气声被转成了字,不是把标签念出来),[sighs] 只有一个。原假设”只能用英文 tag”被推翻
  • stability: creative 让 tag 响应明显更强(A/B 时长差 +24.5% vs 两个 natural 的 −3.1%/+6.6%)

⚠️ 边界:ASR 只能抓”念出来”这一种失效。情绪对不对仍然要听——机器分不出「叹了口气」和「假装叹了口气」。这仍是”机器压候选、人做裁决”的骨架。

新实例:AI 同期对白的逐字核对与字幕定时(2026-09-29)

77《右下角的池塘》的 M04 是 Seedance 2.5 带同期声生成的 28 秒两人对白。同一把尺子做了两件事:

  1. 逐字核对:faster-whisper(large-v3-turbo)转写,和提示词里的 8 句台词比对,逐字一致,没有漏句、加句。视频模型念台词,也能像 TTS 一样机检。
  2. 给字幕定时:开 word_timestamps,按句取起止。这里有两个坑:
    • 词起点会被拉长:句首词的起点常被标早。“你摸鱼它就空军”标在 20.84 秒,实际起音在 21.56 秒;“这个”被标成 4.70–6.28。直接拿去当字幕入点,字幕会比说话早出来大半秒。
    • 句尾幻听:最后一句后面,它多听出一个”好。“,那里没有任何人声。
    • 解法:用能量包络校准。音频滤到 120–4000Hz,算 10ms 帧的 RMS,以底噪 10% 分位 +14dB 为阈值,找出每段人声的真实起止;whisper 只负责”哪几个字属于哪一句”,时间以包络为准。没有能量的”句子”直接丢掉。
    • initial_prompt 放进剧本台词,专名和断句更准。
    • 边界(2026-10-01,⚠️首次):上一条只适用于”台词肯定念了,只需要切句、定时间”的情况。如果要核对的是”到底念没念”,尤其是单字、气声这类短台词,不要给 initial_prompt。
      • 71_余温 瑟兰薇 PV 只有一个”嘘”。给了 initial_prompt="嘘。" 之后,whisper 在风声、脚步声上也转出了”嘘”。
      • 不给提示词、整段一起转,又会漏掉结尾那声气声。
      • 最后的做法:不给提示词,每 6 秒一窗分段转写,再用 VAD 确认哪里真有人声。
      • 守灯人那条,whisper 在 6–8 秒幻听出两个”好”,VAD 只在 26.96–30.09 秒检出人声,以 VAD 为准。
      • 来源 2026-10-01_余温_见证者角色PV_立项到四平台发布_复盘_v1

字幕规范和烧录做法见 影视级双语字幕_中上英下与libass逐镜头烧录_v1。

落地工程(库外裸路径)

E:\desk-pond\promo\video\scripts\(tts.mjs 多 take 生成 / pick_best.py 选优 / verify_final.py 拼音级终验 / gate_and_measure.py 噪声门+间隙电平)

关联文档

类型/IP视觉工具/ElevenLabs工具/Whisper主题/蒙眼剪辑