Media > AI活用ユースケース > 物流 > 運送会社の点呼で運行管理者と運転者が話した内容を音声で記録して文字にし、点呼記録簿の項目にそろえて、確認項目の漏れを出発前に拾う

運送会社の点呼で運行管理者と運転者が話した内容を音声で記録して文字にし、点呼記録簿の項目にそろえて、確認項目の漏れを出発前に拾う

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

営業所の点呼で運行管理者と運転者が話した内容を Azure AI Speech で話者ごとに文字にし、点呼記録簿の項目にそろえます。確かめていない項目があれば、運転者が出発する前に運行管理者の画面へ返します。

サマリー
生成AI
Azure OpenAI Service/Claude/Gemini
AIサービス
Azure AI
対象業界
その他/物流
対象部門
物流
対象業務
内容確認・チェック/記録・議事録作成
主な課題
人手が足りない/入力作業が多い/確認ミスが多い
AIで行う処理
抽出
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
240h/月
AI導入後
80h/月
想定削減
67%
年間削減
1,920h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 運転者が点呼場に来て、運転免許証と車両の鍵を受け取る
  2. 運行管理者がアルコール検知器で測定させ、目視で顔色や様子を見る
  3. 体調、睡眠、日常点検の実施、その日の運行の注意を口頭で確かめ、指示を伝える
  4. 手元のメモに、運転者名と測定の結果、確かめた項目の印を付ける
  5. 運転者が出発する
  6. 点呼の列が途切れたところで、メモを見ながら表計算の点呼記録簿に打ち込む
  7. 月末に、記録の空欄と、業務前と業務後の点呼がそろっていない運転者を探す
導入後(After)
  1. 人運行管理者が点呼場のタブレットで、その日の乗務の割り当てから運転者と車両を選び、録音を始める
  2. 人いつもどおり点呼を行う。アルコール検知器で測定させ、体調・睡眠・日常点検を確かめて指示を伝える
  3. 人点呼が終わったら「終了」を押す
  4. 自動Azure AI Speech の高速文字起こしで、話者を分けて文字にする
  5. 自動生成AIが、確認項目ごとに `confirmed` / `unclear` / `not_covered` を付け、根拠の発話を書き出す
  6. 自動運転者の申告(体調の不調、眠気、車両の不具合)と、運行管理者の指示を取り出す
  7. 自動アルコール検知器の測定結果を取り込み、記録の下書きにまとめる
  8. 自動`unclear` と `not_covered` がある場合は、点呼場のタブレットに項目名を出す
  9. 人運行管理者がその場で聞き直し、追加の録音として残す
  10. 人下書きを確かめて確定する。確定した記録が点呼記録簿に入る
各工程の詳しい説明を読む
  1. 運転者が点呼場に来て、運転免許証と車両の鍵を受け取る
  2. 運行管理者がアルコール検知器で測定させ、目視で顔色や様子を見る
  3. 体調、睡眠、日常点検の実施、その日の運行の注意を口頭で確かめ、指示を伝える
  4. 手元のメモに、運転者名と測定の結果、確かめた項目の印を付ける
  5. 運転者が出発する
  6. 点呼の列が途切れたところで、メモを見ながら表計算の点呼記録簿に打ち込む
  7. 月末に、記録の空欄と、業務前と業務後の点呼がそろっていない運転者を探す

(a)記録は点呼から時間がたってから書かれる。 6番目は列が途切れるのを待つ作業です。朝の60名分を打ち込むのは出発のピークが過ぎた9時ごろで、その間に業務後の点呼の準備も始まります。 指示した内容はメモの単語から思い出すことになります。

(b)確かめた項目が人によって違う。 3番目で、睡眠を聞く人と聞かない人、日常点検を「やった?」の一言で済ませる人がいます。記録の欄はすべて埋まっていても、確かめた中身は記入者ごとに違います。

(c)「異常なし」が多すぎる。 記録の欄に一律に「異常なし」と書く習慣があると、運転者が「少し眠い」と言ったことが記録に残りません。 後で事故があったとき、点呼で何を聞き、何と答えたかが分からなくなります。

