[TTS] Tacotron2とは

🎤 Tacotron2とは?
Tacotron2 は Google が開発した「自然な音声を生成するTTSモデル」 で、
Neural TTS(ニューラルTTS)を大きく前進させた代表的な音声生成モデルです。

✔️ Tacotron2 の特徴(ざっくり)
テキスト → メルスペクトログラムを生成するモデル
WaveGlow / WaveRNN などの vocoder と組み合わせて音声に復元
人間の声に近い自然な抑揚(プロソディ)が得られる
End-to-End(前処理が少ない)

🎛 Tacotron2 の構造(これが最重要)
Tacotron2 は大きく 2つの部分 に分かれています。
① Acoustic Model(文章 → Melスペクトログラム)
② Vocoder(Melスペクトログラム → 音声波形)

① Acoustic Model(Tacotron2本体)
内部構造:
Encoder(文章を特徴ベクトルに変換)
テキストを文字単位でEmbedding
Convolution + LSTM
Attention(位置を揃える)
テキストとメルスペクトログラムの対応を学習
Location-Sensitive Attention で「読み飛ばし」を防止
Decoder(Melスペクトログラム生成)
RNNベース

1フレームずつメルスペクトログラムを生成
→ Tacotron2はテキストを“メル画像”に変換する装置

② Vocoder(WaveGlow / WaveRNN など)
Tacotron2はメルスペクトログラムまでしか作らないので、
これを波形に変えるのが Vocoder の役割。
有名な組み合わせ:
Acoustic Vocoder
Tacotron2 WaveGlow
Tacotron2 WaveRNN
Tacotron2 HiFi-GAN
🎧 Tacotron2 が使うメルスペクトログラムの特徴

80次元 Mel
22,050Hz サンプリング
対数変換(log-mel)
hop=256, win=1024
これらは ほぼすべての NeuraI TTS の標準仕様 になりました。

🔍 Tacotron2 がすごかった理由
✔️ 1. 文章のリズム(韻律)が自然
Attentionにより、
「どこを読んでいるか」を内部で推定することで
自然な抑揚を作れるようになった。

✔️ 2. End-to-Endなので音質が高い
従来:
形態素解析
音素列変換
音響モデル
デュレーションモデル
vocoder
→ Tacotron2は中間を自動学習

✔️ 3. WaveGlowと組み合わせて高品質な音声
従来のvocoder(Griffin-Lim等)は粗い音質だったが
WaveGlowで劇的に改善。

📘 Tacotron2 の処理フロー(図)
Text → Encoder → Attention → Decoder → Mel-spec
Mel-spec → Vocoder → Audio(WAV)

🧪 Pythonでの実行例(PyTorch)
※ NVIDIA の公式実装を利用した例
import torch
from tacotron2.model import Tacotron2
from denoiser import Denoiser

# モデル読み込み
checkpoint_path = “tacotron2_statedict.pt”
model = torch.load(checkpoint_path)[‘state_dict’]

# 入力テキスト
text = “こんにちは、これはTacotron2のテストです。”

# 1) テキスト → メルスペクトログラム
mel = tacotron2(text)

# 2) vocoder (WaveGlow)
audio = waveglow.infer(mel)

# 保存
torchaudio.save(“output.wav”, audio, 22050)

実際にはモデルファイルが必要ですが、
構造としてはこのように Mel → Audio の2段階です。

✔️ 要点まとめ
項目 内容
モデル名 Tacotron2
種類 Acoustic Model(テキスト→メル)
Vocoderが必要か 必要(WaveGlow等)
長所 抑揚が自然、高品質
短所 生成速度が遅い・Attentionの不安定性