Translation Earbuds Prototype — 公開APIで実現するリアルタイム翻訳音声
課題
翻訳専用イヤホン(AirPods Pro、Timekettle M3)は17,000〜40,000円で専用エコシステムが必要。手持ちのスマートフォンとBluetoothイヤホンだけで、公開APIのみを使い「翻訳を耳で聞く」体験はどこまで実現できるか。
解決策
Intent-First Translationの翻訳パイプラインにTTSレイヤー(Web Speech API)を追加。モバイルの自動再生制限をオーディオロック解除で克服し、プラットフォーム適応型の読み上げ速度制御を実装。
成果
発話から翻訳音声まで約3秒のレイテンシを達成(プロの同時通訳者と同等水準)。ブラウザのI/Oデバイス制限を特定し、ネイティブアプリ化への明確な道筋を確認。
![]()
背景
本プロジェクトは Intent-First Translation の拡張です。話し始めから500msで意図を表示するリアルタイム翻訳システムに、音声出力レイヤーを追加しました。英語の発話を日本語に翻訳し、Bluetoothイヤホンから再生します。
目標:AirPods Proのライブ翻訳の核心的な体験を、手持ちのスマートフォンとBluetoothイヤホン、公開APIだけで再現できるか?
相手が英語で話す
→ スマホが音声をキャプチャ(Deepgram)
→ LLMがリアルタイムで翻訳(約2秒)
→ 日本語TTSがBluetoothイヤホンから再生
実現できたこと
- 自分の英語発話 → イヤホンで日本語翻訳を聞く ✅
- 翻訳テキストから音声までの遅延:約1秒以内
- エンドツーエンドのレイテンシ:約3秒(プロの同時通訳者の2〜3秒と同等水準)
実現できなかったこと
- 相手の声をイヤホンマイクで拾って翻訳 ❌ — Bluetoothイヤホンのマイクは装着者の声に最適化されており、ノイズキャンセリングが周囲音をカット
- ブラウザでの入出力デバイス分離 ❌ — iOS WebKitが明示的なオーディオ入力デバイス選択をサポートしていない
プラットフォーム固有のTTS課題
Web Speech APIは「ブラウザ標準」ですが、実際のエンジンはOSごとに異なります。3つの重要な問題を発見し解決しました。
1. 読み上げ速度の不一致
同じ rate=3.0 でも、Windows Chromeでは「ちょうどいい」、iPhoneでは聞き取れないほど速い。iOS上のすべてのブラウザがAppleのWebKit + TTSエンジンを使用しているためです。
const isMobile = /iPhone|iPad|Android/i.test(navigator.userAgent);
const ttsRate = isMobile ? 1.3 : 3.0;
2. モバイルでのTTS無音
モバイルブラウザは、ユーザーの直接タップからの呼び出し以外で speechSynthesis.speak() をブロックします。WebSocketコールバックは「ユーザー操作」とみなされません。
// 最初のタップで無音発話によりオーディオロックを解除
const unlock = new SpeechSynthesisUtterance('');
unlock.volume = 0;
window.speechSynthesis.speak(unlock);
3. TTSトリガーの欠落
進行中の翻訳が画面に表示された後、確定結果が来る前に次の発話で上書きされ、TTSが発火しないケースが発生。翻訳テキストがあれば発火する方式に変更し、重複検出で防止。
ブラウザ vs ネイティブアプリ
| 機能 | ブラウザ | ネイティブアプリ |
|---|---|---|
| TTS音声出力 | ✅(制限あり) | ✅(制限なし) |
| 入力/出力デバイスの分離 | ❌ | ✅ |
| バックグラウンド動作 | ❌ | ✅ |
iOSネイティブアプリであれば AVAudioSession で入出力デバイスを個別制御可能です。内蔵マイクでキャプチャしつつBluetoothイヤホンから再生する構成が実現できます。バックエンド(FastAPI + Deepgram + LLM)はそのまま流用可能です。
実測レイテンシ
| 指標 | 計測値 |
|---|---|
| 発話終了 → 翻訳テキスト表示 | 平均 2,115ms |
| 翻訳テキスト表示 → TTS完了(短文) | 約 1秒以内 |
| 発話終了 → 翻訳音声が聞こえる | 約 3秒 |
実機テスト
![]()
技術スタック
| レイヤー | 技術 |
|---|---|
| 音声認識 | Deepgram Streaming API |
| 翻訳 | GPT-4 / Gemini Flash / Groq (LLM) |
| 音声読み上げ | Web Speech API (SpeechSynthesis) |
| リアルタイム通信 | WebSocket |
| フロントエンド | React + TypeScript |
| バックエンド | Python / FastAPI |
本プロジェクトの知見
AirPods Proのような専用製品は、ビームフォーミングやマルチマイクアレイといった専用ハードウェアで音声入力の課題を解決しています。ソフトウェアだけでは超えられない壁です。しかし、**「内蔵マイクでキャプチャし、イヤホンから翻訳音声を届ける」**という構成であれば、公開APIとオープンな技術で十分に機能するプロトタイプが構築できることを確認しました。プラットフォームごとのTTS挙動、モバイルブラウザのオーディオ制約、Bluetoothルーティングの限界——これらの知見がネイティブアプリ再設計の基盤となります。
基盤プロジェクト
本プロジェクトは Intent-First Translation の拡張です。音声認識とLLM翻訳パイプラインを共有しています。
技術詳細はブログシリーズで解説しています: