Intermédiaire 11 minSanté

Santé : transcription de consultations

Réponse directe

Oui : Whisper (faster-whisper) transcrit l'audio et un LLM local rédige le compte-rendu, sans que rien ne quitte le poste du médecin. Le local n'efface pas le cadre : secret professionnel, information du patient avec droit d'opposition, accord pour l'enregistrement de la voix, hébergeur HDS si un tiers stocke, et relecture par le médecin lui-même.

Un médecin qui rédige ses comptes-rendus le soir peut gagner du temps avec une chaîne locale audio, transcription puis compte-rendu structuré. Vous saurez la monter, connaître ses limites (hallucinations, contexte tronqué) et respecter le cadre fixé par la HAS, la CNIL et l'Ordre des médecins, en corrigeant plusieurs idées reçues.

Par Mohamed Meguedmi·Màj 2026-09-30·Testé sur Windows, macOS, Linux

#Transcrire une consultation en local : ce qui est permis, et à quelles conditions

Oui, un médecin peut transcrire ses consultations avec une IA sans que l'audio quitte son poste : Whisper transcrit la voix, un LLM local (via Ollama) rédige un compte-rendu structuré, et le professionnel relit et valide. Cela n'efface pas les obligations légales. Le guide HAS et CNIL de 2026 rappelle que l'introduction d'un système d'IA ne change pas les règles du secret professionnel de l'article L. 1110-4 du Code de la santé publique. Il faut aussi informer le patient et respecter son droit d'opposition. L'hébergement chez un tiers suppose un hébergeur certifié HDS. Le traitement local évite précisément ce transfert et ses risques. Ce guide monte le pipeline, puis détaille le cadre et les vérifications indispensables, en corrigeant quelques idées reçues.

La transcription automatique de consultation est, selon ce même guide, le cas d'usage le plus fréquent des IA génératives en contexte de soins. L'enjeu n'est donc pas de savoir si l'on peut le faire, mais comment le faire proprement.

!
Ce guide n'est pas un avis juridique
Les points de droit sont ceux des guides publiés par la HAS, la CNIL et le Conseil national de l'Ordre des médecins. Pour votre situation (exercice isolé, maison de santé, établissement), faites valider le dispositif par votre DPO ou votre instance ordinale.

#Le cadre français : ce que disent les guides officiels

Le kit IA Locale

Ton ChatGPT privé et gratuit sur ta machine en 1 heure — LM Studio, Ollama, Open WebUI, tes documents, sans cloud.

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie

Le tableau reprend chaque exigence avec son effet concret sur un pipeline local. Il corrige au passage deux idées répandues : le consentement du patient n'est pas la base légale du traitement, et l'HDS n'est pas exigé par principe, mais lorsqu'un tiers héberge les données.

Exigences et conséquences pour un pipeline local
SujetCe que disent les guidesConséquence pratique
Secret professionnelL'IA ne change pas les règles de l'article L. 1110-4 du CSPLe compte-rendu reste soumis au secret ; limitez l'accès au poste
HébergementUn tiers qui héberge des données de santé (cloud) doit être certifié hébergeur de données de santéTraitement sur le poste du médecin : pas de tiers hébergeur dans le flux
Base légaleLa CNIL estime que le consentement n'est ni la base légale ni l'exception pour ces traitementsDocumentez la base retenue avec votre DPO ; ne comptez pas sur une case cochée
InformationUne information loyale, accessible, avec droit d'opposition suffit dans la majorité des casAffichez ou dites que la consultation est transcrite ; respectez le refus
Enregistrement vocalL'usage d'enregistrements vocaux identifiants est soumis au consentement au titre du code civilRecueillez l'accord du patient avant d'enregistrer la voix
Validation du compte-renduIl ne devrait pas être validé par un tiers absent de la consultation, comme une secrétaireLe médecin qui a vu le patient relit lui-même
ConservationLe Conseil de l'Ordre préconise 20 ans après la dernière consultation, en l'absence de texte propre à l'exercice libéralLe compte-rendu suit ce délai ; l'audio brut n'a pas de raison d'être gardé

#Deux idées reçues à abandonner

Première idée reçue : « ChatGPT est formellement interdit ». Les textes ne visent aucun outil en particulier. Le problème est structurel : envoyer des données de santé à un service en ligne les fait sortir de votre poste, ce qui appelle un hébergeur certifié, un contrat de sous-traitance et une information adaptée. Le guide HAS et CNIL identifie d'ailleurs un risque d'atteinte au secret médical lié à l'intégration de données sensibles dans les requêtes aux agents conversationnels en ligne.

Seconde idée reçue : « local veut dire conforme ». Le traitement local supprime le transfert, non l'obligation de tenir un registre, d'informer les patients, de sécuriser le poste et de se poser la question de l'analyse d'impact. Le guide range l'AIPD parmi les obligations du déployeur, le cas échéant : faites-vous accompagner pour trancher ce point, ainsi que la qualification éventuelle de votre outil en dispositif médical.

