当前位置:网站首页>一、语音合成与自回归模型
一、语音合成与自回归模型
2022-07-28 05:22:00 【Aaaaaki】
一、语音合成与自回归模型
1 语音合成流程

- 在上述流程中,文本由TTS前端转化为音素,随后音素序列通过声学模型转化为Mel频谱,将Mel频谱输入到声码器中,最后由声码器将其转换为语音。其中Mel频谱由时间轴(横轴)与频率轴(纵轴)两部分组成,是一个二维数据。人听到的声音本质是一段波形,是由大量采样点形成的一维数据。
- 从Mel频谱到波形的过程中,需要声码器来完成频谱转换。目前常用的有基于信号处理的方法,如Griffin-Lim方法;也有基于神经网络的方法,如WaveNet、HiFiNet等
2 端到端语音合成
1. 自回归模型
Tacotron 2 (Google Brain,2017)
Tacotron 2中的Encoder和Decoder层均采用双向LSTM(BLSTM),其目的在于通过双向结构更好的吸收左右两个方向的信息。因为LSTM是一个自回归结构,因此需要吸收上一层的信息来生成下一层信息。
Tacotron 2中采用了Location Sensitive Attention作为注意力结构,能够同时考虑内容与输入元素的位置。该注意力机制中采用了累加注意力权重,令注意力权重网络了解其学到的注意力信息,从而使得模型在序列中持续运行并避免重复未预料的语音。


Transformer TTS
- Transformer TTS简单来说相当于Tacotron 2 + Transformer结构,在Encoder和Decoder层中采用Transformer结构代替了原来的BLSTM结构,同时采用自身的Multihead Attention结构取代Location Sensitive Attention结构,使得模型由串行训练转为并行训练。
- Transformer的Self-Attention可以将整个序列的全局上下文映射到每个输入帧中,实现直接构成远程依赖关系

Deep Voice 3 (Baidu)
不同于Tacotron 2与Transformer TTS,百度在Deep Voice 3中提出了基于全卷积的Character-to-Spectrogram架构,实现了并行计算,且速度快于采用RNN架构的模型,该架构采用全卷积结构作为Encoder,因果卷积(Casual CNN)结构作为Decoder。
Deep Voice 3的转换器同样由卷积构成,根据解码器的隐藏状态预测最终声码器的参数,但与解码器不同,转换器中并未使用因果卷积,因此其可依赖未来的上下文信息进行处理
Deep Voice 3中可以将各类文本特征转换为各类声码器参数,实现各种波形合成方法的比较,如WORLD、Griffin-Lim以及WaveNet等,从而获取最优结果。


自回归方法缺陷
合成速度非常慢,在对速度与实时性要求较高的场景下难以应用。同时因为受限于合成速度,这种方法的拓展成本很高,因此在高流量高并发的场景下很难提供稳定服务,造成该结果的主要原因在于自回归结构自身的缺陷性所致。
存在重复吐词或漏词现象,因此不适用于商业环境。出现该情况的主要原因在于自回归模型的文本端(Input)与Mel频谱端(Output)之间的联系主要由Attention机制去保证,而Attention机制的本质在于使得机器自身去学习文本与语音之间的映射关系。但Attention机制的映射存在不稳定性,导致该情况的发生。
无法细粒度的控制语速、韵律以及停顿等。
2. 非自回归模型
FastSpeech
- 采用全并行的非自回归架构,解决了生成速度慢的问题,同时引入知识蒸馏来使得生成音频的性能达到自回归模型的水平
- 引入Duration Predictoer来预测文本与频谱间的强对齐,从而消除了生成语音的跳词、漏词现象
- 引入Length Regulator模块来负责将文本与语音的隐特征建立联系,从而实现文本到语音的映射,解决了自回归模型中遇到的可控性问题
- 不足:
- 在类似同一句话存在多种因强度、持续时间等因素而不同的音频时,模型无法很好的拟合出这些音频。而是在综合多种音频的基础上拟合出一个相对平滑的结果,即 One-to-Many Mapping 问题。
- 在FastSpeech中,作者尝试通过Duration与知识蒸馏去解决上述一对多映射问题,但Duration的预测精度仍有待提高
- FastSpeech采用了知识蒸馏,其Teacher模型为Transformer TTS模型,Student模型为FastSpeech,其中Teacher模型提供了Duration与Mel频谱,但是由于这种方法需要训练Teacher模型与Student模型,导致训练开销加大,耗时较长。同时由于是Teacher模型学会知识后蒸馏给Student模型,而非学生直接学习数据集,这种数据简化会导致信息缺失,从而影响精度。

