本文对 Ziyue Jiang 等人于 2024 年发表的论文进行简单地翻译。如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。
论文链接:https://arxiv.org/pdf/2307.07218
目录
Abstract
Zero-shot TTS 旨在合成未见过的语音,这可以避免 fine-tuning 过程,从而显著减少了语音克隆所需的数据和计算量。然而,zero-shot TTS 的 prompting 机制仍然面临以下挑战:1)之前的 zero-shot TTS 工作通常用单句 prompts 进行训练,这在推理阶段数据相对充足的情况下会显著限制其性能。2)prompts 中的韵律信息与音色信息高度耦合,无法互相转换。本文提出了 Mega-TTS 2 来处理上述问题。具体来说,我们设计了一个强大的声学自编码器(acoustic autoencoder),可以分别对韵律和音色信息进行编码,同时提供高质量的重建。我们还提出了一个多参考(multi-reference)音色编码器和一个韵律隐语言模型(prosody latent language model,P-LLM),来从多句 prompts 中提取有用信息。我们进一步利用从多个 P-LLM 输出中得到的概率,来生成可迁移和可控的韵律。实验结果表明,Mega-TTS 2 不仅能使用一个短 prompt 来合成未见过的说话人的语音,而且当数据时长在 10 10 10 秒到 5 5 5 分钟的范围内时,其效果始终优于微调的方法。此外,我们的方法能够以细粒度和可控的方式来将多种说话风格转换成目标音色。可以在 https://boostprompt.github.io/boostprompt/ 中找到音频样例。
1. 介绍
近些年,TTS 技术已经取得了重大进展。在这些技术中,自适应 TTS 系统能够使用几分钟语音数克隆出个性化声音。然而,这些系统的性能严重依赖于 fine-tuning 阶段所使用的数据量和数据质量。数据量不够可能会导致音频自然度或语音清晰度下降。此外,系统的计算量也会限制其落地场景。
为了减少这种依赖,现有工作使用生成模型来进行 zero-shot TTS。这些强大的模型只需要简单的语音 prompt 就能合成语音。然而,现有方案中的 prompting 机制仍然面临以下两个挑战:
-
Lack of multi-sentence prompting strategies. 之前的 zero-shot TTS 系统通常在训练阶段只使用单句(single-sentence)语音 prompt。在推理阶段,单句语音 prompt 中的信息不足以令 zero-shot TTS 系统完美地模仿人类的声音变化。从另一方面来看,可以通过增加数据量来进一步提升 fine-tuning 方法的性能,而 zero-shot TTS 缺少从多句(multiple-sentence)语音 prompts 中提取有用信息的合适策略。
-
Lack of specialized prompting mechanism for prosodic information. 现有的 zero-shot TTS 主要是提升生成的语音和 prompt 之间的音色相似度和韵律相似度。然而,它们并没有以可控的方式来表达各种看不见、摸不着的与韵律相关的风格。为了控制这些与韵律相关的风格,很有必要从语音 prompts 中提取出这些韵律信息。
为了处理上述这些问题,我们将语音解耦成内容、音色和韵律。直觉上,要表示众多说话人的语音,就需要大量的 codebook entries 来对音色进行建模。通过分离韵律信息,可以获得高度紧凑的用于建模韵律的码本,这使我们的模型能够有效处理极长的 prompt 并灵活控制韵律风格。因此,我们提出了 Mega-TTS 2,这是一个可以增强 zero-shot TTS 系统中 prompting 机制的通用框架。具体来说,我们首先设计了一个声学自编码器(acoustic autoencoder),它能有效地将语音解耦成韵律和音色表示。然后,我们设计了一个多参考音色编码器(MRTE, multi-reference timbre encoder)和一个韵律隐语言模型(P-LLM, prosody latent language model),来从多句 prompts 中提取有用信息。除了多句 prompting 机制,我们还提出了一种韵律插值技术,该技术利用来自多个说话人的韵律 prompts 来控制韵律 codes 的生成过程,且同时保持目标说话人的音色。通过利用目标说话人和辅助说话人的韵律 prompts 得出的概率,可以以可控的方式生成语音的韵律风格。
在 LibriSpeech 的干净测试数据集和 ESD 数据集上的实验表明,在说话人相似度和语音自然度方面,Mega-TTS 2 优于其它最先进的 fine-tuning 和 zero-shot TTS 模型。值得注意的是,当 prompts 的长度进一步变长时,我们的方法在客观和主观评价上都优于微调的基线模型。这项工作的主要贡献如下:
- 我们设计了一个声学自编码器,它将韵律和音色信息分别压缩到隐空间,这能让我们的模型有效地处理长达 300 300 300 秒的 prompts。
- 我们提出了一个多参考音色编码器和一个自回归韵律语言模型,来从多个参考语音中提取细粒度信息。
- 实验结果展示出 Mega-TTS 2 的表现超越了基线模型,说明了我们所提出的 prompting 机制的优越性。
- 提出的韵律插值技术不仅能确保韵律的可控性,而且能够将各种说话风格迁移到目标音色上。
2. 背景
Adaptive TTS 自适应 TTS 专注于用少量数据为用户合成个性化的声音。自适应的过程就是使用少量的目标声音数据,对一个在多说话人语音数据集上预训练的 TTS 模型进行 fine-tuning。 Chen 等人于 2018 2018 2018 年的工作为每个说话人设计了独立可学习的 embeddings,这在部署阶段需要少量数据来快速适应新的说话人。AdaSpeech(Chen 等人于 2021 2021 2021 年的工作)提出了一种声学条件建模方法,用于高效且高质量地定制新声音。还有一些其它工作将 meta-learning 和数据增强用于说话人自适应。然而,尽管一些工作是数据有效和参数有效的,但当数据量较少时,这些系统仍然会面临语音质量问题。此外,还有数百个 fine-tuning 步骤所带来的计算效率问题。
Zero-shot TTS Zero-shot 自适应旨在使用说话人编码器(从参考音频中提取说话人 embeddings)合成未见过的声音。这个场景非常具有吸引力,因为它不需要任何额外的自适应数据和参数。基于注意力的自适应方法使用注意力机制从参考音频中提取细粒度的语音特征。在这些方法中,Attentron 提出从任意数量的参考音频中提取有用的风格信息。然而,它们没有分别建模音色和韵律信息,缺少对音色和韵律的控制。近期,一些工作提出使用 in-context learning 方法来从声学 prompts 中提取说话人信息,并在 zero-shot TTS 中取得了显著的成果。VALL-E 提出了神经编解码语言模型,该模型在 zero-shot 语音生成上展示出了强大的 in-context learning 能力。NaturalSpeech 2 将 in-context learning 引入到隐扩散模型中,这是通过将语音片段划分为 prompt 区域和目标区域来实现的。然而,这些方法都是使用单句 prompts 训练的,缺少从多句语音 prompts 中提取细粒度信息的策略。
Prosody Transfer for Speech Synthesis 韵律迁移旨在将参考音频的韵律迁移到合成的目标语音上,这对于以可控的方式来生成自然和富有表现力的语音是非常重要的。Skerry-Ryan 等人于 2018 2018 2018 年首次将韵律参考编码器集成到了一个基于 Tacotron 的 TTS 系统中。然而,如 Sigurgeirsson & King 所指出的那样,现有的方案不是学习可迁移的韵律表示,而是学习相对依赖于参考说话人和参考文本的句级表示。
3. 方法
本节介绍了 Mega-TTS 2。首先,我们直观地说明 Mega-TTS 2 是如何解耦语音中的音色和韵律信息的。接着,我们对于所提出的 prompting 机制和模型的两阶段训练过程做了更详细的解释。
3.1. 解耦出韵律和音色
Problem Formulation 令 H ( X ) H(X) H(X) 表示 X X X 的香农熵, I ( Y ; X ) I(Y;X) I(Y;X) 表示互信息(mutual information)。假设梅尔谱 y y y 可以通过以下生成过程被重构: y = D ( z c , z p d , z t , g ) y = D(z_c,z_{pd},z_t,g) y=D(zc,zpd,zt,g),其中 z c z_c zc 和 z t z_t zt 表示细粒度内容和音色隐状态。 g g g 表示包含了音色和韵律的全局风格信息。假设 z p d = ( z p , z d ) z_{pd}=(z_p,z_d) zpd=(zp,zd) 包含了音高和能量( z p z_p zp)以及持续时间( z d z_d zd)的细粒度韵律风格信息。 z d = A l i g n e r ( y ) z_d = Aligner(y) zd=Aligner(y) 可以通过外部对齐工具获得,并可以从 z p d z_{pd} zpd 中分离出来。令 D D D 表示梅尔谱解码器。我们的目标是构建一个基于自编码器的模型来分离出语音的各成分。
Decomposition via Corpus Partition 令 Y = { y 1 , ⋯ , y n } Y = \{y_1, \cdots, y_n\} Y={
y1,⋯,yn} 表示某个说话人 S S S 的语料。在训练过程中,我们将 Y Y Y 划分为目标梅尔谱 y t y_t yt 和其它梅尔谱 y ~ \widetilde{y} y
. 在这里,我们做一个重要假设,即 y t y_t yt 和 y ~ \widetilde{y} y
之间的互信息只包含了 y t y_t yt 的音色信息 H ( z t ) H(z_t) H(zt) 和全局风格信息 H ( g ) H(g) H(g),也就是:
I ( y t ; y ~ ) = H ( z t ) + H ( g ) . \begin{align} I(y_t;\widetilde{y}) = H(z_t) + H(g). \end{align} I(yt;y
)=H(zt)+H(g).
首先,基于此假设,可以从 E t ( y ~ ) E_t(\widetilde{y}) Et(y ) 中提取出 z t z_t zt 和 g g g,但不能从 E t ( y ~ ) E_t(\widetilde{y}) Et(y ) 中得到 z p z_p zp 和 z c z_c zc;其次,如果我们只将音素序列输入给 E c E_c Ec,那么 E c E_c Ec 只能传递所有的内容信息 z c z_c zc;接着,因为 z c z_c