中級 11 分医療

健康:音声の転記 consultations

端的な回答

はい。Whisper(faster-whisper)が音声を文字起こしし、ローカルのLLMが診療記録を作成するため、データは医師の端末から出ません。ただし、ローカル処理でも守るべき枠組みは変わりません。職業上の守秘義務、患者への説明と拒否権、音声録音への同意、第三者が保存する場合のHDS認証ホスティング、医師自身による記録の確認が必要です。

夜に診療報告書を作成する医師は、音声の文字起こしから構造化された報告書の作成までをローカルで行う処理フローを使うことで、時間を節約できます。この処理フローの構築方法を学び、その限界(ハルシネーション、コンテキストの切り捨て)を理解し、よくある誤解をいくつか解きながら、HAS、CNIL、フランス医師会(Ordre des médecins)が定める枠組みを守れるようになります。

著者 Mohamed Meguedmi·更新 2026-09-30·Windows・macOS・Linuxでテスト済み

#診療内容をローカルで文字起こしする:何が認められ、どのような条件が必要か

はい、医師は、音声データが自らのデスクから離れないように、AIを用いて診療記録を記述できます。Whisperが音声をテキストに変換し、ローカルに配置されたLLM(Ollamaを介して)が構造化された記録を生成し、医師が読み直して確認します。これは法的義務を免除するものではありません。2026年のHASおよびCNILガイドは、AIシステムの導入がフランス公衆衛生法典第L.1110-4条における専門職の秘密義務を変更しないことを強調しています。また、患者に通知し、その反対権を尊重する必要があります。第三者にデータをホスティングする場合、HDS認証を持つホスティングサービスが必要です。ローカル処理は、こうしたデータの転送とそのリスクを回避するものです。本ガイドはパイプラインの構築を示し、必要な枠組みと検証手順を詳細に説明し、いくつかの誤解を訂正します。

同じガイドによると、診察内容の自動文字起こしは、医療現場で生成AIが最もよく使われている用途です。したがって、重要なのは実行できるかどうかではなく、どう適切に実行するかです。

