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

介绍

本门课程是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
语音合成不需要很大的语料就可以收敛,但是时长短的话,那么所涵盖的词汇量就比较少了,如果模型碰到没有看过的词汇就可能瞎念,下图是几个语料库所涵盖的词汇量。

在这里插入图片描述
在这里插入图片描述
从上面可以看到,即使是LibriTTS 也只有大约8万词汇,还离最上面的15万的标准还有一段距离。
解决方法就是不要直接输入文字,而是输入lexicon,lexicon包含有字母和音素的对应关系,然后用音素作为Tacotron的输入。但是使用lexicon会有很多OOV词出现,例如:
在这里插入图片描述
新词模型还是不会念。
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

可以把语法信息加入到语音合成模型中,例如:在这里插入图片描述
这样分解了以后会使得语音合成模型在读句子的时候断句更加人性化,另外一个例子是:
在这里插入图片描述
当然还有用BERT embedding当做输入,效果也还不错。

Attention

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

Guided Attention

Penalizing the non-diagonal attention matrix during training.
由于前面讲过在Decoder的解码的时候Attention在对角线效果最好,因此,有人就弄了一个Guided Attention,在下图的红色区域进行attention就会受到惩罚,导致loss变大,引导Attention在对角线区域进行计算。
在这里插入图片描述

Monotonic Attention

Guided Attention只是引导attention的区域,不是强制性的,Monotonic Attention就会要求一定是由左向右,具体不展开。[Raffel,et al., ICML’17]
在这里插入图片描述

Location-aware attention

这个方法在之前讲ASR中提过
每次生成下一个attention之前要用前一个时间步的attention作为输入。
在这里插入图片描述

其他

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

在这里插入图片描述

Fast Speech

这个模型和另外一个模型DurIAN(Duration Informed Attention Network)一样
模型结构如下图所示:
在这里插入图片描述
输入是一串字母
输出是一串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长度一样。
在这里插入图片描述
最后Duration模型就相当于一个regression模型,看到红色的embedding就复制2次,蓝色的embedding就复制3次。。。
整个大模型就避开Duration模块,进行反向传播
在这里插入图片描述
最后原文给出了结果:
在这里插入图片描述
这里不是原来模型太差,而是测试的句子比较变态,都是念数字或者网址之类的,例如:
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,刚好可以组成一个循环
在这里插入图片描述
具体思路如下,Given pretrained TTS and ASR system。
如果有语音数据,没有文字标签,那么可以:
在这里插入图片描述
如果有文本数据,没有语音标签,那么可以:
在这里插入图片描述
实际上就是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语气一样的输出。
在这里插入图片描述
VC的输入是语音,输出的是语音,也有reference audio,要用reference audio的特征来念黄色语音信号中的内容。
在这里插入图片描述
二者还比较类似。

Controllable TTS的训测

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

GST-Tacotron

GST = global style tokens
模型吃文字的部分,先将文字经过Encoder按字母转成embedding,然后按Tacotron的思路用attention生成语音合成结果
语音部分,reference audio也会通过Feature Extractor(这个模块是和整个大模型一起训练出来的)得到一个向量,然后将这个向量复制,个数要和Encoder的输出一样多。然后蓝色绿色concat起来,然后走Tacotron的attention的路子。
在这里插入图片描述
下面来看为什么Feature Extractor能够过滤掉文本内容?
语音信号经过Encoder得到不是最终结果,而是attention的权重,然后在和一组vector做点乘后相加才得到最后的结果。这组vector是模型学习出来的,也就是global style tokens,他的每个维度对应的是语音的某个style。
在这里插入图片描述
调整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。
在这里插入图片描述
看到这里就是上面我提到过的思想。。。
在这里插入图片描述
当然还可以加上两个模型attention的对应限制:
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值