李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron

文章目录

  • 介绍
  • Beyond Tacotron
    • Mispronunciation
    • Syntactic information
    • Attention
      • Guided Attention
      • Monotonic Attention
      • Location-aware attention
      • 其他
    • Fast Speech
    • Dual Learning
  • Controllable TTS
    • Controllable TTS vs VC
    • Controllable TTS的训测
    • GST-Tacotron
    • Two-stage Training

介绍

本门课程是2020年李宏毅老师新课:Deep Learning for Human Language Processing(深度学习与人类语言处理)
课程网站
B站视频
公式输入请参考:在线Latex公式
整个语音合成包括下面四个内容
TTS before End-to-end:端到端学习之前的语音合成
Tacotron:End-to-end TTS:端到端的语音合成
Beyond Tacotron:端到端学习之后的语音合成
Controllable TTS:如何控制TTS
这节讲后面两个。
先把Tacotron的几个问题及改进讲解一下:

Beyond Tacotron

Mispronunciation

Tacotron存在的一个问题就是Mispronunciation,发音有错误。
The raters considered ground truth is better than Tacotron 2 because occasional mispronunciation by Tacotron is the primary reason.
语音合成不需要很大的语料(语音识别需要上万小时的数据),常见的语音合成语料有:
Lj speech,一个人的语音20多小时
VCTK,40多小时
Nancy :http://www.cstr.ed.ac.uk/projects/blizzard/2011/lessac_blizzard2011/
LibriTTS dataset: 585 hours
语音合成不需要很大的语料就可以收敛,但是时长短的话,那么所涵盖的词汇量就比较少了,如果模型碰到没有看过的词汇就可能瞎念,下图是几个语料库所涵盖的词汇量。

李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第1张图片
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第2张图片
从上面可以看到,即使是LibriTTS 也只有大约8万词汇,还离最上面的15万的标准还有一段距离。
解决方法就是不要直接输入文字,而是输入lexicon,lexicon包含有字母和音素的对应关系,然后用音素作为Tacotron的输入。但是使用lexicon会有很多OOV词出现,例如:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第3张图片
新词模型还是不会念。
18年有研究人员提出• Character and phoneme hybrid input
当出现有新词不会念的时候,可以将新词添加到lexicon字典中,从而使得机器学会念这个新词。
If the pronunciation of machine is incorrect, one can add the word into the lexicon to fix the problem.

Syntactic information

可以把语法信息加入到语音合成模型中,例如:李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第4张图片
这样分解了以后会使得语音合成模型在读句子的时候断句更加人性化,另外一个例子是:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第5张图片
当然还有用BERT embedding当做输入,效果也还不错。

Attention

下面看一下Tacotron中用到的Attention技巧

Guided Attention

Penalizing the non-diagonal attention matrix during training.
由于前面讲过在Decoder的解码的时候Attention在对角线效果最好,因此,有人就弄了一个Guided Attention,在下图的红色区域进行attention就会受到惩罚,导致loss变大,引导Attention在对角线区域进行计算。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第6张图片

Monotonic Attention

Guided Attention只是引导attention的区域,不是强制性的,Monotonic Attention就会要求一定是由左向右,具体不展开。[Raffel,et al., ICML’17]
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第7张图片

Location-aware attention

这个方法在之前讲ASR中提过
每次生成下一个attention之前要用前一个时间步的attention作为输入。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第8张图片

其他

[Battenberg, et al., ICASSP’20]应该是一个概述里面分析了attention对语音合成的重要性,老师还提到了这个文章中的一个有趣的实验,用LJ speech中长度小于5秒和小于10秒的句子来训练模型,然后让模型生成哈利波特小说的句子,这些句子都很长。那么对比了四种attention模型,其中常规的Content-Based、Location-Sensitive的attention语音合成模型效果很差。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第9张图片
还有一个例子是百度的第三代deep voice?这个模型做了很多处改进
1.attention一定在对角线区域(只在inference的时候用)
2.在query和key中加上positional encoding的信息,positional encoding由说话的人来决定,不同人说话速度不一样。

李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第10张图片

Fast Speech

