Kokoro-82M 能否蒸馏为 8M 参数的单说话人语音合成模型?

Paradee 将 Kokoro-82M 蒸馏为 8.07M 参数模型,单 CPU 线程达 25 倍实时,UTMOS 4.41,教师为 4.52。

直接答案

可以,但仅限单一说话人。Paradee 沿用 Kokoro 的架构,只是把各层大幅收窄,文本侧与解码器分别针对冻结的教师模型训练,最终达到 8.07M 参数、int8 存储 8.45MB、单 CPU 线程 25 倍实时,UTMOS 4.41,教师为 4.52。

1篇文献引用

本文由 WisPaper 驱动的搜索和论文分析生成。

用十分之一参数换来了什么

Paradee 是 Kokoro-82M 的单说话人学生模型,只训练朗读 af_heart 这一音色。它有 8.07M 参数,教师为 81.8M;所需算力少 15 倍;int8 存储为 8.45MB,而 fp32 为 32.5MB。在 200 句留出句子上,它的 UTMOS 为 4.41,教师为 4.52,词错误率同为 5.7%,在单 CPU 线程上达到 25 倍实时。

速度提升小于算力提升:在主对比的 PyTorch 实现中只比教师快 3.3 倍,因为在这个规模下,PyTorch 对小卷积和 LSTM 的逐算子开销占主导。相位锁定滤波器约占运行时间的 5%。int8 量化在 UTMOS 上没有可测量的损失,但量化到 4 位时,早先在 3 句上的测试中解码器 UTMOS 降到 3.98,因为小模型没有冗余通道来吸收舍入误差。

两半分别针对冻结教师训练

Kokoro 由两半组成:文本侧预测时长、音高、能量和音素特征,解码器把它们变成音频。论文先用教师模型处理 WikiText-103 中的 12,000 句英文,生成 23.9 小时音频,并保存音素、时长、F0 与能量轮廓、音素特征和波形。这些保存的输出成为学生模型两半的训练数据。

随后每一半都被缩小,并针对冻结的教师训练,教师只提供目标、权重从不更新。学生文本侧读取音素,在教师强制下用 L1 损失学习预测教师保存的时长、音高、能量和音素特征。学生解码器接收教师保存的特征,学习复现教师的波形。由于每一半都针对固定的教师输出训练,无需学习对齐,两半之后直接拼接,不做联合训练。

文本侧规模不如训练目标重要

在冻结的教师解码器上渲染时,4.2M 文本侧 UTMOS 为 4.36,7.1M 为 4.35,DTW 分别为 0.91 和 0.89。增大文本侧让每一项教师强制损失都略有改善,但自由运行结果没有变化,因此剩余差距由训练目标而非容量决定。

特征投影确实是一处限制。教师的 512 个音素特征通道高度冗余:约 190 个维度承载 90% 的方差,430 个承载 99%。一个 192 通道、使用线性投影的学生最多只能表达其中 192 个维度,且已接近任何此类投影所能达到的最优误差(0.079 对 0.068)。把线性投影换成小型两层 MLP 后这一限制被解除,误差降到 0.066,UTMOS 从 4.15 升到 4.36。

解码器质量取决于损失权重平衡

只用频谱损失时,3.85M 解码器收敛到 DTW 距离 0.50,但 UTMOS 只有 2.98。论文描述此时完整学生听起来像 af_heart 音色叠加了第二个机器人音色在同时说话。频谱图说明了原因:学生到 6–8kHz 仍保留清晰的谐波条纹,而教师的谐波在 3–4kHz 以上就化为气声噪声,于是正弦激励几乎原样泄漏出来。音量、频率平衡和静音都正确。

对抗训练能修复大部分问题,但前提是判别器被允许发挥作用。在 HiFi-GAN 默认频谱权重 45 下,频谱项与对抗项之比约为 15 比 1,3,000 步内 UTMOS 几乎不动(2.98 到 3.02)。把权重降到 10 再降到 3,解码器升到 4.37,完整学生升到 4.39。把解码器加宽或扩大一倍都没有帮助。

特征监督可迁移,迎合解码器不可迁移

