Text-to-Speech
テキスト音声変換(TTS)では、ニューラル音響モデル、ボコーダー、音声トークンモデルを使って、アシスタントやアクセシビリティ向けにテキストを自然な音声に変換します。
音声合成 (TTS) は、テキスト読み上げとも呼ばれ、書かれたテキストを音声に変換します。TTSシステムは各単語の発音、各音の長さ、文中での音高や強弱の変化を決定し、波形を生成します。従来のシステムは、録音した音声の断片をつなぎ合わせるか、統計モデルから音声を生成していたため、機械的な音に聞こえました。ディープラーニングによって状況は変わりました。DeepMindのWaveNetは2016年にサンプルごとに生音声を生成し、2017年にはGoogleのTacotron 2が平均オピニオン評点4.53(5点満点)を達成しました。プロの録音は4.58でした。現在のシステムは多くの言語と声で話し、数秒の音声から声を複製し、口調に関する指示に従います。スクリーンリーダー、音声アシスタント、オーディオブック、対話型AIを支えています。TTSは音声認識テキスト化の逆方向にあたります。
テキスト読み上げの仕組み#
すべてのシステムはテキストのフロントエンドから始まります。テキスト正規化によって数字、日付、通貨、略語を単語に展開するため、「Dr. Lee paid $3.50」は「Doctor Lee paid three dollars and fifty cents」になります。また、書記素から音素への変換で発音を選び、「read」のように時制によって発音が変わる単語にも対応します。多くのモデルは、各音の長さ、音高、エネルギーを表す韻律も予測します。その後、主に次の2種類の方法で音声を生成します。
- 音響モデルとボコーダー: 音響モデルは、時間の経過に伴う周波数別のエネルギー分布を簡潔に表すメルスペクトログラムを予測し、ニューラルボコーダーがそれを波形に変換します。Tacotron 2は、スペクトログラムをフレームごとに自己回帰的に予測しました。FastSpeechは、音素ごとの長さからスペクトログラムを並列に予測し、自己回帰型Transformerの270倍の速度で生成します。HiFi-GANボコーダーは、単一のV100 GPU上で22.05 kHzの音声をリアルタイムの167.9倍の速度で合成します。VoiceboxとF5-TTSもフローマッチングを使ってメルスペクトログラムを非自己回帰的に予測し、ボコーダーに渡します。
- 音声トークン言語モデル: MicrosoftのVALL-Eは、ニューラル音声コーデックから得た離散トークンとして音声を扱い、LLMがテキストを生成するのと同様に、Transformer言語モデルでトークンを生成します。未学習の話者の3秒間の録音をプロンプトとして与えると、その声で続きを生成します。
VITSなどのエンドツーエンドモデルは、音響モデルとボコーダーを1つのネットワークに統合し、単一段階で学習します。マルチモーダルモデルのGPT-4oなどは、別個のTTS処理を介さず、応答の一部として音声を直接生成します。
音声合成と関連用語の比較#
- 音声認識テキスト化: 音声をテキストに書き起こす逆方向の処理です。音声アシスタントでは、音声認識テキスト化でユーザーの発話を書き起こし、大規模言語モデルで応答を作成し、TTSで読み上げる一連の処理を行います。
- ボイスクローン: 短い参照音声または話者の録音を使ったファインチューニングにより、特定の人物の声を再現するTTSです。同意を得ずに使用すると、音声のディープフェイクを生成できます。
- ボイスコンバージョン: 録音音声を入力として受け取り、言葉や話し方を維持したまま話者の声を変えます。TTSはテキストから音声を生成します。
実際のアプリケーション#
- アクセシビリティ: スクリーンリーダーは、視覚障害者や弱視の人のためにインターフェース要素や文書を読み上げます。また、声を失った人はメッセージを入力し、合成音声で伝えることができます。
- 音声アシスタントとエージェント: カスタマーサービスエージェント、車載アシスタント、スマートスピーカーは生成した応答を音声で伝えます。応答の残りを生成している間に、最初の一文の音声をストリーミングすることもよくあります。
- オーディオブック、吹き替え、eラーニング: 出版社やコース制作者は、長文を一貫した声で多言語にわたって読み上げます。
- ナビゲーション: ターンバイターン方式の案内により、ドライバーは道路から目を離さずに運転できます。
コンピュータービジョンと組み合わせると、TTSで物理世界の状況を音声で説明できます。たとえば、視覚障害者に目の前の状況を伝える支援デバイスで利用できます。次のコードは、街中の写真に対してUltralytics YOLO26物体検出を実行し、Google Translateの音声合成サービス用PythonライブラリであるgTTSで検出結果を読み上げます。
from collections import Counter
from gtts import gTTS
from ultralytics import YOLO
# Detect objects in a street photo with YOLO26
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Count detections per class and turn them into a sentence
counts = Counter(result.names[int(c)] for c in result.boxes.cls)
sentence = "I can see " + ", ".join(f"{n} {name}" for name, n in counts.items())
# Synthesize the sentence and save it as an MP3 file
gTTS(text=sentence, lang="en").save("detections.mp3")保存された detections.mp3 は、検出した各クラスとその数を列挙する文を読み上げます。gTTSはGoogleのサーバーにテキストを送信するため、スクリプトにはインターネット接続が必要です。
音声品質の測定#
- 平均オピニオン評点 (MOS): 聞き手が自然さを1から5で評価し、実際の話者の録音が上限の基準になります。
- 明瞭度: 音声認識モデルで合成音声を文字起こしし、入力テキストとの単語誤り率から、単語の誤り、脱落、繰り返しの頻度を測定します。Voiceboxは、ゼロショットTTSで単語誤り率1.9%を達成し、VALL-Eの5.9%を下回りました。
- 話者類似度: クローン音声では、生成音声と参照音声の話者埋め込み間のコサイン類似度を使って、声の一致度を測定します。
- リアルタイム係数 (RTF): 合成にかかる時間を音声の長さで割った値です。F5-TTSのRTFは0.15で、10秒の音声を1.5秒で生成します。