(d)記録の抜けは月末まで分からない。 7番目の点検は月に一度です。業務後の点呼の記録が無い日が見つかっても、その日の運転者に何があったかを確かめる手がかりは残っていません。

4つに共通するのは、点呼で話されたことが、記録に移る途中で失われることです。 点呼そのものは毎回行われていても、記録に残らなければ、行ったことを示せません。

  1. 【人】 運行管理者が点呼場のタブレットで、その日の乗務の割り当てから運転者と車両を選び、録音を始める
  2. 【人】 いつもどおり点呼を行う。アルコール検知器で測定させ、体調・睡眠・日常点検を確かめて指示を伝える
  3. 【人】 点呼が終わったら「終了」を押す
  4. 【自動】 Azure AI Speech の高速文字起こしで、話者を分けて文字にする
  5. 【自動】 生成AIが、確認項目ごとに confirmed / unclear / not_covered を付け、根拠の発話を書き出す
  6. 【自動】 運転者の申告(体調の不調、眠気、車両の不具合)と、運行管理者の指示を取り出す
  7. 【自動】 アルコール検知器の測定結果を取り込み、記録の下書きにまとめる
  8. 【自動】 unclear と not_covered がある場合は、点呼場のタブレットに項目名を出す
  9. 【人】 運行管理者がその場で聞き直し、追加の録音として残す
  10. 【人】 下書きを確かめて確定する。確定した記録が点呼記録簿に入る

8番目と9番目が、この設計の要です。 結果が出るのは「終了」から数十秒後で、運転者はまだ点呼場にいます。 聞き直しは追加の録音として同じ点呼に付き、記録には聞き直したことも残ります。

10番目を省かない理由は、点呼記録簿が運行管理者の記録だからです。 AIの下書きは、運行管理者が確定するまで記録になりません。

02今回想定するシステム構成

構成図
点呼場のタブレット(運転者と車両を選んで録音)
   │  音声ファイル+運転者ID+車両+業務前/業務後+点呼の日時
   ▼【トリガー】「終了」の押下
Azure Functions(中継の処理)
   ├──▶ 運行管理のシステムからその日の行き先・荷主・車両を引き、語句の一覧を作る
   ▼
Azure AI Speech(高速文字起こし+話者の分離+フレーズリスト)
   │   文ごとの話者・時刻・信頼度
   ▼
Azure Functions ── 決まった言葉で運行管理者の話者を決める
   ▼
Azure OpenAI(Microsoft Foundry) ── 構造化出力
   │   確認項目ごとの状態/運転者の申告/指示
   ▼
Azure Functions ── 検知器の測定結果と合わせ、項目の漏れを判定
   ▼
点呼場のタブレットに漏れを表示 ──【運行管理者が聞き直し・確定】
   └──▶ 点呼記録簿(確定した記録だけ)
役割想定する製品代替候補
処理Azure AI Speech(高速文字起こし、話者の分離、フレーズリスト)Google Cloud Speech-to-Text、Amazon Transcribe
生成AIAzure OpenAI(Microsoft Foundry)(構造化出力で確認項目の状態を取り出す)Claude API、Gemini API
連携Azure Functions(話者の割り当て、検知器の結果の取り込み、漏れの判定)Azure Logic Apps
記録既存の点呼記録簿(表計算または運行管理のシステム)―

運行管理のシステムと点呼記録簿は、新しく足すものではありません。 足すのは点呼場のタブレットと録音のアプリ、中継の処理、音声認識と生成AIです。最初の準備は、確認項目の一覧と、その言い方を決めることです。

文字起こしには、Azure AI Speech の高速文字起こしを使います。 Microsoft Learn では Azure Speech in Foundry Tools とも表記されている音声サービスの機能で、音声ファイルを渡すと同期で結果を返します。対象は5時間未満・500MB未満の音声で、点呼の1〜3分の録音は十分に収まります。 日本語(ja-JP)は高速文字起こしの対応言語に入っています。

