L'API de Transcription Offline
L’endpoint de transcription
L’API de transcription offline de Mistral utilise l’endpoint /audio/transcriptions. C’est une API synchrone : vous envoyez un fichier audio et recevez la transcription complète dans la réponse.
Avant de coder, assurez-vous d’avoir :
- Un compte sur la plateforme Mistral (console.mistral.ai)
- Une clé API active
- Le SDK Python Mistral installé
Installation du SDK
pip install mistralai
L’endpoint et ses paramètres
L’appel principal utilise client.audio.transcriptions.complete() avec les paramètres suivants :
Paramètres obligatoires
model— L’identifiant du modèle. Pour la transcription offline :"voxtral-mini-latest"(recommandé) ou"voxtral-mini-2602"(version figée).fileoufile_url— Le fichier audio à transcrire. Deux options :file: un dictionnaire{"content": file_object, "file_name": "nom.mp3"}pour un upload directfile_url: une URL publique pointant vers le fichier audio
Paramètres optionnels
language— Code ISO de la langue (ex:"fr","en"). Si omis, la langue est détectée automatiquement. Incompatible avectimestamp_granularities.timestamp_granularities— Liste de granularités :["segment"],["word"], ou["segment", "word"]. Active le retour de timestamps.diarize— Booléen. SiTrue, identifie les locuteurs dans la transcription.context_bias— Chaîne de caractères contenant des mots/phrases séparés par des virgules. Jusqu’à 100 termes pour améliorer la reconnaissance de vocabulaire spécifique.
Formats audio supportés
Voxtral accepte les formats audio courants :
- MP3 — Le plus courant, bonne compression
- WAV — Non compressé, qualité maximale
- FLAC — Compression sans perte
- OGG — Format ouvert, bonne compression
- M4A / AAC — Format Apple, courant sur mobile
- WEBM — Format web, courant pour les enregistrements navigateur
La durée maximale est de 3 heures par requête. Pour les fichiers plus longs, découpez-les avant l’envoi.
Structure de la réponse
La réponse contient au minimum :
response.text # Le texte transcrit complet (str)
Si vous avez demandé des timestamps (timestamp_granularities), la réponse inclut aussi :
response.segments # Liste de segments avec start, end, text
response.words # Liste de mots avec start, end, text (si word demandé)
Si vous avez activé la diarisation (diarize=True), chaque segment inclut :
segment.speaker # Identifiant du locuteur (str)
segment.start # Début en secondes (float)
segment.end # Fin en secondes (float)
segment.text # Texte du segment (str)
Combinaisons de paramètres
Certains paramètres sont mutuellement exclusifs. Voici les combinaisons valides :
# Transcription simple (texte uniquement)
client.audio.transcriptions.complete(
model="voxtral-mini-latest",
file={"content": f, "file_name": "audio.mp3"}
)
# Avec langue forcée (pas de timestamps)
client.audio.transcriptions.complete(
model="voxtral-mini-latest",
file={"content": f, "file_name": "audio.mp3"},
language="fr"
)
# Avec timestamps par segment
client.audio.transcriptions.complete(
model="voxtral-mini-latest",
file={"content": f, "file_name": "audio.mp3"},
timestamp_granularities=["segment"]
)
# Avec diarisation + timestamps
client.audio.transcriptions.complete(
model="voxtral-mini-latest",
file={"content": f, "file_name": "audio.mp3"},
diarize=True,
timestamp_granularities=["segment"]
)
# Avec context biasing
client.audio.transcriptions.complete(
model="voxtral-mini-2602",
file_url="https://example.com/audio.mp3",
context_bias="Mistral,Voxtral,Corsen,RGPD"
)
Attention : language et timestamp_granularities ne peuvent pas être utilisés ensemble dans le même appel.
Authentification
Toutes les requêtes nécessitent une clé API valide, passée au constructeur du client :
from mistralai import Mistral
# Via argument direct
client = Mistral(api_key="votre-cle-api")
# Ou via variable d'environnement (recommandé en production)
import os
os.environ["MISTRAL_API_KEY"] = "votre-cle-api"
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
Points clés à retenir
- L’endpoint
/audio/transcriptionsest synchrone : envoi du fichier, réception du texte - Deux modes d’envoi : upload direct (
file) ou URL publique (file_url) - Paramètres optionnels :
language,timestamp_granularities,diarize,context_bias languageettimestamp_granularitiessont mutuellement exclusifs- Formats supportés : MP3, WAV, FLAC, OGG, M4A, WEBM — jusqu’à 3 heures
- La diarisation et les timestamps peuvent être combinés