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秒

実機テスト

Bluetoothイヤホンとスマートフォンでの実機テスト


技術スタック

レイヤー技術
音声認識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翻訳パイプラインを共有しています。


技術詳細はブログシリーズで解説しています: