论文速览:低资源语音合成
论文速览:低资源语音合成
提出个性化、定制化语音合成方法AdaSpeech。在音素和句子层级建模声学信息,在预训练和微调时,分别使用编码器提取句子和音素级的向量;为了平衡自适应参数和语音质量,引入条件层规范化,实际自适应的时候,仅微调这部分和说话人嵌入向量。实验中,在LibriTTS数据集上预训练TTS模型,在VCTK和LJSpeech上微调,仅有5千参数量与一个说话人相关。
语音识别(ASR)和合成(TTS)是一项对偶任务,但对于低资源语种来说,缺乏平行语料,因此提出一种几乎无监督方法,仅需要几百条平行语料和其它非平行语料,就可以构建一对语音识别和和合成系统。该方法主要包含4个部分:1)一个去噪自编码器,重建语音和文本,提升语音和文本的语言建模能力;2)对偶转换,提升两个任务的准确率;3)双向序列建模,解决长语音和文本的错误传播问题;4)统一模型结构,基于Transformer,统一TTS和ASR模型结构。
为了实现1)在目标语种语料稀缺的情况下,提升合成质量;2)实现跨语种语音合成,探索了多个训练策略。两个结论:相比于单说话人模型,多人模型在单人数据上微调在大多数情况下都可以获取较好的合成质量;跨语种合成中,MOS是单人模型的约80%。
resVAE模块
加入说话人嵌入向量(SpeakerEmbedding,SE)和语种向量(LanguageEmbedding,LE)。
参加评测的多语种语音合成系统:
实验中,采用统一语种无关的XSAMPA(也就是IPA)。以前的实验表明,在跨语种合成中,复杂的音素,如复合元音、鼻化元音、音节辅音和平舌音,往往会被混淆,合成时只产生一半的音素发音。为了避免这个问题,拆分这种复杂的音素。比如复合元音被分成两个元音,鼻化元音分成一个元音,后面跟着一个鼻化辅音。
可以看到,如果微调的话,原说话人跨语种合成能力会下降,这是可以预期的,因为微调的模型倾向于遗忘之前的知识。所以跨语种合成不要微调更好些。
目标语种为英语时,不同语种的说话人在不同条件下跨语种合成的MOS,不微调+resVAE的方案最优,合成的目标语种语音MOS降低为inlingualsingle-speaker的80%。
展示了3种预训练策略,仅需要1/10的数据就可以获得更好的准确率和自然度。
多人多口音预训练,在单人上微调,效果显著(提升0.1~0.4)。
多语种建模可以提升低资源语种的自然度,多语种模型可以获得与单语多说话人相媲美的自然度。并且可以看到,目标语种的自然度受到添加其它语种数据的策略影响。
在跨语种的语音合成迁移时,由于在原语种上训练出来的模型输入空间和无法直接应用到目标语种上,因此提出了一个方法,学习原语种到目标语种的映射。
核心想法就是利用一个ASR先在源语种上预训练,之后固定住源语种ASR权重并添加一个音素转换网络PTN在目标语种上继续训练,整个网络前面是会从源语音输出源语种的音素one-hot结果,后面是接着一个PTN映射为目标语种对应音素,从而迫使PTN学习一个从源语种到目标语种的映射,如上图1(d)。最后输入一个源语种one-hot向量,通过PTN的map就可以得到目标语种音素的概率:
当然发生冲突时,比如多个源语种音素映射到同一个目标语种音素,就取概率最高的那个映射;如果目标语种音素没有源语种映射,则从头开始学习。知道了这种映射关系之后,在训练目标语种的时候,就可以取对应的嵌入向量初始化,并利用原先的预训练模型继续训练。
预训练的高资源单语种模型,使用相同的网络结构在低资源语种上微调;之后,从预训练单语种语音合成“部分网络迁移”(partialnetwork-basedtransferlearning),最终从预训练多语种语音合成到风格迁移的多语种语音合成。该方法适用于低资源数据领域。使用较少的训练语料,模型可以一步一步从小语音合成网络变为大的目标网络,并产生较高质量的语音。
把语音合成和转换放在一起训练,也就是一个多源、使用两个注意力机制的序列到序列模型,共享解码器且支持多个源。
闭环的语音训练网络,识别将未标注语音特征解码为文本,合成使用识别产生的文本重建原始的语音波形。
提出3步法,使用15分钟建立表现力语音合成。首先利用语音转换,将目标风格的语音转换到其他说话人;然后我们在现有录音的基础上使用该合成数据来训练TTS模型;最后微调该模型。
对于低资源语种,LRSpeech包括3个关键技术:1)在丰富资源的语种上预训练,在低资源语种上微调;2)语音合成和识别对偶训练,迭代式提升各自的表现;3)在高质量的目标说话人语料上知识蒸馏,定制化TTS模型,并利用多个音色的训练语料提升ASR的表现。
适用场景
模型条件限制(网络数据爬取的限制)
三阶段训练流程
训练过程中,语音和文本都是即时转换的,以便TTS和ASR都能利用对方最好最新的结果。在多人模型中,TTS合成的说话人是随机挑选的,以便TTS和ASR都能是多人模型。
WCR是句子中每个词对齐权重最大的点的最小对齐权重,越高的WCR表示对齐越好,不容易发生跳词。
ADR反映的是在从左下角到右上角的一块带形区域内,对齐权重占整体权重的比例。越高表示对齐越集中。
LRSpeech使用的是Transformer作为TTS和ASR的主干网络。speakerembedding后接全连接和SoftPlus层。
在知识蒸馏时,将WCR和ADR低于0.7的合成语音过滤掉,ADR中的b设置为10。隐状态、字符和说话人嵌入维度均设置为384,注意力头数设置为4。在低资源语种上微调时,上采样高质量平行语料,以便和低质量语料规模持平。声码器训练时直接多音库混训,排除掉所有低质量语音。
其中IR表示可懂度,MOS表示平均意见得分,WER,CER分别表示词错率和字错率。Baseline#1表示仅使用高质量低资源语料训练,Baseline#2表示使用高+低质量低资源语料训练,PF表示预训练+微调,DT表示对偶转换,KD表示知识蒸馏。从结果上看,每个步骤对低资源语种都会有提升,在MOS上对偶转换会提升0.4,知识蒸馏会提升0.3。
增加低质量平行语料会提升TTS和ASR的表现。
增加语音,无论是在微调时候已见或者未见的说话人语料,都会提升TTS和ASR的表现。
无论是TTS还是ASR,伪造的假数据越多,效果越好。
立陶宛语,高质量单人平行语料(3.7分钟)+1000句平行语料(1.29小时),已见说话人语音4000句(5.1小时),未见说话人语音5000句(6.7小时),20000句文本。
识别和合成的对偶训练,在上一篇ListeningwhilespeakingSpeech的基础上,将说话人识别模型嵌入到语音训练链路中,为原先的合成模型提供one-shot说话人自适应能力,同时对识别率有一定的提升。
多语种byte作为输入,可以少样本构建低资源语种的端到端语音合成模型。利用分层递进、语种平衡的策略,使用900小时,43个语种,109个说话人构建该多语种语音合成系统。
声学模型采用Transformer-TTS,12层Transformer层,说话人和语种嵌入向量拼接到编码器输出。输入文本使用UTF-8编码,将每一个byte作为输入,因此词表包括256个byte,以及[BOS]和[EOS]。在训练时,仅仅将文本做一些简单的文本规范化,比如将数字转换为文本等,然后转换为byte之后直接输入。
43个语种作为源语种(sourcelanguages),在ISO-639-1标准的定义中,一共是32个语种,囊括了人类大部分的文本类型包括西里尔文、阿拉伯文、天城文、中文和其它音节语言。
分层递进
使用英语Warm-Up至3万步,T1数据加入;训练至35万步,T2数据加入;训练至65万步,T3数据加入。
语种平衡
自适应的时候,如果直接在已经训练好的多语种模型上切换为目标语种微调,会导致过拟合,大量的陪跑语种和语料可以扮演正则化的角色。因此,要采用协同训练的方法,在训练的早期就要把要few-shot的语种加入进去训练。
语种多样性重要,还是每个语种的数据量重要?
如上图2中,T2-表示保持T2的语种数量,但是将语料规模下采样到T1大小;T3-表示保持T3的语种数量,但是将语料规模下采样到T2大小,然后将希腊语作为few-shot的目标语种。可以看到,T2-和T3-基本能够获得和T2、T3相当的表现,也就是说,结合T1、T2、T3的表现差异,语种多样性更为重要。
协同训练时,仅使用相近语种会不会比所有语种都陪跑来得好?
从图2左图IT-IT可以看到,目标语种为罗马尼亚语(ro-ro),仅使用意大利语协同训练,效果基本等同于T1,所以用来陪跑的语种还是丰富多样比较好。
语种一点一点加进入比较好,还是直接一股脑全倒进模型比较好?
从上图4中图的T3D可以看到,如果一股脑全倒进模型,并在希腊语上做自适应,相比于其它的T3,获得的效果明显差于一点一点把语种放进去,在极低的数据量情形下,甚至发生了合成失败。
何时以及如何自适应?
由于目标语种数据量的原因,直接在预训练模型上微调会导致过拟合,并且用来做自适应的预训练模型应该是半收敛状态的。如上图4的T3(650k)所示,650k步自适应到希腊语会导致模型效果下降;而如图T3(800k)所示,800k步自适应到希腊语又会导致泛化能力不足,在10个样本自适应上发生了合成失败。此外,由于观察到一定的过拟合现象,如上图4的T3(0.1)所示,自适应时将希腊语的出现概率由0.25降低到0.1,希腊语的合成可懂度相反有所提升。
纯字符输入是不是就可以完全抛弃专家知识?
如上图4中图,总结了希腊语的G2P规则,记作Pan,主要关注Pan(0.1),自适应时将希腊语的出现概率调整至0.1并采用拉丁化字母输入,效果都有所提升;又比如上图4右图中文的例子,中文转换为拼音之后,能够获得和其它表音文字基本相当的结果,更进一步,如果将越南语拉丁化,并放进T3中辅助中文做自适应,记作VietP,可以看到结果更会有提升。所以,如果有语言学专家知识介入,效果会更好。
可以看到,在Low的语料量级下,英俄希泰中基本能够与音素输入的全语料模型持平。
从上图5可以看出,激活的神经元是和语种相关,而非和样本相关。
从低质量公开语种中获得目标语音。对于多人系统,提出3种方法:1)speakerembedding系统;2)个性化HeySiri(PHS)系统获取说话人表征;3)没有说话人编码器的系统。可以获得以下两个结论:1)基于PHS的说话人表征网络可以获得接近单人模型的合成质量和说话人相似度;2)进行meta-learning可以有效学习未见说话人的表征;3)对于低质量公开语料,相比于单人模型,自适应多人模型可以获得更干净的目标语音。
模型使用说话人嵌入向量和噪音表征作为模型的条件输入。首先合成模型通过多人干净和噪音数据训练;然后预训练模型在加噪低资源说话人数据上自适应;最后输入干净语音表征,合成该说话人干净语音。
引入PnGBERT,作为声学模型的编码器。该模型在原有的BERT基础上,将文本的音素(phoneme)和字素(grapheme),以及词级别的对齐作为输入,在大量文本语料上以自监督模式预训练,并在TTS任务上微调。实验结果显示,PnGBERT作为声学模型编码器可以产生更加自然的韵律和更准确的发音。
BERT,Transformer编码器,预训练掩码语言模型(MaskedLanguageModel,MLM),输入包含若干句子,每个句子用段ID标识。每段开头加入一个特殊的token,CLS,可以作为MLM额外的分类目标;另一个特殊token是SEP,标识段边界。BERT的输入是token、segment和postion嵌入的元素加。
PnGBERT包含两段,第一段是音素序列,IPA音素作为token;第二段是词面序列,将子词作为token。类似于BERT添加[CLS]和[SEP]标识,所有的token共享嵌入表,预训练目标仅有MLM。除了BERT原始的token、segment、position嵌入,还有第四个word-position嵌入,提供词级别的音素和词面对齐。
自监督模式,音素利用一个外部工具获得,词面可以用Word-Piece、SentencePiece或者BPE切分获得,MLM目标仅在预训练阶段使用。
在词层面进行随机掩码,同时掩蔽一个词的词面和对应的音素序列。12%被MSK替换,1.5%被随机替换,1.5%保持不变。
使用PnGBERT替换NAT的编码器,仅微调PnGBERT高层网络权重,防止因为小的TTS训练集造成微调时的过拟合,提高最终TTS模型的泛化能力。因为多注意力全局视野的特性,PnGBERT能从文本和音素获取信息。
英语多人NAT(243小时),PnGBERT取代NAT编码器,PnG使用6层Transformer层,隐层大小512,8个注意力头,batch_size为24K,100万步。将PnGBERT安装在NAT上微调时,只微调最上面的2层Transformer层,其它部分冻结权重。PnGBERT预训练时使用1.31亿条英文文本语料,将词面利用SentencePiece划分为子词,利用工具将词面转换为音素。
上表中,Genericlines表示包括长句在内的正常句子,Hardlines表示标题或者长的复合名词,Questions表示问句,因为问句一般与陈述句的韵律有所不同。从上表可以看到,使用预训练PnGBERT+词级别的随机掩蔽+提供音素和词素的对齐信息效果最好,如果非预训练PnGBERT+NAT效果最差,关闭PnGBERT中掩蔽策略或者词级别的对齐(wordpositionembedding)都会让效果有损失。在英语上,使用预训练的PnGBERT会提升合成语音的“韵律”、“声调”、“重音”、“发音”等方面。
从上表中可以看到,NATwithPnGBERT几乎和真人发音没有统计差异。
探索预训练策略,包括zero-shot多说话人端到端声学模型、声码器基础语料的最佳选择策略,用于梅尔频谱的声学配置和最终音频输出。发现对获取的有声书语料设置一个简单的质量阈值,可以提升合成语音的自然度和对未见说话人的相似度;24kHz和16kHz差异明显,WaveRNN和WaveNet合成音质相似,但WaveRNN合成速度更快。
多说话人语音合成的半监督方法。通过离散语音表征和编解码器框架,多说话人语音合成模型可以利用无标注语音进行训练。仅利用1个小时平行语料,无论该平行语料是多人还是单人,模型都可以产生可懂的语音,即使之前的非平行语料是带噪的,模型仍然能够受益。此外,发现了平行语料中不同说话人特性对半监督语音合成的影响。
半监督训练方法提升Tacotron的数据利用效率,使用非平行语料预训练编解码器,可以提升模型的合成效果。
仅使用语音数据预训练解码器,也就是等价于,利用预先学习的声学表征初始化解码器。在预训练阶段,编码器端输出置为0,解码器使用教师强制(Teacher-forcing)模式,完全作为上一帧预测下一帧的预测器,迫使解码器成为帧级别的声学自回归模型。预训练解码器完成后,使用平行语料微调整个模型。但是这种预训练方法存在一定训练和微调间的不匹配,因为在预训练阶段,解码器只依赖于上一时间步的输出,而在微调阶段,解码器还额外依赖编码器输出的文本表征。
T-Base表示没有任何预训练手段的基线,T-Enc表示预训练编码器,T-Dec表示预训练解码器,T-Enc-Dec表示同时预训练编解码器。从上表第二行可以看到,预训练解码器可以显著提升合成质量,从第三、四行可以看到,仅仅预训练解码器效果最好。
上图表示合成语音和真实语音之间的MCD。在极低的语料情形下,仅预训练解码器能够加速模型收敛,提升合成语音的质量,但是随着数据量增大,提升的效果会减小。
PhD论文,偏向于数据发掘。主要分为以下几块:1)前后端建模工具和评测方法;2)语音合成的语料特点;3)从可懂度角度的语料挑选;4)从自然度角度的语料挑选;5)自适应、新的前端特征和其它建模方法。
零语料比赛,仅提供未知语种的语音,没有任何对齐、文本或者标注,必须以无监督方法自行寻找子词单元。
使用BERT辅助Tacotron-2的训练,降低语音合成对高质量语音的要求。从大量无标注文本中学习的BERT表征,可以弥补低质量平行语料的缺陷。输入文本同时传入BERT和编码器,BERT有自己的注意力模块,编码器和BERT获得的表征拼接后输入解码器。即使发现嵌入BERT无法提升自然度,或者合成更为干净的语音,但是加入BERT后仍能发现,可以减少停不下来,加速收敛等益处。
提出序列表征量化自编码器(SeqRQ-AE)从非平行语料中产生序列表征,该表征和语音的音素序列相近。合适的时长分割、语音聚类对序列表征较为重要,离散表征和音素之间的映射通过少量的平行语料学习得到。
把每个人的语料都拿来训练就优于或者持平单人模型,并且多人模型混训可以提升低资源说话人的音质。
无监督方式发现子词单元,合成目标说话人语音。向量量化变分自编码器(VQ-VAE)将语音映射到隐空间,迫使其映射到最邻近的码本,并产生稠密表示;多尺度码本到频谱(Code2Spec)转化器根据VQ-VAE生成的码本向量,生成目标语音的幅度谱。在实验中尝试了若干种其它的聚类方式比如K-Means和GMM,并将其与VQ-VAE进行了比较。