deep voice2:Multi-Speaker Neural Text-to-Speech

本文提出了一种基于低维度speaker embedding的多说话者语音合成技术,可在单一模型中生成不同说话者的声音,并显著减少了训练所需的语音数据量。通过改进DeepVoice2和Tactron系统,实现了高质量的语音合成效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单位:百度谷歌AI Lab

abstract

 我们提出一种利用低维度的speaker embedding,仅通过一个模型生成多个说话者的TTS增强技术。和depp voice的思路一致,增加了building block,改善了性能;对于tactron,增加了一个post-processing neural vocoder,改善了性能。在这两个目前最好的TTS系统上都证明了我们方法的有效性。证明一个TTS系统可以通过每个说话者半小时以内的数据学到上百个语音特征,几乎完整的保存了说话者的特性。

1. introduction

 常规的TTS只能完成single-speaker的任务,要想要做multi-speaker就需要不同的数据集和模型参数,因此代价比较高。本文实现了all-neural multi-speaker TTS system,在不同的说话者之间共享大量的参数,不仅可以用一个模型生成不同说话者的声音,而且每个说话者所需的数据量比训练一个单说话者所需的更少。
 主要贡献:

  1. 提出deep voice1的改进版deep voice2;
  2. 将tactron中的GL声码器替换为wavenet-based spec2wav vocoder;
  3. 以两个单说话者模型为baseline,证明引入可训练的speaker embedding可以实现multi-speaker speech synthesis。

2.related work

3.single-speaker deep voice2

在这里插入图片描述
 deep voice2和deep voice1的主要区别将音素持续时间和frequency的部分分离,在deep1中,这两部分是由一个模型预测的,在deep2中分成两部分,首先预测音素持续时间,然后将它作为输入预测基频F0。

3.1 Segmentation model

 segmentation model是用于估计音素位置,用无监督的方法学习。用CTC loss区分不同的音素,然后找到它们的边界位置。相比于deep1,增加了批量正则化(BN)和残差连接(residual connect)的部分。
在这里插入图片描述
该模型在静默帧和其他音素的边缘会判断出错,为此,我们引入一个post-processing step去纠正,当segment model解码到静默帧时,用silence detection heuristic2调整边界的位置。
在这里插入图片描述

3.2 duration model

 在deep2中,我们不再预测连续值的duration ,取而代之的是把duration prediction看成一个序列标记问题,将它离散化搭配log-scaled bucket,将每个音素按照持续时间分配bucket label。用条件随机场(CRF)对输出层逐对的可能性进行序列建模。在inference的时候,用viterbi 前传后传算法从条件随机场中解码随机的离散序列。发现:量化duration prediction,并且通过CRF引入pairwise dependence改善了合成的性能。

3.3 Frequency Model

 从duration model中解码之后,预测的音素duration从一个音素输入特征上采样到frequency model逐帧的输入。

3.4 Vocal Model

 deep voice2 的vocal model基于wavenet的结构,包含两层双向QRNN conditioning network,移除了gated 和残差链接之间的1*1卷积,所有层共用一个conditioner bias。
 这样可以将模型尺寸缩小7倍,inference time减少25%,并且不影响感知性能。

4 Multi-Speaker Models with Trainable Speaker Embeddings

 用一个低维的speaker embedding vector表示说话者,和之前有所区别的是,我们并不依赖每个说话者的权重矩阵或者layers。说话者相关的参数存在低维向量中,因此所有说护者可以共享几乎全部的权重。用speaker embedding生成RNN初始态,非线性偏置,以及乘的gating factor。speaker embedding用【-0.1,0.1】的均匀分布随机初始化,反传训练,每个模型有自己的speaker embedding set。
 为了使说话者独特的发声特性影响模型,我们尝试把speaker embedding加到模型的多个位置,最后发现如果在是输入层中加入speaker embeddiing ,仅会对vocal model起作用,对其他部分都没有作用。可能是因为wavenet中高维的残差链接,并且很难学到高质量的speaker embedding。下面有几种改善质量的方法:

  • Site-Specific Speaker Embeddings:在模型每一个用的地方,将shared embedding通过affine projection 和nonlinearity转换成合适的维度和形式。
  • Recurrent Initialization:用site-specific speaker embedding将循环层的变量初始化;
  • Input Augmentation:在循环层的每一个时间步,将Site-Specific Speaker Embeddings和输入拼接;
  • Feature Gating:多层逐元素的Site-Specific Speaker Embeddings激活,使其成为可自适应的flow。(5.我们假设模型可以学到所有必要的信息,让speaker embedding 决定说话者的哪些信息可以用,以及他们对激活函数有多大的影响)
