当前,对于语音信号进行离散化处理并使用离散语音token,已经成为语音合成(Text-to-speech, TTS)任务中最具有潜力的方向之一。上海交通大学X-LANCE实验室继去年首次提出了基于离散语音token的语音合成模型VQTTS,并在ICASSP 2023 LIMMITS Challenge中取得自然度评测第一名后,近日推出了更加强大的基于上下文语音信息的语音合成模型UniCATS。
UniCATS提出Contextual VQ-Diffusion和Contextual vocoding技术,打破了现有模型性能受制于audio codec模型的框架,使用3秒的语音prompt即可准确地复制未见说话人的音色并实现了极高质量的合成语音。此外,UniCATS还支持同时基于上文和下文语音的语音片段编辑,实现与上下文语音的连贯衔接。在这两个任务上,UniCATS均实现了新的SOTA性能。


论文地址

https://arxiv.org/abs/2306.07547

Demo网页

https://cpdu.github.io/unicats

合成样例

通过语音续写实现零样本说话人自适应(黑色为Context,橙色为合成)

[Prompt] Yet the two have often been confused in the popular mind.[Continuation] He was unjustly charged with favoring secession; but the charge was soon disproved.
Continuation 1  音频
[Prompt] A sudden wave of scarlet swept over Eliza's face.[Continuation] Then he deliberately locked Kenneth and Beth in with the forger, and retreated along the passage.
Continuation 2  音频

语音编辑(黑色为Context,橙色为合成)

If the prosecution were withdrawn and the casesettled with the victim of the forged check, then the young man would be allowed his freedom. But under the circumstances I doubt if such an arrangement could be made.
Editing 1 音频
I remained there alone for manyhours, but I must acknowledge that before I leftthe chambers I had gradually brought myself to look at the matter in another light.
Editing 2 音频

一、任务定义

目前已有多个工作通过从一个短语音片段(也称为语音prompt)使用自回归模型进行向后续写(Speech continuation)来实现TTS中的零样本说话人音色的克隆(Zero-shot Speaker Adaptation),例如较著名的VALL-E和SPEAR-TTS。同时,还有另一个需要考虑上下文语音的合成任务,即语音编辑(Speech editing)。语音编辑需要给定上文和下文的语音后,根据指定的文本合成中间部分的语音,同时保持和上下文语音的连贯衔接。这两个任务的图示如下:


二、当前模型的困境

当前的基于自回归(Auto-regressive, AR)的语音合成模型有三重困境。

  • 首先,它们自回归的特性使得它们仅能从左向右单向生成,因此只能实现语音续写,对于同时需要考虑下文语音的语音编辑任务则难以实现。

  • 此外,它们均使用语音编码(audio codec)模型所产生的acoustic token作为特征。这样的token需要在离散条件下描述整个巨大的声学空间,因此需要使用残差量化(Residual vector quantization, RVQ)的方式来实现。这样会导致每一帧语音都对应多个离散的index,使得生成任务变得非常复杂和困难。例如,VALL-E中在自回归模块之外,还引入了一个额外的非自回归(Non-auto-regressive, NAR)模块来生成残差的index。SPEAR-TTS中,将残差index展开到了一个序列,因此序列长度变为了数倍长,使得高质量建模变得更加困难。

  • 最后,也是最重要的是,使用acoustic token会使得整个TTS系统的性能上限受制于audio codec模型的解码性能。而这样带来的性能损失是巨大的。所以,如何解决上述难题就成为了一个具有挑战性的问题。

三、UniCATS:一个统一的基于上下文语音的合成框架

我们提出UniCATS,在一个统一的框架下同时实现语音续写和语音编辑任务。它包括两个模块,称为CTX-txt2vec和CTX-vec2wav。

CTX-txt2vec根据文本或音素生成semantic token后,由CTX-vec2wav再从semantic token中生成语音。和acoustic token不同,semantic token是由用于语音识别的预训练模型提取的,例如vq-wav2vec, wav2vec 2.0, HuBERT等。因此,这样的特征中声学细节信息较少,其主要包含的是发音内容的信息,也没有使用残差量化。本文使用公开的预训练的vq-wav2vec作为semantic token的提取器。在UniCATS的合成过程中,CTX-txt2vec和CTX-vec2wav分别负责在semantic token层面和声学细节层面引入上下文信息。整个系统在语音续写和语音编辑任务下的流程图如下图所示:



