美文网首页
TTS相关总结01-概述

TTS相关总结01-概述

作者: johnzhang123 | 来源:发表于2020-05-11 21:47 被阅读0次

前段时间做了一些TTS相关的工作,这里分几篇来总结梳理一下。因为是刚接触,所以不免有些理解有偏差,欢迎指正~

  1. 整个TTS流程: 一般来说,整个TTS过程分为以下三个部分,前端、TTS、声码器(vocoder);


    TTS流程
    1. 前端:一般来说,需要将文本转化为音素。此外根据TTS模型的需要,提取文本特征
    2. TTS:将音素序列、文本序列等,翻译成该序列对应语音的声学特征,比如声频谱(mel),MFCC等
    3. vocoder:依据声学特征生成波形采样点,从而能够播放
  2. 语音基本知识:
    1. 物理语音模型:空气震动产生声波,人说话时,靠的是发生器官震动,比如肺和声带。震动带动空气中形成驻波,其中最小的频率称为基频,影响到说话者的音色。声波之后会经过声道(口腔、鼻腔),波形会被调制,调制后的频谱包络携带者说话者要表达的信息(文本发音)


      物理语音模型
    2. 音频的基本特征主要有:
      1. F_{0}: 基频
      2. FBANK:语音分帧,在每一帧上做stft,接着进行mel滤波,得到的log能量谱
      3. MFCC: 得到FBANK之后,求倒谱得到,可以解耦包络和精细结构
      4. 衍生特征: 比如FBANK, MFCC的一、二阶导
  3. 基本的TTS方法:
    1. 拼接法:顾名思议,把总有的声音片段录下来,用的时候进行拼接。该方法需要的录音成本很高。
    2. 参数法:就像本文开始的图说的,先转化为声学特征,再通过vocoder生成语音。因此可以说除了拼接法,其他的都属于参数法。但是根据所需前端工作的复杂性,以及发展的历程,可分为以下两类:
      1. 传统参数法:代表工具为HTS和Merlin。HTS和经典的语音识别系统HTS是一家,用HMM-GMM方法建模。Merlin将模型(应该是GMM部分?)分为两类:时长模型和声学模型。这两者的前端工作都比较重,比如都需要音素和语音进行对齐(也可以使用HMM里的vertebi算法自动对齐,不过精度不一定够?),且需要标注当前和周围音素的影响。
      2. 端到端方法:
        1. 传统的方法,没有一定的前端经验是很难做好的。好在随着深度学习技术的深入,端到端方法称为了主流。一是因为效果相比传统方法要好不少(传统方法过于复杂,过多的流程会累积误差,可以看下Merlin工具的流程图),二是因为解放了前端,理论上来说,前端甚至可以不做任何事情,直接把文本扔进去了事。(但一般都会转化为不同层次的音素,且会做一些工作比如韵律,降低网络的负担,获得更稳定的效果)。
        2. 端到端的开山之作是google的tactron1网络, 后边又发布了tactron2网络,附加wavenet声码器,彻底实现了端到端。之后又催生出很多其他的网络:比如有人将tactron2transformer结构来重构,为transformer\ tts,再比如有人觉得TTS速度不快的根本原因是自回归结构,于是又引入了时长模型,发布了fastspeech结构。再比如百度的deep\ voice等等
  4. 语音clone:
    1. 目前用端到端的方法,加上10-20小时的TTS语料,就能很逼近真实的声音了(MOS指标评估)。但在工业界应用时,很难每想合成一个人的声音时,都能获得这么长时间的高质量语料。用比较少的语料合成一个人的声音就称为clone
    2. clone大概有以下几种方法:
      1. 在基础模型上用少量样本进行finetune,要求不能和基础模型的音色差太远
      2. multispeaker方法:在网络里引入embedding 说话人的向量,存储该说话人特有的音色信息,因此网络可以用很多说话人的语料一起训练
      3. 更接近终极的方法:直接从几秒的样例语音里提取改说话人的音色信息,比如sv2tts, 目前在英文上效果还可以
  5. 再谈声码器:
    1. 传统的声码器是用信号方法进行合成,比如WORLD, 需要F_{0}, MFCCAP非周期参数, 效果经常过于平滑
    2. 现代的声码器是基于自回归结构,直接依次回归出采样点,TTS输出的声学特征被当做conditional来使用,开山之作又是google的wavenet,效果比传统的好很多
    3. wavenet虽然好,但是很慢很慢(自回归),后来主要对效率进行改进,比如wavernn使用分段合成, wavegan使用GAN网络, lpcnet与信号处理结合等
  6. voice conversion:
    1. 还想补充一点:voice conversion(语音转换)是个好玩但是很难的东西,它与TTS还不同,它的输入一个人的语音,输出是另一个人的语音。更复杂些的还有多人之间的转换。基于训练的难易,其方法分为需要平行语料和不需要平行语料的。没什么经验就不多说了。

相关文章

网友评论

      本文标题:TTS相关总结01-概述

      本文链接:https://www.haomeiwen.com/subject/ebrynhtx.html