语音合成技术(深度学习方法简介)

语⾳合成技术(深度学习⽅法简介)
语⾳合成技术(深度学习⽅法简介)
⼀、定义
语⾳合成(Text-To-Speech,简称 TTS),⼜称⽂语转换技术,是将⽂字信息转变为可以听得懂的、流利的语⾳输出的⼀种技术。
其与我们⽐较熟悉的语⾳识别技术(Automatic Speech Recognition,简称 ASR)⽬标相反。
ASR 是将声⾳转化为⽂字,类⽐于⼈类的⽿朵;⽽ TTS 则是将⽂字转化为语⾳(朗读出来),类⽐于⼈类的嘴巴。
⼆、实现⽅法
实现 TTS,⽬前⽐较成熟的有两种⽅法:“拼接法”和“参数法”。
1. 拼接法
⾸先,要准备好⼤量的语⾳,这些⾳都是⼜基本的单位拼接成的(基本单位如⾳节、⾳素等),然后从
已准备好的声⾳中,抽取出来合成⽬标声⾳。
优点:语⾳合成的质量⽐较⾼。
缺点:数据量要求很⼤,数据库⾥必须有⾜够全的“⾳”。⼀般需要⼏⼗个⼩时的成品语料。企业级商⽤的需要⾄少 5 万句,费⽤成本在⼏百万元。
2. 参数法(包含深度学习的⽅法)
根据统计模型来产⽣每时每刻的语⾳参数(包括基频、共振峰频率等),然后把这些参数转化为波形。主要分为 3 个模块:前端、后端和声码器。
优点:对数据的要求要⼩点。
缺点:质量⽐拼接法差⼀些。但是随着深度学习技术(Tacotron、WaveNet 等)的发展,参数法的质量也超过了拼接法,渐渐趋近于⼈类的⾳质⽔平。
三、模块介绍(⾮拼接⽅法介绍)
1. TTS 前端
TTS 前端的主要任务就是⽂本分析,根据输⼊的⽂字信息⽣成对应的语种、⾳素(或者⾳节)、韵律、情感信息。情感信息是提⾼语⾳合成效果情感丰富度的关键,普通 TTS
可以不预测情感标签。
主要分为 4 个步骤,⽂本结构分析、⽂本规范化、⾳素⽣成、韵律预测。情感 TTS 需要多⼀个步骤:情感分析。
a. ⽂本结构分析
需要分析输⼊的⽂本的语种信息,并为每个语种的句段加上标签,同时需要将⽂本进⾏分段、分句等,删除⽆意义的⽂本输⼊,⽅便后续步骤的处理。
b. ⽂本规范化(Text Normalization,简称 TN)
⽂本的输⼊常常带有简略词、⽇期、公式、号码等⽂本信息,我们需要通过⽂本规范化,对这些⽂本块进⾏处理以正确发⾳。同时这⼀步骤也需要删除⽆发⾳的字符,以及全⾓
半⾓转化、简繁转化等。
⽂本规范化就是通过对上下⽂⽂本的分析,结合上下⽂环境,把输⼊⽂本中正常⽂本以外的⾮标准⽂本信息转化为对应⽂字的过程。
如:
“京东 618 买东西”中的“618”应该规范为“六⼀⼋”,⽽“东西是在京东 618 元买的”中的“618”则应该规范为“六百⼀⼗⼋”。
“2016-05-15”、“2016年5⽉15号”、“2016/05/15”也可以统⼀为⼀致的“2016年5⽉15号”。
⽂本规范化最常规的⽅法就是正则匹配替换,但是遇到复杂的没法从上下⽂的字眼中到合理的匹配规则的话,则需要加⼊⽽外的词性,或者通过统计模型、机器学习、深度学
习的⽅法提取语义信息进⾏判断。
c. ⾳素⽣成(字⾳转化,Grapheme-To-Phoneme,简称 G2P)卡口摄像头
在语⾳合成中,中⽂的⾳素常常使⽤的是拼⾳,实际上会切分为声母和韵母,并且会调整删除 yw 声母、调整 [jqx] 后的 u、[zcs] 后的 i、"[zcs]h|r" 后的i和其他声母之后的 i 区分
开来。英⽂则多使⽤的是 ARPAbet 符号集。
在多语种的语⾳合成中,有时我们也会将不同语种的⾳素再转化为不同语种之间有交叉集合的国际⾳标来实现声学模型不同语种之间的迁移。
三通截止阀
拼⾳⽣成主要解决⼏个重点问题,多⾳字预测、多⾳词预测、三声连读变调、⼀不变调、⼉化⾳预测、轻声预测等。
这些问题都有各⾃的解决⽅案,这些问题也和分词、词性、命名实体识别有着分不开的关系。
c1. 多⾳字预测,往往是词典、规则、模型等多⽅⾯进⾏优化。其中具有长时依赖的多⾳字,肯定需要的就是具有长时依赖的 LSTM 或者 Transformer 的模型来解决,预训练的语⾔模型也是可以拿来微调使⽤的。
c2. 多⾳词也属于多⾳字的范畴,但往往也需要拿⼀些特别的多⾳词进⾏单独的优化。
c3. 三声变调的实现,通过规则就可以解决。需要深⼊思考“⼩⽼虎”、“展览馆”这样的三声连读变调的区别在哪⾥。当然能否到这个规则,以及能否⽤程序实现这个规则,都是⼀个考验,我就不多说了。
c4. ⼀不变调较为简单,规则实现。“⼀”⼀般在⼝语中会读出“yi1”、“yi2”、“yi4”、“yi5”⼏个拼⾳;⽽“不”则会读出“bu2”、“bu4”、“bu5”。其中“⼀”单念或⽤在词句末尾,或表⽰序数、基数等时,读原调
阴平的特点还⽐较⿇烦,可以列⼊多⾳字⽤模型来优c5. ⼉化⾳和轻声预测,也是需要通过词典、规则和模型来共同优化的。也不排除你的词典够⼤,⽆需模型来解决。
d. 韵律预测
韵律是语⾳合成节奏⾃然度的重要因素。什么地⽅需要停顿,停顿多久,哪个字或者词语需要重读,哪个词需要轻读等,才得以实现声⾳的⾼低曲折,抑扬顿挫。
不同时长的韵律停顿预测的实现⽅法可以和分词类⽐,看作是多种不同颗粒度的分词也不为过。参考分词的 BMES 等标注⽅式。⽽且不同停顿时长的韵律预测的预测还可以利⽤
多任务学习⼀起优化,甚⾄和多⾳字的预测⼀起学习。
e. 情感分析
对于提升语⾳合成的情感丰富度,需要对每个句⼦做情感的分类。更精细的,可能还需要做到词汇级别,不过这个标注任务难度将是指数级提升。
情感分类任务,多分类模型解决,最⼤熵 Loss。
2. TTS 后端
人参切片机
TTS 后端的任务就是需要将 TTS 前端合成的语种、⾳素、韵律、情感标签等特征作为输⼊,多⼈模型还需要多输⼊⼀个 speaker 信息,通过模型学习的⽅式来实现从⽂本特征
转化为对应⾳频的声学特征(mel 等)。
对应模型的设计,各个特征之间如何量化、融合,以及加⼊的时机都会影响合成的效果。顺便⼀说 Reference Encoder 或者是 GST(global style token)的出现,各个特征
classifier 的加⼊或者 id2embedding 引导的⽅式都⼤⼤提升了多说话⼈多语种多情感模型的效果。
因为⽂本和语⾳的特征,在时长上是不相等的。所以当前⽤于语⾳合成的深度学习模型分为两种,⼀种是以 Tacotron 为代表添加了注意⼒机制的 seq2seq 的⾃回归模型,另⼀
种就是以 FastSpeech 为代表的通过预测每个⾳素时长,再进⾏扩展的前馈⾮⾃回归⽹络。
a. Tacotron
Tacotron 是第⼀个真正意义上端到端的语⾳合成系统,它输⼊合成⽂本或者注⾳串,输出线性谱,再经过 Griffin-Lim 转换为波形,⼀套系统完成语⾳合成的全部流程。
Tacotron2 主要的改进是简化了模型,去掉了复杂的 CBHG 结构,同时更新了 Attention 机制,提⾼了对齐稳定性,同时使⽤更为强⼤的 WaveNet 作为声码器。
另外,Blizzard Challenge 2019 结果出炉,Tacotron + Forward Attention,MOS 分 4.3 分有点出乎意料了,⼤⼤改善了 Tacotron 的稳定性。guided_attention_loss 也经常⽤来
改进 Tacotron 的效果。
缺点:
a1. 合成语⾳的速度较慢:以⾃回归(Autoregressive)的⽅式⽣成梅尔谱(Mel-Spectrogram),再通过声码器(Vocoder)合成语⾳,⽽⼀段语⾳的梅尔谱通常能到⼏百上千帧,导致合成速度较慢;
a2. 合成的语⾳稳定性较差:采⽤编码器-注意⼒-解码器(Encoder-Attention-Decoder)机制进⾏⾃回归⽣成,由于序列⽣成的错误传播(Error Propagation)以及注意⼒对齐不准,导致出现重复吐词或漏词现象;
a3. 缺乏可控性:⾃回归的神经⽹络模型⾃动决定⼀条语⾳的⽣成长度,⽆法显式地控制⽣成语⾳的语速或者韵律停顿等。
b. FastSpeech
FastSpeech 采⽤⼀种新型的前馈 Transformer ⽹络架构,抛弃掉传统的编码器-注意⼒-解码器机制。同时使⽤长度调节器、⾳素持续时间预测器,通过每个⾳素的持续时间将⾳
素序列平铺以匹配到梅尔谱序列的长度。这样⼦便可以实现不等长推理了。
10 18 100 101
FastSpeech 缺点:
b1. FastSpeech 依赖 Teacher-Student 的知识蒸馏框架,训练流程⽐较复杂;
b2. 由于知识蒸馏,FastSpeech 的训练⽬标相⽐真实语⾳存在信息损失,同时从 Teacher 模型获得的时长(Duration)信息不够准确,两者都会影响合成语⾳质量。
为了解决 FastSpeech 的问题,FastSpeech2 直接⽤真实的语⾳数据作为训练⽬标避免信息损失,同时引⼊了更精确的时长信息和语⾳中的其它可变信息(包括⾳⾼(Pitch)和
⾳量(Energy)等)来提⾼合成的语⾳质量。
FastSpeech2 其引⼊了时长预测器、⾳⾼预测器和能量预测器。在训练时,模型直接使⽤可变信息的真实值,与编码器的输出融合,作为解码器的输⼊,同时训练预测器使其拟
合真实的可变信息。在推理阶段,模型使⽤预测器预测的可变信息。
3. 声码器
说为声码器,其实还是有多重任务需要完成。⽐如降噪、变调、变速、⾳量调节等。当然声码器最主要的还是将后端⽣成的声学特征转化为⾳频。
简单介绍⼏个声码器,统⼀⽤声学特征 mel 作为输⼊来说明,也可以使⽤ MFCC,或者多个特征⼀起输⼊,如 WORLD 中的 f0、sp、ap,或者 LPCNet 中的 BFCC、pitch、
correlation。
a. Griffin-Lim
实现较为简单的声码器当然就是 Griffin-Lim(简称 GL),是在仅已知幅度谱、不知道相位谱的条件下重建语⾳的算法。
算法的实现极其简单。它是⼀个迭代算法,迭代过程如下:
a1. 先随机初始化⼀个相位谱;
a2. ⽤相位谱和已知的幅度谱经过 ISTFT 合成新的语⾳波形;
a3. 对合成的语⾳做 STFT,得到新的幅度谱和相位谱;
a4. 丢弃新的幅度谱,⽤新的相位谱和已知的幅度谱合成新的语⾳,如此重复,直⾄合成的语⾳达到满意的效果。
c. WaveNet
WaveNet 采⽤膨胀因果卷积,空洞卷积的作⽤⾃然就是扩⼤感受野,并⽤ ConvInUpsampleNetwork 将 mel 上采样到点的分辨率,在残差空洞卷积及门激励单元模块ResidualConv1dGLU 中融合特征,并使⽤跳连接将每层结果相加作为模块的输出,之后再经过1x1卷积调整通道数,根据⼀个序列的前 t-1 个点预测第 t 个点的结果,将⾳频采样点进⾏µ律量化便可以⽤交叉熵损失做分类。
缺点:WaveNet 因其⾃回归特性,其⽣成速度⼗分缓慢,由于样本点是逐⼀⽣成,因此⽣成⼀秒的声⾳讯号可能就要花上数分钟的时间,使其在实际应⽤上受到限制。
此外,模型以之前⽣成的样本点作为输⼊来⽣成下⼀个样本点,因此当⽣成较差的样本点时,误差可能会不断累积下去,影响⾳质。
d. Parallel WaveGAN
Parallel WaveGAN 使⽤ GAN 的思想,使⽤ WaveNet 作为⽣成器,判别器判断⽣成的⾳频是否为真。
不同于 WaveNet,其使⽤⾼斯噪声作为输⼊,并没有使⽤因果卷积,模型在训练和推理过程中都是⾮⾃回归的,loss 使⽤多分辨率的stft loss,GAN 的 loss 则使⽤最⼩⼆乘GAN(LSGAN)的 loss,在 GPU 上推理速度明显提⾼,且其也验证了 GAN 的使⽤对⾳质有提升效果。
e. WaveGlow
WaveGlow, ⼀种依靠流的从梅尔频谱图合成⾼质量语⾳的⽹络。流模型的⼯作提出,只要神经⽹络的是可逆的,就可以通过最⼤化训练数据的似然度来训练⽹络。WaveGlow 结合了 Glow 和 WaveNet 的思想,以提供快速、⾼效和⾼质量的⾳频合成,⽽且不需要使⽤⾃回归。
酒精增稠剂WaveGlow 仅使⽤单个⽹络实现,⽤单个损失函数训练:最⼤化训练数据的似然度,这使得训练过程简单⽽稳定。
平均意见分数(MOS分)评估表明该⽅法能⽣成和最佳的WaveNet实现质量相当的结果。
f. WaveRNN
WaveRNN 使⽤上采样⽹络将 mel 采样到点分辨率,再通过 RNN ⽹络,逐点推出,当然也可以设计成⼀次推理多个点,但是总归还是⼀个⾃回归⽹络,也使⽤了µ律量化来做使模型从回归变成分类预测。
并且其在训练过程中对 GRU ⽹络的权重逐渐做了稀疏化,使得⽹络得以在 CPU 上快速推理。⽽且 RNN 结构的使⽤,使得其可以流式输出,提⾼了⾸包的输出效率。为了提⾼WaveRNN 的稳定性,也可以添加 LPC 进⾏优化。
g. LPCNet
LPCNet ⽹络可以分解为两个⼦⽹络: Frame rate network 和 Sample rate network,外加⼀个计算 LPC 的模块。
⽹络的核⼼设计在 Sample rate network 部分,Frame rate network 主要为 Sample rate network 提供⼀个条件向量的输⼊,这个条件向量⼀帧计算⼀次,并在该帧时间内保持不变。
玻璃杯设备LPC 计算模块则从输⼊特征中计算线性预测参数 LPC,LPC 也是⼀帧计算⼀次,并在帧内保持不变。
其与 WaveRNN 最⼤的区别就是其估计的是真实点 s(t) 与 LPC 根据前⼏个点推出来点 p(t) 的差值 e(t)
。训练过程中输⼊是 p(t)、s(t-1)、e(t-1),输出是 e(t)。
h. MelGAN
MelGAN 使⽤ GAN 的思想,但是并没有⽤噪声作为输⼊,⽽是直接输⼊ mel,⽣成器⽤反卷积做上采样,之后再使⽤多层残差块同时使⽤空洞卷积扩⼤感受野对特征进⾏整理,多次上采样的作⽤下,把通道数从 mel 的通道数降低到1,同时将帧长倍增为时间上的长度。
损失函数上,其采⽤了 Hinge loss 作为⽣成对抗⽹络的损失,⽣成器的另⼀损失函数为特征匹配损失。
MelGAN 在效率上提升显著,但是效果还是存在瑕疵,⽐较容易出现基频不稳定的问题,听起来不流畅。
i. HiFi-GAN
由于语⾳⾳频由具有不同周期的正弦信号组成,因此对周期模式进⾏建模对于⽣成真实的语⾳⾳频很重要。
因此,其提出了⼀种由多个⼩的⼦判别器组成的判别器,每个判别器只获得原始波形的特定周期部分。这种多周期判别器是其成功地合成真实语⾳⾳频模型的基础。
另外还有⼀个类似 MelGAN 中的多尺度判别器。HiFi-GAN 在 GAN 的 loss 上也选择最⼩⼆乘 GAN 的 loss。
最后其⽣成器的 loss 由多周期、多尺度的组成的特征匹配 loss 和 LSGAN 的 GAN loss 以及其加了⼀个⽣成波形求 mel 谱与真实 mel 之间的差别的 l1 loss 组成。
其效果确实明显优于 MelGAN,⽽且其 V3 在 CPU 上的合成速度⽐实时快 13.44 倍,在单个 V100 GPU 上的合成速度⽐实时快 1186 倍。
关于降噪、变调、变速、⾳量调节等,我们可以从合成的⾳频上进⾏调节,也可以从声学特征上进⾏调节再过声码器噢。
四、思考
为了实现⾼效率以及⾼⾳质两个效果,我们往往需要进⾏取舍,不同搭配。
同时,提⾼效率也可以通过切短⼀次合成的⾳频的时长来实现:
在 TTS 前端需要尽量切分为较短的⽂本⽚段,TTS 后端则需要将模型做成流式输出,解码器每推理⼀步都可以预先输出给声码器进⾏波形⽣成,只不过声码器多考虑多段波形之间的衔接问题⽽已。

本文发布于:2024-09-22 02:03:06,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/239719.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   合成   需要   信息   预测   训练
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议