AI · AI音声
音声合成(テキスト読み上げ)はどんな仕組み?ニューラルTTSとは
結論
音声合成(TTS)は、文章を3つの段階で音声に変えます。数字や日付、略語を読める形に直す正規化、音への変換、波形の生成です。ニューラルTTSは録音した音声で学習したネットワークを使い、自然なリズムと抑揚を出せます。ブラウザが Web Speech API で提供する音声は端末やそのベンダー由来なので、スマホとパソコンで違って聞こえます。
テキスト読み上げを開くTTSシステムの3つの段階
- テキストの正規化。システムが文章を、声に出せる言葉に書き換えます。「Dr. Lee paid $25 on 3/4」は、「Doctor Lee paid twenty-five dollars on March fourth」(ロケールによっては「the third of April」)のようにならなければなりません。読み間違いの多くは、声ではなくここで起きます。
- 言語解析。単語を、言語の音の単位である音素に変え、アクセント、フレージング、イントネーションを予測します。綴りが同じでも読みが違う語(現在形と過去形の「read」など)や、複数の読みを持つ漢字は、文脈から判断する必要があります。
- 波形の生成。音とそのタイミングを、音声のサンプルに変えます。古いシステムは録音した断片をつなぎ合わせたり(連結合成)、フォルマントモデルを使ったりしたため、ロボットのような声になりました。ニューラル方式は、ネットワークで音声そのものを予測します。
古典的なニューラル設計の Tacotron 2 は、現代の役割分担をはっきり示しました。1つ目のネットワークがテキストをメルスペクトログラム(音声の時間と周波数の画像)に変換し、2つ目のネットワークであるボコーダがその画像を波形にします。開発者による聴取テストでは、プロの録音に近いスコアを出しました。新しいシステムは、これらの段階を統合したり、言語モデルのようなネットワークで圧縮した音声トークンを生成したりすることが多く、短いサンプルから話者の声を再現できます。
ニューラルTTSとブラウザのシステム音声の違い
Webページは、独自のモデルを持たなくても Web Speech API で話せます。speechSynthesis オブジェクトは、プラットフォームが提供する音声のどれかを使って、SpeechSynthesisUtterance を読み上げます。
| ブラウザのシステム音声(Web Speech API) | ニューラルTTSのサービスまたはモデル | |
|---|---|---|
| 音声の出どころ | OSやブラウザのベンダー。ローカルのものもリモートのものもある | 自分で動かすモデル、または呼び出すクラウドAPI |
| 声の選択肢 | インストールされているもの。Windows、macOS、Android、iOSで異なる | 固定のカタログ、カスタム音声、場合によってはクローン |
| 品質 | ロボット的なものからかなり自然なものまで、端末による | 通常は自然で、リズムや感情表現も良い |
| コストとセットアップ | 無料、キー不要、ローカル音声ならオフラインでも動く | APIキーと文字数課金、または大きなモデルのダウンロード |
| 音声ファイルの取得 | APIの機能にはなく、スピーカーから再生される | 通常はMP3やWAVなどを返す |
| クローン | 不可 | 一部のサービスで、同意確認つきで可能 |
各音声は localService フラグを持ちます。仕様では、ローカルの合成エンジンなら true、リモートのサービスなら false です。リモート音声はネットワークが必要になったり、遅延が加わったりすることがあります。
const u = new SpeechSynthesisUtterance("Your order has shipped.");
u.lang = "en-GB";
u.rate = 0.9; // 1 is normal; spec allows 0.1 to 10
u.pitch = 1.0; // 0 to 2, 1 is the voice default
u.volume = 1.0; // 0 to 1
const voices = speechSynthesis.getVoices();
u.voice = voices.find(v => v.lang === "en-GB") || null;
speechSynthesis.speak(u);音声はページの開始後に読み込まれることが多く、getVoices() は最初は空のリストを返すことがあります。voiceschanged イベントを待ちましょう。たとえば cv.cm の音声合成ツールは、まさにこの内蔵音声を使い、速度とピッチを調整できます。下書きをさっと聞いて確認するには便利ですが、ニューラル音声の生成ツールではなく、音声の一覧は端末によって変わります。
SSML:間と発音をコントロールする
音声合成マークアップ言語(SSML)はW3C標準のXMLで、TTSエンジンに文章の読み方を指示します。多くのクラウドTTSが対応しています。Web Speech の仕様はutterance内でのSSMLを認めていますが、一部のタグに非対応のエンジンはそれを取り除いて残りのテキストを読む決まりなので、ブラウザでの対応は一様ではありません。
<speak>
Your code is <say-as interpret-as="characters">A7K</say-as>.
<break time="500ms"/>
Please call <sub alias="World Health Organization">WHO</sub>
before <prosody rate="90%" pitch="+2st">Friday at noon</prosody>.
The word is <phoneme alphabet="ipa" ph="təˈmɑːtoʊ">tomato</phoneme>,
and it is <emphasis level="strong">not</emphasis> optional.
</speak>| 要素 | 働き | 値の例 |
|---|---|---|
| break | 間を入れる | time 250ms や 2s、strength は weak から x-strong |
| prosody | 速度、ピッチ、音量を変える | rate 90% や slow、pitch +2st や high、volume +6dB や soft |
| emphasis | 単語を強調する | level は strong、moderate、reduced |
| say-as | 文字ごと、日付、数値として読む | interpret-as の値はエンジンによる |
| sub | 書かれたテキストの代わりに別名で読む | WHO を World Health Organization と読ませる |
| phoneme | 正確な発音を指定する | alphabet は ipa。対応は任意 |
| voice, lang | テキストの途中で声や言語を切り替える | 英語の文中に引用された外国語のタイトル |
サービスがSSMLを無視する場合でも、プレーンテキストで調整できます。間にはカンマと句点、数字は文字で書き下し、難しい名前は発音に近い表記に書き換えます。
声に出して自然に聞こえる文章の書き方
- 短い文にします。長い節が続くと、声が自然に息継ぎする場所がなくなります。
- 読み方が重要な場合は、数字を読ませたい形で書きます。「two thousand twenty-six」や「twenty twenty-six」のようにします。
- 聞き手に聞かせたい略語や単位は展開します。「km/h」は1文字ずつ読まれることがあります。
- 正しい言語と地域を設定します。スペイン語の名前を en-US の声で読んだり、英語を zh-CN の声で読んだりすると、誤った音体系が使われます。
- 公開前に結果を一度通して聞きます。名前、数字、読みが2通りある語を確認します。
声のクローン:同意と法律
最近のモデルは、短い録音から声を真似られます。自分の動画の吹き替えや、声を失った人に声を取り戻すのに役立つ一方、親族や会社役員になりすます電話のような詐欺にも使われます。どんな声も、話者に属する個人データとして扱いましょう。
| 地域 | ルールの内容(要約) | 状況 |
|---|---|---|
| 中国 | 顔や声を編集するサービスは、利用者に対し、当人に告知して個別の同意を得るよう促さなければなりません(「インターネット情報サービス深層合成管理規定」第14条)。誤認を招きうる合成音声や声の模倣には、目立つ表示が必要です(第17条)。2025年の「人工知能生成合成コンテンツ標識弁法」は、明示的な表示とメタデータによる表示を加え、その削除を禁じています。 | 2023-01-10から施行。標識弁法は2025-09-01から |
| 欧州連合 | EU AI法第50条:提供者は合成音声を機械可読な形でマークしなければならず、ディープフェイクの音声や動画を公開する者は、それが人工的であることを開示しなければなりません。音声の録音には個人データ保護のルールも適用されます。 | 第113条により2026年8月2日から適用。その後の改正を確認してください |
| 米国 | 執筆時点で、声のクローンに関する単一の連邦法はありません。保護は、州のパブリシティ権・プライバシー法と、既存の詐欺・消費者保護のルールによります。 | 州によって異なる |
信頼できるクローンサービスは、声を作る前に、話者に同意の言葉を録音するよう求めます。こうした確認なしに、どんなクリップからでも誰の声でもクローンできるツールは、公開するものには使わないでください。
よくある質問
同じWebページなのに、スマホとノートパソコンで声が違うのはなぜですか?
Web Speech API は、各端末にインストールされた音声や、そのベンダーが提供する音声を使うからです。Windows、macOS、Android、iOSは異なる音声を搭載しているため、同じコードでも違う音声になります。
Web Speech API からMP3をダウンロードできますか?
直接はできません。このAPIは音声をスピーカーから再生するだけで、音声データを返しません。ファイルが必要なら、音声を出力するTTSサービスやモデル、または画面や音声の録音ツールを使います。
有名人の声をクローンするのは合法ですか?
多くの地域で、特定できる人物の声を許可なく広告、商品、聞き手を誤認させうるコンテンツに使うと、パブリシティ権、プライバシー、消費者保護、ディープシンセシス規制のもとで法的リスクが生じます。許可を得て、結果にAI生成の表示をしてください。
TTSとボイスチェンジャー(声質変換)の違いは何ですか?
TTSは文字から音声を作ります。声質変換は、ある人が話した録音を別の人の声に聞こえるよう変換し、元のタイミングと感情を保ちます。
TTSが名前を読み間違えるのはなぜですか?
モデルが、綴りと学習データから発音を推測するからです。珍しい名前、外来語、複数の読みを持つ文字は、推測が外れがちです。SSMLの phoneme や sub タグを使うか、発音に近い表記に書き換えてください。