文章目录
- 前言
- 一、传统语音合成系统
- 1. 总体框架
- 2. 基于统计参数的语音合成
- 2.1 系统流程图
- 2.2 模型算法
- 二、端到端的合成语音系统
- 1. 总体框架
- 2. 基于深度学习的语音合成
- 2.1 系统流程图
- 2.2 特征网络模型算法
- 1. Tacotron
- 2. DeepVoice
- 3. DeepVoice2
- 4. DeepVoice3 & Tacotron2
- 5. Transformer
- 6. FastSpeech
- 2.3 声码器模型算法
- 1. Griffin-Lim
- 2. WaveNet
- 3. WaveRNN
- 4. MelGAN
- 总结
前言
- 语音合成,通常又称文语转换(Text To Speech,TTS),是一种可以将任意输入文本转换成相应语音的技术,是人机语音交互中不可或缺的模块之一。
- 传统的语音合成系统 通常包含 前端和后端 两个模块。 前端模块主要是对输入文本进行分析,提取后端模块所需要的语言学信息。对中文合成系统来说,前端模块一般包含文本正则化、分词、词性预测、多音字消歧、韵律预测等子模块。后端模块根据前端分析结果,通过一定的方法生成语音波形。
- 传统的语音合成系统的不足: 传统的语音合成系统,都是相对复杂的系统,比如,前端系统需要较强的语言学背景,并且不同语言的语言学知识还差异明显,因此需要特定领域的专家支持。后端模块中的参数系统需要对语音的发声机理有一定的了解,由于传统的参数系统建模时存在信息损失,限制了合成语音表现力的进一步提升。而同为后端系统的拼接系统则对语音数据库要求较高,同时需要人工介入制定很多挑选规则和参数。
- 端到端语音合成系统: 直接输入文本或者注音字符,系统直接输出音频波形。端到端系统降低了对语言学知识的要求,可以很方便在不同语种上复制,批量实现几十种甚至更多语种的合成系统。并且端到端语音合成系统表现出强大丰富的发音风格和韵律表现力。
- 语音合成根据应用的算法思想的不同,总体可以分为两类:基于统计参数的语音合成(传统)、基于深度学习的语音合成(端到端)。
一、传统语音合成系统
1. 总体框架
- 前端模块通常采用NLP(自然语言处理)提取文本的语言学特征;
- 后端模块一般分为基于统计参数建模的语音合成(Statistical Parameter Speech Synthesis,SPSS,以下简称参数合成),以及基于单元挑选和波形拼接的语音合成(以下简称拼接合成)两条技术主线。
- 参数合成: 在训练阶段对语音声学特征、时长信息进行上下文相关建模,在合成阶段通过时长模型和声学模型预测声学特征参数,对声学特征参数做后处理,最终通过声码器恢复语音波形。(优点:音库较小时,有比较稳定的合成效果;缺点:统计建模带来的声学特征参数过平滑,以及声码器对音质会有损伤。)
- 拼接合成: 通常也会用到统计模型来指导单元挑选,训练阶段与参数合成基本相同。在合成阶段通过模型计算代价来指导单元挑选,采用动态规划算法选出最优单元序列,再对选出的单元进行能量规整和波形拼接。(优点:可直接使用真实语音片段,最大限度保留语音音质;缺点:需要音库较大,无法保证领域外文本的合成效果。)
2. 基于统计参数的语音合成
2.1 系统流程图
- 首先利用特征提取器从文本中抽取语言学特征,然后统计生成模型(也称声学模型)从语言学特征中生成声学特征,之后另一个系统利用声学特征重建语音波形(这种系统被称作声码器)。
- 特征提取器的主要作业是生成语言学特征,以帮助声学模型生成更为准确的声学特征。
- 声学模型无法直接产生语音波形,其主要原因是,语音非常复杂且难以建模。因此声学模型一般输出梅尔频谱等中间形式表示,然后再由声码器根据中间形式表示语音。
- 声码器通过梅尔频谱等声学特征生成音频,需要将低维的声学特征映射到高维的语音波形,计算复杂度较高,因此波形波形恢复过程是语音合成系统提升效率的关键步骤之一。另外,由于声码器需要学习预测的信息量较大,因而也限制了最终的语音质量。
2.2 模型算法
- 统计参数语音合成大多基于隐马尔科夫模型(Hidden Markov Model,HMM),这种方法将文本中提取到的语言学特征使用决策树进行聚类,并为每个类训练HMM。HMM的任务是生成频谱系数和一个标志位,该标志指示待生成的音频的哪些部分应包含语音。之后最大似然参数生成算法(Maximum Likelihood Parameter Generation,MLPG)采样频谱系数,将其送入MLSA声码器产生最终的语音波形。
- Zen等人尝试将参数合成方法中HMM替换为深度神经网络(Deep Nerual Network,DNN),该方法改善合成语音的质量。
参考:基于深度学习的中文语音合成_陈梦楠(华东师范大学-硕士学位论文)
二、端到端的合成语音系统
1. 总体框架
- 为了解决传统语音合成的弊端促使了端到端语音合成的出现,研究者希望能够使合成系统能够尽量的简化,减少人工干预和对语言学相关背景知识的要求
- 端到端合成系统直接输入文本或者注音字符,系统输出音频波形。前端模块得到极大简化,甚至可以直接省略掉。端到端合成系统相比于传统语音合成,降低了对语言学知识的要求,可以方便的在不同语种上复制,批量实现几十种甚至更多语种的合成系统。
- 2017年初,Google 提出了一种新的端到端的语音合成系统——Tacotron。Tacotron是一种端到端的TTS生成模型。所谓“端到端”就是直接从字符文本合成语音,打破了各个传统组件之间的壁垒,使得我们可以从<文本,声谱>配对的数据集上,完全随机从头开始训练。从Tacotron的论文中我们可以看到,Tacotron模型的合成效果是优于要传统方法.
参考:手把手教你打造端到端语音合成系统
2. 基于深度学习的语音合成
2.1 系统流程图
- 文本预处理:为中文文本添加韵律信息,并将汉字转化为注音序列;
- 声学特征生成网络:根据文本前端输出的信息产生声学特征,如:将注音序列映射到梅尔频谱或线性谱;
- 声码器:利用频谱等声学特征,生成语音样本点并重建时域波形,如:将梅尔频谱恢复为对应的语音。
2.2 特征网络模型算法
1. Tacotron
- 真正意义上的端到端语音合成系统,输入文本(或注音字符),输出语音。(后续会有详细介绍 。 论文参考 )
- 优势:减少特征工程,只需输入注音字符(或文本),即可输出声音波形,所有特征模型自行学习;方便各种条件的添加,如语种、音色、情感等;避免多模块误差累积;
- 缺陷:模型除错难,人为干预能力差,对于部分文本发音出错,很难人为纠正;端到端不彻底,Tacotron实际输出梅尔频谱(Mel-Spectrum),之后再利用Griffin-Lim这样的声码器将其转化为最终的语音波形,而Griffin-Lim造成了音质瓶颈。
2. DeepVoice
- 将传统参数合成的TTS系统分拆成多个子模块,每个子模块用一个神经网络模型代替。DeepVoice将语音合成分成5部分进行,分别为:文本转音素(又称语素转音素, G2P)、音频切分、音素时长预测、基频预测、声学模型。(后续会有详细介绍 。 论文参考 )
- 文本转音素
DeepVoice直接输入文本即可,但是由于不同语言存在“同字不同音”的现象,因此需要将文本转化为注音字符。对于中文而言,就是将汉字转化为拼音。 - 音频切分
获得每个音素在对应音频中的起点和终点。使用Deep Speech 2: End-to-End Speech Recognition in English and Mandarin的对齐方法,这些对齐信息用于训练后面的“音素时长预测”模型。 - 音素时长预测和基频预测
该模型为多任务模型,输入带有重音标注的音素序列,输出为音素时长、是否发音的概率和基频 - 声学模型
即后文的“声码器”(Vocoder)。用于将前面得到的高层特征转换为声音波形。DeepVoice的声学模型即是在前文的WaveNet基础上改进的。改进的主要方向是:改变网络层数、残差通道数、矩阵乘代替上采样卷积、CPU优化、GPU优化等。 - 优势:提供了完整的TTS解决方案,不像WaveNet需要依赖其它模块提供特征,使用的人工特征也减少了;合成速度快,实时性好
- 缺陷:误差累积,5个子模块的误差会累积,一个模块出错,整个合成失败,开发和调试难度大;虽然减少使用了人工特征,但在这个完整的解决方案中,仍然需要使用音素标记、重音标记等特征;直接使用文本输入,不能很好解决多音字问题。
3. DeepVoice2
- 上文DeepVoice升级版,引入“说话人”向量,能够合成多种音色的语音。
- 对DeepVoice的改进:
- 音频切分模块和上代结构不变,但加入了batch normalizaiton和残差连接,对原始音频做平滑归一化处理,固定阈值来确定是否为静音音素。
- DeepVoice使用一个模型同时预测音素时长和基频,而DeepVoice2分拆成两个模型。音素时长预测看作是序列标准问题,将连续时长离散化,模型为Neural Architectures for Named Entity Recognition。基频预测使用时长和音素作为输入,只输出发音概率和基频(DeepVoice还输出音素时长)。动机:联合预测还是独立预测,取决于任务之间是否相互促进,存在共同点,音素时长和发音概率&基频关联不大,所以分拆。连续时长离散化的理由在于音素时长不需要十分精准,音素边界存在10~30毫秒的扰动对合成音质无影响,而离散化后更容易处理。
- 声学模型采用继续改进后的WaveNet
- 增加“说话人”支持:在encoder、decoder和vocoder三处添加说话人信息,说话人信息是自动从语音数据中学习到的一个16维向量:
- 音频切分模块,激活函数之前,说话人向量和batch normalization的结果做点乘
- 音素时长预测模块,使用说话人向量初始化RNN,并和输入做拼接
- 基频预测模块,使用说话人向量初始化RNN
- 声学模型模块,说话人向量和输入做拼接
4. DeepVoice3 & Tacotron2
- DeepVoice3,基于卷积序列到序列模型的多说话人语音合成。(后续会有详细介绍 。 论文参考 )
- Tacotron2 (后续会有详细介绍 。 论文参考 )
5. Transformer
- 模型主体仍是原始的Transformer结构,在输入阶段和输出阶段做了一些改变。在编码器的输入阶段,首先把文本转化为音素,对音素进行了词嵌入,然后进入编码器预处理网络。编码器的预处理网络主要是由3个卷积层组成,之后预处理网络的输出就会被送入Transformer前馈网络。(后续会有详细介绍 。 论文参考 )
- 优势:在于训练速度大大提高,加快了2到3倍。
- 缺点:实践上,有些rnn轻易可以解决的问题transformer没做到,比如复制string,或者推理时碰到的sequence长度比训练时更长(因为碰到了没见过的position embedding);
6. FastSpeech
- 微软提出的快速、鲁棒的语音合成方案,借鉴了Transformer。
- 优势:并行合成梅尔频谱,极大加速声学特征的生成;删除了注意力机制,避免注意力机制无法对齐的问题;
- LightTTS主要是为了在缺少平行语料的情况下,实现语音合成系统。
参考:语音合成技术概述
2.3 声码器模型算法
1. Griffin-Lim
- Griffin-Lim是一种在仅有幅度谱,而缺少相位谱的憒况下熏建时域波形的算法。由于要对抛弃相位儕息的语音波形进行恢复,因此需要通过迭代,尽可能“猜测”出原始信息。(后续会有详细介绍 。 论文参考 )
2. WaveNet
- WaveNet是一种典型的自回归生成模型,所谓自回归生成模型,即是利用前面若干时刻变量的线性组合来描述以后某时刻变量的线性回归模型。不对语音做任何先验假设,而是利用神经网络从数据中学习分布,不直接预测语音样本值,而是通过一个采样过程来生成语音。(后续会有详细介绍 。 论文参考 )
- 优势:能根据声学特征,生成高质量的语音。
- 缺陷:1)每次预测一个采样点,速度慢;2)WaveNet并非完整的TTS方案,依赖其余模块提供高层特征,前端分析出错,直接影响合成效果;3)用于TTS时,初始采样点的选择很重要
3. WaveRNN
- WaveRNN采用一种全新的声码器架构,结构尤其簡单,主体仅由一个单层循环神经网络(RNN)组成,并且RNN利用稀疏矩阵进一步降低计算量,相比WaveNet合成速度提升10倍左右。(后续会有详细介绍 。 论文参考 )
4. MelGAN
- MelGAN采用非自回归前馈卷积架构,在不引入额外蒸馏和感知损失的前提下,依然能够产生高质量的语音,是第一种利用GAN合成时域波形的方法。
- 优势:模型计算复杂度低,并行度高f因而合成速度极快。(后续会有详细介绍 。 论文参考 )
总结
- 本文是对语音合成技术的一个归纳总结,后续会对相关算法进行深入的研究、阐述。
本文参考来源:
语音合成技术概述
端到端语音合成及其优化实践(上)
端到端语音合成及其优化实践(下)
基于深度学习的语音合成技术进展