話者の分離を有効にすると、文ごとに話者の番号が付きます。 公式の案内では、話者の分離は1つのチャンネル(モノラル)の音声で使うものとされています。点呼場のマイクは1本にし、モノラルで録音します。

03どうやって実装するのか

Step1

処理の起点を決める

点呼場のタブレットで「終了」が押されたことを起点にします。 運行管理者は点呼を始める前に、その日の乗務の割り当てから運転者と車両を選びます。選んだ運転者ID、車両、業務前か業務後か、点呼の日時が音声に付いて保存されます。 運転者を選ばずに録音を始めることはできないようにします。

定時の一括処理にはしません。 確認項目の漏れは、運転者が出発した後に分かっても聞き直せないからです。高速文字起こしは同期で返るので、点呼の1件ごとに動かし、数十秒で結果を返します。

聞き直しの録音は、同じ点呼に追加の音声として付けます。 「追加で確認」のボタンを押して録音し、終了すると、元の点呼と追加の音声を合わせて、確認項目の状態を判定し直します。

Step2

入力データを集める

データ中身取得元
音声1〜3分の点呼の録音。モノラル点呼場のタブレット
録音の付帯情報運転者ID、車両、業務前/業務後、点呼の日時、点呼を行った者録音のアプリ
その日の乗務行き先、荷主、車両の登録番号、交替の有無運行管理のシステム
検知器の測定結果測定の日時、測定値または判定営業所のアルコール検知器
確認項目の一覧業務前と業務後それぞれの項目と、その言い方の例営業所で決めた一覧

質を決めるのは、確認項目の一覧です。 貨物自動車運送事業輸送安全規則の第7条は、業務前の点呼で報告を求めて確認する事項として、酒気帯びの有無、疾病・疲労・睡眠不足その他の理由で安全な運転ができないおそれの有無、日常点検の実施またはその確認を挙げています。業務後の点呼では、事業用自動車・道路・運行の状況の報告と、酒気帯びの有無の確認です。一覧はこの条文の項目から作り、営業所で足したい項目はその下に並べます。

検知器の測定結果は、音声から取りません。 測定値を運行管理者が読み上げることはあっても、記録の元にするのは検知器の出力です。 取り込み方は検知器の機種によるので、データを書き出せない機種では運行管理者が値を入力します。

Step3

データの取得方法を決める

文字起こしは、高速文字起こしのAPIに音声とその定義を送ります。

指定するもの値理由
locales["ja-JP"]言語が決まっているので指定する
diarization{"enabled": true, "maxSpeakers": 2}運行管理者と運転者の2人
phraseListその日の行き先・荷主・車両の呼び方・営業所で使う略語固有名詞の聞き違いを減らす
返ってくる値phrases の文ごとの speaker・offsetMilliseconds・confidence話者の割り当て、時刻、聞き取れなかった文の印
POST https://{リソース名}.cognitiveservices.azure.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15
audio      = 点呼IDを名前にした音声ファイル
definition = {
  "locales": ["ja-JP"],
  "diarization": { "enabled": true, "maxSpeakers": 2 },
  "phraseList": { "phrases": ["日常点検", "睡眠不足", "<荷主名>", "<行き先>",
                              "<車両の呼び名>", "中間点呼"] }
}

フレーズリストは、認識の直前に渡す語句の一覧で、モデルの学習は要りません。 2,000語句を超えないようにし、長いほど品質と待ち時間に影響するとされています。全運行の行き先を渡さず、その運転者のその日の乗務に関わる語句だけを渡します。

運転者の氏名はフレーズリストに入れません。 運転者は録音の付帯情報で決まっており、音声から氏名を聞き取る必要がないからです。

Step4

AIへ渡す前に整形する

  1. 音声の長さを確かめる … 20秒未満は録音の失敗として、タブレットにその場で知らせます
  2. 運行管理者の話者を決める … 冒頭の決まった言葉(「点呼を始めます」)を含む文の speaker を運行管理者とし、もう一方を運転者とします
  3. 聞き取れなかった文に印を付ける … confidence がしきい値を下回る文を low_confidence にします
  4. 追加の音声をつなぐ … 聞き直しの音声は、元の点呼の後ろに文番号を続けて並べます
  5. 氏名を記号に置き換える … 会話に出た運転者・家族・同僚の氏名を <運転者> <同僚1> に置き換えてから生成AIへ渡します

