← 返回 2026-04-03

T5Gemma-TTS 技术报告:基于编码器-解码器架构与PM-RoPE的多语言零样本语音合成 T5Gemma-TTS Technical Report

Chihiro Arata, Kiyoshi Kurihara 📅 2026-04-02 👍 12 2026-07-13 08:36
Codec Language Model Encoder-Decoder Multilingual PM-RoPE Text-to-Speech Zero-Shot Voice Cloning

在4B参数T5Gemma编解码器上引入PM-RoPE跨注意力机制,实现多语言零样本TTS。

前置知识

神经编解码语言模型(NCLM)

NCLM 将语音合成重新定义为条件语言建模问题:先用神经音频编解码器(如 EnCodec、DAC、XCodec2)把连续波形量化成离散 token 序列,再用自回归 Transformer 逐 token 生成。代表工作有 VALL-E 2、Seed-TTS、Llasa 等。这种范式天然支持零样本声音克隆,并能从大规模文本 LLM 预训练中受益。

本文 T5Gemma-TTS 本质上也是 NCLM,只是把主流的 decoder-only 改成了 encoder-decoder;要理解它的设计动机必须先明白 NCLM 的基本工作流。

零样本声音克隆(Zero-Shot Voice Cloning)

指在没有目标说话人专属训练数据的情况下,仅凭一段 3–15 秒的参考音频就合成该说话人新内容的语音。评估时通常用 ECAPA-TDNN 提取参考音频和生成音频的说话人嵌入,计算 cosine 相似度(SIM 指标)。这要求模型在推理时同时完成「学说话人音色」和「读出目标文本」两个任务。

本文 6 种语言 × 5 个系统的对比表格里 SIM 是核心指标,必须理解它测的是什么才能读懂数字含义。

Cross-Attention 与 Rotary Position Embedding (RoPE)

Cross-Attention 是 encoder-decoder 模型里 decoder 读取 encoder 输出的标准机制;RoPE 则是一种用旋转矩阵把相对位置信息编码进 Query/Key 的位置编码方式。标准 cross-attention 的 Q/K 不携带各自序列的进度信息,因此无法让 decoder 知道「我已经生成了多少」。

PM-RoPE 正是通过给 cross-attention 的 Q/K 注入「生成进度」信号来突破这一限制,是本文最核心的技术点。

UL2 预训练目标

UL2(Unifying Language Learning)把 T5 的 span corruption、前缀 LM、极端 masking 三种预训练范式统一在一个模型里训练,得到一个既能双向编码又能自回归解码的 backbone。本文用的 T5Gemma 就是基于该目标在 Gemma 2 上做 encoder-decoder 改造得到的。

T5Gemma 的双向编码能力是它能作为 TTS encoder 而不需要 phoneme 转换的根基,理解 UL2 有助于明白为什么作者选了这个 backbone。

SentencePiece 子词分词

SentencePiece 是一种语言无关的子词分词工具,通过在原始 Unicode 字节流上做 BPE/ULM 等算法得到子词词表。T5Gemma 的 256K 词表里天然包含日语假名、汉字和韩文 Hangul 字符(0.93% 是含 Hangul 的 token),因此无需针对每种语言单独做 phonemizer。

这是 T5Gemma-TTS 能在没有韩语训练数据的情况下合成韩语、且 OOV 率为 0% 的关键。

研究动机

当前零样本 TTS 的主流方案是 decoder-only codec 语言模型(如 VALL-E 2、Seed-TTS、Llasa),它们把文本 token 序列当作 audio token 序列的 prefix,再用统一的 causal self-attention 处理拼接后的长序列。问题在于:随着生成进行,audio 序列长度 $S$ 不断增长而文本 prefix 长度 $T$ 固定不变,文本 token 在每个 attention 窗口中的占比越来越小——也就是说「文本条件」在长篇朗读(如文档级 TTS、有声书)时会被逐渐稀释。此外,自回归生成对「目标时长是多少」几乎没有任何显式信号,导致输出长度难以控制,给长内容生成带来节奏不一致的体验。文中也提到,非自回归方案(F5-TTS、CosyVoice 2)虽推理快但缺乏显式时长控制,而传统 encoder-decoder TTS(Tacotron、FastSpeech 2)又依赖 phoneme 转换和独立 duration predictor,流水线复杂。

