「音声をAIで扱いたい」——文字起こし、読み上げ、電話の自動応答、多言語の吹き替え、対話する受付。要件は様々ですが、本番に載せる段になると判断すべきことは驚くほど共通しています。どのモデルを選ぶか。リアルタイムかバッチか。コストをどう抑えるか。失敗してもやり直せるか。そして——他人の声を勝手に複製しないという一線をどう守るか。
この記事は、音声AIを本番品質で組み上げるための**全体像(地図)です。各レイヤーの深掘りは個別記事に譲り、ここでは「どの技術を、どこで、どう組み合わせるか」**という設計の見取り図と、全レイヤーに共通する本番装備を示します。題材は、私が実際に構築した生成AI音声チャットボット(STT→LLM→TTSの音声接客)とAI動画ローカライズ基盤(多言語吹き替え)です。
この記事のルール:各モデルの仕様・料金は**各公式ドキュメント(2026年6月時点)**に基づきます。料金・モデル名は改定が速いため、本番投入前に必ず一次情報で確認してください。コードは実運用で使える形に整えていますが、APIキーは環境変数前提(ハードコード厳禁・ブラウザに出さない)です。
0. 音声AIの地図:5つのレイヤー
音声AIのシステムは、ほぼ必ず次のレイヤーの組み合わせに分解できます。自分の要件がどのレイヤーを必要とするかを最初に切り分けてください。
[① 前処理] [② STT] [③ LLM] [④ TTS] [⑤ アバター]
音源分離/VAD → 音声→テキスト → 理解・応答生成 → テキスト→音声 → 口元同期(任意)
(雑音/BGM除去) (耳) (脳) (口) (顔)
各レイヤーには「定番の深掘り記事」があります。本ガイドはそのハブです。
| レイヤー | 役割 | 代表技術 | 深掘り記事 |
|---|---|---|---|
| ① 前処理 | 雑音・BGM除去、無音検出 | Demucs / UVR5 / VAD | 音源分離ツール選定 |
| ② STT | 音声 → テキスト | Whisper / gpt-4o-transcribe | Whisper 本番運用ガイド |
| ③ LLM | 理解・応答生成 | Claude / GPT(+RAG) | Vercel AI SDK 本番ガイド |
| ④ TTS | テキスト → 音声 | Qwen-TTS / ElevenLabs ほか | Qwen-TTS 本番運用ガイド |
| ⑤ アバター | 音声 → 口元同期 | MuseTalk / LatentSync | リップシンク・デジタルヒューマン |
設計の出発点:全レイヤーを使うのは「対話するデジタルヒューマン」くらいです。文字起こしだけなら②、読み上げだけなら④で足ります。要件に無いレイヤーを足さない——これが最初のコスト最適化です(YAGNI)。
1. STT(音声認識):音声をテキストにする
「耳」のレイヤー。録音の文字起こし、議事録、字幕、検索インデックス、そして音声エージェントの入力に使います。
# OpenAI Audio API(運用ゼロ・高精度)。セルフホストなら Whisper turbo。
from openai import OpenAI
client = OpenAI() # キーは環境変数
with open("speech.mp3", "rb") as f:
text = client.audio.transcriptions.create(
model="gpt-4o-transcribe", file=f, language="ja", # 言語固定で精度↑
).text
選定の勘所は**「音声を外に出せるか(プライバシー)」「長さ」「コスト構造」「運用体制」**の4軸です。社外秘音声を送れないならセルフホスト(Whisper turbo/large)一択。詳細・25MB制限の回避・幻覚対策はWhisper 本番運用ガイドに。
2. TTS(音声合成):テキストを音声にする
「口」のレイヤー。ナレーション、読み上げ、IVR、吹き替え、キャラクターボイス。本ガイドの主力はQwen-TTS(49+音色・10言語・9つの中国語方言・Apache-2.0のOSS版あり)。
import os, dashscope
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
res = dashscope.MultiModalConversation.call(
model="qwen3-tts-flash", api_key=os.getenv("DASHSCOPE_API_KEY"),
text="本日はご来店ありがとうございます。", voice="Cherry",
language_type="Japanese", stream=False,
)
audio_url = res.output.audio.url # ※24時間で失効 → 即・自前ストレージへ退避
TTSは派生テーマが広いので、目的別に深掘り記事へ:
- 声の選定・方言・指示制御・OSS版の全体像 → Qwen-TTS 本番運用ガイド
- 他社(ElevenLabs/OpenAI/Google/Azure)との比較・選定 → TTS徹底比較
- 独自の声(ボイスクローン)と倫理・同意設計 → ボイスクローン本番実装
- アクセシブルな「記事読み上げ」UI → Next.js 読み上げプレイヤー
3. 音声エージェント:耳と口をつなぐ(リアルタイム対話)
STT→LLM→TTS をひと続きの低遅延ループにすると、音声エージェント(電話の自動応答・受付・接客)になります。ここで品質を決めるのは賢さではなく間(ま)——最初のひと言が返るまでの速さと、話しかけたら即黙るバージインです。
ユーザー発話 → ②STT → ③LLM(ストリーミング) → ④TTS(リアルタイム) → 再生
↑________________ バージイン(割り込みで即停止)________________|
肝は「全文を待たない」こと。LLMの最初の文ができた瞬間にTTSへ流すとfirst_audio_delayが縮みます。WebSocketプロトコル・ブラウザでのPCMギャップレス再生・バージインの実装はQwen-TTS リアルタイム音声エージェント実装ガイドで詳説。RAG接客の実例は生成AI音声チャットボットです。
バッチとリアルタイムは別物:録音の一括文字起こし/ナレーションの一括生成(バッチ)と、対話の逐次処理(リアルタイム)は設計が違います。要件を取り違えると、無駄にWebSocketを張ったり、逆に待たせるUXになります(KISS)。
4. 前処理:精度とコストは「入力の質」で決まる
雑音・BGM・無音は、STTの精度を落とし、TTS/対話の体感を損ないます。入力を整える前処理が効きます。
- 音源分離:BGMや雑音から「声だけ」を取り出すと、文字起こし精度が上がる。BGMを残したまま多言語吹き替えする際にも必須。→ 音源分離ツール選定
- VAD(音声区間検出):発話のない区間を落とすと、課金が減り、Whisperの「幻覚」も抑えられる。
- 正規化・分割:長尺は無音境界で分割(文の途中で切らない)。
「精度が出ない」の多くは、モデルではなく入力の質が原因です。前処理は地味ですが投資対効果が高い領域です。
5. 選定の地図:タスク別チートシート
「結局どれを使うか」をタスクから引けるように整理します。
| やりたいこと | 主に使うレイヤー | 第一候補 | 深掘り |
|---|---|---|---|
| 録音の文字起こし・字幕 | ② | Whisper turbo / gpt-4o-transcribe | Whisper |
| 記事・教材の読み上げ | ④ | Qwen-TTS(+a11yプレイヤー) | 読み上げUI |
| 電話/受付の自動対話 | ②③④ | STT+LLM+Qwen-TTS realtime | リアルタイム |
| 多言語ナレーション・吹き替え | (①)④ | Qwen-TTS(10言語) | Qwen-TTS |
| 自社/タレントの声で読ませる | ④ | OSSボイスクローン(+同意設計) | ボイスクローン |
| TTSのベンダー選定 | ④ | 要件から逆算 | TTS比較 |
| 雑音/BGM下の精度改善 | ①② | 音源分離+VAD+Whisper | 音源分離 |
| 喋るアバター/受付 | ②③④⑤ | 上記+リップシンク | デジタルヒューマン |
6. 本番運用の共通装備(全レイヤーで同じ)
音声AIはレイヤーが違っても、**「外部API or GPU・課金あり・長時間ジョブ」**という性質は共通です。だから本番装備も共通化できます(DRY)。
- 内容ハッシュの冪等キャッシュ:入力(テキスト/音声+パラメータ)のSHA-256をキーに結果を保存。同入力は再生成しない=コスト削減+再開可能+二重課金回避。
- 指数バックオフ付きリトライ:一時障害(429/5xx/接続断)だけ再試行し、入力不正(4xx)は即失敗(fail fast)。冪等な操作にだけ掛ける。
- 生成物の寿命管理:TTSの生成URLは24時間で失効するなど、外部の一時リソースは受領直後に自前ストレージへ退避。
- 可観測性:first_audio_delay(対話)・RTF(音声長に対する処理時間比)・文字数/分課金・推定コスト・失敗種別を構造化ログに。相関はOpenTelemetryで。
- PIIを出さない:音声・原稿は個人情報になり得る。本文ではなくメタデータだけ記録する。
- 境界バリデーション:言語・音色・ファイル形式/サイズをZodで境界検証。ユーザー由来の値を素通ししない。
- a11y:生成音声は自動再生しない・キーボードで操作可・状態を
aria-liveで告知・テキストを併記(WCAG 2.2)。
この共通レイヤーを最初に1つ作り、各機能から呼び出す——これが保守性と拡張性の核です(SRP・ETC)。
7. 倫理・コンプライアンス・データ所在
音声AIは「技術的にできる」と「やってよい」が最も乖離する領域です。設計の前提として組み込みます。
- ボイスクローンの同意・開示・来歴:本人同意のない声の複製はなりすまし・詐欺に直結。**同意台帳・用途限定・失効・AI生成の開示・来歴(プロベナンス)**を必須化する。→ ボイスクローンのガバナンス設計
- AI生成の明示:合成音声であることを明示(規制対応かつ倫理)。
- データ所在(residency):原稿・声がどの国/事業者に渡るか。社外秘・要配慮個人情報なら、リージョン選定かOSSセルフホストで境界の外に出さない。
- 保存方針:保持期間・暗号化・削除フローを最初に決める。
8. ユースケース別レシピ
- 多言語eラーニング/ナレーション:原稿を音色固定で
language_typeを回し10言語化(④)。→ Qwen-TTS - 動画の多言語吹き替え:①音源分離→②文字起こし→翻訳→④TTS→⑤口元同期。私がAI動画ローカライズ基盤で構築した流れです。
- 電話IVR/受付の自動対話:②③④ realtime をWebSocketで(→リアルタイム、音声チャットボット)。
- アクセシブルな読み上げ:記事/書類を④で音声化し、a11yプレイヤーで提供(→読み上げUI)。
- 放送/制作のQA:OCR×ASRでテロップ誤字を照合(②応用)→ テロップ誤字検出。
9. まとめ:音声AI設計チートシート
- まずレイヤーを切り分ける:必要なのは②だけか、④だけか、②③④の対話か、全部か。
- STT:外に出せない/長尺 → セルフホスト Whisper。即日/高精度 → gpt-4o-transcribe。
- TTS:多言語/方言/最安 → Qwen-TTS。データ主権/独自の声 → OSSセルフホスト。選定は比較記事。
- 対話:first_audio_delayを指標に、文単位でTTSへ流し、バージインで即停止。
- 前処理:音源分離・VADで入力の質を上げる(精度・コストに直結)。
- 共通装備:冪等キャッシュ・指数バックオフ・24h URL退避・可観測性・PII非出力・a11y。
- 倫理:クローンは同意・開示・来歴を前提に。データ所在を設計判断に。
音声AIは「一行の要件」に見えて、レイヤー選定・コスト・遅延・プライバシー・倫理のトレードオフを設計する仕事です。私は音声接客(STT→LLM→TTS)と多言語吹き替えの両方を本番運用し、冪等・回復性・可観測性・a11y・倫理を担保した形で組み上げました。「自社の音声業務を、速く・安く・安全に・誰でも使える形で本番化する」——その設計から実装・運用まで一気通貫で伴走します。 要件の整理段階からお気軽にご相談ください。