Audio : transcrire et extraire des actions
Ce que Gemini sait faire avec du son
- Transcrire : écrire mot à mot ce qui est dit (on parle aussi de speech-to-text).
- Résumer, traduire, répondre à des questions sur l'enregistrement.
- Décrire des sons non vocaux (une sonnerie, de la musique).
Formats acceptés : WAV, MP3, AIFF, AAC, OGG, FLAC, M4A, Opus, WebM, entre autres. Un prompt peut contenir jusqu'à 9 h 30 d'audio ; chaque seconde coûte environ 32 tokens.
flowchart LR M["memo.wav (11 s)"] --> P["part_from() : inline, audio/wav"] P --> G["Gemini"] C["Consigne : transcrire + lister les actions"] --> G G --> T["Transcription"] G --> A["- action (échéance)"] A --> H["Vous : vérifier avant de créer les tâches"]
Le code
def transcrire(client, audio_path):
r = generer(client, [part_from(client, audio_path),
"Transcris cet audio mot à mot en français, puis liste les actions à faire "
"sous la forme « - action (échéance) »."])
return {"texte": r.text, "tokens": tokens(r)}python multimodal.py audio memo.wavUne seule requête fait deux choses : transcrire et structurer. C'est l'intérêt d'un modèle multimodal par rapport à un logiciel de dictée classique suivi d'un second traitement.
| Besoin | Consigne conseillée |
|---|---|
| Compte rendu exact | « Transcris mot à mot, sans reformuler. » |
| Réunion à plusieurs | « Indique qui parle (Intervenant 1, 2…) et l'horodatage MM:SS. » |
| Lecture rapide | « Résume en 3 points, puis liste les décisions. » |
| Langue étrangère | « Transcris dans la langue d'origine, puis traduis en français. » |
Un enregistrement de 10 minutes représente environ combien de tokens d'entrée ?
32 tokens par seconde × 600 secondes = 19 200 tokens, plus quelques dizaines pour la consigne. C'est modeste par rapport à la fenêtre d'un million de tokens des modèles Flash.
Quelles bonnes pratiques s'appliquent à la transcription d'une réunion d'équipe ?
La voix est une donnée personnelle : on informe. Et la liste d'actions est une proposition : un humain la relit, car une erreur d'échéance ou de responsable a des conséquences. Une consigne précise rend la sortie plus fiable, pas moins.
Exercice : sortir les actions en JSON
Plutôt qu'une liste en texte, obtenez un JSON [{"action": ..., "echeance": ..., "responsable": ...}] exploitable par un tableur. Utilisez un schéma Pydantic comme dans le module 4 (aperçu : generer(client, contents, schema=MaClasse)).
Voir la solution
from pydantic import BaseModel
class Action(BaseModel):
action: str
echeance: str | None
responsable: str | None
class Memo(BaseModel):
transcription: str
actions: list[Action]
r = generer(client, [part_from(client, "memo.wav"),
"Transcris puis extrais les actions. Laisse null ce qui n'est pas dit."],
schema=Memo)
memo = Memo.model_validate_json(r.text)
for a in memo.actions:
print(a.action, "|", a.echeance, "|", a.responsable)« Laisse null ce qui n'est pas dit » évite que le modèle invente un responsable.
Résultat obtenu
python multimodal.py audio memo.wav, exécution réelle du 2026-10-15 (voix de synthèse, texte fictif) :
Transcription :
« Bonjour, c'est Camille du service achats. Petit rappel pour la réunion de jeudi, il faut
valider le devis de 420 € pour les chaises et envoyer le bon de commande avant vendredi midi. Merci ! »
Actions à faire :
- Valider le devis de 420 € pour les chaises (jeudi / pour la réunion de jeudi)
- Envoyer le bon de commande (avant vendredi midi)
"tokens": {"entree": 295, "sortie": 117}La transcription est fidèle ; « quatre cent vingt euros » est devenu « 420 € », comme annoncé.
- Je sais envoyer un fichier audio et obtenir une transcription
- Je sais demander, dans la même requête, une liste d'actions structurée
- Je sais estimer le coût d'un enregistrement à partir de sa durée
- Je connais les précautions liées aux enregistrements de voix