本文的目标是本文希望用 encoder-decoder 架构解决「文本条件稀释」问题,并通过 PM-RoPE 解决「时长难以控制」问题。具体目标有三个:(1) 在 T5Gemma(2B encoder + 2B decoder = 4B 参数)这一已有强大文本知识的 backbone 上做多语言零样本 TTS,避免从头训练;(2) 把 Peng et al. 2025 在 VoiceStar 中提出的 PM-RoPE 验证扩展到 4B 参数 + 多语言 + 大规模数据的场景;(3) 在 6 种语言上对比 F5-TTS、XTTS v2、CosyVoice 2、Kokoro 四个强基线,验证 encoder-decoder + PM-RoPE 的实际竞争力。

与已有工作不同的是,作者明确强调本文不是发明新方法,而是把已有技术(encoder-decoder + PM-RoPE + T5Gemma 预训练)整合到多语言大规模场景中「第一次」做完整验证。关键差异点包括:(1) 不用 phoneme 转换(VoiceStar 用了),直接喂 subword token,保留预训练 embedding;(2) 训练规模比 VoiceStar(English-only、从头训练)大两个数量级(170k 小时 × 3 种语言);(3) 系统性验证 PM-RoPE 在非英语(中日韩)和未见语言(韩法德)上的泛化能力。这种「把简单技术规模化并交叉验证」的角度在领域里相对稀缺。

核心方法

直觉上,T5Gemma-TTS 做了三件事:用一个学过的双语种翻译官(encoder)先把输入文本读懂,再用带位置感知的「跟读机制」(PM-RoPE cross-attention)让 decoder 在生成每段音频时都能回头对照原文,最后用一个自回归循环逐 token 输出 50 Hz 的 XCodec2 音频 token。技术路线分四大块:(1) 文本端用 T5Gemma encoder 双向编码成 $H_{enc} \in \mathbb{R}^{T \times d}$;(2) 音频端用 XCodec2(50 Hz、单 codebook、词表 65536)把波形量化成 token;(3) 26 层 decoder 在每层 cross-attention 上应用 PM-RoPE,把「生成进度」信号注入 Q/K;(4) 推理时用 phoneme-count heuristic 估算目标时长,再据此动态调整 PM-RoPE 的进度坐标。整条流水线不依赖任何 phonemizer,文本只过 SentencePiece tokenizer 即可。

核心创新在于把 decoder-only 范式里「文本被 prefix 化」的结构性问题换成「文本通过 cross-attention 持久存在」的 encoder-decoder 范式。给定 decoder 位置 $j \in \{0, \ldots, S-1\}$ 和 encoder 位置 $i \in \{0, \ldots, T-1\}$,PM-RoPE 定义进度位置 ID $p_{dec_j} = \frac{j}{S-1} \cdot s$ 和 $p_{enc_i} = \frac{i}{T-1} \cdot s$($s=2000$ 是缩放常数),再用两个独立的 RoPE 模块分别作用在 decoder query 和 encoder key 上:$\tilde{q}_j = \mathrm{RoPE}_{dec}(W_Q h_j^{dec}, p_{dec_j})$,$\tilde{k}_i = \mathrm{RoPE}_{enc}(W_K h_i^{enc}, p_{enc_i})$。与已有方法的本质区别:(1) 对比 VoiceStar:本文用 subword 而非 phoneme、规模扩大 100 倍以上;(2) 对比 F5-TTS 等 flow-matching:本文提供显式可调的 duration control;(3) 对比 XTTS v2:decoder-only 文本 prefix 在长音频里被稀释,而本文的 cross-attention 通道与 audio 长度解耦。

方法步骤详情