2番目は、話者の番号が人を表さないことへの対策です。 話者の分離が返すのは0、1という番号だけで、どちらが運行管理者かは分かりません。 決まった言葉で始める運用にしておけば、規則で決められます。決まらない点呼は、確認の画面で運行管理者が話者を選びます。

点呼場の雑音は、前処理では消しません。 隣の点呼の声やアイドリングの音が入った文は low_confidence になり、その項目は unclear として聞き直しに回ります。 消して認識させるより、聞き直すほうが確かです。

Step5

AIに処理させる

させるのは、確認項目ごとに、運行管理者の問いと運転者の答えが会話にあるかを判定し、根拠の文を書き出すことだけです。

取り出すものやり方判断できないときの扱い
確認項目の状態問いと答えの両方があれば confirmed、問いか答えのどちらかがあいまいなら unclear、話に無ければ not_covered迷ったら unclear
運転者の申告体調の不調、眠気、服薬、車両の不具合を、話された言葉のまま言い換えない
運行管理者の指示運行の注意、休憩、経路、荷扱いの指示を、話された言葉のまま指示が無ければ空
まとめて聞いた項目「体調と点検、大丈夫?」のように一度に聞いたものbundled の印を付ける

confirmed の条件を厳しくするのが要です。 運行管理者が「昨日は何時間寝た?」と聞き、運転者が「6時間くらいです」と答えた文の組があるときだけ confirmed にします。「大丈夫?」「はい」だけでは、何が大丈夫なのかが記録から読めません。 この場合は bundled の印を付け、営業所の取り決めで扱いを決めます。

させないこと理由
酒気帯びの有無の判断検知器の測定と運行管理者の目視で決める
運転してよいかの判断運行管理者の職務。AIは材料を並べるだけ
運転者の様子の評価「元気がない」などをAIの言葉で書かない
前日の記録の引き継ぎ今回の点呼で話していないことを書き足さない
「異常なし」の補完話に無い項目を異常なしとして埋めない

最後の行が、第3章の(c)への答えです。 話に出ていない項目を「異常なし」で埋めると、点呼の記録が実際より整って見えます。not_covered は空欄のまま運行管理者に返し、聞き直すか、確定の画面で理由を書いてもらいます。

Step6

指示内容を固定する

あなたは運送会社の運行管理者の補助として、点呼の文字起こしから
点呼記録簿の項目を取り出す立場です。
文字起こしに書かれていることだけを使ってください。推測で補わないでください。

【話者】manager(運行管理者)/ driver(運転者)

【点呼の種類】{roll_call_type}(before_duty:業務前/after_duty:業務後)

【確認項目】{check_items}
  業務前の例:alcohol(酒気帯びの有無)/ health(疾病・疲労・睡眠不足等)
             / inspection(日常点検の実施またはその確認)
  業務後の例:vehicle_road_operation(車両・道路・運行の状況の報告)/ alcohol

【status の選び方】
- confirmed …… manager の問いと driver の具体的な答えの両方がある
- unclear ……… 問いか答えのどちらかがあいまい、または low_confidence の文だけが根拠
- not_covered … その項目について話されていない
迷ったときに confirmed を選ばないでください。

【厳守事項】
- 話されていない項目を「異常なし」として埋めないでください。not_covered です。
- 「大丈夫?」「はい」のように、複数の項目を一度に聞いた場合は bundled を true にし、
  どの項目を含むかを covers に書いてください。
- 酒気帯びの有無や、運転してよいかの判断を書かないでください。
- 運転者の申告は、話された言葉のまま driver_reports に引用してください。
  「眠気あり」などに言い換えないでください。
- 運行管理者の指示は、話された言葉のまま instructions に引用してください。
- 各項目に、根拠にした文の番号 sentence_ids と、その文を evidence に写してください。
- <運転者> <同僚1> などは置き換えた記号です。中身を推測しないでください。