!
このガイドは法的意見ではありません
ここで扱う法的事項は、HAS、CNIL、フランス医師会全国評議会(Conseil national de l'Ordre des médecins)が公表したガイドに基づいています。ご自身の状況(単独での診療、共同診療施設、医療機関)に応じて、DPOまたは所属する医師会の管轄機関に、この仕組みの妥当性を確認してもらってください。

#フランスの制度的枠組み:公式ガイドが示す内容

ローカルAIキット

お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。

  • 永久に利用できるオンラインスペース
  • PDF + ファイル
  • 30日間返金対応

この表は、ローカルパイプラインへの具体的な影響を伴う各要件を再掲しています。また、広く信じられている2つの誤解を修正します:患者の同意は処理の法的根拠ではなく、HDSは原則としてではなく、第三者がデータをホスティングする場合にのみ要求されます。

ローカルパイプラインにおける要件およびその影響
テーマガイドが述べていること実際の影響
守秘義務AI を使っても、CSP 第 L. 1110-4 条の規定は変わりません記録には引き続き守秘義務が適用されます。端末へのアクセスを制限してください。
ホスティング医療データをホスティングする第三者(クラウド事業者)は、医療データのホスティング事業者として認証を受ける必要があります医師のコンピューター上で処理:データの処理経路に第三者のホスティング事業者を介さない
法的根拠CNILは、こうした処理において同意が法的根拠でも例外でもないと判断しています採用した法的根拠をDPO(データ保護責任者)とともに文書化してください。チェックボックスにチェックが入っているだけで十分だとは考えないでください。
情報多くの場合、誠実で利用者が容易に確認できる説明を行い、異議を申し立てる権利を保障すれば十分です診察内容を文字起こしすることを掲示または口頭で伝え、拒否された場合はその意思を尊重してください
音声記録個人を特定できる音声録音の利用には、民法上、同意が必要です声を録音する前に患者の同意を得る
報告書の検証秘書など、診察に立ち会っていない第三者に確認・承認を任せるべきではありません患者を診察した医師が自身で再読します
保持独立開業に固有の法令がない場合、職能団体の評議会は最後の診療から 20 年間を推奨しています報告はこの期間内に完了し、未加工音声データの保存は不要です。

#捨て去るべき 2 つの誤解

最初の誤解は、「ChatGPTは明確に禁止されている」というものです。関連する規定は、特定のツールを対象にしているわけではありません。問題は構造にあります。健康データをオンラインサービスに送ると、データが手元の端末の外に出るため、認証を受けたホスティング事業者、データ処理の委託契約、適切な情報提供が必要になります。実際、HASとCNILのガイドは、オンラインの対話型エージェントへのリクエストに機微なデータを含めることに伴う、医療上の守秘義務が侵害されるリスクを指摘しています。

二つ目の思い込みは、「ローカルなら法令に準拠している」というものです。ローカル処理によってデータの転送はなくなりますが、台帳を整備し、患者に情報を提供し、端末の安全を確保し、影響評価が必要かを検討する義務はなくなりません。ガイドでは、該当する場合、AIPDを導入者の義務の一つに挙げています。この点と、使用するツールが医療機器に該当する可能性について判断する際は、専門家の支援を受けてください。

#構成:Whisper、ローカルLLM、必要に応じて話者分離

パイプラインの構成要素
ブロック役割知っておくべきこと
faster-whisper音声を文字起こしする(Whisper の CTranslate2 実装)同等の精度において、元の実装よりも最大4倍高速であることが発表されています
large-v3モデルフランス語にも対応したWhisper系の多言語モデル初回使用時にダウンロードされます。ご自身の録音で検証してください。
Ollama + qwen3.5:9b構成を整理した報告書を作成してください90億パラメータのモデル。Ollamaのモデルライブラリによると6.6 GB
pyannote (オプション)話者分離:誰がいつ話しているか利用条件に同意した後、Hugging Faceのトークンを使ってダウンロードするモデル

処理速度について、faster-whisperのドキュメントには、特定の時点での測定に基づく目安が示されています。8GBのRTX 3070 Tiでlarge-v2モデルをfp16で使用すると、VRAM使用量4,525MBで13分の音声を1分03秒で文字起こししています(メンテナーによるベンチマーク、CUDA 12.4)。同じメンテナーは、int8ではVRAM使用量2,926MBで59秒と測定しています。これらはメンテナー自身のマシンでの測定であり、当サイトの測定ではありません。控えめな性能のグラフィックカードでも音声の再生時間より短い時間で文字起こしできることを示していますが、お使いの端末でも同じ結果が得られると保証するものではありません。

i
MacではCUDAが利用できません
faster-whisperの公式例では、CPU上でint8を使って実行する方法が示されています。Macではこの構成を選ぶとよいでしょう。NVIDIA GPUよりは遅いものの、診察後に録音を書き起こす用途には十分です。

#インストール

ターミナル
python3 -m venv venv
source venv/bin/activate

pip install faster-whisper ollama
# Optionnel pour la diarisation :
pip install pyannote.audio
ターミナル
# Le modèle Whisper se télécharge au premier usage.
# Modèle de rédaction via Ollama :
ollama pull qwen3.5:9b

NVIDIA GPUを使用する場合、faster-whisperにはCUDA 12用のcuBLASおよびcuDNN 9ライブラリが必要です。これらがないと、モデルの読み込み時にプログラムがエラーになります。テスト前にインストールするか、CPUモードに切り替えてください。

#音声のテキスト化

以下のスクリプトは言語を指定し、無音区間を除外するフィルター(VAD)を有効にして、各セグメントにタイムスタンプを付けます。最初の行を調整してください。NVIDIA GPU を使う場合は device cuda と float16、Mac または対応するグラフィックカードがない PC では device cpu と int8 を指定します。

Python
from faster_whisper import WhisperModel

# GPU NVIDIA : device="cuda", compute_type="float16"
# Sans GPU compatible : device="cpu", compute_type="int8"
model = WhisperModel("large-v3", device="cuda", compute_type="float16")

MOTS_CLES = "amoxicilline, paracétamol, HbA1c, tension artérielle"

def transcribe(audio_path):
    segments, info = model.transcribe(
        audio_path,
        language="fr",
        beam_size=5,
        vad_filter=True,        # coupe les silences
        hotwords=MOTS_CLES,     # vocabulaire attendu
        word_timestamps=False,
    )
    lines = []
    for s in segments:
        ts = f"[{int(s.start // 60):02d}:{int(s.start % 60):02d}]"
        lines.append(f"{ts} {s.text.strip()}")
    return "\n".join(lines)

if __name__ == "__main__":
    import sys
    print(transcribe(sys.argv[1]))

faster-whisperの文字起こし関数で利用できるhotwordsパラメータを使うと、薬の名前、略語、検査名など、出てくると予想される用語をモデルに提示できます。役には立ちますが、正確さを保証するものではありません。固有名詞と用量は必ず読み直して確認してください。

#Whisper は誰も話していない内容を書き起こすことがあります

large-v3のモデルカードは、予測結果に音声にはないテキストが含まれる可能性があると警告し、これをハルシネーションと呼んでいます。診療の文字起こしでは、無音部分にもっともらしい文が創作されたり、数値が変わったり、実際の薬名に似ているものの誤った薬名が出力されたりすることがあります。VADフィルターは無音部分でのリスクを減らしますが、読み直して確認する作業の代わりにはなりません。

#構造化されたレポートを作成する

2番目のスクリプトは、OllamaのAPIを介して、文字起こし結果をローカルモデルに送信します。重要な設定は2つあります。1つは、幻覚(ハルシネーション)を抑制するための低い温度設定、もう1つは十分なコンテキストウィンドウです。Ollamaのドキュメントには、24 GiBのVRAM環境では、デフォルトのウィンドウサイズが約4,000トークンであることが示されています。20分間の相談は、おおよそ3,000語分に相当し、トークン数では数千に達します(推定値であり、話速によって変動します)。num_ctxを明示的に指定しないと、文字起こし結果の末尾が切り捨てられるリスクがあります。そのため、例では16,384トークンを固定しています。

Python
import requests

SYSTEM_CR = """Tu es un assistant pour médecin généraliste français.
À partir d'une TRANSCRIPTION BRUTE d'une consultation, tu produis un
compte-rendu médical structuré.

FORMAT DE SORTIE :
## Motif de consultation
## Antécédents (mentionnés)
## Examen clinique
## Diagnostic / Hypothèses
## Traitement / Prescriptions
## Suivi

RÈGLES :
- Reste TEXTUEL : n'ajoute aucun élément non mentionné dans la transcription.
- Reformule en vocabulaire médical standard.
- Si une section n'est pas abordée, écris "Non mentionné".
- Ne complète jamais une posologie ou un diagnostic absent.
"""

def summarize(transcription):
    r = requests.post("http://localhost:11434/api/chat", json={
        "model": "qwen3.5:9b",
        "messages": [
            {"role": "system", "content": SYSTEM_CR},
            {"role": "user",   "content": transcription},
        ],
        "stream": False,
        "options": {"temperature": 0.2, "num_ctx": 16384},
    })
    return r.json()["message"]["content"]

このプロンプトは、システムプロンプトのガイドで示した原則を適用しています。検証可能なルール、明示的な出力形式、情報が不足している場合の対応です。「未記載」という指示が重要です。これにより、モデルが空のセクションをもっともらしい仮説で埋めるのを防ぎます。

#話者分離:医師と患者を区別する

話者分離(Diarization)は、各セグメントを話者(SPEAKER_00、SPEAKER_01)に割り当てます。主に、2人が話す診察そのものを録音する場合に役立ちます。医師だけが口述する場合には不要です。pyannoteのリポジトリは現在、community-1パイプラインを推奨しています。ダウンロードするには、Hugging Face上でこのパイプラインの利用条件に同意し、アクセストークンを作成する必要があります。その後の推論はローカルで実行されます。

Python
import torch
from pyannote.audio import Pipeline

pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-community-1",
    token="HUGGINGFACE_ACCESS_TOKEN",
)
pipeline.to(torch.device("cuda"))  # si un GPU est disponible