完整步骤分四步。第一步数据准备:把 16 kHz 音频送入 XCodec2 编码成 50 Hz 的 token 序列(vocab=65536),并预留 5 个特殊 token(、、、silence、prompt-separator)。参考音频的 token 序列作为 prefix 拼接到目标 token 序列前,用 prompt-separator 隔开。第二步文本编码:T5Gemma encoder(26 层,$d=2304$)对 SentencePiece 子词序列做双向编码,输出 $H_{enc}$,不引入任何额外适配层。第三步训练 decoder:26 层 T5Gemma decoder 在每层 cross-attention 上启用 PM-RoPE,目标函数是标准的 next-token 交叉熵 $\mathcal{L} = -\sum_{t=1}^{S} \log p_\theta(y_t | y_{<t}, H_{enc})$。优化器 AdamW,$\eta = 10^{-4}$,weight decay $10^{-2}$,2% warmup + linear decay,总步数约 143000,每 GPU 限 30K tokens,8 GPU 有效 batch 约 240K tokens,bf16 混合精度,梯度裁剪到单位 norm,2 周训完。第四步推理:先用 $\hat{D} = \frac{D_{ref}}{N_{ref}} \cdot N_{tgt}$ 估算目标时长(不同语种用不同 phoneme 工具:英语 espeak-ng、日语 pyopenjtalk、中文用 Unicode 字符数),再换算成目标 token 数 $\hat{S} = \lfloor \hat{D} \times 50 \rfloor$;每一步 decoder 进度 ID 设为 $p_{dec_j} = \frac{j}{\hat{S}-1} \cdot s$,top-k=30, top-p=0.9, T=0.8 采样。

技术新颖性

技术新颖性体现在三个层面。架构层面:第一次把 T5Gemma(2B+2B encoder-decoder 改造自 Gemma 2)用于 codec LM 形式的 TTS,相比之前 Llasa 等 decoder-only 工作解决了文本条件稀释问题。机制层面:第一次在大规模多语言(170k 小时,3 种语言)和 4B 参数规模上验证 PM-RoPE 的有效性,并证明该机制无需修改即可从英文单调场景迁移到多语种场景。数据层面:第一次展示「训练语种 + 词表覆盖 + 类型学邻近性」三者配合可实现完全未见语种(韩语)的零样本合成(OOV 率 0%)。需要客观指出的是:PM-RoPE 本身、T5Gemma backbone、XCodec2 都不是本文发明,本文的贡献在于把它们拼起来并在 6 种语言上做了系统性 ablation 与对比。

Overall architecture of T5Gemma-TTS
Figure 1: Overall architecture of T5Gemma-TTS
Generated vs. target duration on JSUT (50 utterances) with oracle target duration
Figure 6: Generated vs. target duration on JSUT (50 utterances) with oracle target duration

实验结果

实验在 6 个测试集(JSUT 日语、AISHELL-1 中文、LibriSpeech 英语、FLEURS 韩法德)上各取 100 句做主评估,JSUT 50 句做 PM-RoPE ablation。Bootstrap 95% CI(10000 resamples, seed 42)。核心发现分四块:(1) 日语 SIM:T5Gemma-TTS 取得 0.677±0.016,相对 XTTS v2 的 0.622±0.017 有非重叠 CI(即统计显著),是五系统中最高;F5-TTS 0.64、CosyVoice 2 0.50、Kokoro 0.19(preset voice, 非零样本)。(2) 日语 CER:T5Gemma-TTS 数值最低 0.126±0.018,但与 Kokoro 0.139±0.016 CI 部分重叠,作者明确说应谨慎解读。(3) 韩语(未见语种):T5Gemma-TTS SIM 0.747±0.029 数值最高,但与 XTTS v2 0.741±0.010 CI 重叠,统计上不显著;CER 0.082±0.026 与 CosyVoice 2 0.090±0.032 相当,远好于 F5-TTS 0.93 和 Kokoro 1.51。(4) PM-RoPE ablation:同一 checkpoint 关掉 PM-RoPE 后,日语 CER 从 0.129 飙到 0.982(非重叠 CI, $p<0.001$),SIM 从 0.666 跌到 0.109,UTMOS 从 3.85 跌到 2.25,Duration Accuracy 从 0.79 跌到 0.46,听感上变成「重复或无意义音频」。作者特别强调该 ablation 是 flag-switch 而非完全对照实验(需要从头训一个无 PM-RoPE 的模型才能完全剥离训练时贡献)。其他观察:中文 SIM 0.722±0.017 排第二(F5-TTS 0.864 最高但其 CER 0.155 严重退化);英语 LibriSpeech WER 0.13±0.06 受 LibriHeavy/LibriSpeech 重叠影响,是上界估计;法德语 WER 0.48/0.45 明显高于 XTTS v2 的 0.08/0.06,符合「未训练语种 + 欧亚类型学距离远」的预期。