【文字起こし(文番号・話者・信頼度の印つき)】{sentences}

「迷ったときに confirmed を選ばない」を明記しないと、点呼らしい会話の流れから confirmed を付けます。 点呼の会話は毎日似ているので、生成AIは「いつもの点呼」として項目を埋めがちです。 問いと答えの文の組を根拠として書かせることで、埋めた項目は根拠が空になり、機械で拾えます。

申告を言い換えさせないのは、記録の意味が変わるからです。 「ちょっと眠いけど大丈夫です」を「眠気あり」と書くと、運行管理者が何を聞いてどう判断したかが、記録から読めなくなります。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Azure OpenAI の構造化出力で、このスキーマに従わせます。

{
  "roll_call_type": "before_duty | after_duty",
  "checks": [
    { "item": "alcohol | health | inspection | vehicle_road_operation",
      "status": "confirmed | unclear | not_covered",
      "bundled": false, "covers": [],
      "sentence_ids": [0], "evidence": "" }
  ],
  "driver_reports": [{ "text": "", "sentence_id": 0, "low_confidence": false }],
  "instructions": [{ "text": "", "sentence_id": 0 }],
  "relief_notice": null
}

構造化出力では、すべての項目を必須にし、省略したいものは null との共用体型で表します。 オブジェクトには additionalProperties: false が必要で、スキーマのオブジェクトのプロパティは合わせて100個まで、入れ子は5段までとされています。relief_notice は、業務後の点呼で交替した運転者への通告を報告したかを入れる欄で、交替が無い乗務では null にします。

中継の処理は、checks と検知器の結果から記録の下書きを作ります。

状態記録の下書きタブレットの表示
すべて confirmed、検知器の結果あり確認項目と申告・指示を埋める「記録の確認へ」
unclear か not_covered がある該当の欄を空のまま残す項目名を赤で出し、聞き直しを促す
bundled がある営業所の取り決めで扱う取り決めが「聞き直し」なら黄で出す
検知器の結果が無い酒気帯びの欄を空のまま残す検知器の測定を促す

status を規則で書き換えないことが大事です。 bundled を認めるかどうかは営業所の取り決めで、取り決めが変わっても、checks を読み直せば判定をやり直せます。

Step8

システムへ連携する

つなぎ先方式内容
点呼場のタブレット中継の処理への送信と、結果の表示音声と付帯情報、確認項目の漏れ
運行管理のシステム読み取りその日の乗務、行き先、荷主、車両
アルコール検知器機種に応じた取り込み、または手入力測定の日時と結果
Azure AI SpeechAPI呼び出し話者つきの文字起こし
Azure OpenAIAPI呼び出し(構造化出力)確認項目の状態、申告、指示
点呼記録簿確定後に記録を登録運行管理者が確定した記録だけ

点呼記録簿へは、確定した記録しか書きません。 下書きの段階では、点呼記録簿は変わりません。運行管理者が確定を押した時点で、点呼を行った者の名前と確定の日時を付けて登録します。

記録簿に載せる項目は、規則の第7条第5項に合わせます。 点呼を行った者と受けた運転者の氏名、車両の登録番号または車両番号その他の識別できる表示、点呼の日時、点呼の方法、報告・確認・指示の内容です。氏名と車両と日時は録音の付帯情報から、点呼の方法は「対面」として入れ、報告・確認・指示の内容をAIの下書きから入れます。

Step9

人が確認する

確かめるのは、点呼を行った運行管理者です。 点呼の直後に、タブレットで次の順に見ます。

  1. 赤の項目を先に片づける … not_covered と unclear は、運転者がいるうちに聞き直します
  2. 運転者の申告を読む … 体調や車両の申告があれば、指示の欄と合っているかを確かめます
  3. 検知器の結果を確かめる … 測定の日時が点呼の日時と合っているかを見ます
  4. 確定する … 聞き直しても項目を確かめられなかったときは、理由を書いて確定します

