语音合成技术入门之Tacotron

语音合成TTS

学习李宏毅课程。

输入文字,输出语音。
语音合成技术入门之Tacotron_第1张图片

端到端之前TTS

18世纪就有,能找到demo的是1939年VODER。
就像电子琴一样,用手控制发出不同声音。

语音合成技术入门之Tacotron_第2张图片
到1960年,IBM计算机能合成出歌唱声。

波形拼接
过去最常用的商用语音合成系统:
就是在库里对每个音都存起来,比如说你好吗,就把这三个字的音从数据库里找出来,拼接在一起。
语音合成技术入门之Tacotron_第3张图片
局限性:1. 不自然;2. 要男女声都有,数据库非常大。

随着机器学习的发展,出现了:
参数合成
语音合成技术入门之Tacotron_第4张图片
机器输出概率最大的那个,但概率最大的讲就是均值,所以很长一段都是同样的输出,听起来比较奇怪,但也有人解决这个问题,不过解决方法都很复杂。

后来,进入深度学习时代。

Deep Voice
每个蓝色模块都是基于深度学习的。当时人们只是想到对每个部分进行训练。
语音合成技术入门之Tacotron_第5张图片
如果把上面每个模块都串起来一起train,就是端到端TTS。

端到端TTS

早期端到端TTS

早期人们尝试输入音素,输出如基频,频谱等声学特征,然后用声码器合成。或者输入字,输出声学特征。
语音合成技术入门之Tacotron_第6张图片

Tacotron

而tacotron是最狂的,输入文字,直接输出语谱图,然后就能线性变换到波形。
语音合成技术入门之Tacotron_第7张图片

tacotron字面是什么意思呢?
taco是一种食物,墨西哥卷饼。tron就只是为了增加科技感。
语音合成技术入门之Tacotron_第8张图片

Tacotron结构

语音合成技术入门之Tacotron_第9张图片

Encoder:
把输入的文字转成一组向量。
甚至输入可以有标点符号,让机器学到逗号就是停顿,句号就是结束,感叹号就很惊讶的样子等等。

语音合成技术入门之Tacotron_第10张图片

  • Pre-net:就是几层全连接的神经网络。
  • CBHG:一个比较复杂的模块。(CB就是Conv Bank;H就是Highway layers ;G就是GRU)

为什么要用CBHG,可以不用吗?
可以,v2版本就没用了。
在这里插入图片描述
Attention
文字和声音要有个对应的顺序。
哪段文本,对用声音的哪段语谱。这个对应关系的建模就用attention机制,如下图,如果是左边很好的一条对角线,就说明结果比较好,右边的比较模糊,说明模型有问题。
语音合成技术入门之Tacotron_第11张图片
Decoder
将encoder编码的向量,解码成语谱。注意,Decoder每次会输出好几个向量(why?因为语音信号比较长,一个向量才几毫秒,太短了,多输出几个减少运算量)。第一代里r=3或5。第二代r=1。
语音合成技术入门之Tacotron_第12张图片

Decoder整体结构如下,如何判断句子结束呢?把RNN接上一个二分类器,输出小于0.5就继续,大于0.5就结束。

训练的时候,输入有正确答案,测试的时候没有,导致mismatch。但有个dropout机制,在训练的时候模拟出错的情况。
语音合成技术入门之Tacotron_第13张图片
Post processing
在第一代里是CBHG模块,第二代里就是一堆卷积。
后处理的神经网络作用:
Non-causal,就是可以看整段向量是什么。
对Decoder输出的向量做检查修正。
语音合成技术入门之Tacotron_第14张图片

Tacotron系统好坏?
可以看到第二代很强,一个关键原因是换成了神经网络声码器。
语音合成技术入门之Tacotron_第15张图片
语音合成技术入门之Tacotron_第16张图片
有个很重要的发现:
Tacotron在推理阶段要加dropout!!!
为什么呢?一般dropout在训练时用,推理时要去掉。但Tacotron推理要是不用的话压根出不来人声。目前还没有好的解释为什么。

你可能感兴趣的:(语音合成,深度学习,人工智能,python)