output = pipeline("consultation.wav")
for turn, speaker in output.speaker_diarization:
    print(f"{turn.start:.1f}s - {turn.end:.1f}s : {speaker}")
→
2つの結果をマージする
2人の話者によるやり取りの記録をまとめる場合は、Whisperとpyannoteのセグメントをタイムスタンプに基づいて対応づけてから、テキストをLLMに送信してください。WhisperXに関するガイドでは、この対応づけを単語単位で行うツールを説明しています。

#診療所での標準的なワークフロー

  1. 01
    患者に情報を提供する
    録音前に、診療での会話や口述内容がローカルツールで文字起こしされることと、患者がそれを拒否できることを伝えてください。患者の声を録音する場合は、本人の同意を得てください。説明した内容を診療記録に残してください。
  2. 02
    録音する
    方法は2つあります。診察後に1〜2分間のメモを口述して録音する方法(この時点では患者の音声は録音しません)と、診察中のやり取りを録音する方法(口頭での同意が必要で、話者分離が役立ちます)です。口述による記録は、収集するデータを最小限に抑えます。
  3. 03
    ファイルを端末に保存する
    音声ファイル(WAV、MP3、M4A)を、暗号化された専用フォルダに転送してください。小さなスクリプトがそのフォルダを監視し、処理を開始します。
  4. 04
    パイプラインを起動する
    スクリプトは文字起こしと要約を行い、報告書をテキスト形式で音声ファイルと同じ場所に保存します。また、医療情報をログに書き込まずに、操作をログに記録します。
  5. 05
    自分で読み直し、最終確認する
    患者を診察した医師が診療記録を読み直して修正し、その後、診療所の管理ソフトウェアに取り込みます。診察に同席していない第三者には、幻覚を見抜けません。
  6. 06
    生の音声を削除
    診療の報告書が承認されたら、音声と中間段階の文字起こしを削除してください。これらのデータにはもう利用目的がなく、報告書は診療記録とともに管理されます。

