TTS 中零射声音提示 (音频前缀) 的训练设置

作者: kayden-kim0702创建于 2026年6月8日更新于 2026年8月25日

感谢你发布 Pocket-TTS 和 CALM 论文 — 真是令人印象深刻的工作,尤其是在 CPU 上的 1 阶 LSD 品质。 我正在尝试重现零样本(语音克隆)训练,但我找不到详细信息,说明在训练期间语音提示是如何构建的(我可能会错过它们)。 与此同时,我遵循了 SALAD 中的零样本训练方案(Turetzky 等人,2024 — 你的参考之一):使用语音标签从同一说话者的另一个语音片段中采样说话者提示(“一个三秒钟的说话者提示…从同一说话者的另一个语音片段中随机采样”)。 这样,我就能成功训练模型了。 尽管如此,我认为这不是你在全混合模式下进行训练的方式:你 88 万小时数据中的几个语料库(GigaSpeech、SPGISpeech、EARNINGS22)似乎没有提供每个说话者的标签,这将排除同一说话者的采样。 (它们确实暴露了录音/通话级别的 ID — 例如 audio_id / file_id — 但共享同一 ID 的片段并不保证是同一说话者) 因此,我怀疑你的提示构建方式不同,我很想了解它。 此外,从公开的推理代码中,语音克隆似乎不遵循 VALL-E / CosyVoice 的在上下文中提示方式(其中参考音频标记和参考转录被预置在同一个标记空间中,模型从这里继续)。 语音提示提供了,但作为其 VAE 稀疏向量的专用投影(speaker_proj)作为前缀 — 而文本流只包含目标文本,没有参考转录。 这就是训练时提示构建对我来说不明显的部分。 从论文中我了解到:文本是一个 SentencePiece 前缀(第 5.2 节),语音条件是一个“音频前缀”(第 E.5 节),而 eval 使用来自地面真实音频的 3s 提示(第 G 节)。 您能否澄清训练时的设置: 1. 提示来源 音频前缀是从同一目标语音片段中提取的,还是从不同的同一说话者语音片段中提取的(如 SALAD 中)? 2. 如果从单个语音片段中提取 语音前缀是否沿着强制对齐(例如 MFA)的词边界进行切割,还是随机位置/长度的切片? 如果是随机切割,提示帧是否从训练损失中排除(例如通过掩码方式从 FM/LSD 损失中排除)? 3. 没有说话者标签的语料库 GigaSpeech / SPGISpeech / EARNINGS22 具有没有说话者标签意味着提示始终来自目标语音片段本身(即没有同一说话者采样)? 即使是一个简短的说明也会很有帮助。 谢谢!

内容来源: kyutai-labs/pocket-tts