我们可以发现,我们使用了同一个UniCATS模型实现语音续写和编辑的合成流程。唯一的区别仅仅在于合成过程中是否提供下文信息。因此,UniCATS的推理算法中,仅需将语音编辑的算法中去除下文信息,即可轻松得到语音续写的算法。
为了实现引入上下文信息的目标,我们在CTX-txt2vec和CTX-vec2wav中分别提出并使用contextual VQ-diffusion和contextual vocoding技术。下面我们详细介绍这两项技术的细节。

四、Contextual VQ-diffusion

VQ-diffusion是一项使用扩散模型的思路来生成离散token序列的技术。和连续空间上的扩散模型不同点在于,它的数据破坏过程不是添加高斯噪声,而是对离散token逐渐进行mask和随机替换,最终使其信息完全丢失。生成过程则是相反,从完全被破坏的离散token序列中逐步重建出原始的数据。具体来说,VQ-diffusion的输入是经过破坏t步的离散token序列xt,输出则是预测的原始数据x0。生成过程中则通过已知的xt和预测的x0计算出xt-1的分布,再从中通过采样得到xt-1。进而,可以逐步迭代最终得到生成结果。

因为VQ-diffusion的输入xt和输出x0为长度相同的离散序列,因此VQ-diffusion的模型结构采用堆叠Transformer block的结构。


CTX-txt2vec的模型结构如上图所示。除了包含常规的文本encoder和时长处理模块,我们使用VQ-diffusion作为语音的semantic token的生成器。和既有的VQ-diffusion不同的是,我们需要基于上下文语音来进行生成。因此,我们对上文A和下文B的语音分别提取semantic token得到cA和cB后,将其按时间顺序拼接在输入xt的两侧,得到[cA, xt, cB]。我们将这个拼接后的序列作为我们的VQ-diffusion模块的输入。由于Transformer模型结构的特点,其输出序列和输入序列长度相同,我们仅使用xt部分对应的输出作为预测的x0,而cA和cB对应的输出部分则直接丢弃。这样,通过Transformer中的多头自注意力(multi-head self-attention)层,即可将上下文信息融合进生成过程。这个融合上下文信息的方法,我们称之为contextual VQ-diffusion。

五、Contextual vocoding

我们使用CTX-vec2wav从semantic token生成语音,其模型结构如下图所示。


它基本上由2个结构相同的semantic encoder和一个HifiGAN的生成器组成。此外,我们使用上下文语音的梅尔频谱来提供从semantic token生成的语音过程中所需要的声学细节信息,尤其是说话人音色的细节。具体来说,CTX-vec2wav中的semantic encoder是由基于Conformer的模块组成的。和普通的Conformer不同的是,我们在其中添加了多头交叉注意力(multi-head cross-attention)层。上下文的梅尔频谱在经过一层简单的1D卷积层后,通过semantic encoder中的这些交叉注意力层,融合进语音的生成过程。这个方法,我们称之为contextual vocoding。
考虑到有些数据集不带有说话人标签,或者说话人标签不准确,CTX-vec2wav使用完全无监督的训练方法。具体来说,我们假设训练数据中的每句语音内部的说话人均不变。我们将训练语音中每句话的前2~3秒截取出来,用于模拟上下文的语音,并提取梅尔频谱。再将剩下部分的语音提取semantic token用于语音反合成。反合成的过程中,使用前2~3秒的语音的梅尔频谱提供声学细节。
需要指出的是,这里的梅尔频谱完全没有使用位置编码(position encoding),因此在交叉注意力层看来,它们只是一个没有顺序关系的特征向量的集合。因此,即便训练中仅使用了2~3秒的语音模拟上下文语音,在实际测试中可以使用任意长度的上下文语音,而不存在网络在训练和测试时不匹配的问题。

六、实验与结果

我们使用LibriTTS数据训练UniCATS,并首先测试了CTX-vec2wav在从semantic token重构语音(Resynthesis)上的性能,并与HifiGAN和AudioLM进行了对比。实验发现,CTX-vec2wav不仅在自然度和说话人相似度上超越了两者,甚至优于从acoustic token进行语音重构的Encodec。


我们在基于语音续写的零样本说话人自适应任务上,我们将UniCATS与当前的SOTA模型VALL-E进行了对比,并发现实现了更优的性能。更有趣的是,UniCATS合成的自然度和说话人相似度依然优于使用Encodec进行语音重构的性能,而它是众多依赖于acoustic token的模型的性能上界。


此外,在语音编辑任务上,相比于近期提出的语音编辑模型RetrieverTTS,我们也同样实现了更优的性能。