李宏毅DLHLP.13.Speech Synthesis.1/2.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
这节讲前面两个。

TTS before End-to-end

Concatenative Approach

整个方法很简单,就是把很多声音信息都存在数据中,然后要使用的时候就拿出来进行拼接。
在这里插入图片描述
例如,要说:人工智能四个字,那么就把这四个字的发音找到,拼接起来,当然拼接起来会比较生硬,因此出现大量的研究来减少Concatenation cost,使得结果更加自然。
这个方法有个缺点,无法合成任意一个人的声音。如果没有保存张三的声音,那么就无法合成张三的声音。

Parametric Approach

基于HMM来进行语音合成,结构比较复杂,没有展开。
HMM/DNN-based Speech Synthesis System (HTS)
在这里插入图片描述

Deep Voice

比较接近端到端的做法就是Deep Voice,百度做的。输入文字,输出语音。

在这里插入图片描述
可以看到里面有四个模块
Graphemeto-phoneme根据字母猜测发音
Duration Prediction根据phoneme预测每个发音的时长
Fundamental Frequency Prediction预测音高,就是声带震动的频率,不需要声带震动就输出【X】

Tacotron:End-to-end TTS

TACOTRON:TOWARDS END-TO-END SPEECH SYNTHESIS
[Wang, et al., INTERSPEECH’17]
[Shen, et al., ICASSP’18]
比较一下在出现端到端的Tacotron之前,研究者也做了一些尝试:
Tacotron:
• Input: character
• Output: (linear) spectrogram 这个东西只要做linear transform就是声波

First Step Towards End-to-end Parametric TTS Synthesis
• Input: phoneme
• Output: acoustic features for STRAIGHT (vocoder)
Char2wav
• Input: character
• Output: acoustic features for SampleRNN (vocoder)
Tacotron的整体架构如下:
包含:Encoder、Decoder、Attention、Post-processing
在这里插入图片描述
下面分别详细讲解各个构件。

Encoder 类似 Grapheme-to-phoneme

Encoder的输入是character,经过linear transform变成embedding。
在这里插入图片描述
这里可以带标点,模型可以学习断句以及语气。
然后接入Pre-net,实际是就是带抓爆的FC。
在这里插入图片描述
然后经过CBHG模块,Convolutional bank+Highway+GRU
在这里插入图片描述
这个模块如下图所示,这里不展开
在这里插入图片描述
CBHG在Tacotron的v2中就没有了,整个构架变成了:
在这里插入图片描述

Attention类似Modeling Duration

• The output audio and input text much be monotonic aligned.
下面左边是训练比较好的结果,右边就是烂掉的结果,通过attention可以预测每个音素发音的时长:
在这里插入图片描述

Decoder :Audio Synthesis

吃encoder的输出,产生声音信号,和一般的seq2seq的Decoder差不多
在这里插入图片描述
从最开始的zero vector进入Pre-net,然后经过RNN,加上Attention,然后再进RNN得到多个结果,这里是和普通seq2seq的Decoder不一样的地方,一般的seq2seq的Decoder一次只输出一个vector。一次生成vector的数量记为r,是一个超参数。
这是因为做语音合成输出是语音,语音对应到spectrogram是很长的,1秒声音对应很多个vector,如果每个RNN只生成一个向量,那么sequence长度很长,RNN很容易烂掉,而且模型压力太大,效率低。如果r=3,那么sequence长度变为原来的1/3。但是在v2里面r=1也没问题。
这里面模型在训练和测试的时候数据差异较大,对着训练数据(正确答案)进行训练模型容易在正式测试的时候考不出好成绩,这里的抓爆随机丢掉正确答案的部分内容,让模型也考高分,真正测试的时候火力全开,就考得不错。
由于这里的输入是spectrogram,不像character模型知道什么时候结束,所以每个timestep都会加入一个询问模块(Binary的classifier,根据阈值判断是否需要结束),判断当前是否需要结束:
在这里插入图片描述

Post processing

吃上面图中RNN的输出,吐出另外一排vector。
在这里插入图片描述
加入Post processing的思想是:RNN的输出是一个序列,每个当前时刻的输出都是根据前一个时刻的输出作为输入而产生的。当模型发现前面有错误的时候没有办法回头进行修改,使用Post processing模块,让模型可以对前面所输出的内容进行修订。
因此,在训练模型的时候有两个targets
1.希望RNN输出的Mel-spectrogram与正确答案越接近越好
2.希望CBHG的输出的Mel-spectrogram(或者是linear-spectrogram)与正确答案越接近越好
最后spectrogram经过Vocoder得到声波(这块后面再展开,这个模块一般都是单独训练)
Griffin-Lim in v1
Wavnet in v2
在这里插入图片描述

Tacotron性能

性能指标为:MOS,直接人听声音,然后打分(0-5分)
Version 1 [Wang, et al., INTERSPEECH’17]
在这里插入图片描述
Version 2 [Shen, et al., ICASSP’18]
在这里插入图片描述
WaveNet is much better than Griffin-Lim (这个很直观WaveNet是DL的模型)
在这里插入图片描述
WaveNet needs to be trained,但是用上面数据训练WaveNet结果有差异,如果用语音合成的数据来训练WaveNet,最终效果最好,如果用真人的声音来训练WaveNet则效果稍差。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

oldmao_2000

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

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

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

打赏作者

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

抵扣说明:

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

余额充值