#La stack : Whisper, un LLM local et, en option, la diarisation

Les briques du pipeline
BriqueRôleÀ savoir
faster-whisperTranscrit l'audio (implémentation CTranslate2 de Whisper)Annoncé jusqu'à quatre fois plus rapide que l'implémentation d'origine à précision égale
Modèle large-v3Modèle multilingue de la famille Whisper, français comprisTéléchargé au premier usage ; à valider sur vos propres enregistrements
Ollama + qwen3.5:9bRédige le compte-rendu structuréModèle de 9 milliards de paramètres ; 6,6 Go selon la bibliothèque Ollama
pyannote (option)Diarisation : qui parle quandModèle à télécharger avec un jeton Hugging Face après acceptation de ses conditions

Côté débit, la documentation de faster-whisper donne un repère daté : 13 minutes d'audio transcrites en 1 minute 03 avec le modèle large-v2 en fp16, à 4 525 Mo de VRAM, sur une RTX 3070 Ti de 8 Go (benchmark des mainteneurs, CUDA 12.4). Les mêmes mainteneurs mesurent 59 secondes pour 2 926 Mo en int8. Ce sont leurs mesures, sur leur machine, pas les nôtres : elles indiquent qu'une carte graphique modeste transcrit plus vite que le temps réel, sans en faire une promesse pour votre poste.

i
Sur Mac, pas de CUDA
L'exemple officiel de faster-whisper montre l'exécution sur processeur en int8. C'est la configuration à retenir sur un Mac : plus lente qu'un GPU NVIDIA, mais suffisante pour une transcription en différé, après la consultation.

#Installation

Terminal
python3 -m venv venv
source venv/bin/activate

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

Avec un GPU NVIDIA, faster-whisper exige les bibliothèques cuBLAS et cuDNN 9 pour CUDA 12. Sans elles, le programme échoue au chargement du modèle : installez-les avant de tester, ou passez en mode processeur.

#Transcrire l'audio

Le script ci-dessous fixe la langue, active le filtre de silence (VAD) et horodate chaque segment. Adaptez la première ligne : device cuda avec float16 pour un GPU NVIDIA, device cpu avec int8 pour un Mac ou un PC sans carte compatible.

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]))

Le paramètre hotwords, exposé par la fonction de transcription de faster-whisper, permet de suggérer au modèle des termes attendus : noms de médicaments, sigles, examens. Il aide sans garantir : relisez toujours les noms propres et les dosages.

#Whisper peut écrire ce que personne n'a dit

La fiche du modèle large-v3 prévient que les prédictions peuvent contenir des textes qui ne figurent pas dans l'audio, ce qu'elle nomme hallucination. Sur une consultation, cela peut donner une phrase plausible inventée dans un silence, un chiffre modifié ou un nom de médicament proche mais faux. Le filtre VAD réduit le risque dans les silences ; il ne remplace pas la relecture.

#Rédiger le compte-rendu structuré

Le second script envoie la transcription à un modèle local via l'API d'Ollama. Deux réglages comptent : une température basse pour limiter les inventions, et une fenêtre de contexte suffisante. La documentation d'Ollama indique une fenêtre par défaut de 4 000 tokens environ sous 24 Gio de VRAM. Une consultation de vingt minutes représente de l'ordre de 3 000 mots, soit plusieurs milliers de tokens (estimation, variable selon le débit de parole) : sans num_ctx explicite, la fin de la transcription risque d'être tronquée. L'exemple fixe donc 16 384 tokens.

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"]

Ce prompt applique les principes du guide sur les system prompts : règles vérifiables, format de sortie explicite, comportement prévu quand l'information manque. La consigne « Non mentionné » compte : elle évite que le modèle remplisse une section vide avec une hypothèse plausible.

#Diarisation : distinguer médecin et patient

La diarisation attribue chaque segment à un locuteur (SPEAKER_00, SPEAKER_01). Elle sert surtout quand vous enregistrez la consultation elle-même, à deux voix ; pour une dictée du médecin seul, elle est inutile. Le dépôt de pyannote recommande aujourd'hui le pipeline community-1 : il faut accepter ses conditions d'utilisation sur Hugging Face et créer un jeton d'accès pour le télécharger. L'inférence s'exécute ensuite localement.

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}")
→
Fusionner les deux résultats
Pour un compte-rendu à deux voix, alignez les segments de Whisper et de pyannote sur leurs horodatages avant d'envoyer le texte au LLM. Le guide sur WhisperX décrit un outil qui fait cet alignement mot à mot.

