【论文笔记之 VALL-E】Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers

本文对 Chengyi Wang 等人于 2023 年发表的论文进行简单地翻译。如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。

论文链接https://arxiv.org/pdf/2301.02111

论文目的

提出一种用于 TTS 的语言建模方法。

Abstract

我们介绍了一种用于文本到语音(TTS)的语言建模方法。具体来说,我们训练一个神经编码器语言模型(neural codec language model,称为 VALL-E),该模型使用从现成的神经音频编码器模型中得到的离散 codes,并将 TTS 视为一个条件语言建模任务,而不是像以往的工作中那样,将其视为连续信号回归任务。在预训练阶段,我们将 TTS 训练数据扩大到 60 K 60\text{K} 60K 小时的英文语音,这比现有系统大数百倍。VALL-E 展现出了上下文学习(in-context learning)能力,并且能够在只提供 3 3 3 秒钟未见过的说话人语音作为声学 prompt 的情况下,合成高质量的个性化语音。实验结果表明,在语音自然度和说话人相似性方面 VALL-E 远远超越当前最先进的 zero-shot TTS 系统。此外,我们发现 VALL-E 能够在合成的语音中,保留声学 prompt 中说话人的情感和声学环境。可以在 https://aka.ms/valle 里体验我们工作的 demos.

1. Introduction

过去十年间,随着神经网络和端到端建模的发展,语音合成任务取得了巨大的突破。目前,级联的 TTS 系统通常包含一个声学模型和一个声码器(vocoder),其将梅尔谱( mel spectrograms)作为中间表示。虽然先进的 TTS 系统能够使用单个或多个说话人来合成高质量的语音,但它仍然需要来自录音棚的高质量干净数据。从互联网上抓取的大规模数据并不能满足该要求,而且通常会降低合成质量。由于训练数据相对较少,现代 TTS 系统的泛化性依然较差。在 zero-shot 场景中,对于未见过的说话人,其说话人相似性和语音自然度急剧下降。为了处理 zero-shot TTS 问题,现有工作使用说话人自适应和说话人编码的方法,这都需要额外的 fine-tuning,复杂的预先设计的特征,或繁重的结构工程。

图 1

相比于设计一个复杂而特定的网络结构,该问题的终极解决方案是使用尽可能多且多样化的数据来训练模型,这是受文本合成领域成功的启发。近年来,随着文本语言模型的数据量的增加,其性能有了显著提升,从 16 GB 16\text{GB} 16GB 未压缩的文本,到 160 GB 160\text{GB} 160GB,再到 570 GB 570\text{GB} 570GB,最终达到 1 TB 1\text{TB} 1TB 左右。将这一成功应用到语音合成领域,我们提出了 VALL-E,即第一个基于语言模型的 TTS 框架,其使用了大量、多样且多说话人的语音数据。如图 1 所示,为了合成个性化语音(例如 zero-shot TTS),VALL-E 根据 3 3 3 秒时长的注册语音的声学 tokens 和音素 prompt 来生成相应的声学 tokens,这两个条件分别约束了说话人和内容信息。最终,生成的声学 tokens 将通过相应的神经编解码器的解码器部分来合成最终的波形。从音频编解码器模型中得到的离散声学 tokens 能够让我们将 TTS 视为条件编解码器语言建模,从而可以将基于 prompting 的大模型技术应用于 TTS 任务。声学 tokens 还能允许我们在推理过程中使用不同的采样策略,以生成不同的 TTS 结果。

我们使用 LibriLight 来训练 VALL-E,这是一个包含了 60 K 60\text{K} 60K 小时,多达 7000 7000 7000 个说话人的英语语料库。原始的数据只包含音频,所以我们首先使用语音识别模型来生成对应的文本。与先前的 TTS 训练数据集相比,例如 LibriTTS,我们的数据包含更多的含噪语音和不正确的文本,但却提供了多样化的说话人和韵律。我们相信通过使用大量数据,所提方法对噪声是鲁棒的,并且具有很好的泛化性。值得注意的是现有的 TTS 系统所使用的训练数据,通常是数十小时的单说话人数据或数百小时的多说话人数据,比 VALL-E 的训练数据量小了上百倍。表 1 总结了 VALL-E 的创新,这是一种用于 TTS 的语言模型方法,它使用音频编解码器的 codes 作为中间表示,并使用大量多样化的数据,从而实现强大的上下文学习能力。

表 1

