AI 翻唱为什么听起来沙哑?我们是这样测出来的
AI 翻唱为什么会有破音和沙沙声?来自 MuziAI 换声流程的真实测量:误导我们的尺子、会被复制的沙哑样本,以及 12 秒对 24 秒。
作者:MuziAI 团队。文中数据来自我们在开发 MuziAI 时亲自做的测量;初稿借助 AI 撰写,每个数字都已对照我们的测量记录核实。更新于 2026年10月13日。
把一首歌换成你自己的声音(AI 翻唱)时,结果有时听起来沙哑、有破音,像被切成了碎片。我们为此做了很多轮测试,途中至少弄坏了九把自己的尺子。简短的答案是:挺过所有修复的沙沙声,藏在你上传的声音样本里。 换声模型会复制样本的粗糙度,滤波去不掉它,唯一的办法是换一个更好的样本。

第一次测量说「跑调」,结果是错的
这条流程分三步:人声分离器把歌声从混音里取出来,换声模型换上你样本的音色,新的人声再放回原伴奏上。下文的大部分测量是在早先的零样本(zero-shot)换声模型上做的,它无需训练;对于「我自己的声音」,本站现在会为每个任务训练一个临时的小型声音模型,并在 24 小时内删除。
我们第一次检查的是原人声与新人声之间的音高相关性:0.722,看起来像是「机器唱错了音」。仔细一看,偏差中位数是 0.00 个半音,MAD 为 0.10,1,197 帧里有 33 帧(2.8%)恰好跳了一个八度,这是音高追踪器的典型错误,而不是演唱错误。去掉这些帧,相关性就是 0.994。从那以后,我们用偏差中位数、MAD 和落在 ±1 个半音以内的帧比例来报告音高(第一首测试歌曲为 92.6%)。
第二个教训:换声模型是随机的。同样的设置跑五次,波动范围达 0.064,比我们当时在比较的五个候选声音之间 0.046 的差距还大。所以现在凡是要据此下结论的比较,每个分支至少跑五次。下文的「σ」数字表示相差多少个标准差。
「沙哑」测出来是什么样子
破碎感明明听得出来,可之前的三项测量都说「没问题」:0.0% 的帧失声,振幅起伏 3.17 dB(真人歌手为 3.13),没有音高跳变。声音够响,音也准,但谐波已经碎成了噪声。周期性指标能抓住这一点:
| 失去周期性的帧 | 频谱平坦度 | |
|---|---|---|
| 原人声 | 35.0% | 0.0047 |
| 换声之后 | 47.7% | 0.0148(高 3.1 倍) |
其中一部分是嘶嘶声:波形生成器在 8 kHz 以上多加了 5 到 7 dB。在一个截止于 16 kHz 的音源上,输出的 16 到 20 kHz 频段为 −23.2 dB,而真人声音是 −38.7:100% 是凭空生成的,可以去掉。
但破音还在。语音学用 jitter(相邻声带振动周期在长度上的差异)和 shimmer(它们在振幅上的差异)来衡量粗糙、沙砾般的嗓音。我们使用的分析工具里,正常嗓音的 jitter 阈值是 1.04%。我们之前的任何一项测量都看不到它。
沙哑的样本会带进翻唱吗?
我们先说会,后来又收回了。本站开发者自己用手机录的一段样本,包络抖动是干净演唱样本的 2.8 倍,可在歌曲固定、只换样本的情况下,包络指标显示输出只差了 10%。这项指标追踪的是响度起伏,而不是周期之间的变化。
换成 jitter 来测,结论反转:干净样本的输出为 0.92%,手机样本为 1.67%(+81%,18.3σ)。手机样本本身的 jitter 为 2.27%,shimmer 为 11.0%,这些问题本来就在录音里(半说半唱的方式、句尾的沙砾音、手机麦克风)。压缩不是原因:30 kbps 编码只让干净样本从 1.03% 变到 1.10%。分离也不是(抖动 +4%,1.3σ),混响也不是(+5%,2.3σ)。换声模型会复制样本的嗓音质感。
同一天,另外两个结论也以同样的方式出了错。有一个引导参数曾对所有样本一律设为 0,理由是它在干净样本上把嘶嘶声降低了 43%,可它同时让 jitter 升高了 15%(6.5σ)。一个音高缺口补丁被否决,因为失声指标把它判为噪声,而 jitter 显示它以 3.7σ 胜出。规则是:为问题 A 打造的指标,没有资格评判针对问题 B 的修复。
| 设置 | Jitter,干净样本 (%) | Jitter,手机样本 (%) |
|---|---|---|
| 引导 0,无补丁 | 1.034 | 1.718 |
| 引导 0,音高缺口补丁 | 0.959 | 1.617 |
| 引导 0.3,音高缺口补丁 | 未测量 | 1.439 |
| 引导 0.7,音高缺口补丁 | 0.866(嘶嘶声翻倍) | 1.398 |
上线的方案:用最不沙哑的一秒片段拼出 24 秒样本(输出 1.718 → 1.580%,3.6σ),补上音高缺口,用户样本使用引导 0.7。手机样本完整跑一遍,jitter 从 1.50% 降到 1.26%,shimmer 从 7.89 降到 5.29,HNR 从 17.8 升到 19.4 dB,代价是换声步骤慢了约 50%。
天花板也在这里。那段样本只有 29 秒的演唱,而流程需要 24 秒,所以挑选器只能去掉最差的 5 段(2.14 → 1.96%)。它最好的一段仍有 1.37%,比干净歌声的中位数(0.94%)还粗糙。样本本来没有的清晰度,机器变不出来。所以本站现在会在上传时测量样本的粗糙度,从 1.5% 起给出提醒:手机样本在约 11 秒时报出 2.13%,而一段干净的 24 秒演唱样本报出 0.96%,没有触发提醒。
样本用 12 秒还是 24 秒?
本站起初把样本截到 12 秒,因为样本越长越慢:同一首 247 秒的歌,20 秒样本换声用了 253 秒,截成 12 秒的用了 162 秒(−36%)。「样本更长并不会更像」这个说法是从模型架构推断出来的,从没测过。所以我们测了,每个分支五次,在一段任何样本都不包含的歌手声音上打相似度分(0.750 表示未换声,0.866 是同一个人在另一段的声音):
| 长度 · 起点 | 相似度 | 频谱平坦度 |
|---|---|---|
| 6 s · 第 0 秒 | 0.747 | 0.0287 |
| 12 s · 第 0 秒 | 0.762 | 0.0298 |
| 12 s · 第 12 秒 | 0.795 | 0.0114 |
| 18 s · 第 0 秒 | 0.766 | 0.0373 |
| 24 s · 第 0 秒 | 0.804 | 0.0188 |
| 24 s · 第 20 秒 | 0.831 | 0.0148 |
| 28 s · 第 0 秒 | 0.810 | 0.0235 |
每个 24 秒窗口的相似度都胜过每个 12 秒窗口,而且起点和长度一样重要。在手机样本上,从 12 秒加到 24 秒让相似度从 0.684 升到 0.747(6.8σ),破音却纹丝不动。更长的样本解决的是「像不像我」,而不是破音。 我们之前做过一个给样本打分的经验规则,它给 24 秒窗口排出的顺序与真实结果正好相反,所以被我们扔掉了。
局限与未解的问题
- 越南语的效果比英文差约三倍:失声帧占 2.9%,英文为 1.0%(噪声范围 0.7 个百分点)。辅音会被换掉:「Gà gáy vang trời」变成了「cáo kẽ vang trời」,「hỏi」变成了「khỏi」。尚未修复。
- 事后滤波没有帮助:给输出降噪反而让平坦度更差,卡拉 OK 分离加去混响让相似度下降了 0.028。粗糙感就在机器生成的谐波里面,而不是叠在上面。
- 原曲也有影响:输出比原曲脏 2 到 3.6 倍。平坦度为 0.0047 的原曲,输出约为 0.011;截止于 16 kHz 的翻录文件(0.0070)输出约为 0.025。
- 1.5% 的提醒阈值只基于三个数据点(2.14%、0.94 到 1.03%、0.79%)。浏览器录音器关闭了回声消除、降噪和自动增益,这是标准做法,但尚未用真实麦克风验证。
- 对这个换声模型做按声音单独微调,在一次测试中把相似度分数从 0.64 提高到 0.73,但这个分数来自换声模型自带的声音编码器,它会偏袒自己的输出。后来用一个独立的声音比对模型复查,没有任何提升(两者都是 0.647)。本站此后改用了另一种按声音定制的方法,所以本文中的零样本数字描述的是早先的流程。
做翻唱时怎么用这些结论
- 唱,别说。 半说半唱的句子和句尾的沙砾音会被原样复制到输出里。
- 在安静的地方录 20 到 40 秒真正的演唱。 本站使用 24 秒的演唱;少于 15 秒会触发提醒。
- 上传后几秒留意提醒框。 达到 1.5% 或以上,就重新录制样本。
- 用高质量的歌曲文件。 截止于 16 kHz 的翻录文件,得到的伴奏也会在那里被截断;音源低于 17 kHz 时本站会提示你。
- 选一个与歌曲音域接近的样本。 在单次测试中,降一个八度(女声歌曲、男声样本)得到的 jitter 为 1.28%,保持原调为 0.75%,但与样本的相似度分别是 0.74 和 0.52。
- 越南语歌曲,回听时留意被换掉的辅音,比如 h/kh 和 g/c。
立即在 MuziAI 试用
免费,无需注册。输入一个创意,AI 自动写词并生成完整歌曲。
生成歌曲