Résolution des problèmes de reconnaissance vocale

Cette page liste les erreurs renvoyées par la transcription de fichiers et les sessions en temps réel, puis les causes habituelles d'une transcription absente, inexacte ou lente. Chaque solution renvoie vers la page qui décrit le paramètre à modifier.

Astuce

De nombreux problèmes de transcription se règlent avec un paramètre, comme un vocabulaire personnalisé pour les noms ou la diarisation pour les locuteurs. Consultez les tableaux de symptômes avant de changer de modèle ou de contacter l'Assistance.

Erreurs

Erreurs

Les erreurs se présentent sous une forme différente selon le mode. Une requête de transcription de fichier renvoie une erreur HTTP avec un corps JSON, par exemple :

{
  "object": "error",
  "message": "Word-level segments are not enabled for this model",
  "type": "invalid_request_invalid_args",
  "param": null,
  "code": "3051",
  "raw_status_code": 400
}

Une erreur de validation 422 porte son explication dans message.detail, une liste où chaque élément contient un champ msg. Une session en temps réel envoie un événement de type error sur la connexion ouverte, avec l'explication dans error.message :

{
  "type": "error",
  "error": {
    "message": "Session fields cannot be changed after audio has started.",
    "code": 3051
  }
}
Erreurs de transcription de fichiers

Erreurs de transcription de fichiers

Ces erreurs proviennent d'un champ de la requête de transcription. Corrigez le champ, puis renvoyez la requête :

ErreurCauseSolution
400 Invalid model: <model>Le model n'est pas un modèle de transcription que vous pouvez utiliser.Utilisez voxtral-mini-transcribe-3 ou voxtral-small-transcribe-3. Voir Choisir votre modèle.
400 Word-level segments are not enabled for this modeltimestamp_granularities=word. Les horodatages ne sont disponibles que par segment.Utilisez segment. Voir Horodatages.
422 When diarize is set to True and streaming is disabled, the timestamp granularity must be set to ['segment']diarize=true sans horodatages par segment.Ajoutez timestamp_granularities=segment. Voir Diariser les locuteurs.
422 Invalid language alpha2 codelanguage n'est pas un code à deux lettres.Utilisez un code issu de Langues, comme en ou fr. Voir Forcer la langue.
422 Speaker references require diarizationRéférences de locuteurs sans diarize=true.Définissez diarize sur true. Voir Nommer les locuteurs avec des clips de référence.
400 turn_detection is only supported on the realtime transcription endpoint.turn_detection dans une requête de transcription de fichier.Utilisez une session en temps réel. Voir Détection de tour de parole.
400 maximum context lengthL'audio et les entrées context_bias dépassent ensemble le contexte du modèle. Rien n'est tronqué : la requête échoue.Raccourcissez la liste context_bias. Voir Limites et erreurs.
Le modèle n'accepte pas les clips de référence.Utilisez un modèle qui les prend en charge. Voir Nommer les locuteurs avec des clips de référence.
Erreurs des sessions en temps réel

Erreurs des sessions en temps réel

Une session en temps réel peut échouer à la connexion, ou envoyer un événement error après un message session.update. Identifiez le message, puis corrigez la configuration de la session :

ErreurCauseSolution
HTTP 403 lors de l'établissement de la connexion WebSocketLe model dans l'URL de connexion n'est pas un modèle temps réel que vous pouvez utiliser.Utilisez voxtral-mini-transcribe-realtime-3. Voir Transcription en temps réel.
Session fields cannot be changed after audio has started.Un message session.update envoyé après le premier fragment audio.Envoyez toute la configuration dans un seul session.update avant tout audio. Pour la modifier, ouvrez une nouvelle session. Voir Transcription en temps réel.
target_streaming_delay_ms must be one of the trained values: ['80-1200', '2400'] (got <value>).Un délai de streaming en dehors des valeurs acceptées.Utilisez une valeur entre 80 et 1200, ou 2400. Voir Transcription en temps réel.
Diarization is not compatible with turn detection.diarize et turn_detection dans la même session.Ne gardez qu'un seul des deux. Voir Diarisation et détection de tour de parole.
Speaker references require diarization, set diarize=true.speaker_references sans diarize.Définissez diarize sur true. Voir Nommer les locuteurs avec des clips de référence.
Le message contient Expected start_threshold >= eager_end_threshold > end_thresholdLes seuils de détection de tour de parole ne sont pas dans le bon ordre.Maintenez start_threshold au moins égal à eager_end_threshold, lui-même supérieur à end_threshold. Voir Ajuster les seuils.
Le message contient Expected end_timeout_ms to be greater than or equal to min_silence_msend_timeout_ms est inférieur à min_silence_ms.Augmentez end_timeout_ms ou réduisez min_silence_ms. Voir Ajuster les seuils.
Le message contient Extra inputs are not permittedUn champ que la session n'accepte pas, comme un nom de configuration dans turn_detection.Supprimez le champ. Pour utiliser une configuration, envoyez ses valeurs. Voir Configurations courantes.
Le message contient Invalid language alpha2 codelanguage n'est pas un code à deux lettres.Utilisez un code issu de Langues.
Transcription absente ou champs manquants

Transcription absente ou champs manquants

Quand une requête réussit mais qu'une partie du résultat manque, la cause est généralement un champ que vous n'avez pas défini :

