Biais contextuels : expressions clés et texte libre
Les biais contextuels orientent la transcription vers les noms, les termes et les acronymes que vous attendez, pour qu'ils apparaissent orthographiés comme vous les écrivez. Vous les envoyez sous forme de liste d'entrées, chacune étant une expression clé ou du texte libre qui donne du contexte sur l'enregistrement, aussi bien en transcription de fichiers qu'en temps réel.
Pour comprendre pourquoi les noms sont mal transcrits et quand chaque type de contexte convient, consultez Vocabulaire personnalisé.
Biais avec des expressions clés
Pour corriger des termes précis, envoyez chacun d'eux comme entrée de context_bias. Une entrée peut contenir plusieurs mots, par exemple le nom d'une entreprise.
import os
from mistralai.client import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
def transcribe(context_bias=None):
with open("customer_call.wav", "rb") as audio:
return client.audio.transcriptions.complete(
model="voxtral-mini-transcribe-3",
file={"file_name": "customer_call.wav", "content": audio},
context_bias=context_bias,
).text
print("Without bias:", transcribe())
print("With bias: ", transcribe(["Northwind", "Quillara", "Alder Creek Design", "Rotterdam"]))L'exemple transcrit le même appel deux fois, une fois sans contexte, une fois avec. Le nom du produit et celui de l'entreprise changent :
Without bias: Thanks for calling Northwind Support. [...] I ordered two Quilliera headsets last week. [...] I also need an invoice for my company, Older Creek Design. [...]
With bias: Thanks for calling Northwind Support. [...] I ordered two Quillara headsets last week, [...] I also need an invoice for my company, Alder Creek Design. [...]Ajouter du texte libre
Une entrée peut aussi être une phrase ou un paragraphe qui apporte du contexte supplémentaire sur l'enregistrement. Envoyez-la de la même façon qu'une expression clé. Le modèle utilise ce texte pour améliorer sa transcription.
Par exemple, si l'enregistrement est une audience au tribunal, le texte peut être des extraits des documents juridiques de l'affaire. Si l'enregistrement est la réponse d'un utilisateur à la question d'un agent, le texte peut être la question que l'agent a posée :
curl https://api.mistral.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $MISTRAL_API_KEY" \
-F model=voxtral-mini-transcribe-3 \
-F file=@customer_answer.wav \
-F "context_bias=Which Quillara headset model did you order, and to which Northwind warehouse was it shipped?"Le texte libre donne au modèle du contexte sur les mots qu’il transcrit. Ce n’est pas une instruction : ne l’utilisez pas pour demander quelque chose sur l’audio, comme transcrire les bruits de fond ou mettre en forme le texte d’un locuteur.
Listez chaque terme qui doit être correctement transcrit comme sa propre expression clé, et ajoutez du texte libre à la même liste quand vous en avez. Dans les sessions en temps réel, le texte libre seul peut ne pas corriger un terme qu’une expression clé corrige.
Utilisation en sessions en temps réel
Dans une session en temps réel, envoyez context_bias sous forme de tableau JSON de chaînes de caractères dans session.update, avant le premier fragment audio.
{
"type": "session.update",
"session": {
"audio_format": { "encoding": "pcm_s16le", "sample_rate": 24000 },
"context_bias": ["Northwind", "Quillara", "Alder Creek Design", "Rotterdam"]
}
}Le contexte s'applique à toute la session. Après le premier fragment audio, la session rejette toute modification de ses champs avec un événement error.
Le SDK Python envoie context_bias, language et turn_detection dans la configuration stt de client.audio.sessions.init(). Consultez la configuration du SDK Agents vocaux. Transcription en temps réel contient un script complet. Dans les agents vocaux, définissez context_bias dans les options de reconnaissance vocale : voir Options de l’agent.
Format des entrées
Les deux modes acceptent les mêmes entrées, envoyées de façon différente :
| Transcription de fichiers | Session en temps réel | |
|---|---|---|
| Comment l'envoyer | Répétez le champ de formulaire context_bias une fois par entrée. En Python, passez une liste de chaînes de caractères. | Définissez context_bias comme un tableau de chaînes de caractères dans session.update. |
| Une entrée | Un terme, un nom en plusieurs mots ou du texte libre sur l'enregistrement | Identique |
| Caractères | Les espaces, les virgules et les autres signes de ponctuation sont acceptés | Identique |
| Par défaut | Aucun contexte | Aucun contexte (un tableau vide) |
| Portée | La requête | Toute la session, définie avant le premier fragment audio |
| Modèles | voxtral-mini-transcribe-3, voxtral-small-transcribe-3 | voxtral-mini-transcribe-realtime-3 |
Limites et erreurs
Le contexte n'a pas de budget propre : ses entrées s'ajoutent, avec l'audio, à la fenêtre de contexte du modèle. Un enregistrement long laisse moins de place au contexte ; limitez donc la liste aux termes et au texte qui comptent.
Quand l'audio et le contexte dépassent ensemble la fenêtre, la requête échoue et l'API ne raccourcit pas votre liste :
| Situation | Mode | Ce que vous obtenez |
|---|---|---|
| L'audio et le contexte dépassent la fenêtre de contexte | Transcription de fichiers | Une erreur 400 de type invalid_request_prompt_too_long, dont le message indique la taille de la requête et le maximum |
session.update envoyé après le premier fragment audio | Session en temps réel | Un événement error : Session fields cannot be changed after audio has started. |