论文还尝试给文本侧增加一个目标:把它的预测送入冻结的教师解码器,再用 log-mel 损失把生成的音频与教师录音比较。这使 4.2M 文本侧在教师解码器渲染下达到教师自身的 4.52,但这些特征专门适配了那个解码器。接到 Paradee 的学生解码器上时只得 3.78,而直接针对教师数值训练的文本侧在同一解码器上得 4.39。

论文由此得出的解释是:通过匹配教师特征学到的特征能迁移到新解码器,而通过取悦某个特定解码器学到的特征不能。因此 Paradee 采用特征监督的文本侧。拼接后的模型也呈现同样规律:学生文本侧经教师解码器得 4.36,教师文本侧经学生解码器得 4.37,各自比教师低约 0.15,而完整学生在滤波前得 4.39,说明两半的误差不会叠加。

残余嗡声位于 2 至 8kHz 的浊音相位

对抗训练之后,学生唯一可听的缺陷是浊音上轻微的嗡声。为定位它,论文在相同激励下把学生频谱图的幅度与教师的相位组合,以及反过来组合。学生幅度配教师相位时没有可听嗡声(UTMOS 4.49,学生自身 4.37,教师 4.52),而教师幅度配学生相位仍然有嗡声(4.45)。只在 2 至 8kHz 之间换用教师相位就足以消除它。

该频段正好从激励音所及范围之上开始:对这个音色,激励音的 9 次谐波止于约 1.9kHz。在此频率以上,生成器必须自行合成谐波,而小学生模型把它们的时序算得略有偏差。改动训练无法消除嗡声:更宽的判别器、直接的波形与相位损失、蒸馏教师最后一层、更大的解码器,都仍让它可听。

修复在合成之后进行。解码器本身已产生相位稳定的激励音;在浊音帧和 2–8kHz 频段内,滤波器测量输出相位相对该音的漂移,把漂移在约三分之一秒上平滑,再用平滑后的相位和原始幅度重新合成音频。该滤波器没有参数,约占运行时间的 5%。它对 UTMOS 贡献很小(4.39 到 4.41),但正是它去掉了大部分可听嗡声;在部分重读音节上仍有轻微嗡声,那里学生在 2 至 8kHz 比教师低 3–6dB。

Kokoro 的参数与算力花在哪里

论文梳理了教师的成本结构:波形生成器占四分之一参数,却占 89% 的算力,而小型文本侧是对量化最敏感的部分。这解释了为什么难点集中在解码器而非文本侧,也解释了为什么解码器的损失平衡比它的规模更重要。

在同样的 200 句留出句子上与三个小型开源模型相比,Paradee 的 UTMOS 最高、文件最小。设计上最接近的 Kokoro-7M-Distill 约快 1.4 倍,但 UTMOS 低 0.23,KittenTTS 的词错误率最低。每个模型各说自己的音色,因此这里的 UTMOS 比较的是自然度,而非与 af_heart 的接近程度。Paradee 在相同句子上与教师的说话人相似度为 0.958,而另一个 Kokoro 音色朗读相同句子为 0.842。

单说话人结论覆盖到哪里为止

Paradee 只说单一英文音色,作者没有训练它说其他音色或语言。它最多只能和教师一样好,并继承教师的发音错误。质量证据来自 200 句上的自动预测器和作者的非正式试听,而非正式听测,速度也只在一台机器上测量。除教师外,对比只覆盖三个小型开源系统,且各自说不同音色。

论文对其指标本身的提醒值得带入任何数字解读:UTMOS 把某个解码器评得比另一个听感相同的解码器低 0.5,而对明显有嗡声的输出只比教师低 0.13。因此这篇论文中最具决策意义的分界不是参数量,而是压缩代价落在哪里:文本侧容易压缩,而波形生成器在激励频段之上的相位才是需要无训练滤波器来修复的部分。对单说话人部署而言,论文给出的实用阈值是 int8 权重在 UTMOS 上免费,4 位权重则不然,而决定质量的是解码器损失权重,不是解码器宽度。

本文引用的文献

1

Paradee:将 Kokoro-82M 蒸馏为 8M 参数单说话人语音合成模型

Paradee 将 Kokoro-82M 蒸馏为 8.07M 参数的单说话人模型,UTMOS 4.41,教师为 4.52,int8 存储 8.45MB,单 CPU 线程达 25 倍实时。