#Workflow type en cabinet

  1. 01
    Informer le patient
    Avant l'enregistrement, indiquez que la consultation ou la dictée sera transcrite par un outil local et que le patient peut s'y opposer. Si vous enregistrez sa voix, recueillez son accord. Tracez l'information dans le dossier.
  2. 02
    Enregistrer
    Deux options : dicter 1 à 2 minutes de notes après la consultation (le patient n'est plus enregistré), ou enregistrer l'échange (accord vocal exigé, diarisation utile). La dictée minimise la donnée collectée.
  3. 03
    Déposer le fichier sur le poste
    Transférez l'audio (WAV, MP3, M4A) dans un dossier dédié, chiffré. Un petit script surveille le dossier et déclenche le traitement.
  4. 04
    Lancer le pipeline
    Le script transcrit, résume, enregistre le compte-rendu en texte à côté de l'audio et journalise l'opération sans y écrire de contenu médical.
  5. 05
    Relire et valider soi-même
    Le médecin qui a vu le patient relit le compte-rendu, corrige, puis l'intègre à son logiciel de gestion de cabinet. Une tierce personne absente de la consultation ne peut pas repérer les hallucinations.
  6. 06
    Supprimer l'audio brut
    Une fois le compte-rendu validé, supprimez l'audio et la transcription intermédiaire : la donnée n'a plus de finalité, et le compte-rendu suit le dossier médical.

#Que vérifier à la relecture

Grille de relecture d'un compte-rendu généré
ÉlémentRisqueVérification
Médicaments et dosagesNom proche, unité ou posologie changéeComparer avec la prescription réelle
AntécédentsAntécédent inventé ou attribué au mauvais patientConfronter au dossier
Négations« Pas de fièvre » devenu « fièvre »Relire les phrases négatives
Sections videsHypothèse plausible substituée à « Non mentionné »Vérifier que rien n'a été complété
Dates et duréesDurée de traitement ou délai de suivi erronéRecouper avec ce qui a été dit
Registre des traitements
Le guide CNIL et Ordre des médecins demande de tenir un registre des activités de traitement ; ajoutez-y une ligne décrivant ce pipeline local et ses finalités.
Durée de conservation
Le compte-rendu suit la durée du dossier médical (20 ans après la dernière consultation, selon la préconisation ordinale). L'audio brut, non nécessaire une fois le compte-rendu validé, se supprime.
Chiffrement et sauvegardes
Chiffrez le disque (FileVault, BitLocker, LUKS) et sauvegardez régulièrement, sur un support chiffré conservé hors du cabinet. Un poste volé avec des données de santé en clair est une violation de données.
Traçabilité
Conservez la trace de l'information du patient, de la version des outils et de la validation du médecin : ce sont vos éléments de démonstration en cas de contrôle.
FAQ
Peut-on transcrire une consultation médicale avec une IA ?+
Oui, à condition de respecter le cadre : le secret professionnel reste applicable, le patient doit être informé et pouvoir s'opposer, l'enregistrement de sa voix demande son accord, et le compte-rendu doit être relu par le médecin. Un traitement local évite le transfert vers un tiers hébergeur, sans dispenser des autres obligations.
Faut-il le consentement du patient pour transcrire sa consultation ?+
Pour le traitement de données, la CNIL estime que le consentement n'est ni la base légale ni l'exception : l'information et le droit d'opposition suffisent en principe. En revanche, l'enregistrement de la voix d'une personne identifiable est soumis à son consentement au titre du code civil. Dicter ses notes après la consultation évite la question.
Un hébergeur HDS est-il obligatoire pour un pipeline local ?+
L'obligation vise les données de santé confiées à un tiers qui les héberge, par exemple sur un cloud. Un traitement effectué sur le poste du médecin, sans transfert, ne met pas de tiers hébergeur dans le flux. Si vous ajoutez une sauvegarde à distance ou un service en ligne, la question se pose de nouveau.
Whisper est-il fiable pour le vocabulaire médical français ?+
Whisper large-v3 est le modèle de référence de la famille, mais sa fiche signale qu'il peut produire des textes absents de l'audio. Les noms de médicaments, sigles et dosages sont les points fragiles. Le paramètre hotwords aide, la relecture reste indispensable, et personne ne doit valider à la place du médecin.
Une secrétaire médicale peut-elle valider le compte-rendu généré ?+
Le guide HAS et CNIL recommande que le compte-rendu ne soit pas validé par un tiers absent de la consultation, car il ne pourra pas détecter les hallucinations. C'est le médecin qui a examiné le patient qui relit et valide. La secrétaire peut ensuite classer ou intégrer le document.
Quelle configuration pour faire tourner ce pipeline ?+
Un GPU NVIDIA avec 8 Go de VRAM transcrit plus vite que le temps réel selon les mesures de faster-whisper, et un modèle de rédaction de 9 milliards de paramètres demande 6,6 Go selon la bibliothèque Ollama. Sans GPU, le mode processeur en int8 fonctionne, plus lentement : prévoyez un traitement en différé.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.