[自然语言处理-入门] 语音合成

个人导航

知乎:https://www.zhihu.com/people/byzh_rc

CSDN:https://blog.csdn.net/qq_54636039

注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码

参考文章:各方资料

TTS before End-to-end

TTS: text to speech: 文本转语音
End to end: 端到端: 输入直接到输出(中间不用人工)

1. 拼接合成(Concatenative)
  • 从大语音库剪片段拼起来
  • 自然度高,但不灵活、库巨大
2. 参数合成(Parametric / HTS)
  • 用 HMM/DNN 预测:频谱、激励、时长
  • 灵活,但音质差、机器感重、不自然

传统 TTS:
HMM: Hidden Markov Model: 隐马尔可夫模型
DNN: Deep Neural Network: 深度神经网络

3. Deep Voice
  • 全深度学习模块:文本→音素→时长→基频→音频
  • 标志传统流水线走向深度学习

⭐️Tacotron: End-to-end TTS

1. Tacotron
  • 输入:字符(文字)
  • 输出:频谱图(Mel/Linear)
  • 意义:第一个真正端到端 TTS,不用音素、不用人工特征

Linear 线性频谱:

  • 频率轴是均匀的:100Hz→200Hz,和 1000Hz→1100Hz,间隔一样
  • 信息100% 完整,没有损失

Mel 梅尔频谱:

  • 模仿人耳的频率轴
    • 低频:分得很清(100Hz vs 200Hz 差别很大)
    • 高频:分得很粗(10000Hz vs 10100Hz 听不出区别)
  • 高频压缩,低频展开,让频率轴符合人耳
2. 模型结构
  1. Encoder(编码器)
    • CBHG 结构: 专门用来做文本特征提取的模块
    • 把文本变成语义特征
  2. Attention(注意力)
    • 文本序列语音帧时序对齐
    • 必须满足:单调对齐(从左到右,不回头)
  3. Decoder(解码器)
    • 结构: RNN + Attention
      -> 一次生成 r 帧梅尔频谱
    • 训练技巧:
      • Teacher Forcing:用真实上一帧做输入,训练稳定
      • Dropout:模拟采样,提升泛化
    • 额外输出:停止标志(End token),判断句子是否结束
3. Vocoder 声码器

Tacotron 1:Griffin-Lim(传统算法,无训练,快但音质差)

Tacotron 2WaveNet(神经网络声码器)

-> WaveNet 让音质飞跃提升,远强于 Griffin-Lim

4. 效果 MOS 评分

满分 5 分,越高越像真人

  • Tacotron 1:3.82(优于参数合成)
  • Tacotron 2:4.526(接近真人录音 4.582
  • 拼接合成:4.166(Tacotron2 反超传统最优)

改进方向 Beyond Tacotron

1. 发音错误(Mispronunciation)
  • 问题:OOV(未登录词)读错
  • 解决:
    • 词典转音素
    • 字符 + 音素混合输入
2. Encoder 增强
  • 加入句法信息、BERT 嵌入,让语调更自然
3. Attention 改进(重点)
  • Guided Attention:惩罚非对角,强制对齐
  • Monotonic Attention:单调注意力
  • Location-aware Attention:带历史位置信息
  • 目的:解决跳词、重复、读错长句
4. FastSpeech —— 最大突破
  • 去掉自回归,并行生成
  • 引入时长预测器(Duration Predictor)
  • 结果:
    • 0 重复、0 跳词、0 错误句
    • 速度极快、合成稳定
5. 双学习(Dual Learning)
  • TTS ↔ ASR 形成闭环
  • 无标注数据提升效果
  • 语音链(Speech Chain)框架

更多推荐