Comprehensive comparison of zero-shot TTS systems
Table 1: Comprehensive comparison of zero-shot TTS systems
Zero-shot TTS evaluation across six languages (100 utterances each) with bootstrap 95% CI
Table 2: Zero-shot TTS evaluation across six languages (100 utterances each) with bootstrap 95% CI
Intelligibility (CER/WER) across all six test sets and five systems
Figure 2: Intelligibility (CER/WER) across all six test sets and five systems
SIM across all six test sets and five systems
Figure 3: SIM across all six test sets and five systems
Heatmap of SIM (left) and UTMOS (right) across all five systems and six languages
Figure 4: Heatmap of SIM (left) and UTMOS (right) across all five systems and six languages
Radar chart of normalized multi-metric averages (6 languages)
Figure 5: Radar chart of normalized multi-metric averages (6 languages)
查看结构化数据
任务指标本文基线提升
Zero-shot TTS on Japanese (JSUT) SIM (ECAPA-TDNN cosine) 0.677 ± 0.016 0.622 ± 0.017 (XTTS v2) +0.055, 95% CI non-overlapping (statistically significant)
Zero-shot TTS on Japanese (JSUT) CER (Whisper large-v3) 0.126 ± 0.018 0.139 ± 0.016 (Kokoro, closest) Numerically lowest, but CI partially overlaps Kokoro
Zero-shot TTS on Korean (FLEURS, unseen language) SIM (ECAPA-TDNN cosine) 0.747 ± 0.029 0.741 ± 0.010 (XTTS v2) Numerically highest, but CI overlaps (not conclusive)
Zero-shot TTS on Korean (FLEURS, unseen language) CER (Whisper large-v3) 0.082 ± 0.026 0.090 ± 0.032 (CosyVoice 2) Comparable; far better than F5-TTS 0.93 and Kokoro 1.51
Zero-shot TTS on Mandarin (AISHELL-1) SIM (ECAPA-TDNN cosine) 0.722 ± 0.017 0.864 ± 0.015 (F5-TTS, but F5-TTS CER 0.155 is broken) 2nd highest among zero-shot systems
PM-RoPE Ablation on Japanese (JSUT 50 utts) CER (Whisper large-v3) 0.129 ± 0.03 (PM-RoPE on) 0.982 ± 0.04 (PM-RoPE off, same ckpt) Δ = -0.85, non-overlapping CI, p < 0.001
PM-RoPE Ablation on Japanese (JSUT 50 utts) Duration Accuracy (±10%) 0.79 ± 0.11 (PM-RoPE on) 0.46 ± 0.13 (PM-RoPE off) +0.33, Wilson score interval
Cross-lingual Duration Control (Oracle target) Pearson r (generated vs. target duration) ≈ 0.92 (PM-RoPE on, DA = 100%) clustered near mean (PM-RoPE off, DA = 0%) Strong length correlation enabled by PM-RoPE

局限与改进

作者明确承认的局限有 5 条:(1) RTF 0.8–2.0 远高于 F5-TTS (0.15)、XTTS v2 (0.30) 等非自回归或小模型,只适合离线批处理场景(有声书、文档朗读)。(2) UTMOS 系统性低于 XTTS v2 和 Kokoro,作者归因于 XCodec2 量化在频谱细节上的上限和离散自回归范式缺少显式 refinement 阶段(CosyVoice 2 用 flow-matching 进一步精修)。(3) 法德等欧洲未见语种 WER 0.48/0.45 远高于 XTTS v2 的 0.08/0.06,多语种泛化对类型学距离远的语言效果有限。(4) LibriSpeech 英语结果因 LibriHeavy 是其超集只能视作上界估计。(5) PM-RoPE ablation 只是 inference-time flag-switch,不是受控训练实验,无法完全剥离训练时的贡献;phoneme-count 估算器对未见语种精度未验证。我自己的观察还包括:(6) JSUT 是单女性说话人、风格单一的朗读测试集,跨说话人/跨风格/跨情感的鲁棒性未在论文中充分测试;(7) UTMOS22 主要在英语上训练验证,对中日韩法德的得分只能视作粗略代理;(8) ASR-based CER/WER 测的是 Whisper 转写后的字符差异,掩盖了同音替代等发音错误;(9) Kokoro 不是真零样本系统(用 preset voice),纳入对比在 SIM 维度上意义有限,作者用脚注处理但读者仍需注意。

