MOSS-TTSD 中英双语口语对话合成模型

当前的文本到语音(TTS)模型在单句或孤立段落的语音生成效果上取得了令人瞩目的进展,合成语音的自然度、清晰度和表现力都已显著提升,甚至接近真人水平。不过,由于缺乏整体的对话情境,这些 TTS 模型仍然无法合成高质量的对话语音。

MOSS-TTSD 是一个口语对话语音生成模型,实现了中英双语的高表现力对话语音生成,支持零样本多说话人音色克隆,声音事件控制以及长语音生成。与传统 TTS 模型只能生成单句语音不同,MOSS-TTSD 能够根据完整的多人对话文本,直接生成高质量对话语音,并准确捕捉对话中的韵律变化和语调特性,实现超高拟人度的逼真对话语音合成。

亮点

  • 高表现力对话语音:基于统一语义-声学神经音频Codec、预训练大语言模型、百万小时TTS数据与约40万小时的真实/合成对话语音数据,MOSS-TTSD能够生成高表现力,高自然度,具有自然对话韵律的拟人对话语音。
  • 双说话人零样本声音克隆:MOSS-TTSD支持零样本双说话人克隆,按脚本精确进行角色/声线切换。只需要提供10到20秒的参考音频片段。
  • 中英双语:MOSS-TTSD支持中英两种语言的高表现力语音生成。
  • 长音频生成:得益于低码率Codec与训练框架优化,MOSS-TTSD在长音频生成场景进行了大量训练(训练最大长度达到960s),能够单次生成超长音频。

模型概览

1 模型结构概览:基于Qwen3-1.7B-base模型进行训练,使用八层RVQ码本进行语音离散化,使用自回归加Delay Pattern进行语音token生成,最后使用Tokenizer的解码器将语音token还原为语音。

MOSS-TTSD 使用完全离散化的方式进行语音生成。我们训练了一个8层 RVQ 的音频 Codec:XY-Tokenizer,来对原始音频进行量化。 XY-Tokenizer 能够同时编码语音的语义和声学信息,并具有较低的比特率(1kbps),这使得LLM能够有效地学习音频序列并建模细节声学特征。 在序列建模方面,受到 MusicGen 和 VOICECRAFT的启发,我们使用自回归建模加多头 Delay 的方式进行语音 token 生成

语音离散化: XY-Tokenizer

为了统一建模语音的语义和声学信息,并实现低比特率,我们构建了 XY-Tokenizer,它使用了双路 Whisper Encoder 进行语音编码,8层 RVQ 量化,两阶段多任务学习的方式进行训练。实现了 1kbps 的比特率和 12.5Hz 的帧率[1024码本大小]。

XY-Tokenizer 采用了两阶段多任务学习的方式进行训练。第一阶段(上半部分)训练ASR任务和重建任务,让编码器在编码语义信息的同时保留粗粒度的声学信息。第二阶段(下半部分)我们固定住编码器和量化层部分,只训练解码器部分。通过重建损失和 GAN 损失,利用生成式模型的能力补充细粒度声学信息。

我们扩展了Codec训练的数据量,使用了10万小时带有转录文本的语音数据进行训练。下表对比了在LibriSpeech测试集上不同 Codec 在语义和声学性能上的表现。WER为ASR任务中的词错误率,WER越低表示语音 token 的语义信息与文本对齐程度更好。粗体为低比特率 Codec 组中的最优或次优性能。

XY-Tokenizer 是在1kbps,12.5Hz的帧率下同时建模语义和声学信息性能最好的 Codec ,在语义和声学指标上都取得了最优或次优的结果。

为了更好地编码和重建复杂的对话音频,我们扩展了50万小时无转录音频数据进行增强训练,扩展 Codec 对于复杂音频和场景的处理能力。

益于Codec的超低比特率,我们模型的训练长度最长达到了960s的音频,这使得我们的模型可以一次性地生成超长的语音,避免了拼接语音片段之间的不自然过渡。

数据工程

TTS 模型的性能与训练数据的质量和数量有着密切的关系,为了规模化高质量 TTS 数据和 TTSD 数据,我们设计了高效的数据处理流水线,可以从海量原始音频中准确筛选出单人语音和多人对话语音并进行标注。

对于原始音频,我们首先使用内部的说话人分离模型进行语音分段和说话人标注。 基于预训练基模,我们的说话人分离模型性能已经优于开源说话人分离模型 pyannote-speaker-diarization-3.1 及其商用版本 pyannoteAI 。

说话人分离模型在不同数据集上的 DER(Diarization Error Rate) 结果(越低越好),我们的模型在四个测试集上都取得了最优性能

我们使用 DNSMOS 分数来作为语音质量的评估标准,我们假设 DNSMOS 分数高的语音大概率不包含背景噪声。 为了保证语音的质量和较少的噪声,我们只保留 DNSMOS >=2.8的语音片段。 对于高质量的音频片段,我们直接对语音进行转录,作为 TTS 训练数据。 此外,我们设计了一套规则来将 Diarization 分离的语音片段组合成双人对话的片段用作 TTSD 训练,这样得到的对话片段我们称之为粗粒度对话片段。 虽然说话人分离模型能够较准确地分离说话人,但是我们发现它对一些较短的 Backchannel 不是特别敏感,存在漏分离的情况。 此外,当前的 ASR 模型无法准确地转录对话中重叠的语音。 因此,受 Parakeet[4] 的启发,我们训练了中文版的 Whisper-d 模型来对中文数据进行细粒度说话人标注和文本转录。对于英文数据我们直接使用 Parakeet 的开源 Whisper-d。 最终,我们使用说话人分离模型的粗粒度标签和 Whipser-d 模型的细粒度标签来将短对话片段组成长对话片段。

TTS 预训练

TTS 预训练模型在 Seed-tts-eval 测试集上的词错误率对比(越低越好),加粗的结果代表最优和次优的性能; WER(Norm) 表示我们针对 ASR 的同义结果做了规则修正,减少了 ASR 模型错误导致的误判; CER(Norm) 表示我们将中文文本转为拼音后再计算词错误率,即 PER 指标,我们认为这是更加合理的方式; SparkTTS 和 Cosyvoice2 的结果为我们本地使用官方推理代码重新测试的结果;

我们使用了110万小时的中英文 TTS 数据对模型进行了预训练,大规模的 TTS 预训练可以显著增强 TTSD 模型的语音韵律和表现力,并提升模型泛化能力。 我们使用了 Seed-tts-eval评测了 TTS 预训练模型的性能,取得了和当前顶尖闭源模型 Seed-TTS 相当的性能。 经过 TTS 预训练后的模型已经有了较强的语音生成能力和零样本音色克隆能力。

TTSD 后训练

最终,我们收集了10万小时中文对话数据和27万小时英文对话数据。 此外,为了增强模型的说话人切换准确率,我们合成了4万小时中文对话数据和4万小时英文对话数据。 为了增强模型对于中文标点符号的感知能力,我们使用 Gemini 对部分数据(约7万小时)中的转录文本进行了修正。

在训练阶段,我们基于 TTS 预训练的检查点,使用 WSD Scheduler 进行训练,我们没有针对 Decay 阶段做特殊的数据规划。 此外,我们发现无法通过验证集挑选表现最好的检查点,因此我们通过人工评估的方式挑选了主观表现最好的检查点。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注