市役所の窓口で外国人の住民と職員の会話を音声で訳して画面に出し、手続きの説明と聞き取った内容を受付の記録に残す
市役所の窓口で、職員と外国人の住民がそれぞれのマイクに話すと、Azure AI Speech がその場で訳して双方の画面に出します。会話が終わったら、会話の文字から説明した事項と聞き取った事項を取り出し、受付の記録の下書きにします。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI
- 対象業界
- 医療/教育/自治体
- 対象部門
- 総務
- 対象業務
- 問い合わせ対応/記録・議事録作成
- 主な課題
- 人手が足りない/問い合わせが多い/引き継ぎができていない
- AIで行う処理
- 翻訳
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 住民が窓口に来る。日本語での説明が通じないと分かる
- 職員が多言語の指差しシートで言語を確かめ、電話通訳のサービスにかける。つながるまで待つ
- 電話をスピーカーにして、職員が話し、通訳が訳し、住民が答え、通訳が訳す、を繰り返す
- 必要な書類や期限を、多言語のチラシを指しながら説明する
- 住民が書類を書く。書き方が分からない欄を、また電話通訳を通して説明する
- 受付が終わったら、職員が受付の記録に要点を書く
- 次回の来庁や持ってくる書類があれば、チラシに丸を付けて渡す
- 人住民が窓口に来る。住民の側の画面で、自分の言語をタップする
- 自動画面に、その言語で「会話を訳して画面に出します。記録には文字だけを残します」と出し、住民が同意のボタンを押す
- 人職員が手続きの種類を選ぶと、その手続きの定型文の一覧が職員の画面に出る
- 【人/自動】 大事な説明は、職員が定型文のボタンを押して住民の画面に出す。住民が「わかった」「もう一度」を押す
- 【人/自動】 補足と聞き取りは、職員と住民がそれぞれのマイクに話し、Azure AI Speech が訳して相手の画面に出す
- 自動職員の画面には、職員の発話の認識結果も出る。認識を誤っていれば、職員が言い直す
- 人書類の記入と受付を進める
- 自動会話が終わったら、会話の文字(日本語にそろえたもの)から、Azure OpenAI が受付の記録の下書きを作る
- 人職員が下書きを確かめ、直してから受付の記録に登録する
- 人「もう一度」が続いた説明や、訳が通じなかったやり取りは、通訳者に引き継ぐ
各工程の詳しい説明を読む
- 住民が窓口に来る。日本語での説明が通じないと分かる
- 職員が多言語の指差しシートで言語を確かめ、電話通訳のサービスにかける。つながるまで待つ
- 電話をスピーカーにして、職員が話し、通訳が訳し、住民が答え、通訳が訳す、を繰り返す
- 必要な書類や期限を、多言語のチラシを指しながら説明する
- 住民が書類を書く。書き方が分からない欄を、また電話通訳を通して説明する
- 受付が終わったら、職員が受付の記録に要点を書く
- 次回の来庁や持ってくる書類があれば、チラシに丸を付けて渡す
(a)始めるまでに待つ。 電話通訳につながるまでの数分、住民も職員も窓口で待ちます。後ろに並んだ住民の待ち時間も延びます。
(b)三者の通話で時間が倍になる。 職員の発話を通訳が訳し、住民の答えを通訳が訳す。話者が替わるたびに間が空き、説明の長さが日本語の何倍にもなります。
(c)伝わったかが分からない。 住民が「はい」と答えても、本当に分かったのかは分かりません。届け出の期限を過ぎてから、「聞いていない」と言われることがあります。 そのときに、何を説明したかの記録はありません。
(d)記録が残らず、説明を繰り返す。 受付の記録には手続きの名前しか残らないので、次に来たときに、前回どこまで説明したのかを誰も知りません。
- 【人】 住民が窓口に来る。住民の側の画面で、自分の言語をタップする
- 【自動】 画面に、その言語で「会話を訳して画面に出します。記録には文字だけを残します」と出し、住民が同意のボタンを押す
- 【人】 職員が手続きの種類を選ぶと、その手続きの定型文の一覧が職員の画面に出る
- 【人/自動】 大事な説明は、職員が定型文のボタンを押して住民の画面に出す。住民が「わかった」「もう一度」を押す
- 【人/自動】 補足と聞き取りは、職員と住民がそれぞれのマイクに話し、Azure AI Speech が訳して相手の画面に出す
- 【自動】 職員の画面には、職員の発話の認識結果も出る。認識を誤っていれば、職員が言い直す
- 【人】 書類の記入と受付を進める
- 【自動】 会話が終わったら、会話の文字(日本語にそろえたもの)から、Azure OpenAI が受付の記録の下書きを作る
- 【人】 職員が下書きを確かめ、直してから受付の記録に登録する
- 【人】 「もう一度」が続いた説明や、訳が通じなかったやり取りは、通訳者に引き継ぐ
4番目が、この設計の分かれ目です。 期限、必要な書類、手数料、届け出をしなかった場合の扱いは、音声の翻訳に任せず、訳を確かめた定型文で出します。 「わかった」が押された記録が残り、後で「聞いていない」と言われたときに、何をどの言語で示したかが分かります。
10番目を最初から決めておくのも、意図してのことです。 機械の翻訳で通じない相談は必ずあります。引き継ぐ基準を決めずに始めると、通じないまま窓口を終えてしまいます。
02今回想定するシステム構成
窓口(職員の画面+マイク / 住民の画面+マイク) │ 住民が言語を選び、同意する ▼【トリガー】職員が「会話を始める」を押す 窓口のアプリ(Speech SDK) ├──▶ 職員のマイク:ja-JP → 住民の言語へ訳す ├──▶ 住民のマイク:住民の言語 → ja へ訳す │ Azure AI Speech(音声翻訳) ├──▶ 定型文:訳を確かめた文をボタンで出す(「わかった/もう一度」) ▼ 会話の記録(発話ID・話者・原文・訳文・定型文の表示と応答) ▼【トリガー】職員が「会話を終える」を押す Azure Functions(中継の処理) ▼ Azure OpenAI(Microsoft Foundry) ── 構造化出力 │ 説明した事項/聞き取った事項/未了事項/次回の持ち物 ▼ 【職員が確認・修正】→ 受付の記録へ登録
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Azure AI Speech(音声翻訳。Speech SDK の TranslationRecognizer) | Google Cloud Speech-to-Text と Cloud Translation の組み合わせ |
| 生成AI | Azure OpenAI(Microsoft Foundry)(受付の記録の下書き) | Claude API、Gemini API |
| 連携 | Azure Functions(会話の記録の受け取り、下書きの作成、登録の受け渡し) | Azure Logic Apps |
| 定型文 | 庁内で訳を確かめた定型文の一覧 | ― |
| 記録 | 各課の受付の記録 | ― |
電話通訳のサービスは、やめません。 この構成で始めて、通じない相談を通訳者に引き継ぎます。電話通訳を使う件数が減り、使うのは込み入った相談だけになるのが狙いです。
音声翻訳には、Azure AI Speech の音声翻訳を使います。 音声を流しながら、認識した原文と訳文をその場で返す仕組みで、話している途中の暫定の結果と、話し終えた後の確定した結果が返ります。訳文は文字で返り、必要なら合成音声にもできます。1回の呼び出しで2つまでの言語に訳せます。
対応する言語は、この市で多い言語をすべて含みます。 文字で訳す先の言語として、ベトナム語(vi)、中国語簡体字(zh-Hans)、ネパール語(ne)、フィリピノ語(fil)、ポルトガル語(pt)、英語(en)、韓国語(ko)、インドネシア語(id)が挙げられています。話す側の言語は、音声認識の対応言語から選べます。
03どうやって実装するのか
処理の起点を決める
職員が画面の「会話を始める」を押したときに、2つの認識を同時に始めます。 職員のマイクと住民のマイクは、別々の認識として動かします。1つのマイクで2人の声を拾うと、どちらが話したかが分からず、日本語を日本語へ訳そうとすることが起きます。
その前に、住民が自分の画面で言語をタップします。言語を最初に住民に選んでもらうのは、自動の言語の判定より確かだからです。 選べない住民のために、判定にも対応させます(後述)。
「会話を終える」を押したときに、会話の記録を中継の処理へ送り、受付の記録の下書きを作り始めます。 押し忘れたまま次の住民の会話が始まらないよう、住民が言語を選ぶ画面に戻った時点で、前の会話は自動で終えます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 職員の発話 | 職員のマイクの音声(日本語) | 窓口のマイク |
| 住民の発話 | 住民のマイクの音声(住民が選んだ言語) | 窓口のマイク |
| 定型文の一覧 | 手続きごとの大事な説明の日本語と、各言語の確認済みの訳 | 庁内で整備する一覧 |
| 手続きの種類 | 職員が画面で選んだ手続き(転入、国保の加入など) | 窓口のアプリ |
| 会話の記録 | 発話ID、話者、原文、訳文、定型文の表示と住民の応答、時刻 | 窓口のアプリが作る |
定型文の一覧は、たとえば次のように持ちます(国民健康保険の加入の例。文面は例です)。
| template_id | 日本語 | 各言語の訳 | 確認者・確認日 |
|---|---|---|---|
| NHI-01 | 国民健康保険に入る手続きをします | vi/zh-Hans/ne… | 通訳の職員・版の日付 |
| NHI-03 | 届け出は、日本に住み始めた日から14日以内です | 同上 | 同上 |
| NHI-05 | 保険料は、前の年の所得で決まります。所得の申告が必要です | 同上 | 同上 |
| NHI-08 | 保険証の代わりになるものは、後日、郵便で届きます | 同上 | 同上 |
訳の列には、誰がいつ確かめたかを必ず付けます。 確認者のいない訳は、定型文として使いません。文面は手続きの担当課が、訳は通訳の職員か翻訳の専門家が責任を持つように分けておくと、制度が変わったときに直す順番が決まります。
質を決めるのは、定型文の一覧です。 期限や必要な書類の説明の訳が、翻訳の専門家や通訳の職員に確かめられていること。この一覧が薄いと、大事な説明まで音声の翻訳に頼ることになります。
受付の記録の下書きに使うのは、会話の記録だけです。 住民の住所や在留カードの番号のように、書類で確かめる情報は、会話から取りません。
データの取得方法を決める
窓口のアプリは、Speech SDK の翻訳の認識(TranslationRecognizer)を2つ作ります。
| 設定 | 職員の側 | 住民の側 |
|---|---|---|
| 認識する言語 | SpeechRecognitionLanguage に ja-JP | 住民が選んだ言語(vi-VN など) |
| 訳す先の言語 | AddTargetLanguage に住民の言語(vi など) | AddTargetLanguage に ja |
| 受け取る結果 | Recognizing(暫定)と Recognized(確定) | 同左 |
| 住民の画面に出すもの | 確定した訳文 | 自分の発話の原文 |
| 職員の画面に出すもの | 自分の発話の認識結果(日本語) | 確定した訳文(日本語) |
職員の側の設定は、たとえば次のようになります(Python の Speech SDK の例)。
config = speechsdk.translation.SpeechTranslationConfig(endpoint=..., subscription=...)
config.speech_recognition_language = "ja-JP" # 職員は日本語で話す
config.add_target_language("vi") # 住民が選んだ言語へ訳す
recognizer = speechsdk.translation.TranslationRecognizer(
translation_config=config, audio_config=staff_mic)
recognizer.recognized.connect(on_final) # 確定した訳文だけを住民の画面へ
recognizer.start_continuous_recognition()
住民の側は、speech_recognition_language に住民の言語(vi-VN)、add_target_language に ja を入れ、audio_config に住民のマイクを指定した、もう1つの認識を動かします。on_final で受け取った結果に発話IDを振り、会話の記録に追記します。
住民の画面には、確定した訳文だけを出します。 暫定の結果は話している途中で変わるため、画面の文字が次々に書き換わると、読み手が混乱します。 職員の画面には、自分の発話の暫定の認識を薄く出し、言い間違いや認識の誤りにすぐ気づけるようにします。
住民が言語を選べないときは、言語の判定を使います。 候補の言語を渡すと、その中から話されている言語を返す仕組みで、最初の数秒で1回判定する方式は候補4つまで、会話の途中で切り替わる言語に追随する方式は候補10までです。候補にない言語が話されても、候補のどれかが返る点に注意します。判定した言語は、住民の画面にその言語で表示し、合っているかを押してもらいます。
入力の言語を指定しない多言語の翻訳もありますが、この構成では使いません。 暫定の結果が返らず、専用のエンドポイントが要るためです。
AIへ渡す前に整形する
- 言語を確かめる … 住民が選んだ言語を、その言語の文字で画面に出して確かめます
- 定型文を手続きで絞る … 職員が選んだ手続きの定型文だけを、職員の画面に並べます
- マイクを分ける … 職員と住民のマイクを別の入力として扱い、指向性のあるマイクを置きます
- 発話IDを振る … 確定した結果ごとに、話者・時刻・原文・訳文と一緒に発話IDを付けます
- 会話の記録を日本語にそろえる … 職員の発話は原文、住民の発話は日本語の訳文を使い、記録の下書きの入力にします。住民の原文も並べて残します
- 氏名と番号を置き換える … 会話に出た氏名、電話番号、在留カードの番号などは、生成AIに渡す前に記号に置き換えます
3番目を軽く見ないでください。 窓口はたいてい隣の窓口とつながっていて、隣の会話や庁内の放送が入ります。住民のマイクが職員の声を拾うと、職員の日本語を「住民の発話」として訳そうとします。
AIに処理させる
この構成のAIの仕事は2つです。 会話をその場で訳すこと(Azure AI Speech)と、会話の文字から受付の記録の下書きを作ること(Azure OpenAI)です。
| 段階 | 誰が行うか | 内容 |
|---|---|---|
| 発話の認識と翻訳 | Azure AI Speech | 職員の日本語を住民の言語へ、住民の言語を日本語へ訳す |
| 大事な説明 | 定型文(人が訳を確かめたもの) | 期限・書類・手数料などを、機械の翻訳を通さずに出す |
| 伝わったかの確認 | 住民のボタン | 定型文ごとに「わかった」「もう一度」 |
| 記録の下書き | Azure OpenAI | 説明した事項、聞き取った事項、未了事項、次回の持ち物を取り出す |
記録の下書きで取り出すのは、会話に出たことだけです。
| 取り出すもの | やり方 | 判断できないときの扱い |
|---|---|---|
| 説明した事項 | 定型文の表示と、職員の発話から | 定型文は ID で記録。住民の応答も付ける |
| 聞き取った事項 | 住民の発話の訳文から(家族の人数、勤め先の有無など) | 訳が不自然な発話は uncertain |
| 未了事項 | 次回に持ってくる書類、後日の手続き | 期限の言及が無ければ due: null |
| 引き継ぎが要るか | 「もう一度」が続いた説明、通じなかったやり取り | 印を付けるだけ |
| させないこと | 理由 |
|---|---|
| 手続きの要件を満たすかの判断 | 職員が書類で確かめる |
| 住民の発話の訳文を「整えて」書き直す | 訳の誤りが、住民が言ったこととして記録される |
| 会話に無い説明を記録に足す | 「説明した」と記録されると、後で争いになる |
| 「もう一度」が押された説明を「伝わった」と書く | 伝わったかは住民の応答で決める |
2行目がいちばん起きやすい失敗です。 機械の訳文はときに不自然で、記録の文体に整えたくなります。整えた瞬間に、住民が言ったことではなく、AIが解釈したことが記録になります。 不自然な訳文は不自然なまま、uncertain として残します。
指示内容を固定する
受付の記録の下書きに使う指示です。
あなたは市役所の窓口で、外国人の住民との会話の記録から
受付の記録の下書きを作る立場です。
会話の記録に書かれていることだけを使ってください。推測で補わないでください。
【会話の記録の読み方】
- 発話ごとに発話ID、話者(staff / resident)、日本語の文があります。
- resident の日本語は、機械翻訳の訳文です。不自然な訳がありえます。
- template は、職員が画面に出した確認済みの定型文です。
response は住民が押したボタン(understood / repeat / none)です。
- <氏名1> <番号1> などは置き換えた記号です。中身を推測しないでください。
【取り出す項目】
1. explained … 説明した事項。定型文は template_id と response をそのまま書く。
職員の発話で説明したものは、その要点と発話IDを書く
2. heard … 住民から聞き取った事項。発話IDを付ける
3. pending … 次回に持ってくる書類、後日の手続き。期限が言われていなければ due は null
4. handover_needed … 通訳者への引き継ぎが要りそうなやり取り
【厳守事項】
- 住民の発話の訳文を、自然な日本語に書き直さないでください。
意味が取りにくい訳文は、そのまま写して uncertain を true にしてください。
- 会話に出ていない説明を、説明したことにしないでください。
- response が repeat のまま終わった定型文を、伝わったと書かないでください。
- 手続きの要件を満たすかどうかは書かないでください。
- 各項目に、根拠にした発話IDを付けてください。
【手続きの種類】{procedure}
【会話の記録】{conversation}
「訳文を書き直さない」を明記するのが要です。 生成AIは、ぎこちない日本語を読むと、意味を推し量って自然な文に直します。直した文が正しいかどうかは、誰にも確かめられません。
「repeat のまま終わった定型文を、伝わったと書かない」も明記します。 会話の流れから、最後には分かったように見えることがあります。伝わったかは、住民が押したボタンで決めます。
出力形式を固定する
Azure OpenAI の構造化出力で、次の形のJSONを受け取ります。 構造化出力では、すべての項目を必須にし、決まらないものは null との共用体型で表し、オブジェクトに additionalProperties: false を付けます。
{
"session_id": "C-20261007-1035-07",
"procedure": "national_health_insurance_enroll",
"language": "vi",
"explained": [
{ "template_id": "NHI-03", "summary": null, "response": "understood | repeat | none",
"utterances": ["U-12"] }
],
"heard": [
{ "text": "", "uncertain": false, "utterances": ["U-15"] }
],
"pending": [
{ "item": "", "due": null, "utterances": ["U-21"] }
],
"handover_needed": [
{ "reason": "", "utterances": ["U-18", "U-19"] }
]
}
1つ目の理由は、何を説明したかを定型文のIDで残せることです。 NHI-03 が「加入の届け出は14日以内」の定型文なら、その文をどの言語で示し、住民が何を押したかが記録に残ります。 後で問い合わせがあったとき、記録から当時の画面の文面を再現できます。
2つ目は、utterances で会話の原文に戻れることです。 下書きの1行ごとに発話IDが付いているので、職員は確認のときに会話の記録の該当箇所を開けます。住民の原文と訳文を並べて見られるので、訳の誤りにも気づけます。
3つ目は、handover_needed を窓口の改善に使えることです。 どの手続きのどの説明で通じなかったかが集まると、定型文を足す場所が分かります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Azure AI Speech | Speech SDK(翻訳の認識) | 発話の認識と翻訳を、その場で返す |
| 定型文の一覧 | 窓口のアプリが読み込む | 手続きごとの定型文と各言語の訳 |
| Azure Functions | 窓口のアプリから送る | 会話の記録を受け取り、下書きを作る |
| Azure OpenAI | Chat Completions API(構造化出力) | 受付の記録の下書きを返す |
| 各課の受付の記録 | 職員が確認後に登録(APIが無ければ転記) | 確定した記録を残す |
受付の記録への登録は、職員が確かめたものだけです。 各課のシステムに登録のAPIが無いことも多いので、最初は下書きを職員が写す形で始めます。 写すだけでも、何を説明したかを思い出して書く時間は無くなります。
人が確認する
- 会話の最中に、自分の発話の認識を見る … 職員の画面に出る自分の日本語の認識が誤っていれば、言い直します
- 定型文の応答を見る … 「もう一度」が押されたら、別の言い方をするか、図やチラシを使います。2回続いたら、通訳者への引き継ぎを考えます
- 記録の下書きを確かめる …
uncertainの聞き取りと、handover_neededを中心に読み、直してから登録します - 引き継ぎを決める … 通じなかったやり取りがあれば、電話通訳か通訳の職員に引き継ぎ、記録に残します
1番目がいちばん効きます。 翻訳の誤りの多くは、日本語の認識の誤りから始まります。職員が自分の発話の認識を見て言い直せば、誤った訳が住民に届く前に止められます。
目標は、1件15分です。 手続きの説明と聞き取りに12分、記録の下書きの確認に3分という想定です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 住民が言語を選べない | 言語の判定を使い、判定した言語を画面で確かめてもらう |
| 候補にない言語が話された | 判定は候補のどれかを返す。住民が「違う」を押したら、電話通訳に切り替える |
| 住民が2つの言語を混ぜて話す | 会話の途中で切り替わる言語への追随を使う。同じ文の中の切り替えには追随しないので、言い直してもらう |
| 隣の窓口の声が入る | 指向性のマイクと、窓口の間の仕切りで減らす |
| 認識が止まる(Canceled) | 理由を職員の画面に出し、つなぎ直す。つながらなければ電話通訳へ |
| 「もう一度」が2回続く | 通訳者への引き継ぎを職員の画面で促す |
| 対象外の相談だと分かった | 会話を終え、記録の下書きを作らずに通訳者を手配する |
| 生成AIが応答しない | 会話の記録は残っているので、後で下書きを作り直す |
| 定型文に無い制度の質問が出た | 音声の翻訳で答えず、担当課の職員に確かめてから答える。後で定型文に足す候補として記録する |
| 住民が同意しない | 機械の翻訳を使わず、電話通訳で対応する |
| 子どもが通訳役で同席している | 子どもに訳させず、この構成か通訳者を使う。会話の記録に子どもの発話が混ざらないよう、住民のマイクの位置を確かめる |
対象外の相談は、最初に決めておきます。 生活保護、児童虐待、DVの相談などは、言葉の細かな違いが住民の生活に直結します。窓口の職員が、話の途中で対象外と気づいたら機械の翻訳をやめる、という決まりを先に作ります。
記録を残す
- 会話の記録(発話ID、話者、原文、訳文、時刻)。音声は保存しない設定にし、文字だけを残す
- 定型文の表示と、住民の応答(どの定型文を、どの言語の版で示したか)
- 住民の同意の記録(どの言語の文面で同意を得たか)
- 生成AIが返した下書きのJSONと、職員が直した差分
- 通訳者に引き継いだ会話と、その理由
- 定型文の一覧の版
定型文の版を残すのは、文面が後から直るためです。 訳を直したら、過去の会話で示した文面とは違うものになります。当時の版が残っていないと、住民に何を示したかを再現できません。
引き継いだ理由は、定型文を足す材料です。 同じ手続きの同じ説明で引き継ぎが続くなら、その説明を定型文にします。
04実装レベルの3段階
最小構成では、窓口の実務には使えません。 確かめるための段階です。 半自動化で、1件30分が18分程度になります。 電話通訳の待ちと三者の通話の時間は無くなりますが、受付の記録は職員が思い出して書きます。本格構成で15分になり、この段階が本記事の想定です。 差の3分は、会話の記録から下書きが出ると、何を説明したかを思い出す時間が要らなくなる分です。 段階を飛ばさないでください。 半自動化で1か月回すと、「もう一度」の多い定型文と、引き継ぎの多い手続きが分かります。そこを直してから記録の下書きを足すほうが、下書きの uncertain が減ります。
05工数削減シミュレーション
導入後 400件 × 15分 ÷ 60 = 100 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 外国人の住民が多く、市民課・保険年金課・税務課などの窓口で、日本語での説明が通じない相談が月に数百件ある市区町村。電話通訳のサービスや通訳の職員を使っているが、つながるまでの待ちや三者での通話で時間がかかっている場合。会話の内容が受付の記録に残らず、次に来たときに同じ説明を繰り返している場合。病院の受付や学校の事務室など、同じ形の窓口を持つ機関。
- 外国人の住民の来庁が月に数件で、電話通訳で足りる場合。窓口に画面とマイクを置く場所が取れない場合。生活保護や児童虐待の相談など、言葉の細かな違いが判断を左右し、資格を持つ通訳者が同席すべき相談(この構成の対象から外す)。なお、手続きの要件を満たすかの判断と、説明の内容が正しく伝わったかの最終的な確認はこの構成では行いません。
07最小構成で試す方法
- 外国人の住民の多い窓口を1つ選び、多い手続きを3つに絞る(転入、国保の加入、住民税の証明書など)
- その3つの手続きで必ず伝える説明を、日本語で10文ずつ書き出す
- 通訳の職員か翻訳の専門家に、多い3言語の訳を確かめてもらい、紙の定型文の表にする
- 職員どうしで住民役を立て、Speech Studio の音声翻訳で、補足の説明と聞き取りがどこまで通じるかを試す
- 職員の日本語の認識が誤った文と、訳がずれた文を書き出す
5番目を必ず書き出してください。 認識が誤った文は、職員の話し方(早口、専門用語の略し方)で直ることが多く、訳がずれた文は、定型文にすべき文の候補です。
| 出てきた内容 | 判断 |
|---|---|
| 補足と聞き取りが通じた | 窓口のアプリを作る段階に進む |
| 専門用語の認識が誤る | 職員の言い方を決める(略さない、ゆっくり話す) |
| 訳がずれる説明が多い | 定型文を増やすのが先。 音声の翻訳に頼る範囲を狭める |
3行目が出ることは珍しくありません。 行政の用語は、一般の会話にはあまり出てきません。定型文で出す範囲を広げるほど、機械の翻訳に頼る範囲は狭くなり、窓口は安定します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 大事な説明の訳がずれる | 期限・書類・手数料は定型文で出す |
| 職員の日本語の認識が誤る | 職員の画面に認識結果を出し、言い直す |
| 1つのマイクで2人の声を拾う | マイクと認識を話者ごとに分ける |
| 住民の画面の文字が次々に変わる | 住民の画面には確定した結果だけを出す |
| 言語の判定が違う言語を返す | 候補のどれかが返る仕様。住民に確かめてもらう |
| 訳文を記録の文体に整える | 書き直しを禁じ、uncertain で残す |
| 伝わっていない説明を「説明済み」とする | 住民のボタンの応答で決める |
| 対象外の相談に機械の翻訳を使う | 対象外の相談を先に決め、話の途中でもやめる |
| 隣の窓口の声が入る | 指向性のマイクと仕切り |
| 認識が止まって窓口が止まる | 電話通訳への切り替えの手順を用意する |
上の2行が、この構成の失敗のほとんどです。 どちらも、誤った訳が住民に届く失敗です。大事な説明を定型文に寄せ、職員が自分の認識を見る。この2つで、誤った訳の多くは住民に届く前に止まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 住民の氏名、住所、家族の構成、勤め先、在留資格、所得、健康保険の加入の状況など、窓口の会話に出るあらゆる個人情報です。
- 最初に住民の同意を得る … 会話を訳して画面に出すこと、記録には文字を残すことを、住民の言語で示し、同意を得てから始めます
- 音声を保存しない … 会話の記録は文字だけにし、音声は保存しない設定にします
- 生成AIに渡す前に置き換える … 氏名、電話番号、在留カードの番号などは記号に置き換えてから、記録の下書きに使います
- 生成AIのデータの扱いを確かめる … Azure OpenAI では、プロンプトと出力が他の顧客に提供されず、許可や指示なしに基盤モデルの学習に使われないとされています。会話の履歴を保存する機能は使わず、1回の呼び出しで完結させます。 グローバルやデータゾーンのデプロイでは処理の場所が広がるため、標準のデプロイを選ぶか、庁内の規程と照らして決めます
- 対象外の相談を決める … 生活保護、児童虐待、DVなどの相談は、資格を持つ通訳者が同席すべきものとして、この構成の対象から外します
- 記録の保存期間を決める … 会話の記録を、受付の記録と同じ期間だけ残すのか、短くするのかを決めます
誤りが起きた場合のリスクは、誤った説明が住民に届くことと、住民の言ったことが誤って記録されることの2つです。 前者は届け出の遅れや不利益につながり、後者は次の対応を誤らせます。定型文と、訳文を書き直さない記録で、どちらも設計の段階で減らします。
10まず何から始めるか
1週目:手続きと言語を絞る
外国人の住民の多い窓口を1つ選び、多い手続きを3つ、多い言語を3つに絞ります。対象外の相談の決まりを、その窓口の課と決めます。
2週目:定型文を作る
3つの手続きで必ず伝える説明を10文ずつ書き出し、通訳の職員か翻訳の専門家に3言語の訳を確かめてもらいます。 紙の表にして、窓口で指して使ってみます。
3週目:音声の翻訳を試す
職員どうしで住民役を立て、Speech Studio で補足の説明と聞き取りを試します。認識が誤った文と訳がずれた文を書き出し、職員の話し方の決まりと、定型文に足す文を決めます。
4週目:窓口のアプリをつなぐ
2つのマイクと2つの画面で、職員の側と住民の側の翻訳の認識を動かし、定型文をボタンで出すところまで作ります。この時点では記録の下書きを作らず、会話の記録が残るかを見ます。
2か月目: その窓口で実際の住民の対応に使い、「もう一度」と引き継ぎの件数を手続きごとに数えます。3か月目以降: 記録の下書きを足し、1件30分が何分になったかを実測します。定型文が窓口の大事な説明をほぼ覆い、電話通訳を使うのが込み入った相談だけになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 音声翻訳が音声の流れを実時間で多言語に訳し、音声から文字への翻訳と音声から音声への翻訳に対応すること。暫定の結果が話している間に返り、確定した結果を合成音声にできること。1回の呼び出しで2つの訳す先の言語を扱え、3つ目以降は翻訳の料金がかかること | Microsoft Learn: Speech translation overview | 2026-10-07 |
認識する言語を SpeechRecognitionLanguage で指定し、訳す先を AddTargetLanguage で足すこと。TranslationRecognizer の Recognizing・Recognized・Canceled のイベントと、結果の Translations で訳文を受け取ること。候補を渡す言語の判定に AutoDetectSourceLanguageConfig を使うこと。入力の言語を指定しない多言語の翻訳では暫定の結果が返らず、v2 のエンドポイントが要ること | Microsoft Learn: How to recognize and translate speech | 2026-10-07 |
| 言語の判定の候補が、最初に判定する方式で4つまで、途中の切り替えに追随する方式で10までであること。候補にない言語が話されても候補のどれかが返ること。最初に判定する方式が5秒未満で1つの言語を返すこと。途中の切り替えに追随する方式が同じ文の中の切り替えには追随しないこと。音声翻訳でも言語の判定を使えること | Microsoft Learn: Implement language identification | 2026-10-07 |
音声翻訳の訳す先の文字の言語に、ベトナム語(vi)、中国語簡体字(zh-Hans)、ネパール語(ne)、フィリピノ語(fil)、ポルトガル語(pt)、英語(en)、韓国語(ko)、インドネシア語(id)、日本語(ja)が含まれること。認識する言語は音声認識の対応言語から選べること | Microsoft Learn: Language and voice support for the Speech service | 2026-10-07 |
構造化出力でモデルが指定したJSONスキーマに従うこと。すべての項目を必須にし、決まらないものは null との共用体型で表すこと。additionalProperties: false が必要なこと | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-07 |
| プロンプトと出力が他の顧客に提供されず、許可や指示なしに基盤モデルの学習に使われないこと。Responses API などでメッセージの履歴が保存されること。グローバル・DataZone のデプロイでは処理の場所が広がること | Microsoft Learn: Azure が販売する Foundry モデルのデータ、プライバシー、セキュリティ | 2026-10-07 |
手続きの要件を満たすかの判断と、どの相談に通訳者を同席させるかは、各課の職員と所属長が決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0697)についてのご相談はこちらから。