#読み返し時に確認すべき項目

生成されたレポートの読み返しチェックリスト
項目リスク確認
薬品および投与量名称は類似しているが、単位や投与量が変更されている実際の処方と比較
既往歴捏造された既往歴、または別の患者のものとして記載された既往歴診療記録と照合する
否定「発熱なし」が「発熱」に変わってしまう否定文の再確認
空のセクション「記載なし」の代わりに、もっともらしい仮説が書かれている何も補完されていないことを確認する
日付と期間治療期間またはフォローアップまでの期間の誤り述べられた内容と整合性を確認してください
データ処理活動の記録簿
CNILとフランスの医師会によるガイドでは、データ処理活動の記録簿を維持するよう求めています。このローカルパイプラインとその目的を説明する項目を1行追加してください。
保管期間
診療記録の要約は、診療記録と同じ期間保存します(職能団体の推奨では、最後の診察から20年間)。要約の内容が確認・承認された後は、元の音声データは不要になるため削除します。
暗号化とバックアップ
ディスクを暗号化し(FileVault、BitLocker、LUKS)、診療施設の外に保管する暗号化済みの記録媒体に定期的にバックアップしてください。健康データが暗号化されていない端末の盗難は、データ侵害に該当します。
トレーサビリティ
患者への説明、ツールのバージョン、医師による確認・承認の記録を残してください。これらは、監査があった際に適切な対応を示す証拠となります。
FAQ
AIを使って診察の内容を文字起こしできますか?+
はい、条件を満たす限り、職業上の秘密は引き続き適用されます。患者には説明を行い、拒否できるようにし、音声の録音には同意を得る必要があります。また、診療記録は医師が確認しなければなりません。ローカル処理は第三者ホスティング事業者への転送を避けますが、その他の義務を免除するものではありません。
診療内容を文字起こしするには、患者の同意が必要ですか?+
データ処理について、CNILは、同意は法的根拠にも例外にも当たらず、原則として情報提供と異議を申し立てる権利があれば十分だとしています。一方、個人を識別できる声を録音する場合は、民法に基づき、その本人の同意が必要です。診療後に自分のメモを口述すれば、この問題を避けられます。
ローカルパイプラインを実行するにはHDSホスティングが必要ですか?+
健康データが第三者に委託・ホスティングされる場合、そのデータの取り扱いが対象となります。医師のデスク上で処理され、データが転送されない場合は、第三者ホスティングが関与しないと判断できます。ただし、遠隔バックアップやオンラインサービスを追加する場合、再びその問題が生じます。
Whisperはフランス語の医療用語を扱う際にも信頼できますか?+
Whisper large-v3はこのシリーズの基準となるモデルですが、モデルカードには、音声に含まれていないテキストを生成する可能性があると記載されています。特に誤りが生じやすいのは、薬剤名、略称、用量です。hotwordsパラメータは役立ちますが、人の目による確認は依然として不可欠です。医師に代わって誰かが最終確認を済ませてはいけません。
医療秘書は、生成された診療記録を承認できますか?+
HASおよびCNILのガイドは、診察に参加していない第三者が報告書を承認しないことを推奨しています。その理由は、第三者が幻覚を検出できないためです。医師が患者を診察した後、医師が報告書を再読し承認します。その後、秘書はドキュメントを分類または統合できます。
このパイプラインを動かすには、どのような構成が必要ですか?+
faster-whisperの測定によると、8 GBのVRAMを搭載したNVIDIA GPUはリアルタイムより高速に文字起こしできます。また、Ollamaのモデルライブラリによると、90億パラメータの文章作成モデルには6.6 GBが必要です。GPUがなくてもint8のCPUモードで動作しますが、処理は遅くなるため、リアルタイムではなく後から処理することを想定してください。
このガイドは役に立ちましたか?

ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。