FastSpeech 2 / 2s
Work:针对FastSpeech中存在的问题进行了解决
One-to-Many Mapping 问题
- 提供更多的语音变化信息
- 提供更加精细的duration
- 针对知识蒸馏导致的信息损失,改为通过Ground Truth直接训练模型
Variance Adaptor:将变量信息作为额外的引入信息去帮助Mel频谱生成
- Duration Predictor:通过强对齐工具Montreal Forced Alignment(MFA)抽取Phoneme Duration作为训练目标
- Pitch Predictor:通过连续小波变换(Continuous Wavelet Transform,CWT)提取Pitch Spectrogram作为训练目标
- Energy Predictor:计算STFT(短时傅里叶变换)的每个Frame的Energy,然后将其映射到256个值上,将每个值对应的Pitch embedding加到Phoneme Hidden State上。在训练时,Predictor会直接预测映射之前的Energy
Continuous Wavelet Transform(CWT):
为了更好的预测音高曲线的变化,作者引入CWT进行Pitch Spectrogram的提取,由于直接在一维音高曲线上做波形拟合,会出现拟合结果平缓导致语音抑扬顿挫效果不明显的问题,因此作者利用CWT将一维连续音高曲线分解为二维音高频谱,随后在音高频谱上做拟合,相较于一维曲线,二维频谱的动态性要强很多,效果也会更好。且由于CWT在正向转换和逆向转换时造成的信息损失极小,因此作者在合成语音时采用iCWT(逆运算)来将音高频谱(Pitch Spectrogram)转换回音高曲线(Pitch Contour)。

FastSpeech 2s
作者尝试在FastSpeech 2的基础上加入了Waveform Decoder层,由Waveform Decoder代替声码器部分去生成波形,实现了直接从文本信息生成语音,而非生成Mel频谱后再由声码器转换为语音。这种End-to-End的Waveform训练使得FastSpeech 2s相较于其他方法有着更快的合成速度。
Glow-TTS
Glow-TTS与FastSpeech系列最大的不同就在于对齐方案上,FastSpeech中采用的是Teacher模型Transformer-TTS所提供的对齐,FastSpeech 2中采用外部对齐工具MFA进行强制对齐。Glow-TTS无需对齐工具,而是训练时在内部完成对齐。其原因在于Glow模型可以将数据转换为隐特征(latent),生成的latent符合简单分布,而且该过程是双向的,从简单分布中完成latent采样后可通过Glow去逆向复现出数据。

在该工作中,文本输入到Encoder层中编码为Hidden信息,Mel频谱通过Decoder层解码为latent隐特征,在训练时,模型将文本的Hidden与Mel频谱的Latent对齐,通过一个类似动态规划的算法找到两个隐特征间距离最小的最优对齐,得到文本与频谱间的一一对应关系,从中抽取Duration去预测Duration Predictor,而且不同于FastSpeech系列采用L1或L2 Loss去拟合曲线,Glow-TTS通过Glow去直接建模Mel频谱。Glow-TTS通过上述方法,最终有效缓解了One-to-Many Mapping问题


边栏推荐
猜你喜欢

How much does it cost to make a small program mall? What are the general expenses?

1: Why should databases be divided into databases and tables

Reinforcement learning - Strategic Learning

matplotlib数据可视化

Kotlin语言现在怎么不火了?你怎么看?

Small program development solves the anxiety of retail industry

高端大气的小程序开发设计有哪些注意点?

Four perspectives to teach you to choose applet development tools?

Construction of redis master-slave architecture

Pytorch deep learning single card training and multi card training
随机推荐
速查表之各种编程语言小数|时间|base64等操作
4个角度教你选小程序开发工具?
Utils commonly used in NLP
分布式集群架构场景优化解决方案:分布式ID解决方案
CertPathValidatorException:validity check failed
Create a virtual environment using pycharm
深度学习(增量学习)——ICCV2022:Contrastive Continual Learning
深度学习——MetaFormer Is Actually What You Need for Vision
【1】 Introduction to redis
KubeSphere安装版本问题
Reinforcement learning - Basic Concepts
小程序制作小程序开发适合哪些企业?
What should we pay attention to when making template application of wechat applet?
循环神经网络
Briefly understand MVC and three-tier architecture
深度学习(增量学习)——(ICCV)Striking a Balance between Stability and Plasticity for Class-Incremental Learning
Kubesphere installation version problem
微信小程序制作模板套用时需要注意什么呢?
How to do wechat group purchase applet? How much does it usually cost?
微信小程序开发语言一般有哪些?