李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron

文章目录

  • 介绍
  • TTS before End-to-end
    • Concatenative Approach
    • Parametric Approach
    • Deep Voice
  • Tacotron:End-to-end TTS
    • Encoder 类似 Grapheme-to-phoneme
    • Attention类似Modeling Duration
    • Decoder :Audio Synthesis
    • Post processing
    • 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

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

Parametric Approach

基于HMM来进行语音合成,结构比较复杂,没有展开。
HMM/DNN-based Speech Synthesis System (HTS)
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第2张图片

Deep Voice

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

李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第3张图片
可以看到里面有四个模块
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
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第4张图片
下面分别详细讲解各个构件。

Encoder 类似 Grapheme-to-phoneme

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

Attention类似Modeling Duration

• The output audio and input text much be monotonic aligned.
下面左边是训练比较好的结果,右边就是烂掉的结果,通过attention可以预测每个音素发音的时长:
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第6张图片

Decoder :Audio Synthesis

吃encoder的输出,产生声音信号,和一般的seq2seq的Decoder差不多
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第7张图片
从最开始的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,根据阈值判断是否需要结束),判断当前是否需要结束:
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第8张图片

Post processing

吃上面图中RNN的输出,吐出另外一排vector。
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第9张图片
加入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]
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第10张图片
Version 2 [Shen, et al., ICASSP’18]
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第11张图片
WaveNet is much better than Griffin-Lim (这个很直观WaveNet是DL的模型)
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第12张图片
WaveNet needs to be trained,但是用上面数据训练WaveNet结果有差异,如果用语音合成的数据来训练WaveNet,最终效果最好,如果用真人的声音来训练WaveNet则效果稍差。
李宏毅DLHLP.13.Speech Synthesis.1/2.Tacotron_第13张图片

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