
通話文字起こし向け Whisper:電話向けの高精度音声テキスト変換
Eric King
Author
電話の文字起こしは、音声認識のなかでも最も一般的で価値の高い用途のひとつです。OpenAI Whisper は、ノイズやアクセント、不完全な音質に強いため、このシナリオに特に適しています。
本稿では 通話の文字起こしに Whisper を使う方法として、オーディオ形式、話者の分離、精度の最適化、実運用でのデプロイパターンを説明します。
通話文字起こしに Whisper を選ぶ理由
従来の ASR と比べ、Whisper は次の点で良好な性能を発揮します。
- 品質の低い電話音声(8 kHz)
- アクセントや非母語話者
- 背景ノイズ
- 長い会話(10〜120 分)
- 多言語の通話やコードスイッチング
代表的な用途:
- カスタマーサポートの通話ログ
- 営業電話の分析
- QA とコンプライアンス
- 通話の要約とインサイト
- CRM の自動化
典型的な通話文字起こしパイプライン
Call (PSTN / VoIP)
↓
Call Recording (WAV / MP3)
↓
Preprocessing (resample, channel split)
↓
Whisper Transcription
↓
Speaker Diarization (optional)
↓
Post-processing (punctuation, timestamps, summaries)
オーディオ形式:何が最適か
推奨設定
| パラメータ | 値 |
|---|---|
| サンプルレート | 8 kHz または 16 kHz |
| チャンネル | モノラルまたはステレオ |
| 形式 | WAV(推奨)、FLAC |
| ビット深度 | 16 ビット PCM |
Whisper は内部でリサンプルしますが、きれいな入力ほど精度が上がります。
モノラル通話とステレオ通話
モノラル(最も一般的)
- 両者の音声が 1 チャンネルにミックス
- パイプラインは単純
- 話者分離は難しい
向いている用途:
- シンプルな文字起こし
- 検索とアーカイブ
ステレオ(ベストプラクティス)
- 左チャンネル:オペレーター
- 右チャンネル:顧客
利点:
- 話者の分離が明確
- ダイアライゼーションが不要
- 下流処理の精度が高い
# Split stereo call into two mono tracks
import torchaudio
audio, sr = torchaudio.load("call.wav")
agent = audio[0]
customer = audio[1]
その後、各チャンネルを個別に転写します。
Whisper と話者ダイアライゼーション
Whisper にダイアライゼーションは組み込まれていませんが、次と組み合わせられます。
- Pyannote.audio
- WebRTC VAD + クラスタリング
- チャンネルベースの分離(推奨)
一般的な手順:
- ダイアライゼーションモデルを実行する
- 話者セグメントごとに音声を分割する
- 各セグメントを Whisper で転写する
- 話者ラベル付きで結果をマージする
通話向けの Whisper モデル選び
| モデル | 精度 | 速度 | 推奨 |
|---|---|---|---|
| base | 中 | 速い | ❌ 短い通話 |
| small | 高 | 中 | ✅ ほとんどのケース |
| medium | 非常に高い | やや遅い | ✅ コンプライアンス |
| large-v3 | 極めて高い | 遅い | ✅ 法務 / QA |
推奨: コールセンターでは small または medium
長い通話(30〜120 分)
長い通話では、音声全体を一度に渡さないようにします。
ベストプラクティス
- 2〜5 分程度のチャンクに分割する
- 5〜10 秒の小さなオーバーラップを使う
- タイムスタンプを保持する
result = model.transcribe(
audio_chunk,
condition_on_previous_text=True
)
チャンク間の文脈が保たれます。
電話音声の精度を上げる
1. オーディオを正規化する
- 無音を除去する
- 音量を正規化する
- 必要ならノイズ低減をかける
2. 言語ヒントを使う
model.transcribe(audio, language="en")
3. GPU で FP16 を有効にする
推論が速く、安定しやすくなります。
4. 過度に細かいチャンクを避ける
短すぎるチャンクは文脈と精度を下げます。
リアルタイムとバッチの通話転写
| モード | 用途 |
|---|---|
| リアルタイム | ライブ監視、アラート |
| 準リアルタイム | QA ダッシュボード |
| バッチ | 分析、アーカイブ |
多くのコールセンターは、安定性とコストの観点から準リアルタイムかバッチを使います。
コールセンターでの Whisper のスケール
小規模(1 日あたり 100 件以下)
- GPU サーバー 1 台
- Whisper small
中規模(1 日 1k〜10k 件)
- GPU プール
- 非同期ジョブキュー(RabbitMQ / Kafka)
- チャンクベースの処理
大規模(エンタープライズ)
- 複数 GPU ノード
- オーディオ前処理サービス
- 転写と要約のパイプライン
後処理と価値の抽出
転写のあとによく行う処理:
- 文の句読点
- 話者タグ
- キーワード抽出
- 感情分析
- 通話要約(LLM)
- CRM 連携
Whisper とクラウドの通話転写 API
| 項目 | Whisper | クラウド API |
|---|---|---|
| コスト | 低い(自前ホスト) | 高い |
| データのプライバシー | 完全にコントロール | ベンダー依存 |
| 精度 | 非常に高い | 高い |
| カスタマイズ | 可能 | 限定的 |
プライバシー、コスト管理、カスタマイズが必要なチームに Whisper は適しています。
まとめ
Whisper は通話の文字起こしに強い選択肢です。特に次の用途に向いています。
- カスタマーサポート
- 営業と QA
- コンプライアンス要件の厳しい業界
適切なオーディオ処理、チャンク分割、必要に応じたダイアライゼーションがあれば、Whisper は本番品質の通話転写を大規模に提供できます。
