Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis

作者:ye jia
单位:google

abstract

我们提出一个TTS的神经网络,可以生成多个speaker的语音,包括在train的时候没有见过的。系统包括三个独立训练的部分
(1)a speaker encoder net: 在数千个说话者的带噪数据集上训练的,不需要文本数据,可以从几秒的语音中生成一个embedding vector;
(2)一个基于tactron2的seq2seq synthesis net : 在speaker embedding的基础上从文本生层梅尔谱;
(3)一个基于wavenet的自回归的声码器:可以将梅尔谱转成时域信号。
我们证明了从判别的speaker encoder网络中学到的说话者信息可以转换到的multi-tts任务中,并且可以合成训练时unseen的说话者语音。我们在各种大的、多样化的数据集上训练speaker encoder网络以获得最好的泛化性能。最后,我们展示了随机采样的speaker embeddings可以在合成中生成和训练时不一样的语音,说明模型已经学到了说话者的特征。

1. introduction

 系统可以再不修改参数的情况下,仅通过target几秒的声音完成ttts生成这个人声音的任务。为了太逼真产生安全问题,我们生成的语音和real speech还是可以区分的(认为是train set太小,无法完全模仿)。如果要合成逼真的声音,需要数十分钟的语音。
 我们将speaker modelling和speech synthesis解耦合,通过第一个网络建模说话者特征,然后训练一个高质量的tts就可以在一个小的数据集上完成转换。decoupling network可以使两个模型在单独的数据集上训练,因此并不需要高质量的多说话者数据。speaker encoder网络建模声纹信息,可以判断两句话是否是一个人说的,在带有混响和背景噪声的多说话者数据集上训练。
 合成网络在1.2kspeaker的数据集上训练,encoder网络在18k speaker的数据集上训练,不仅改善了自适应的质量,而且在遇到unseen speaker的时候就可以通过之前的embedding完成合成。
 最初tactron2+wavenet可以在text-audio pair上完成单个说话者的转换;【8】将其拓展到一个low-dimensional embedding speaker,【13】deep voice 3可以通过一个全卷积的网络支持libri speech的2400个speaker。他们都是fix set of embedding ,可以在训练过的说话者上进行转换。【18】voice loop可以基于一个固定尺寸的memory buffer对unseen speaker进行合成,但是需要这个说话者10多分钟的speech and transcripts。【2】只需要few-shot speaker adaptation,只需要几秒的speaker speech,不需要transcripts,模型在小数据集上做微调就可以生成高质量的语音。合成网络使用triplet loss以确保同一个speaker 的编码和speaker encoder是否一致,cycle-consistency loss是用于确保合成的编码和自适应的一致。
 我们的工作和【2】【10】很像,但是我们用一个单独的网络训练speaker encoder,从预训练的speaker verification模型探索迁移学习。然后用一个端到端的合成网络,不需要中间的语言信息。

2 . Multispeaker speech synthesis model

系统由3个部分组成
(1)speaker encoder:参考【24】,计算一个fix dimensional vector;
(2) seq2seq合成:参考【15】,icassp2018
(3) wavenet vocoder:参考【19】

在这里插入图片描述
2.1 Speaker encoder

 在一个文本独立的说话者判别网络上,用d-vector进行训练,参考【20,9】,网络训练端到端的speaker verification loss,就可以将同一个说话者说的不同的话的embedding有高度的cosin相关性,而不同说话者的embedding会被分在不同的空间。句子被分成1.6s长,且打上speaker identity标签,不需要transcript。输入40维MFCC,网络由3个LSTM stack组成,每个stack预测256个输出,最后的输出由最后一帧通过最后一层L2正则化产生。在inference阶段,任意长度的句子被窗长800ms,帧移50%,网络在每一帧run,然后输出求平均、归一化。
 尽管网络并没有对专门为合成相关的说话者特征做优化,在说话者判别网络上的embedding可以直接在合成网络上表示speaker identity。

2.2 Synthesizer
 speaker embedding会caoncat在合成encoder每一步的输出上。合成器输入文本和对应的音素序列,可以快速的收敛并且改善发音,使用预训练的encoder提取说话者embedding,训练合成器的迁移学习,训练时reference speaker和target一样,但没有给出说话者身份的标签。目标谱特征用窗长50ms,帧移12.5ms,送入80维梅尔谱,在预测谱时,L2 loss上增加L1 loss,这种混合loss的效果更好。没有在embedding上增加loss项。
2.3 neural vocoder
 wavenet vocoder参考【15】,30层的dialted conv,在多说话者数据集上训练,得到multi-vocoder。
2.4 Inference and zero-shot speaker adaptation
 因为用于合成的说话者特征是从speech中得到的,因此可以在训练集以外完成。我们的方法是用一句speech,循环几次,就可以捕捉到new speaker的特征,代表了对新说话者的zero-shot adaptation。
图2可以从基频和能量的角度分析合成的正确性。

总结:核心思想就是单独加入speaker verification网络,生成speaker embedding,然后送入生成网络。

猜你喜欢

转载自blog.csdn.net/qq_40168949/article/details/88424878