SymptômeModeCauseSolution
segments est videFichierLes horodatages par segment ne sont pas demandés.Ajoutez timestamp_granularities=segment. Voir Horodatages.
speaker_id est null sur chaque segmentFichierLa diarisation n'est pas activée.Définissez diarize sur true. Voir Diariser les locuteurs.
Aucun événement transcription.text.deltaTemps réelAvec la diarisation activée, le texte arrive plutôt dans des événements transcription.segment.Lisez le texte dans transcription.segment. Voir Lire les étiquettes de locuteurs.
Aucun événement turn.*Temps réelturn_detection ne figure pas dans la configuration de la session.Ajoutez un objet turn_detection à session.update. Voir Activer la détection de tour de parole.
Temps réelLe champ audio_format dans session.update ne correspond pas à l'audio que vous envoyez : encodage ou fréquence d'échantillonnage.Déclarez l'encodage et la fréquence d'échantillonnage de votre audio. Voir Transcription en temps réel.
Temps réelLe client n'a pas envoyé input_audio.end après le dernier fragment audio.Envoyez input_audio.end quand l'audio est terminé. Voir Transcription en temps réel.
text est videFichierL'enregistrement ne contient pas de parole, ou est dans un format que l'API ne peut pas lire.Vérifiez que le fichier se lit, ainsi que son format. Voir Formats audio.
Mots erronés

Mots erronés

Quand la transcription est présente mais que certains mots sont erronés, identifiez le type d'erreur dans ce tableau :

SymptômeCauseSolution
Des noms, des marques, des noms de produits ou du jargon apparaissent mal orthographiésLe modèle ne connaît pas le terme et écrit ce qu'il entend.Listez chaque terme sous forme de keyphrase dans context_bias. Voir Biaiser avec des keyphrases et Vocabulaire personnalisé.
Un terme reste erroné en temps réel alors que context_bias ne contient qu'une description de l'enregistrementAjoutez le terme sous forme de keyphrase distincte. Voir L'utiliser dans les sessions en temps réel.
Des mots apparaissent dans la mauvaise langueSans language, le modèle détecte la langue de l'enregistrement, et cette détection peut être erronée.Forcez la langue avec language. Voir Forcer la langue.
La transcription en temps réel contient trop d'erreursUn délai de streaming court laisse moins de contexte au modèle avant d'écrire chaque mot.Augmentez target_streaming_delay_ms, au prix d'un texte plus tardif. Voir Transcription en temps réel et Latence.
Étiquettes de locuteurs

Étiquettes de locuteurs

Les étiquettes de locuteurs soulèvent leurs propres questions. Pour savoir ce que signifient les étiquettes, voir Locuteurs et diarisation.

SymptômeCauseSolution
Un locuteur pour lequel vous avez envoyé un clip de référence affiche une étiquette générique, comme speaker_3Le clip ne correspond pas à la voix de l'enregistrement, par exemple une autre personne à la voix similaire.Utilisez un clip de la même personne. Voir Nommer les locuteurs avec des clips de référence.
La même personne porte une étiquette différente dans deux enregistrementsLes étiquettes ne sont valables qu'au sein d'une même transcription ou session.Nommez le locuteur avec un clip de référence dans chaque requête. Voir Nommer les locuteurs avec des clips de référence.
Deux personnes parlent en même temps.
Résultats lents

Résultats lents

Quand la transcription est correcte mais arrive trop tard, le paramètre à modifier dépend de ce que l'utilisateur attend :

SymptômeModeCauseSolution
Le texte temps réel apparaît trop longtemps après la prononciation des motsTemps réelLe délai de streaming est long.Réduisez target_streaming_delay_ms, au prix de la précision. Voir Transcription en temps réel et Latence.
Les utilisateurs attendent la transcription complète d'un fichier longFichierLa réponse arrive quand le fichier entier est transcrit.Diffusez la réponse en streaming pour afficher le texte au fur et à mesure. Le temps total reste le même. Voir Diffuser la réponse en streaming.
Un agent répond bien après que l'utilisateur a fini de parlerTemps réelLa détection de tour de parole attend un silence minimal avant de terminer le tour.Réduisez min_silence_ms, ou partez de la configuration Aggressive. Les tours se terminent alors plus tôt, au prix de davantage de coupures. Voir Configurations courantes.
Détection de tour

Détection de tour

Chaque symptôme de détection de tour de parole correspond à un seul paramètre à ajuster. Modifiez un paramètre à la fois, et testez avec des enregistrements de vos utilisateurs réels :

SymptômeSolution
Le tour se termine pendant une pause, alors que l'utilisateur parle encoreRéduisez end_threshold, ou augmentez min_silence_ms. La réponse arrive plus tard.
Le tour met trop de temps à se terminer après une longue pauseRéduisez end_timeout_ms pour limiter l'attente.
Les tours de parole se déclenchent à cause du bruit de fondAugmentez start_threshold.
Trop d'événements turn.eager_endRéduisez eager_end_threshold. Un événement turn.eager_end suivi de turn.resume lors d'une pause entre deux phrases est un comportement attendu.
Les derniers mots d'un tour de parole arrivent après turn.endContinuez d'ajouter du texte au tour de parole après turn.end. Voir Les derniers mots arrivent après l'événement de tour de parole.

Pour connaître chaque paramètre, sa valeur par défaut et son effet, consultez Ajuster les seuils. Pour le compromis entre répondre plus vite et couper la parole aux utilisateurs, consultez Tours de parole et prise de tour.

Aller plus loin

Aller plus loin