確認の画面には、根拠の文の音声へのリンクを付けます。 low_confidence の文から取った項目は、文字だけでは確かめられないことがあります。数秒の音声を聞けば済むようにしておくと、点呼の列を止めずに済みます。

朝のピークでも1番目を省かないでください。 赤の項目を残したまま出発させると、記録に空欄のある点呼がそのまま積み上がり、第3章の(d)に戻ります。 列が長い時間帯は、補助者が確定の画面を受け持つ分担にします。

Step10

例外に対処する

起きること対応
運転者が録音に同意しない録音せず、従来どおり手で記録する
冒頭の決まった言葉が無い運行管理者の話者が決まらない。確定の画面で話者を選ぶ
隣の点呼の声が入るlow_confidence が増える。点呼場の配置とマイクの向きを見直す
検知器の結果が取り込めない酒気帯びの欄を空にし、運行管理者が値を入力する
業務の途中の点呼(電話その他の方法)この構成の対象外。従来の方法で記録し、記録簿で区別する
高速文字起こしが429を返す公式の案内に沿って間隔を空けて再送する。その間はタブレットに「処理中」と出す
処理が数分たっても返らない運転者を待たせない。手でメモを取り、後から下書きと合わせる
交替のある乗務で通告の報告が無いrelief_notice が null。業務後の点呼で聞き直す

上から5行目は、範囲を先に決めておくための行です。 業務前と業務後の点呼を対面などで行えない運行では、規則の第7条第3項により業務の途中でも点呼を行います。電話の点呼を同じ仕組みに入れるかは、録音の方法と通信の品質を確かめてから決めます。

Step11

記録を残す

  • 録音の同意の有無と、確かめた日時
  • 元の音声ファイル(営業所で決めた期間で消す)
  • 文字起こしの全文と、文ごとの話者・時刻・信頼度
  • 生成AIの出力と、運行管理者が直した箇所
  • 赤で出した項目と、聞き直しの有無
  • 確定した記録と、確定した者・日時

確定した記録は、1年間保存します。 規則の第7条第5項は、点呼の記録を1年間保存することを求めています。記録簿の保存の仕組みは今の運用のまま使い、この構成はそこへ確定した記録を渡すだけにします。

赤で出した項目の記録は、運行管理者ごとの癖を見る材料になります。 特定の項目がいつも not_covered になるなら、その項目を聞く言い方を点呼の手順に書き足します。 個人の評価には使わないことを、導入の前に決めておきます。

04実装レベルの3段階

最小構成:録音を手で文字にし、AIの画面に貼って確認項目を判定させる / 1件ごとの判定
半自動化:上記+「終了」から文字起こしと判定までを自動で動かし、記録の下書きを出す / 文字起こしと下書きの作成
本格構成:上記+点呼場への漏れの表示、聞き直しの追加録音、検知器の結果の取り込み、確定後の記録簿への登録 / 下書き、漏れの即時の通知、記録簿への登録まで

最小構成では、件数がさばけません。 1件ずつ手で貼るので、月4,800件には使えません。確かめるための段階です。 半自動化で、1件3分が2分程度になります。 下書きは届きますが、検知器の結果の転記と、記録簿への打ち込みが残ります。本格構成で1分になり、この段階が本記事の想定です。 差が大きいのは、検知器の結果と記録簿への登録が、点呼ごとの手作業だからです。 段階を飛ばさないでください。 半自動化の下書きを1か月見ると、not_covered の多い項目と、話者の取り違えの多い時間帯が分かります。点呼の手順を直してから漏れの表示を足すほうが、赤の表示が多すぎて無視される事態を避けられます。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
8 名
月間件数
4,800 件
1件あたり現在時間
3 分
1件あたり導入後時間
1 分
現在  4,800件 × 3分 ÷ 60 = 240 時間/月
導入後 4,800件 × 1分 ÷ 60 = 80 時間/月
月間削減時間
160h
削減率
67%
年間削減時間
1,920h
年間金額換算(時間単価2,800円)
538万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 運転者が数十名から百名を超え、早朝と夕方に点呼が集中する一般貨物の運送会社。点呼記録簿を紙か表計算で付けており、運行管理者と補助者が点呼の合間に記入している場合。点呼で何を確かめたかが記入者ごとにばらつき、監査の前に記録の抜けを探している場合。営業所の点呼場にタブレットとマイクを置ける場合。
向いていない
  1. 運転者が数名で、点呼の件数が1日に十数件にとどまる営業所。点呼をすべて機器による自動点呼で行っている営業所。運転者が録音に同意しない、または録音の取り扱いを就業規則で決められない会社。なお、酒気帯びの有無や運転してよいかの判断は、この構成では行いません。

