17.3 VALL-E:使用两阶段语言模型生成音频
正如引言所总结的,VALL-E 这类 TTS 系统接收待合成文本和目标声音样本作为输入,并将二者分词:文本使用 BPE,语音使用音频编解码器。随后使用语言模型,以条件方式生成与文本提示对应、并采用语音样本声音的离散音频词元。

图 17.7 VALL-E 的两阶段语言建模方法。图中展示了自回归 Transformer 的推理阶段,以及 7 个非自回归 Transformer 中的前 3 个。离散音频编码序列分两阶段生成:首先,自回归语言模型从左到右生成第一个量化器的所有编码;然后调用非自回归模型 7 次,生成其余编码,每次都以先前量化器的所有编码(包括右侧编码)为条件。
VALL-E 不使用单个自回归语言模型执行条件生成,而是使用两个不同语言模型组成的两阶段过程。这一架构选择受到 RVQ 量化器层次结构的影响:第一个 RVQ 量化器的输出对最终语音最重要,后续量化器对最终信号贡献越来越少的残差信息。因此,语言模型分两个阶段生成声学编码。首先,自回归语言模型根据输入文本和已登记的语音,为整个输出序列生成第一个量化器的编码。然后给定这些编码,运行非自回归语言模型 7 次;每次接收初始自回归编码和前一个非自回归量化器的输出,逐一生成其余量化器的编码。图 17.7 展示了推理步骤的直觉。
下面更详细地看看架构。训练时,给定一个音频样本 y 及其分词后的文本转写 x=[x0,x1,…,xL]。使用预训练 ENCODEC 把 y 转换为编码矩阵 C。设 ENCODEC 输出的下采样向量数量为 T,每个向量有 8 个编码,则编码器输出可以表示为
CT×8=ENCODEC(y)(17.5) 这里 C 是一个二维声学编码矩阵,包含 T×8 个元素;列表示时间,行表示不同量化器。也就是说,矩阵的行向量 ct,: 包含第 t 帧的 8 个编码,列向量 c:,j 包含第 j 个向量量化器产生的编码序列,其中 j∈[1,…,8]。
给定文本 x 和音频 C,我们训练 TTS 作为条件编码语言模型,使 C 在给定 x 时的似然最大:
L=−logp(C∣x)=−log∏t=0Tp(c<t,⋅,x)(17.6) 
图 17.8 VALL-E 的训练过程。给定文本提示,先训练自回归 Transformer,以自回归方式生成第一个量化器编码序列中的每个编码;非自回归 Transformer 再根据前面的编码序列生成其余编码。图源:Chen et al.(2025)。
图 17.8 展示了这一思想。左侧是音频样本及其转写,二者都进行分词。随后在 x 后追加一个 [EOS] 和一个 [BOS] 词元,在 C 末尾追加一个 [EOS] 词元,训练自回归 Transformer 预测声学词元:从 c0,1 开始,直到 [EOS];然后使用非自回归 Transformer 填充其他词元。
推理时,给定要朗读的文本序列,以及来自未见说话人的一段已登记语音样本 y′(其转写为文本 y′)。先运行编解码器,为 y′ 获取声学编码矩阵:
CP=C:T′,:=[c0,:,c1,:,…,cT′,:]。
接着,把 y′ 的转写拼接到待朗读文本序列上,形成总输入文本 x,并通过文本分词器。此时,我们拥有分词后的文本 x 和分词后的音频提示 CP。
然后以文本序列 x 和提示 CP 为条件,生成
CT=C>T′,:=[cT′+1,:,…,cT,:]:
CT=CTargmaxp(CT∣CP,x)=CTargmax∏t=T′+1Tp(ct,:∣c<t,:,x)(17.7) 最后,生成的词元 CT 可以由 ENCODEC 解码器转换为波形。图 17.9 展示了这一过程。
图 17.9 VALL-E 的推理过程。图源:Chen et al.(2025)。先把已登记语音 3 秒内容的转写置于待生成文本之前,并对语音和文本进行分词。接着,自回归 Transformer 以转写和声学提示为条件,开始生成第一个编码 cT′+1,1。
更多关于 Transformer 组件及训练细节的信息,参见 Chen et al.(2025)。