4.1 Multi-Speaker Deep Voice 2

 Deep Voice2 models的每一个模型有单独的speaker embedding,也可以组合成一个大的speaker embedding数组,但是每个embedding是单独训练的。

4.1.1 segment model

和deep voice1不同的是,激活函数的BN乘以Site-Specific Speaker Embeddings,所有的卷积层之间共享相同的speaker embedding。 在这里插入图片描述

4.1.2 duration

 speaker embedding一个作为和特征concat作为输入,另外一个作为循环层的初始值。

4.1.3 Frequency Model

 将所有的recurrent layer,除了输出层,都用speaker embedding初始化。如3.3所述,single-speaker frequency model预测一个归一化的frequency,然后依赖均值方差,经过一个固定的线性变换变成observed speaker。不同说话者的值相差很大,比如说,男性说话者基频F0通常比较低。为了解决这一问题,我们将均值和标准差作为可以训练的模型参数,将它们乘以与speaker embedding有关的缩放因子。
在这里插入图片描述
gf是speakerembeddingg_f是speaker embeddinggfspeakerembedding
μf、σf分别是数据集的均值、标准差 \mu_f、\sigma_f分别是数据集的均值、标准差μfσf
Vμ、Vσ是可以训练的均值、标准差V_\mu 、V_\sigma是可以训练的均值、标准差VμVσ

在这里插入图片描述

4.1.4 Vocal Model

  multi-speaker vocal model 仅使用输入增强,将site speaker embedding 嵌入到每个输入帧上。和global conditioning不同,它影响的是local condition。
 没有speaker embedding也会生成听起来有点特色的声音,因为它接收了frequency 和duration model的distinct(独特的)特征。然而,加了embedding之后语音质量有所提升,并且观察到embedding收敛到一个有意义的latent space。

4.2 Multi-Speaker Tacotron

 除了deep voice2,我们也在Tactron上实验,当训练multi-speaker tactron 的版本时,发现模型的性能高度依赖模型的超参数,在speaker的小数据集上学不到attention机制。并且发现,如果不同语音片段的开始时刻不一致的话,模型较难收敛到一个合理的attention曲线并生成可识别的语音。因此,将每个语音中前后的静默帧删除。因为对模型超参数和预处理的高度敏感,后续的优化很大可能会提升性能。

4.2.1 Character-to-Spectrogram Model

Tactron包含CNHG、attention decoder、CBHG post-processing模块。
发现如果将embedding加到post-processing上会使输出性能下降;但是将embedding加到CBHG encoder中是必要的。尝试将site-specific embedding加到highway的输入上,以及加到GRU的每个时间步输入上。
在这里插入图片描述
发现将embedding加到decoder上也有效果,分别加在decoder prenet和attention RNN上。还加在decoder rnn的输入,也作为content-based attention的tanh激活函数的bias。
p.s.两个图的结构不一样,不能根据位置对应模块。
在这里插入图片描述

4.2.2 Spectrogram-to-Waveform Model

 tactron用GL算法作为声码器,迭代的估计未知的相位,但是输入端微小的噪声会在输出端造成很大的误差,为了改进,我们用wavenet vocoder的vocal model作为替换,由表1可以看出,性能得到明显改进。
在这里插入图片描述

5. result

5.1 Single-Speaker Speech Synthesis

表1是单说话者的语音合成,每个说话者20h的训练数据,说明1⃣️deep voice2相对于deep voice1 有质量改进;2⃣️wavenet对于tactron有质量改进;

5.2 Multi-Speaker Speech Synthesis

 在VCTK(44K,108speaker)上训练,也在audiobook(238小时,447speaker,每人30min)上训练,结果表明模型可以学到上百个不同口音和节奏的说话者的特征,并且learned embedding在一个有意义的latent space中。
 用crowdMOS framework评估语音质量,将原始音一同送入进行测试,因为原始音的问题而不是模型的问题,打分会被压低。但是实际上,在考虑低采样率或者扩展的时候,和真实值的差别不大。

6.conclusion

 本文探索了将tts从单说话者扩展到多说话者,使用了低纬度的可训练的speaker embedding。未来的工作:模型最多可以学到多少说话者的信息?要合成高质量的语音,每个spaker最少需要多少的语音数据?当新增说话者时,是否可以调整模型参数并且只训练new speaker embedding?speaker embedding是否可以用做一个有效的向量空间,就像词向量一样?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值