07最小構成で試す方法

  1. 運行管理者2名に協力を頼み、同意を得た運転者の点呼を20件録音する(業務前と業務後を10件ずつ。冒頭の決まった言葉で始める)
  2. 同じ点呼について、いつもどおり点呼記録簿を付けてもらう
  3. 録音を Speech Studio などで文字にし、手元のAIサービスに貼り付ける
  4. 「この点呼の会話から、酒気帯び・体調と睡眠・日常点検のそれぞれについて、運行管理者が聞いて運転者が答えたかを判定してください。聞いていない項目は『聞いていない』とし、異常なしで埋めないでください」と指示する
  5. 判定を、運行管理者が付けた記録と突き合わせる

20件は必ずやってください。 タブレットと中継の処理を組む前に、「話に無い項目を埋めないか」と「申告を言い換えないか」を確かめます。

出てきた内容判断
記録簿では埋まっていた項目が not_covered と出た確認の漏れが見えた。構築に進む
話に無い項目を異常なしで埋めた指示の書き方で直る。構成は有効
話者が入れ替わった冒頭の言葉とマイクの位置が先。 AIの問題ではない

1行目が出ることは珍しくないはずです。 記録簿の欄が埋まっていても、点呼の会話では聞いていないことがあります。それが見えたこと自体が、この構成を作る理由になります。

08実装時につまずきやすいポイント

問題対策
話に無い項目が「異常なし」で埋まる問いと答えの両方の文を根拠にさせ、not_covered を空欄で返す
「大丈夫?」「はい」が confirmed になるbundled として分け、扱いを営業所で決める
話者の番号が誰か分からない冒頭の決まった言葉で運行管理者を決める
ステレオで録って話者が分かれないモノラルで録音する
隣の点呼の声を拾う点呼場の配置とマイクの向きを見直す
結果が返る前に運転者が出発する高速文字起こしで同期処理し、待ち時間を測る
赤の表示が多すぎて無視される半自動化の段階で項目の言い方をそろえてから表示を足す
申告が言い換えられて意味が変わる話された言葉のまま引用させる
検知器の結果と点呼の日時がずれる測定の日時を取り込み、点呼の日時と比べる
音声を持ち続ける営業所で決めた期間で消す

上の2行が、この構成の失敗のほとんどです。 どちらも、点呼をしたように見える記録を作ってしまう失敗です。記録が整うことと、確かめたことは別だという前提を、指示と判定の規則の両方に置きます。

上から6行目も早く効いてきます。 漏れを返す価値は、運転者が点呼場にいるあいだだけです。返るまでの秒数を毎日記録し、遅い日を調べます。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 運転者の声、体調・睡眠・服薬についての申告、アルコール検知器の測定結果、乗務の行き先と荷主です。健康に関わる申告を含みます。

  1. 録音の同意と取り扱いを、就業規則か社内規程で決める … 何のために録音し、誰が聞き、いつ消すかを運転者に示してから始めます
  2. 生成AIに渡すのは、氏名を記号に置き換えた文字起こしだけにする … 運転者は付帯情報で決まるので、氏名を渡す必要はありません
  3. 運転してよいかを自動で決めない … この構成が出すのは、確認項目の状態と申告の引用までです。判断と指示は運行管理者が行います
  4. 酒気帯びの判断を音声からしない … 酒気帯びの有無は、検知器による測定と運行管理者の目視で確かめます
  5. 赤の項目の記録を個人の評価に使わない … 点呼の手順を直す材料として使うことを、導入の前に決めます
  6. 音声を消す期間を決める … 確定した記録は1年間保存し、音声は営業所で決めた期間で消します

