旅館のフロントで外国人客へのチェックインの館内説明を音声で訳して表示し、説明の漏れと客の選んだことを引き継ぎの記録に残す
旅館のフロントで、外国人の宿泊客にチェックインの館内説明をするときの会話を、その場で音声から訳して双方の画面に出します。終わったら、説明できた項目と漏れた項目、客が選んだ夕食の時刻や貸切風呂の枠を、引き継ぎの記録の下書きにします。
- 生成AI
- Azure OpenAI Service/Claude
- AIサービス
- Azure AI
- 対象業界
- 宿泊/飲食
- 対象部門
- カスタマーサポート
- 対象業務
- 問い合わせ対応/記録・議事録作成
- 主な課題
- 人手が足りない/引き継ぎができていない/確認ミスが多い
- AIで行う処理
- 翻訳
- 主な効果
- 入力漏れ削減/品質標準化/対応スピード向上
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 予約を確かめ、チェックイン票を出す
- 館内の説明を、英語か翻訳アプリで1項目ずつ行う
- 夕食の時刻、朝食の時刻、貸切風呂の枠、送迎の要否を聞き、チェックイン票に書く
- 客の質問や要望(枕の追加、荷物の預かり、タクシーの手配など)を聞き、メモに書く
- チェックイン票の写しを食事処と客室係に回す
- 貸切風呂の予約表に記入する
- 夜勤に伝えることを引き継ぎノートに書く
- 人予約を確かめ、フロントのタブレットで客の言語を選ぶ
- 自動画面に、宿で訳を確かめた館内説明の定型文が項目ごとに並ぶ
- 人スタッフは項目を順に指で示しながら日本語で説明し、定型文を客の側の画面に出す
- 自動項目に無いやり取りは、話している間だけ音声翻訳が動き、双方の言語で画面に出る
- 自動チェックインが終わると、会話の文字と定型文の表示の記録をもとに、説明できた項目・漏れた項目・客の選択・要望を引き継ぎの下書きにする
- 人スタッフが下書きを画面で確かめ、漏れた項目はその場で客に説明し、選択を直して確定する
- 自動確定した内容を、調理場・客室係・夜勤・送迎の担当ごとの引き継ぎ表と、PMSの顧客メモ用の文に分ける
- 人貸切風呂の予約表と PMS への反映は、引き継ぎ表を見てスタッフが行う
各工程の詳しい説明を読む
- 予約を確かめ、チェックイン票を出す
- 館内の説明を、英語か翻訳アプリで1項目ずつ行う
- 夕食の時刻、朝食の時刻、貸切風呂の枠、送迎の要否を聞き、チェックイン票に書く
- 客の質問や要望(枕の追加、荷物の預かり、タクシーの手配など)を聞き、メモに書く
- チェックイン票の写しを食事処と客室係に回す
- 貸切風呂の予約表に記入する
- 夜勤に伝えることを引き継ぎノートに書く
(a)翻訳アプリの操作で説明が長くなる。 2番目は1文ずつ打ち込んで画面を見せ、客の返事を聞き取るために、また端末を渡します。説明の中身より、端末のやり取りに時間がかかります。
(b)どこまで説明したかが残らない。 混んでいる時間帯は、門限、貸切風呂の予約方法、非常口が飛びます。 夜に客が門限を知らずに外出し、閉まった玄関の前で待つことになっても、チェックインのときに説明したかどうかを確かめる手段がありません。
(c)客の選んだことが担当に届かない。 3番目で聞いた夕食の時刻が食事処に届かず、客が18時に来て席が無い。チェックイン票の写しを回し忘れただけで起きます。 4番目のメモは、さらに届きにくい情報です。
(d)引き継ぎが人によって違う。 7番目に何を書くかが決まっていないので、夜勤が翌朝の送迎を知らないことが起きます。
- 【人】 予約を確かめ、フロントのタブレットで客の言語を選ぶ
- 【自動】 画面に、宿で訳を確かめた館内説明の定型文が項目ごとに並ぶ
- 【人】 スタッフは項目を順に指で示しながら日本語で説明し、定型文を客の側の画面に出す
- 【自動】 項目に無いやり取りは、話している間だけ音声翻訳が動き、双方の言語で画面に出る
- 【自動】 チェックインが終わると、会話の文字と定型文の表示の記録をもとに、説明できた項目・漏れた項目・客の選択・要望を引き継ぎの下書きにする
- 【人】 スタッフが下書きを画面で確かめ、漏れた項目はその場で客に説明し、選択を直して確定する
- 【自動】 確定した内容を、調理場・客室係・夜勤・送迎の担当ごとの引き継ぎ表と、PMSの顧客メモ用の文に分ける
- 【人】 貸切風呂の予約表と PMS への反映は、引き継ぎ表を見てスタッフが行う
6番目が、この設計の分かれ目です。 下書きを確かめるのは、客がまだフロントの前にいる間です。漏れた項目が見つかれば、その場で説明すれば済みます。客が部屋に入ってから気づくと、内線で説明し直すことになります。
決まった説明を機械の訳に任せないのも、意図してのことです。 門限や大浴場の入り方は、言い回しが揺れると誤解につながる説明です。宿で一度確かめた訳を毎回同じように出すほうが確実で、機械の訳は項目に無いやり取りにだけ使います。
02今回想定するシステム構成
フロントのタブレット(スタッフ側と客側の2画面、マイク) │ 客の言語を選ぶ ├──▶ 館内説明の定型文(宿で訳を確かめたもの)を項目ごとに表示 │ 表示した項目と時刻を記録 ▼【トリガー】「話す」ボタンを押している間 Azure AI Speech(音声翻訳。Speech SDK の TranslationRecognizer) │ 話した言葉の文字と訳を返し、双方の画面に出す ▼【トリガー】チェックインの終了ボタン Azure Functions │ 会話の文字・訳・定型文の表示の記録をまとめる ▼ Azure OpenAI(構造化出力) │ 説明できた項目/漏れた項目/客の選択/要望 を抜き出す ▼ 【スタッフが客の前で確認・修正】 ▼ 引き継ぎ表(調理場・客室係・夜勤・送迎)と PMS の顧客メモ用の文
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Azure AI Speech(音声翻訳。Speech SDK の TranslationRecognizer) | Google Cloud Speech-to-Text と Cloud Translation の組み合わせ |
| 生成AI | Azure OpenAI(Microsoft Foundry)(説明の項目と客の選択の抜き出し。構造化出力) | Claude API |
| 連携 | Azure Functions(会話の記録の受け取り、下書きの作成、引き継ぎ表への書き出し) | Azure Logic Apps |
| 定型文 | 宿で訳を確かめた館内説明の一覧 | ― |
| 記録 | 引き継ぎ表(共有の一覧)と PMS の顧客メモ | ― |
PMS と貸切風呂の予約表は、新しく足すものではありません。 この構成からは書き込まず、スタッフが引き継ぎ表を見て反映します。最初の準備は、館内説明の項目表と、その定型文の訳を宿で確かめることです。
土台は Azure AI Speech の音声翻訳です。 公式の説明では、音声の流れを受けて、話した言葉の文字と訳をリアルタイムで返し、途中の結果は話しているうちに、確定した結果は区切りごとに返るとされています。訳の言語は1回の呼び出しで2つまで直接出せ、3つ目からは別の翻訳の料金がかかるとされています。この宿では客の言語1つに訳すので、その範囲に収まります。
訳の先の言語は、英語、中国語(簡体字・繁体字)、韓国語、タイ語とも、公式の対応言語の一覧に載っています。 日本語の音声の認識も対応しています。
03どうやって実装するのか
処理の起点を決める
処理の起点は3つあります。 客の言語を選んだとき、「話す」ボタンを押したとき、チェックインの終了ボタンを押したときです。
音声翻訳は、ボタンを押している間だけ動かします。 マイクを開きっぱなしにすると、隣の客の声、ロビーの音楽、後ろに並ぶ客の会話まで拾い、関係のない文字が記録に混ざります。 押している間は StartContinuousRecognitionAsync で連続して認識し、離したら StopContinuousRecognitionAsync で止めます。1回だけ聞く方式(RecognizeOnceAsync)は、無音か最大15秒で区切られるため、長めの説明が途中で切れます。
ボタンは「スタッフが話す」と「お客様が話す」の2つに分けます。 どちらが押されたかで、認識する言語と訳す先を切り替えます。言語の自動判別も使えますが、日本語と客の言語の2つしかない場面なら、ボタンで決めたほうが取り違えがありません。 押したボタンは、そのまま記録の「誰が話したか」になります。
チェックインの終了ボタンを押すと、会話の記録が Azure Functions に送られ、下書きを作ります。 客がまだフロントの前にいる間に下書きが出るよう、数十秒で返る大きさに記録を絞っておきます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 会話の記録 | 発話ごとに、話した人(スタッフ/客)、原文の文字、訳文、時刻 | Azure AI Speech の確定した結果 |
| 定型文の表示の記録 | どの項目の定型文を、何時何分に客の画面に出したか | タブレットのアプリ |
| 館内説明の項目表 | 項目の番号・名前、その日に説明が要るか(夕食付きの予約か、貸切風呂が空いているか) | 宿で決めた一覧 |
| 予約の情報 | 予約番号、人数、夕食・朝食の有無、送迎の希望の有無 | PMS(スタッフが画面で選ぶ) |
| その日の選択肢 | 夕食の時刻の空き、貸切風呂の空き枠、送迎の便 | 食事処・貸切風呂・送迎の予約表 |
質を決めるのは、下の3つです。 項目表が無ければ漏れを判定できず、予約の情報が無ければ夕食の付かない客に夕食の説明が漏れたと出ます。 その日の選択肢が無ければ、客が空いていない枠を選んだことに気づけません。
会話の記録は、確定した結果だけを使います。 話している途中の結果は画面に出すためのもので、言い直しの途中の文字が入ります。 記録に残すのは区切りごとの確定した結果です。
データの取得方法を決める
音声翻訳は、タブレットのアプリから Speech SDK で呼びます。SpeechTranslationConfig に認識する言語(SpeechRecognitionLanguage)と、訳す先の言語(AddTargetLanguage)を設定し、TranslationRecognizer を作ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 途中の結果 | Recognizing のイベント | 話しているうちに画面に出す |
| 確定した結果 | Recognized のイベント | 記録に残す原文と訳文 |
| 訳文 | 結果の Translations(訳す先の言語の符号で引く) | 客の画面とスタッフの画面に出す |
| 認識できなかった区切り | 結果の理由が NoMatch | 「もう一度お願いします」の定型文を出す |
確定した結果は、理由が TranslatedSpeech であることを確かめてから記録します。理由が NoMatch や Canceled の区切りは、記録に「認識できず」と残し、空の行として扱いません。 下書きを作るときに、そこで何かが話されたことが分かるようにするためです。
| ボタン | 認識する言語 | 訳す先 |
|---|---|---|
| スタッフが話す | ja-JP | 客の言語(en、zh-Hans、zh-Hant、ko、th など) |
| お客様が話す | 客の言語のロケール(en-US、zh-CN など) | ja |
宿の固有の言葉は、フレーズリストで認識を助けます。 公式の説明では、フレーズリストは名前や地名、業界や組織に固有の言葉を前もって渡して認識されやすくする仕組みで、Speech SDK のリアルタイムの文字起こしで使え、2,000語句を超えないようにするとされています。「貸切風呂」「離れ」「懐石」、施設の名前、近くの駅の名前を入れます。音声翻訳の認識で同じように効くかは、最小構成の段階で確かめます。
AIへ渡す前に整形する
- マイクの置き方を決める … スタッフ側と客側にそれぞれマイクを向けるか、単一指向性のマイクを1本ずつ置きます。 ロビーの音を拾うと認識が落ちます
- 定型文を作る … 館内説明の項目ごとに、日本語の原文と各言語の訳を用意し、訳は宿で確かめてから使います
- 項目表にその日の条件を入れる … 夕食付きの予約か、貸切風呂の空きがあるかで、その日に説明が要る項目を決めます
- 会話の記録を整える … 確定した結果を時刻順に並べ、発話ごとに番号を振ります。下書きの根拠として、この番号を使います
- 定型文の表示の記録を同じ並びに入れる … 「項目3の定型文を表示」を、会話の記録と同じ時刻の列に並べます
- 個人の情報を絞る … 生成AIに渡すのは会話の記録と予約番号までで、氏名・住所・旅券の番号は渡しません
2番目に時間をかけてください。 定型文の訳は、外国人のスタッフや、その言語の分かる人に一度読んでもらいます。門限や入浴の作法のように、誤解すると客が困る説明ほど、機械の訳を使わずに定型文にします。
AIに処理させる
音声翻訳がさせるのは、話した言葉を文字にして訳すことだけです。 チェックインの後で、Azure OpenAI に会話の記録を渡し、次のことをさせます。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 説明できた項目 | 項目表の項目ごとに、定型文を出したか、口頭で説明したか | 説明らしい発話はあるが中身が足りなければ partial |
| 漏れた項目 | その日に説明が要るのに、どこにも出てこない項目 | 予約の条件が分からなければ unknown |
| 客の選択 | 夕食の時刻、朝食の時刻、貸切風呂の枠、送迎の時刻と行き先 | 客が答えていなければ not_chosen |
| 要望 | 枕の追加、荷物、タクシー、記念日など、項目に無い頼みごと | 何を頼んだか分からなければ unclear |
| 注意の要る申し出 | 食物アレルギー、体調、苦情らしい発話 | 判断せず、原文を添えて flag にする |
| 根拠 | それぞれの判定に使った発話の番号 | 番号の無い判定は出さない |
選択には、スタッフが復唱したかを付けます。 客が「7:30」と言い、スタッフが「19時半ですね」と確かめていれば readback: true です。復唱の無い選択は、確認の画面で目立たせます。 夕食の「7時半」を朝と取り違えるのは、復唱の無いやり取りです。
| させないこと | 理由 |
|---|---|
| 食物アレルギーに対応できるかの判断 | 調理場が原文を見て判断する。下書きは原文を渡すまで |
| 空いていない枠を、空いている別の枠に直すこと | 客の選択を勝手に変えない。空いていなければ conflict で人へ |
| 説明していない項目を「説明済み」にすること | 定型文の表示か、日本語の発話が無ければ漏れとする |
| 訳文だけを根拠にすること | 判定は原文を見て行う。訳文は揺れる |
| 料金・返金・規則の例外の約束 | フロントの責任者が決める |
4行目がいちばん大事です。 客の発話は、原文と訳文の両方が記録にあります。訳文だけを見て「夕食は7時」と抜き出すと、訳の揺れがそのまま記録に入ります。 原文を見て、訳文は参考にとどめます。
指示内容を固定する
あなたは旅館のフロントで、外国人の宿泊客のチェックインの記録を整える係です。
渡した会話の記録と定型文の表示の記録だけを見てください。
推測で埋めないでください。
【やること】
1. 項目表の項目ごとに、説明できたかを判定する。
- template ... その項目の定型文を客の画面に出した記録がある
- spoken ..... スタッフの発話でその項目を説明している
- partial .... 説明はあるが、項目表の「伝える内容」の一部が無い
- missing .... その日に説明が要るのに、どこにも無い
- not_needed . 予約の条件から、その日は説明が要らない
2. 客の選択(夕食・朝食の時刻、貸切風呂の枠、送迎)を抜き出す。
3. 項目に無い要望を抜き出し、担当(調理場・客室係・夜勤・送迎)を付ける。
4. 食物アレルギー、体調、苦情らしい発話は flag に入れる。
【厳守事項】
- 判定と抜き出しは、客の発話の原文を見て行うこと。
訳文は参考にとどめ、訳文だけを根拠にしないこと。
- 時刻は客の原文の書き方のまま value_original に写し、
24時間制の解釈を value に入れること。午前か午後か決められなければ
ambiguous とし、どちらかに決めないこと。
- 選択した枠が「その日の選択肢」に無い場合は conflict とし、
空いている別の枠に直さないこと。
- スタッフが日本語で同じ内容を言い直していれば readback を true にすること。
- 食物アレルギーについて、対応できるか、できないかを書かないこと。
原文をそのまま写し、flag の種類を allergy とすること。
- 料金・返金・規則の例外について、宿が約束したように書かないこと。
- それぞれの判定に、根拠の発話の番号を必ず付けること。
番号を付けられない判定は出さないこと。
- 「認識できず」の区切りがある場合は、その番号を unrecognized に並べること。
【項目表】{checklist}
【予約の情報】{reservation}
【その日の選択肢】{availability}
【会話の記録】{utterances}
【定型文の表示の記録】{template_log}
「訳文だけを根拠にしない」を明記しないと、訳文から抜き出します。 訳文は日本語なので読みやすく、何も言わなければそちらを使います。原文と訳文の両方を渡すのは、原文で判定させるためです。
時刻の扱いを細かく書いているのは、旅館の時刻がいちばん取り違えやすいからです。 「7:30」は夕食なら19時半、朝食なら7時半です。文脈から決めてよいのは項目が明らかなときだけで、決められなければ人に回します。
出力形式を固定する
Azure OpenAI の構造化出力で、次の形のJSONを受け取ります。
{
"checkin_id": "R-20261014-0312",
"items": [
{ "item_no": 3, "name": "門限", "status": "template | spoken | partial | missing | not_needed",
"evidence": [12, 13] }
],
"choices": [
{ "type": "dinner_time | breakfast_time | private_bath | shuttle",
"value": "19:30", "value_original": "seven thirty",
"status": "chosen | not_chosen | ambiguous | conflict",
"readback": true, "evidence": [21, 22] }
],
"requests": [
{ "text_ja": "枕を1つ追加", "original": "", "dept": "客室係 | 調理場 | 夜勤 | 送迎",
"evidence": [30] }
],
"flags": [ { "type": "allergy | health | complaint", "original": "", "evidence": [25] } ],
"unrecognized": [17]
}
構造化出力を使うのは、項目と担当の値をこちらの決めた語に固定するためです。 公式の説明では、構造化出力は渡した JSON Schema にモデルを従わせる仕組みで、すべての項目を必須にし、additionalProperties を false にする必要があるとされています。数値の最小・最大などの一部の指定には対応していないので、根拠の番号が会話の記録の範囲に収まるかは、受け取った後にプログラムで確かめます。
items と choices を分けているのは、使う人が違うからです。 items はスタッフがその場で漏れを補うための表、choices と requests は担当ごとの引き継ぎ表に分かれます。
| 書き出す先 | 中身 |
|---|---|
| 調理場・食事処 | 夕食・朝食の時刻、allergy の原文、食事の要望 |
| 客室係 | 客室への要望(枕・布団・記念日) |
| 夜勤 | 貸切風呂の枠、門限について説明済みか、夜間の要望 |
| 送迎 | 送迎の時刻・行き先・人数 |
| PMS の顧客メモ用 | 上記をまとめた日本語の短い文 |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Azure AI Speech | Speech SDK(タブレットのアプリから) | 話した言葉の文字と訳を返す |
| Azure Functions | アプリからの送信 | 会話の記録を受け取り、下書きを作る |
| Azure OpenAI | API呼び出し(構造化出力) | 説明の項目・選択・要望を抜き出す |
| 引き継ぎ表 | 共有の一覧への書き込み | 確定した内容を担当ごとの行にする |
| PMS | 書き込まない | スタッフが顧客メモ用の文を貼る |
PMS と予約表に書き込まないのは、選択の誤りが客の滞在にそのまま響くからです。 夕食の時刻を取り違えたまま PMS に入ると、調理場はその時刻で準備します。スタッフが客の前で確かめた後、人の手で反映するところまでを、最初の形にします。
人が確認する
- 漏れた項目をその場で補う …
missingとpartialの項目を、定型文で説明します - 選択を確かめる …
ambiguous、conflict、readback: falseの選択を客に確かめます - 注意の要る申し出を渡す …
allergyは原文のまま調理場へ、healthとcomplaintはフロントの責任者へ回します - 確定する … 直した内容で引き継ぎ表に書き出します。直す前の下書きも残します
目標は、1組の確認を1分以内にすることです。 漏れも曖昧な選択も無ければ、画面を見て確定するだけです。確認に時間がかかる組が多いなら、定型文が足りないか、説明の順番が人によって違います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 客の言語が一覧に無い | 英語の定型文と英語の音声翻訳に切り替える。それも通じなければ、絵と指差しの案内に戻る |
| 1つの組で言語が混ざる | 話す人ごとにボタンの言語を切り替える。家族の誰が答えたかは記録しない |
| 認識できない区切りが続く | 「もう一度お願いします」の定型文を出し、3回続いたらマイクと周りの音を確かめる |
| ネットワークが切れる | 音声翻訳は使えない。紙の多言語案内に戻し、選択は紙のチェックイン票に書く |
| 下書きが返ってこない | 会話の記録は保存されている。後で作り直し、その場は紙の票で確定する |
| 急病・けが・強い苦情 | この構成を使わない。 責任者につなぎ、必要なら通訳の窓口を使う |
| 客が録音を望まない | 音声翻訳を止め、定型文の指差しだけで説明する |
最後の行を、運用の最初から決めておいてください。 音声を扱うことを掲示で知らせても、望まない客はいます。 定型文だけでも、チェックインの説明は成り立つように作ります。
記録を残す
- 会話の記録(発話ごとの原文・訳文・話した人・時刻)と、定型文の表示の記録
- 下書きの JSON と、スタッフが直した後の内容
- スタッフが直した項目(どの選択を、何から何に変えたか)
- 担当ごとの引き継ぎ表に書き出した日時
- 項目ごとの
missingの発生率と、言語ごとの「認識できず」の発生率
音声そのものは保存しません。 公式の説明では、リアルタイムの文字起こしと音声翻訳で、Microsoft は顧客が渡したデータを保持・保存しないとされています。宿の側でも音声は残さず、文字の記録だけを決めた期間だけ持ちます。
項目ごとの missing の発生率は、説明の順番を直す材料です。 毎月同じ項目が漏れるなら、その項目の定型文を説明の早い位置に移します。
04実装レベルの3段階
最小構成は、確かめるための段階です。 実際の客には使いません。 半自動化で、1組10分が7分程度になります。 翻訳アプリの打ち込みは無くなりますが、選択の記入と引き継ぎの記入は手で残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、記入と配布が組ごとの手作業だからです。 段階を飛ばさないでください。 半自動化の記録を1か月見ると、漏れやすい項目と、認識の落ちる言語が先に分かります。そこで定型文を足してから本格構成に進むほうが、確認の手間が減ります。
05工数削減シミュレーション
導入後 300件 × 4分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 外国人の宿泊客が宿泊の3〜5割を占め、チェックインのたびに夕食の時刻・大浴場の使い方・貸切風呂の予約・門限などを説明している旅館。英語以外の言語の客にはスタッフ個人の翻訳アプリで説明していて、どこまで説明したか、客が何を選んだかが紙のメモにしか残らない場合。チェックインの担当と、夕食・客室・夜間の担当が分かれていて、引き継ぎの抜けで「聞いていない」が起きている宿。
- 外国人の宿泊客が月に数組で、英語の案内書を渡せば足りる場合。チェックインをセルフの端末に寄せていて、フロントで口頭の説明をしていない宿。急病・けが・苦情など、その場の判断と正確な説明が要る場面(この構成の対象から外し、通訳の窓口や責任者につなぐ)。なお、食物アレルギーへの対応の可否、料金や返金の判断は、この構成では行いません。
07最小構成で試す方法
- 館内説明の項目表を作り、項目ごとに日本語の原文を1〜2文で書く
- Speech Studio の音声翻訳の画面で、スタッフ同士で客の役をして10組分のチェックインを試す
- 宿の固有の言葉(貸切風呂、施設の名前、駅の名前)が正しく文字になるかを見る
- 出てきた会話の文字を手元の生成AIの画面に貼り、「項目表の項目ごとに説明できたか、客が何を選んだかを、根拠の発話つきで出してください。推測で埋めないでください」と指示する
- 出てきた表を、実際に話した内容と突き合わせる
10組は必ずやってください。 タブレットのアプリを作る前に、「この宿の言葉と、この宿のロビーで、音声翻訳が使えるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 固有の言葉も含めて正しく文字になり、項目の判定も合った | タブレットのアプリと連携に進む |
| 固有の言葉だけを取り違えた | フレーズリストか定型文で補う。構成は有効 |
| ロビーの音で文字にならない | マイクの置き方が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、翻訳アプリでの聞き直しが多かった理由が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| ロビーの音や隣の客の声が記録に混ざる | ボタンを押している間だけ認識する。 単一指向性のマイクを使う |
| 長い説明が途中で切れる | 1回だけ聞く方式は最大15秒。連続の認識をボタンで止める |
| 宿の固有の言葉を取り違える | フレーズリストか定型文で補う。効き方は最小構成で確かめる |
| 門限や入浴の作法が誤って訳される | 機械の訳を使わず、宿で確かめた定型文にする |
| 夕食の時刻を朝と取り違える | 原文の書き方を残し、決められなければ ambiguous |
| 訳文から抜き出して誤る | 判定は原文で行うと指示に書く |
| 空いていない枠が記録に入る | conflict で人へ。別の枠に直させない |
| アレルギーの申し出が「対応可」と書かれる | 判断を禁じ、原文を調理場へ渡すだけにする |
| 担当ごとの引き継ぎ表を誰も見ない | 担当の交代の時刻に、一覧を開く手順を決める |
| PMS に自動で入る | 入れない。 スタッフが確かめてから反映する |
上の2行が、この構成の失敗のほとんどです。 どちらも、記録に入れるべきでない音が入るという同じ形をしています。ボタンで区切ることが、記録の質を決めます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 宿泊客の声と会話の文字、予約番号、滞在中の予定(夕食・送迎の時刻)、そして食物アレルギーや体調の申し出です。
- 音声を残さない … 公式の説明では、リアルタイムの文字起こしと音声翻訳で、音声はサーバーのメモリ上だけで処理され、保存されないとされています。宿の側でも音声を録らず、文字の記録だけを持ちます
- 音声を扱うことを客に知らせる … 公式の説明は、音声と文字の記録が各地の法令で個人のデータや機微なデータにあたりうること、必要な許可を得るのは利用者の責任であることを述べています。フロントに掲示し、望まない客には定型文だけで説明します
- 生成AIに渡す範囲を絞る … 氏名・住所・旅券の番号は渡しません。予約番号と会話の記録までにします
- アレルギーと体調の判断をさせない … 下書きは原文を担当に渡すまでです。対応できるかは調理場、体調は責任者が判断します
- 定型文の訳に責任を持つ … 門限や入浴の作法の訳は、宿が確かめた文として出します。 機械の訳と区別して表示します
- 記録の保存期間を決める … 会話の記録は引き継ぎに要る期間だけ持ち、チェックアウトの後、決めた期間で消します
誤りが起きた場合のリスクは、選択の取り違えと、注意の要る申し出の見落としの2つです。 前者は訳文だけを根拠にすると起き、後者は下書きに判断をさせると起きます。どちらも、原文を見て人が確かめる設計で防ぎます。
10まず何から始めるか
1週目:館内説明の項目表と定型文を作る
チェックインで説明している項目を、フロントの5名で書き出して1つの表にします。 人によって説明の順番や中身が違うことが、ここで分かります。あわせて、項目ごとの日本語の原文を1〜2文で書きます。
2週目:10組分で試す
Speech Studio の音声翻訳で、スタッフ同士で客の役をして試します。固有の言葉の取り違えと、ロビーの音の影響を最優先で見ます。
3週目:定型文の訳を確かめ、マイクを決める
定型文の訳を、その言語の分かる人に読んでもらいます。 門限、入浴の作法、非常口は特に丁寧に確かめます。あわせて、マイクの置き方を決めます。
4週目:タブレットで音声翻訳と定型文の表示を動かす
Speech SDK のサンプルから、2つのボタンと定型文の表示を持つアプリを作ります。この時点では下書きを作らず、会話の記録を保存するだけにします。
2か月目: 終了ボタンで下書きを作り、確認の画面を足します。missing の件数と、スタッフが直した項目を毎週数えます。3か月目以降: 担当ごとの引き継ぎ表への書き出しを足し、1組10分が何分になったかを実測します。項目ごとの missing の発生率を見て、定型文と説明の順番を直した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 音声翻訳が音声の流れをリアルタイムで文字と訳にし、途中の結果と確定した結果を返すこと。訳す先を1回の呼び出しで2言語まで直接出せ、3言語目からは翻訳の料金がかかること。文字起こしと、訳す先の言語ごとの翻訳に料金がかかり、途中の結果も訳されるため訳の量が音声より多くなること | Microsoft Learn: Speech translation overview | 2026-10-14 |
SpeechTranslationConfig に SpeechRecognitionLanguage と AddTargetLanguage を設定し TranslationRecognizer を使うこと。RecognizeOnceAsync が無音か最大15秒で1回の発話を区切ること。連続の認識の開始と停止。Recognizing が途中の結果、Recognized が確定した結果を返し、理由が TranslatedSpeech・NoMatch・Canceled で分かれること。訳文が言語の符号で引けること | Microsoft Learn: How to recognize and translate speech | 2026-10-14 |
音声翻訳の訳す先の言語に英語・中国語(簡体字 zh-Hans・繁体字 zh-Hant)・韓国語・タイ語・ベトナム語・日本語が含まれること。音声の認識で ja-JP が対応していること | Microsoft Learn: Language and voice support | 2026-10-14 |
| フレーズリストが名前・地名・業界や組織に固有の言葉の認識を助ける仕組みで、Speech SDK のリアルタイムの文字起こしで使え、2,000語句を超えないようにすべきこと | Microsoft Learn: Improve recognition accuracy with phrase list | 2026-10-14 |
| リアルタイムの文字起こしで音声がサーバーのメモリ上だけで処理され保存されないこと。リアルタイムの文字起こしと音声翻訳で Microsoft が顧客のデータを保持・保存しないこと。音声と文字の記録が個人のデータにあたりうり、必要な許可を得るのは利用者の責任であること | Microsoft Learn: Data, privacy, and security for Speech to text | 2026-10-14 |
構造化出力が渡した JSON Schema にモデルを従わせること。すべての項目を必須にし additionalProperties を false にする必要があること。数値の minimum・maximum などのキーワードに対応していないこと | Microsoft Learn: How to use structured outputs with Azure OpenAI in Microsoft Foundry Models | 2026-10-14 |
食物アレルギーへの対応、料金や規則の例外、急病・けがの対応は、この構成の外で、調理場とフロントの責任者が判断してください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1515)についてのご相談はこちらから。