独立分析的弱点

独立看,本文有几个值得改进的弱点。(1) 时长估算器过于粗放:phoneme-count 与 $\Delta_{EN}=0.085$ s/phoneme、$\Delta_{JA}=0.10$ s/phoneme 等常数是粗启发式,论文也承认「估算误差会贡献于时长相关质量退化」,应改用基于 reference encoder 的 duration predictor 或在训练中加 duration token。(2) PM-RoPE ablation 不充分:作者自己强调需要从零训一个无 PM-RoPE 的对照组才能真正证明 PM-RoPE 的因果贡献,目前的 flag-switch 结果只能说明 inference 时刻的依赖。(3) UTMOS 自然度落后:作为 4B 模型,UTMOS 4.01 仍低于 Kokoro 4.51 和 CosyVoice 2 4.32,主要受 codec 量化限制;改进方向是加 latent diffusion 后处理或换用更高保真度 codec。(4) 跨语种鲁棒性受限于词表和类型学:法语/德语 WER 高说明单纯靠 SentencePiece 词表覆盖和「相似语种」加持不够,需要 continual pretraining 显式扩展语言集合。(5) 没有情感/风格控制:Table 1 中 × 标记,且只支持 3 种训练语种内的跨语种克隆,限制了下游应用。(6) RTF 0.8–2.0 在实时场景不可用,需要蒸馏或 speculative decoding。(7) ECAPA-TDNN 本身的说话人空间在未见语种上可能校准不准,作者也提到了这点。

未来方向

作者在文末明确给出三个方向:(1) 用蒸馏或 speculative decoding 把 RTF 降到实时可用;(2) 加 latent diffusion 或 flow-matching 后处理模块提升自然度;(3) 做 continual pretraining 扩展到更多语种。基于成果我还能想到几个可延伸方向:(4) 把 PM-RoPE 思路拓展到「情感进度」或「韵律进度」编码,让 decoder 显式追踪风格轨迹;(5) 在 encoder 端引入显式时长/韵律 prompt 解析,实现可解释的 prosody control;(6) 把 T5Gemma-TTS 当作 strong teacher 蒸馏到小模型(~0.5B)以同时获得 encoder-decoder 优势 + 实时 RTF;(7) 研究 subword vs phoneme 输入对 PM-RoPE 有效性的影响(作者明确说没做这个 ablation);(8) 探索 ECAPA-TDNN 之外的语种无关 speaker embedding(如 x-vector、ResNetSE)以更公平评估跨语种 SIM;(9) 在多说话人对话 TTS、歌声合成等更复杂任务上验证 encoder-decoder + PM-RoPE 的可扩展性。

复现评估

复现条件较好。模型权重和代码已开源:HF 上是 Aratako/T5Gemma-TTS-2b-2b,GitHub 仓库为 https://github.com/Aratako/T5Gemma-TTS。训练数据来源清晰:LibriHeavy(公版 LibriVox 衍生)和 Emilia(开源多语种数据),T5Gemma backbone 遵循 Gemma Terms of Use,作者提醒用户自负合规责任。训练硬件为 8 张 AMD MI300X GPU,耗时约 2 周;本文也指出 RTF 在 MI300X float16 下测得 0.8–2.0,与 A100 上的基线 RTF 不可直接比较。关键超参都列得很全:AdamW $\eta=10^{-4}$、weight decay $10^{-2}$、2% warmup、~143K steps、batch ~240K tokens、bf16 + float32 master weights、gradient clip 1.0;推理用 top-k=30, top-p=0.9, T=0.8;PM-RoPE 缩放常数 $s=2000$;duration 估算的语种默认速率常数也给出。复现难点主要在算力门槛(8×MI300X 训 2 周)和日语 XCodec2 变体的 decoder 微调。评测 pipeline 用了 Whisper large-v3、ECAPA-TDNN (spkrec-ecapa-voxceleb)、UTMOS22 strong 等标准工具,加上 10000 次 bootstrap CI 和固定 seed 42,实验可复现性高。