誤りが起きた場合のリスクは、確かめていない項目を確かめたことにする記録と、運転者の申告が記録から落ちることの2つです。 前者は confirmed の条件を緩めると起き、後者は申告を言い換えるか要約すると起きます。前者は問いと答えの文の組で、後者は引用の指示で、設計で防ぎます。

10まず何から始めるか

1週目:確認項目の一覧と点呼の手順を決める

規則の第7条の項目から、業務前と業務後の確認項目の一覧を作り、点呼の手順書に「冒頭の決まった言葉」と「項目ごとの聞き方の例」を書きます。

2週目:20件で試す

運行管理者2名で同意を得た点呼を録音し、手元のAIサービスで確認項目を判定させます。話に無い項目を埋めていないか、申告を言い換えていないかを最優先で見ます。

3週目:点呼場の音の環境を整える

マイクを1本にしてモノラルで録り、隣の点呼の声が入らない配置を試します。low_confidence の文の割合が、配置の良し悪しの目安になります。

4週目:録音から下書きまでをつなぐ

録音のアプリから中継の処理、高速文字起こし、構造化出力までをつなぎ、記録の下書きをタブレットに出します。この時点では赤の表示をせず、下書きと返るまでの秒数だけを見ます。

2か月目: 赤の項目の表示と聞き直しの追加録音を足し、not_covered の件数を項目ごとに毎週数えます。3か月目以降: 検知器の結果の取り込みと記録簿への登録を足し、1件3分が何分になったかを実測します。月末の記録の点検で空欄が見つからなくなり、点呼の会話と記録が同じ中身になった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-08/最終更新:2026-10-08
確認した内容情報源確認日
第7条第1項が業務前の点呼で、酒気帯びの有無、疾病・疲労・睡眠不足その他の理由で安全な運転ができないおそれの有無、日常点検の実施またはその確認について報告を求め確認し、必要な指示を与えると定めていること。第2項が業務後の点呼で、車両・道路・運行の状況の報告と酒気帯びの有無の確認、交替した場合の通告の報告を定めていること。第3項が業務の途中の点呼、第4項がアルコール検知器を用いた確認を定めていること。第5項が、点呼を行った者と受けた運転者等の氏名、車両の登録番号または車両番号その他の識別できる表示、点呼の日時、点呼の方法、その他必要な事項を記録し、1年間保存すると定めていること(令和8年4月1日施行の版)e-Gov法令API: 貨物自動車運送事業輸送安全規則2026-10-08
高速文字起こしが同期のAPIで、音声が5時間未満・500MB未満であること。locales、diarization(maxSpeakers と enabled)、phraseList(API バージョン 2025-10-15)を指定できること。話者の分離はモノラルの音声で使い、複数のチャンネルの話者の分離はできないこと。結果の phrases に speaker・offsetMilliseconds・confidence が付くこと。429への対処が案内されていることMicrosoft Learn: Use the fast transcription API2026-10-08
フレーズリストが認識の直前に渡す語句の一覧で、モデルの学習が要らないこと。高速文字起こしで使えること。2,000語句を超えないようにし、長いほど品質と待ち時間に影響することMicrosoft Learn: Improve recognition accuracy with phrase list2026-10-08
日本語(ja-JP)が音声認識の高速文字起こしに対応していることMicrosoft Learn: Language and voice support for the Speech service2026-10-08
構造化出力でモデルが指定したJSONスキーマに従うこと。すべての項目を必須にし、省略したいものは null との共用体型で表すこと。additionalProperties: false が必要なこと。オブジェクトのプロパティが合わせて100個まで、入れ子が5段までであることMicrosoft Learn: Azure OpenAI で構造化出力を使用する方法2026-10-08

点呼の方法と記録の扱いは、最新の規則とその解釈及び運用の通達で確かめてください。 本記事は条文で確認できた範囲だけを扱っており、機器による点呼や遠隔の点呼の要件は扱っていません。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0974)についてのご相談はこちらから。

AI活用について相談する
目次