这个模型和另外一个模型DurIAN(Duration Informed Attention Network)一样
模型结构如下图所示:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第11张图片
输入是一串字母
输出是一串acoustic feature
之前讲Tacotron的时候我们用的是Seq2Seq模型吃输入吐输出,这里用Seq2Seq是因为输入输出的长度不一样,这里的Fast Speech先有一个Encoder,把字母变成embedding,然后接入一个Duration模型,这个模型根据字母embedding预测每个字母应该要念的时长,例如上图中是231,那么根据231将字母embedding分别复制2/3/1次,也就是经过Duration模型后字母embedding延展了,这里延展的长度和acoustic feature的长度是一样的,然后再经过Decoder得到最后结果。
这个模型前向传播没有问题,Duration模型的输出是整数,因此是不可导的,无法进行反向传播。
这里作者给出的解决方案是单独为Duration模型提供ground truth,单独训练。这个ground truth是先训练一个Tacotron,然后用Tacotron输出得到字母embedding应该要重复几次才能和acoustic feature长度一样。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第12张图片
最后Duration模型就相当于一个regression模型,看到红色的embedding就复制2次,蓝色的embedding就复制3次。。。
整个大模型就避开Duration模块,进行反向传播
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第13张图片
最后原文给出了结果:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第14张图片
这里不是原来模型太差,而是测试的句子比较变态,都是念数字或者网址之类的,例如:
zero zero zero zero zero zero zero zero two seven nine eight F three forty zero zero zero zero zero six four two eight zero one eight
c five eight zero three three nine a zero bf eight FALSE zero zero zero bba3add2-c229-4cdb-
Calendaring agent failed with error code 0x80070005 while saving appointment.
Exit process-break 1d-Load module-output ud-Unload module-ignore ser-System error-ignore ibp-Initial breakpoint -
h t t p colon slash slash teams slash sites slash T A G slash default dot aspx As always, any feedback, comments, two thousand and five h t t p colon slash slash news dot com dot com slash islash n e slash f d slash two zero zero three slash fd

Dual Learning

根据之前学的两个模型,ASR和TTS,刚好可以组成一个循环
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第15张图片
具体思路如下,Given pretrained TTS and ASR system。
如果有语音数据,没有文字标签,那么可以:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第16张图片
如果有文本数据,没有语音标签,那么可以:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第17张图片
实际上就是AE的思想。

Controllable TTS

一段声音包含三部分内容。
说什么:说话的内容由文本决定
怎么说:说话的语气
谁说的:语者的声音特征
后面两个因素是可以控制的,接下来看如何控制。
对于谁在说,可以实现的应用有:
• Synthesize speech for a specific person (voice cloning)
但是问题是:
• Lack of high quality single speaker data to train a speech synthesis system
对于怎么说,可以控制因素有:
• Intonation (语调), stress (重音), rhythm (韵律) …
• Prosody (抑扬顿挫):Prosody is the variation in speech signals that remains after accounting for variation due to phonetics, speaker identity, and channel effects (i.e. the recording environment).[ Skerry-Ryan, et al, ICM’18]

Controllable TTS vs VC

Controllable TTS的输入是文字,输出是一段文字对应的语音信号,这里要实现抑扬顿挫的效果,还需要附加一份reference audio,使得输出语音信号跟着reference audio语气一样的输出。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第18张图片
VC的输入是语音,输出的是语音,也有reference audio,要用reference audio的特征来念黄色语音信号中的内容。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第19张图片
二者还比较类似。

Controllable TTS的训测

训练时inference audio实际上就是ground truth。我们希望模型可以学习如何从inference audio中抽取语者的特征以及语气等特征。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第20张图片
测试的时候可以换一个人的声音作为inference,那么就可以合成想要的结果。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第21张图片
这样做有一个问题,我们仔细看模型的目标,把reference audio看出输入,实际上是要最小化reference audio和输出的reconstruction error,那么模型就会耍赖,无论你拿什么当reference audio,直接照抄后输出相同的东西,这样的reconstruction error就最小了,从而忽略了文本内容。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第22张图片
这样在测试的时候就变成:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第23张图片
解决这个问题我本来以为是要加另外一个constraint,就是使得输出的语音文字要和输入文字越相近越好。结果不是,而是希望TTS模型只尽量抽取reference audio的语者信息和语调信息,不要抽取文字或者内容信息。因此加一个模块叫:Speaker Embedding,经过这个模型后reference audio就会过滤掉内容信息。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第24张图片

GST-Tacotron

GST = global style tokens
模型吃文字的部分,先将文字经过Encoder按字母转成embedding,然后按Tacotron的思路用attention生成语音合成结果
语音部分,reference audio也会通过Feature Extractor(这个模块是和整个大模型一起训练出来的)得到一个向量,然后将这个向量复制,个数要和Encoder的输出一样多。然后蓝色绿色concat起来,然后走Tacotron的attention的路子。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第25张图片
下面来看为什么Feature Extractor能够过滤掉文本内容?
语音信号经过Encoder得到不是最终结果,而是attention的权重,然后在和一组vector做点乘后相加才得到最后的结果。这组vector是模型学习出来的,也就是global style tokens,他的每个维度对应的是语音的某个style。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第26张图片
调整global style tokens某个维度语音合成的效果就会出现不一样的效果。
• What does the tokens effect?
• One token corresponds to a lower pitch voice
• One token for a decreasing pitch
• One token for a faster speaking rate
具体可视化结果可以看原文。

Two-stage Training

另外一种过滤文本信息的方法就是Two-stage Training,这个方法在VC中有介绍,这个时候训练的文本和语音内容不一样,这个时候没有ground truth。训练的目标不好定,这个时候需要利用GAN的思想在后面接ASR。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第27张图片
看到这里就是上面我提到过的思想。。。
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第28张图片
当然还可以加上两个模型attention的对应限制:
李宏毅DLHLP.14.Speech Synthesis.2/2.More than Tacotron_第29张图片

你可能感兴趣的:(李宏毅.DLHLP2020)