我们在 LibriSpeechVCTK 数据集上评估 VALL-E,其中所有的说话人都是在训练语料中未见到过的。在语音自然度和说话人相似性方面,VALL-E 显著优于最先进的 zero-shot TTS 系统,在 LibriSpeech 上,CMOS (comparative mean option score) 提升了 0.12 0.12 0.12SMOS (similarity mean
option score)
提升了 0.93 0.93 0.93VALL-E 还以 0.11 0.11 0.11SMOS 提升以及 0.23 0.23 0.23CMOS 提升击败了 VCTK 的基线。相比于真实音频,它的 CMOS 提升了 0.04 0.04 0.04,表明它合成的未见过的说话人语音和 VCTK 中的人类录音一样自然。此外,定性分析表明,VALL-E 使用同样的文本和目标说话人能够合成多种输出,这可以为语音识别任务创建数据。我们还发现 VALL-E 能够保留声学 prompt 中的声学环境(例如混响)和情感(例如愤怒)。

总而言之,我们的贡献如下:

  • 我们提出了 VALL-E,这是第一个与 GPT-3 一样,具有强大上下文学习能力的 TTS 框架,它将 TTS 视为一个语言模型任务,并使用音频编解码器的 codes 作为中间表示来取代传统的梅尔谱。它具有上下文学习能力,而且能够将基于 prompt 的方法用于 zero-shot TTS,与先前的工作不同,这不再需要额外的结构工程,预先设计的声学特征以及 fine-tuning

  • 我们利用大量的半监督数据在说话人维度上构建了一个通用的 TTS 系统,这表明简单地扩大半监督数据对 TTS 的影响被低估了。

  • 使用同样的输入文本,VALL-E 能够提供多样的输出,而且还能保留声学 prompt 中的声学环境和说话人情感。

  • 我们验证了在 zero-shot 场景下,通过 promptingVALL-E 能够合成很自然并且说话人相似度也较高的语音。评估结果表明在 LibriSpeechVCTK 数据上,VALL-E 显著超越了最先进的 zero-shot TTS 系统。

我们鼓励读者访问 https://aka.ms/valle,来体验我们的样例。

2. Related Work

Zero-Shot TTS: 现有的 TTS 方法可以被分类为级联和端到端的方法。级联的 TTS 系统通常包含一个声学模型和一个声码器,其将梅尔谱作为中间表示。为了解决声码器的缺点,端到端的 TTS 模型被提出,它可以联合优化声学模型和声码器。在实际场景中,在只有极少数录音数据的情况下,能够定制一个用于任意声音的 TTS 系统是非常令人期待的一件事。因此,人们对 zero-shot 多说话人 TTS 技术的兴趣日益浓厚,并且大多数工作都使用的是级联 TTS 系统。作为先驱者,Arik 等人于 2018 2018 2018 年提出了说话人自适应和说话人编码技术。在说话人自适应方面,Chen 等人于 2019 2019 2019 年,Wang 等人于 2020 2020 2020 年和 Chen 等人于 2021 2021 2021 年的工作都试图通过减少目标说话人的数据和说话人特定的参数,来提高自适应的有效性。Huang 等人于 2022 2022 2022 年的工作将 meta-learning 应用于说话人自适应,这只需要 5 5 5-shot 就能构建一个性能较好的系统。与此同时,基于说话人编码的方法也在近些年取得了巨大的进步。基于说话人编码的系统包含一个说话人编码器,以及一个 TTS 组件。其中,说话人编码器可以在说话人验证任务上进行预训练。在 Jia 等人于 2018 2018 2018 年和 Arik 等人于 2018 2018 2018 年的工作中,实验表明模型能够利用 3 3 3 秒的录音数据为域内(in-domain)说话人生成高质量的输出。为了提高未见过的说话人的质量,可以使用先进的说话人 embedding 模型,不过 Tan 等人于 2021 2021 2021 年的工作表明这仍然不是很理想。另一种方法是设计先进但复杂的说话人编码器。基于 diffusion 模型的 TTS 也被扩展到了 zero-shot TTS,并取得了较好的结果。与先前的工作相比,我们的工作也是基于级联 TTS,但是是第一个将音频编解码器 code 作为中间表示的。这是第一个与 GPT-3 一样,具有强大上下文学习能力的 TTS 框架,它不需要 fine-tuning,预先设计的特征或复杂的说话人编码器。

