日本語で話した内容を英語へ翻訳し、登録した本人に近い声で相手へ届ける通話システムは、音声認識、翻訳、音声合成、通話制御を連携させて実現します。
難しいのは個々の機能を動かすことより、会話を妨げない速さ、誤訳への備え、声の適切な管理を一つの運用として成立させることです。
この記事では、特定製品に依存しない設計の考え方を、要件定義から試作、本番運用まで順に説明します。
完成品の使い方を知りたい場合は、Pixel 10のマイボイス通訳の設定と使い方も参考になります。
最初に決めるシステムの範囲
MVP(Minimum Viable Product)とは、利用者に価値を届けられる最小限の製品です。
通話翻訳では、初期段階から双方向通話と多言語対応を同時に目指すより、日本語から英語への片方向変換に絞ると検証しやすくなります。
| 項目 | 最初の選択 | 確認すること |
|---|---|---|
| 入力 | 日本語の音声 | 雑音や話速が変わっても認識できるか |
| 出力 | 英語の合成音声と翻訳文 | 聞き取りやすさと意味の正確さを両立できるか |
| 通話方式 | WebRTCまたはSIPの片方 | 利用する端末と既存の電話設備に合うか |
| 声の再現 | 同意を得た本人の声だけ | 登録、利用、削除の手続きを説明できるか |
| 失敗時の動作 | 原音、標準音声、文字表示への切り替え | 会話を中断せずに継続できるか |
「本人の声」とは、録音をそのまま再生することではありません。
登録音声から話者の特徴を抽出し、その特徴を条件として別言語の音声を合成します。
出力が本人と完全に同じになるとは限らないため、要件では「本人らしさ」と「聞き取りやすさ」を分けて評価します。
通話翻訳を構成する基本用語
- VAD(Voice Activity Detection):音声の中から発話中と無音の区間を見分ける処理です。
- ASR(Automatic Speech Recognition):話した音声を文字へ変換する音声認識です。
- MT(Machine Translation):認識した日本語を英語へ変換する機械翻訳です。
- TTS(Text to Speech):翻訳した文章を音声へ変換する音声合成です。
- 話者埋め込み:声の高さや響きなど、話者を特徴づける情報を数値として表したものです。
- VC(Voice Conversion):合成済みの音声を、対象の話者らしい声へ変換する追加処理です。
- WebRTC:ブラウザーやアプリの間で音声や映像をリアルタイムに送受信するための技術です。
- SIP:IP電話で通話の開始、終了、相手先の指定などを制御する仕組みです。
VCは必須ではありません。
話者の特徴を指定できるTTSだけで受入基準を満たせるなら、処理時間と運用項目を増やさないために省略できます。
音声が相手へ届くまでの流れ
- 端末が日本語の音声を小さな単位で取得します。
- VADが発話の開始と区切りを検出します。
- ASRが確定前の途中結果と確定結果を順に返します。
- MTが意味のまとまりごとに英語へ翻訳します。
- TTSが英語を合成し、再生可能な部分から通話へ戻します。
- 通話基盤が合成音声を相手側へ届け、遅延や失敗を記録します。
発話の終わりを長く待ってから全処理を始めると、相手へ届くまでの待ち時間が増えます。
一方で、短く区切りすぎると文脈が不足し、翻訳が不自然になる場合があります。
例えば「来週の火曜日に、二名で予約したいです」という発話を一語ずつ訳すのではなく、日時と人数を意味のまとまりとして扱います。
分割単位は固定せず、通話場面、言語の組み合わせ、利用する音声認識と翻訳の特性に合わせて調整します。
要件定義で合格条件を明文化する
機能要件
- 日本語から英語への片方向通話翻訳を開始、停止できる。
- 翻訳文を画面に表示し、日時、金額、固有名詞を確認できる。
- 同意を記録した本人だけが話者プロフィールを登録し、利用し、削除できる。
- 通話相手へ翻訳音声を利用していることを知らせる。
- 誤認識や障害が起きたときに、原音、標準音声、文字表示のいずれかへ切り替えられる。
非機能要件
- 遅延:発話から再生開始までを区間別に測り、対象の会話で許容できる値を決めます。
- 可用性:停止が許される時間と、障害時の代替手段を業務に合わせて定めます。
- セキュリティ:通信、話者プロフィール、ログを保護し、利用者と管理者の権限を分けます。
- 拡張性:同時通話数を段階的に増やし、処理待ちと計算資源の関係を測ります。
- コスト:一通話当たりの処理時間、通信量、推論資源を記録し、品質と費用を比較します。
遅延や可用性の数値を先に固定しても、端末、回線、言語、モデル、通話目的が違えば同じ体感にはなりません。
最初は利用場面を再現したテストで基準値を取り、その結果から受入条件を決めます。
コンポーネントの責任を分ける
| コンポーネント | 責任 | 記録する情報 |
|---|---|---|
| 通話ゲートウェイ | 端末や電話網との音声送受信 | 接続状態、切断理由、音声欠落 |
| 分節処理 | 発話区間と翻訳単位の決定 | 区間長、確定までの時間 |
| 音声認識 | 日本語音声から文字への変換 | 途中結果、確定結果、処理時間 |
| 翻訳 | 日本語から英語への変換 | 原文、訳文、辞書の版 |
| 音声合成 | 訳文から英語音声への変換 | 再生開始時間、生成失敗 |
| 話者管理 | 同意、登録、利用、削除の管理 | 操作主体、目的、日時 |
各コンポーネントを分ける目的は、サービスの数を増やすことではありません。
障害や品質低下が起きたときに、どの処理で問題が生じたかを特定し、別の実装へ交換できる境界を作ることです。
音声モデルの選択肢や関連技術を調べる場合は、音声モデルとリアルタイム音声処理の解説も確認できます。
APIは同意と処理状態を表せる形にする
次のJSONは製品固有の仕様ではなく、設計時に必要な項目を確認するための例です。
話者プロフィールの登録例
{
"user_id": "u_123",
"consent_record_id": "consent_456",
"locale": "ja-JP",
"retention_policy": "policy_a"
}
音声ファイルをAPIへ直接埋め込むか、保護された保管先を参照するかは、ファイル容量、権限、監査要件を確認して決めます。
通話開始の例
{
"caller_id": "u_123",
"mode": "one_way",
"source_language": "ja-JP",
"target_language": "en-US",
"speaker_profile_id": "speaker_789",
"fallback": "standard_voice"
}
ストリーミング接続では、入力音声、認識途中結果、確定文、訳文、合成音声、エラー、遅延を別々のイベントとして扱うと状態を追いやすくなります。
非同期パイプラインの実装例
次の疑似コードは、分節した音声を順番に処理する骨格です。
音声形式、再試行、タイムアウト、認証、切断処理は利用するSDKと通話基盤に合わせて追加します。
async def translate_call(audio_stream, speaker_profile):
async for segment in segment_speech(audio_stream):
recognized = await recognize_japanese(segment)
if not recognized.is_final:
continue
translated = await translate_to_english(recognized.text)
async for audio_chunk in synthesize_english(
translated.text,
speaker_profile=speaker_profile,
):
yield audio_chunk
この形だけでは、次の発話の認識と前の発話の再生を並行できません。
実装時は区間ごとのキューを用意し、順序を保ちながら、認識、翻訳、合成を重ねて動かします。
ただし、並行処理を増やすとキャンセルや順序逆転への対処も必要になるため、まず直列の処理で正しさを確認してから最適化します。
WebRTCとSIPを接続するときの注意点
アプリ同士の通話はWebRTC、既存の電話網との接続はSIPや電話事業者の回線を使う構成が考えられます。
両者をつなぐ場合は、音声形式の変換だけでなく、エコー、音量差、無音判定、切断、保留、番号入力を含む通話全体を確認します。
- 原音と翻訳音の重なり:相手に両方を聞かせるか、翻訳音だけを聞かせるかを場面ごとに決めます。
- DTMFと自動音声案内:番号入力中は翻訳音声を止めるなど、操作を妨げない制御が必要です。
- 音声形式の違い:変換後の聞き取りやすさを実際の電話回線で確認します。
- 切断と再接続:翻訳処理だけが残らないよう、通話状態と処理状態を連動させます。
品質は処理ごとと会話全体の両方で測る
音声認識、翻訳、音声合成が個別に良くても、会話の目的を達成できるとは限りません。
例えば住所の一文字を誤るだけで配送確認は失敗しますが、雑談なら意味が通じる場合があります。
| 対象 | 指標の例 | 確認したい内容 |
|---|---|---|
| 音声認識 | 単語誤り率、固有名詞の正答 | 対象業務の言葉を文字にできるか |
| 翻訳 | 人による意味評価、用語保持 | 依頼、否定、日時、数量が正しく伝わるか |
| 音声合成 | 聞き取りやすさ、自然さ、話者類似度 | 通話回線でも無理なく聞けるか |
| 応答時間 | 中央値、遅い側の分布、処理別時間 | 待ち時間の原因を特定できるか |
| 会話 | 目的達成率、聞き返し回数、人への切替率 | 利用者が用件を完了できるか |
テスト脚本には、レストラン予約、配送確認、氏名や住所の読み上げなど、失敗の影響が異なる場面を含めます。
評価結果は全体平均だけでなく、雑音、話速、端末、回線、固有名詞の種類ごとに分けます。
声と通話内容を守る運用
話者プロフィールは本人を識別し得る情報として慎重に扱います。
音声を集める前に、利用目的、保存するもの、保存期間、削除方法、利用できる人を説明し、同意を記録します。
- 他人の声を登録できないよう、登録者とアカウントの関係を確認する。
- 登録音声と話者プロフィールへのアクセスを分け、必要な処理だけに権限を与える。
- 通話相手へ翻訳音声を使っていることを知らせる。
- 録音や文字起こしを保存する場合は、目的と保持期間を別に定める。
- 利用停止と削除の依頼を受け付け、関連データを追跡できるようにする。
- 医療、法律、金融など誤訳の影響が大きい内容では、重要事項を文字で再確認し、必要に応じて専門家や担当者へ切り替える。
録音や音声合成に関するルールは地域と利用場面で異なるため、公開前に対象地域の法令、契約、社内規程を確認します。
障害を前提に本番運用を設計する
- 区間別監視:通話接続、分節、認識、翻訳、合成、再生の時間と失敗を分けて記録します。
- 版の記録:利用したモデル、辞書、設定を追跡し、品質変化の原因を調べられるようにします。
- フォールバック:本人らしい声を生成できない場合は標準音声へ、音声認識が使えない場合は文字入力へ切り替えます。
- 容量計画:同時通話を増やすテストを行い、待ち時間、計算資源、費用の変化を測ります。
- データ最小化:品質確認に不要な通話内容はログへ残さず、必要な記録も保持期間を決めます。
平均値だけを監視すると、一部の利用者が経験する長い遅延を見落とします。
中央値と遅い側の分布を併記し、失敗した通話を個別に追える識別子を付けます。
段階的な導入手順
第1段階は会話とデータの定義
- 対象の通話場面を一つ選びます。
- 頻出する固有名詞、日時、数量、確認表現を集めます。
- 成功条件と、人へ切り替える条件を決めます。
第2段階は片方向の試作
- 音声認識、翻訳、標準音声による合成を直列でつなぎます。
- 実際の端末と回線で区間別の遅延と誤りを測ります。
- 辞書と分節を調整し、文字による確認画面を加えます。
第3段階は本人らしい声と双方向化
- 同意、登録、削除の手続きを実装します。
- 本人らしさと聞き取りやすさを別々に評価します。
- 片方向で基準を満たした後、相手側の英語から日本語への経路を追加します。
第4段階は本番運用
- 監視、通知、再試行、フォールバックを整備します。
- 小さな利用者群から開始し、会話の失敗例を分類します。
- 品質、遅延、費用、安全性を見ながら対象業務を広げます。
よくある質問
話者プロフィールを登録すれば、必ず本人と同じ声になりますか
同じ声になるとは限りません。
録音環境、発話内容、対象言語、合成方式によって結果が変わるため、本人らしさと聞き取りやすさを利用者評価で確認します。
遅延が大きい場合は何から確認しますか
通話全体の時間だけでなく、分節、音声認識、翻訳、音声合成、ネットワークの時間を分けて測ります。
発話の区切り待ちが長いのか、処理が遅いのかを判別してから、分節調整、近い処理拠点、軽い構成などを検討します。
翻訳精度を一つの点数だけで判断できますか
一つの点数だけでは判断できません。
固有名詞、否定、日時、数量が正しく伝わるかを会話脚本で確認し、最終的には用件を完了できたかで評価します。
掲載したコードをそのまま本番で使えますか
掲載例は処理の順序を示す骨格です。
本番では認証、権限、タイムアウト、再試行、切断、監視、データ保護を利用環境に合わせて実装します。
開発を始める前の確認事項
- 対象言語と最初の通話場面を一つに絞ったか。
- 訳文を文字で確認する手段を用意したか。
- 本人の同意から削除までの手続きを決めたか。
- 処理ごとの遅延と失敗を記録できるか。
- 重要事項を再確認し、人へ切り替える条件を決めたか。
- 障害時に原音、標準音声、文字入力へ切り替えられるか。
通話翻訳は、音声モデルだけで完成する機能ではありません。
最初の利用場面を狭く定め、会話の成功条件を測り、同意とフォールバックを組み込むことで、試作を運用可能なシステムへ近づけられます。
翻訳方式の違いを知りたい場合は、同時通訳サービスと逐次翻訳の違いを扱った比較記事も併せて読むと、製品利用と独自開発の論点を分けやすくなります。
この記事に関連する株式会社greedenの取り組み
通話翻訳の構想は、音声処理だけでなく、外部連携、同意管理、監視まで一つの運用として設計する必要があります。株式会社greedenは、要件整理から実装、テスト、リリース後の改善まで、Webシステム開発を一気通貫で支援します。