Spoken generative pre-trained models: 自监督学习在语音理解和语音到语音生成领域得到了广泛研究。在语音到语音生成中,一个热门话题是在无文本的情况下合成语音。GSLM 提出了基于 HuBERT codes 合成语音的方法,Polyak 等人于 2021 2021 2021 年通过结合 HuBERT codes、VQVAE codes 和一个说话人编码器提升了其性能。AudioLM 也遵循了相似的方法,但是是使用音频编解码器和语义 codes 来合成语音。需要注意的是 AudioLM 可以基于音频编解码器来合成语音,而不需要额外训练一个像 HifiGAN 这样的声码器。AudioLM 是一个语音到语音的模型,而 VALL-E 是一个 TTS 模型,所以我们可以显式地控制语音合成的内容。另一个方向是将预训练用于神经 TTSChung 等人于 2018 2018 2018 年的工作,通过自回归梅尔谱预测的方式对 TTS 中的语音解码器进行预训练。在 Ao 等人于 2022 2022 2022 年的工作中,作者提出了一个统一模态的编-解码器框架 SpeechT5,它可以使用未标注的语音和文本数据,对 TTS 模型中的所有组件进行预训练。Tjandra 等人于 2019 2019 2019 年的工作,通过 VQVAE 将未标注的语音量化为离散 tokens,并使用 token-to-speech 序列来训练模型。他们证明了预训练模型只需要少量的真实数据进行 fine-tuningBai 等人于 2022 2022 2022 年的工作提出对梅尔谱进行掩蔽并恢复,这在语音编辑和合成任务上,展示出了更好的性能。先前的 TTS 预训练工作只使用少于 1 k 1\text{k} 1k 小时的数据,而 VALL-E 使用 60 k 60\text{k} 60k 小时的数据。此外,VALL-E 首次将音频编解码器 codes 作为中间表示,并在 zero-shot TTS 中展现了上下文学习能力。

3. Background: Speech Quantization

音频通常被存储为 16 -bit 16\text{-bit} 16-bit 的整数序列,所以一个生成模型在每个时间步需要从 2 16 = 65536 2^{16}=65536 216=65536 个候选值中输出一个合适的值来合成音频。此外,较大的音频采样率会导致序列长度特别长,给音频合成带来了更大的困难。为此需要进行语音量化来压缩整数值和序列长度。 μ -law \mu\text{-law} μ-law 变换能够将每个时间步量化成 256 256 256 个值,并重构出高质量的音频。它被广泛地用于语音生成模型中,比如 WaveNet,但总体的推理速度仍然会比较慢,因为序列长度并没有减少。近年来,矢量量化(vector quantization)被广泛用于自监督语音模型中以提取特征,例如 vq-wav2vecHuBERTLakhotia 等人于 2021 2021 2021 年以及 Du 等人于 2022 2022 2022 年的工作都表明,自监督模型生成的 codes 也可以重构内容,而且推理速度快于 WaveNet。然而,说话人的身份被丢弃了,并且重构质量较低。AudioLM 使用来自于自监督模型的 k-means tokens 和来自于神经编解码器模型的声学 tokens 来训练 speech-to-speech 语言模型,从而实现高质量的 speech-to-speech 生成。

在这篇文章中,我们遵循 AudioLM 的工作,使用神经编解码器模型将语音表示为离散 tokens 的形式。为了压缩音频以用于网络传输,编解码器模型能够将波形编码为离散的声学 codes,而且可以重构出高质量的波形,即使说话人是在训练过程中未见过的。与传统的音频编解码器模型相比,神经编解码器在低比特率情况下表现得更好,我们相信量化的 tokens 中包含了关于说话人和录制环境的足够信息。与其它量化方法相比,音频编解码器展示出了以下优势:1)包含丰富的说话人信息和声学信息,与 HuBERT codes 相比,这可以在重构中保留说话人的身份信息。2)存在现成的解码器可以将离散的 tokens 转换为波形,而不需要像基于 VQ 的方法那样额外训练声码器。3)它可以提高效率,以应对 μ -law \mu\text{-law} μ-law 变换中的问题。

图 2

我们使用一个预训练的神经音频编解码器模型—EnCodec—来作为我们的 tokenizerEnCodec 是一个卷积编-解码器模型,其输入输出都是 24 kHz 24\text{kHz} 24kHz 的音频,支持可变比特率。编码器部分输入 24 kHz 24\text{kHz} 24kHz 的波形,输出 75 Hz 75\text{Hz} 75Hzembeddings,采样率降低了 320 320 320 倍。每个 embedding 都由 RVQ(residual vector quantization) 进行建模,我们选择了 8 8 8 个层次量化器,每个量化器有 1024 1024 1024entries,如图 2 所示。该配置对应于 EnCodec 工作在 6 K 6\text{K} 6K 比特率下。在这个设置中,给定一个 10 10 10 秒的波形,其离散表示是一个 750 × 8 750\times8 750×8 的矩阵,其中 750 = 24000 × 10 320 750=\frac{24000\times10}{320} 750=32024000×10 8 8 8 是量化器的数量。也可以选择其它的比特率。比特率越大就表示量化器数量越多,重构质量就越好。例如,如果令比特率等于 12 K 12\text{K} 12K,那么就需要 16 16 16 个量化器, 10 10 10 秒的波形对应的矩阵是 750 × 16 750\times16 750×16EnCodec 的卷积解码器使用编码器生成的离散 codes,来生成实值 embeddings,并重构出 24 kHz 24\text{kHz} 24kHz 的波形。

4. VALL-E

4.1 Problem Formulation: Regarding TTS as Conditional Codec Language Modeling

给定一个数据集 D = { x i , y i } \mathcal{D} = \{\mathbf{x}_i, \mathbf{y}_i\} D={ xi,yi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值