/docs · VoiceLab · Practical
Lire l'audio avant de transcrire
Un appel avant le modèle : ce que les champs de scène disent d'un fichier, et ce qu'ils ne disent pas, avec les chiffres de notre propre test de transcription.
Mis à jour 10 oct. 2026
Une transcription peut être fausse pour des raisons qui étaient dans l’audio avant que le modèle ne le voie : un envoi écrêté, une seconde voix qui couvre le message, un locuteur à quelques dB seulement au-dessus d’une pièce bruyante. Une mesure avant le modèle peut les montrer. Elle ne peut pas vous dire si la transcription sera juste, et cette page dit où passe cette limite, avec des chiffres.
Ce que les champs ne prédisent pas
Nous l’avons testé, le 10 octobre 2026. Seize signalements de citoyens néerlandais inventés (rue et numéro, ville, nom de famille, numéro de téléphone, adresse e-mail), lus par trois voix synthétiques dans 13 conditions : propre, bande téléphonique, bruit de rue et brouhaha à 10 et 5 dB, une télévision, quatre temps de réverbération mesurés, et des combinaisons. Cela fait 624 enregistrements et 1 248 transcriptions par Whisper small et Whisper large-v3-turbo, 48 par condition et par modèle, soit une marge d’environ 13 points.
- Les mesures de SNR n’ont pas prédit les erreurs. Pour « rue, numéro ou ville faux », l’AUC de
worstPhraseSnrDb,segmentalSnrDbetsignalToNoiseDbétait de 0,52 à 0,55 pour les deux modèles. 0,50, c’est pile ou face. sceneIntelligibilitya donné des fausses alarmes. Il s’est lu non clair (limite ou noyé) sur 100 pour cent des enregistrements avec du bruit de rue à 10 et 5 dB et sur 94 à 100 pour cent avec du brouhaha, alors que Whisper small trouvait encore le lieu juste sur 58 à 67 pour cent d’entre eux (propre : 69) et large-v3-turbo sur 71 à 85 pour cent (propre : 81). Sur l’ensemble des enregistrements, il en a signalé 58 pour cent ; parmi les signalés, 47 pour cent (small) ou 25 pour cent (large) avaient une vraie erreur de lieu.- Ce qui expliquait les erreurs, c’étaient les mots. Sur les enregistrements propres, la rue, le numéro et la ville revenaient justes 69 pour cent (small) ou 81 pour cent (large) du temps, une adresse e-mail épelée en mots 21 ou 35 pour cent, un numéro de téléphone 83 ou 88, un nom de famille 73 ou 81. Le choix du modèle pesait plus que l’audio : une réverbération de 1,0 s avec du brouhaha donnait 17 pour cent pour small contre 54 pour cent pour large.
Les limites du test : voix synthétiques, Whisper seulement, une bande téléphonique simulée, du texte néerlandais, 48 enregistrements par condition et par modèle. Les locuteurs réels, les autres moteurs de reconnaissance et les autres langues ne sont pas testés. Ne refusez donc pas un fichier sur sceneIntelligibility ou sur un SNR seul. Ils décrivent le signal.
L’appel
POST https://audiolab.tools/v1/voicelab/qa avec une clé Bearer. Envoyez le fichier en multipart/form-data (file), ou en JSON avec une url publique. La réponse est l’analyse VoiceLab complète ; la partie qui compte ici, abrégée, pour une conférence avec un second locuteur 18 dB derrière le message :
{
"sceneBackground": "program",
"sceneProgramScore": 0.92,
"sceneGapHarmonicShare": 0.33,
"speechToBackgroundDb": 15.2,
"sceneIntelligibility": "clear",
"sceneIntelligibilityScore": 0.81
}
Lisez-la comme une phrase : il y a une seconde voix dans les pauses (program, un tiers de l’énergie des pauses est une hauteur mobile), le message est 15 dB au-dessus d’elle, et la voix au premier plan se lit comme suivable par un auditeur. Cela dit quelque chose du signal, pas de ce qu’un moteur de reconnaissance en fera.
| Champ | Ce qu’il dit | Valeurs |
|---|---|---|
sceneIntelligibility | Un proxy pour savoir si un auditeur pourrait suivre la voix au premier plan (pas pour la reconnaissance vocale) | clear, borderline, buried, ou null en dessous de deux phrases mesurables |
sceneIntelligibilityScore | La même chose sous forme de nombre | 0 à 1 ; clear à partir de 0,65, borderline à partir de 0,35 |
speechToBackgroundDb | Niveau moyen de la parole moins le plancher moyen des pauses | dB ; 3 se lit 0, 18 se lit 1 dans le score |
sceneBackground | Ce qui remplit les pauses | quiet, stationary (une machine), program (une seconde voix ou de la musique), unsteady, ou null en dessous d’une seconde de pause |
clipping.severity | Dégâts numériques, plus faciles à corriger à la source que plus tard | None, Low, Medium, High |
speechRatio | Part du fichier qui est de la parole | 0 à 1 |
L’utiliser sans refuser de fichiers
const KEY = process.env.AUDIOLAB_API_KEY;
async function check(url) {
const v = await fetch('https://audiolab.tools/v1/voicelab/qa', {
method: 'POST',
headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ url }),
}).then((r) => r.json());
const notes = [];
if (v.speechRatio < 0.2) return { route: 'no-speech', notes }; // rien à transcrire, ne facturez pas de minutes
if (v.clipping.severity === 'High') notes.push('clipped'); // dégâts à la source
if (v.sceneBackground === 'program') notes.push('second-voice-or-music'); // quelque chose parle derrière le message
if (v.sceneIntelligibility === 'buried') notes.push('voice-close-to-background');
return { route: 'transcribe', notes }; // joignez les notes à la transcription, laissez une personne décider
}
Deux issues sont sûres pour agir : un fichier presque sans parole, et une transcription qui porte ce que l’audio a montré. Tout le reste est de l’information à joindre à la transcription, pas une raison de refuser le fichier. Le cas null compte : un fichier avec une seule phrase n’est pas un mauvais fichier, c’est un fichier non mesuré.
Exemples de lectures
Ce sont des exemples de lectures, pas un étalonnage. Les étiquettes ont été fixées à la main sur ce matériel et n’ont pas été validées contre des auditeurs ni contre la reconnaissance vocale. Une conférence enregistrée dans une salle avec un public, puis mélangée avec les choses qui se trouvent derrière un message :
| Scène | Fond | Parole au-dessus du fond | Intelligibilité |
|---|---|---|---|
| Conférence, propre | unsteady (la salle et le public) | 17,1 dB | clear 0,94 |
| plus une ventilation à −20 dB | stationary, tonalité à 120,8 Hz | 15,4 dB | clear 0,85 |
| plus un second locuteur à −18 dB | program | 15,2 dB | clear 0,81 |
| plus un morceau de club à −18 dB | unsteady | 15,0 dB | clear 0,80 |
| plus un second locuteur à −6 dB | program | 10,0 dB | borderline 0,45 |
Et un enregistrement de pièce fait avec un téléphone, où les haut-parleurs de lecture n’atteignaient que 5 à 7 dB au-dessus du plancher de la pièce elle-même : chaque prise s’est lue buried, scores de 0,12 à 0,25. Savoir si un moteur de reconnaissance s’en serait sorti n’a pas été testé.
Le score est le plus faible de deux volets : le pire dixième du rapport signal sur bruit par phrase, et la parole au-dessus du plancher des pauses, tous deux mis à l’échelle de sorte que 3 dB se lit 0 et 18 dB se lit 1, puis réduits pour une pièce réverbérante et pour l’écrêtage. Il est volontairement prudent : une mauvaise série de phrases tire tout le fichier vers le bas.
Ce que le chiffre n’est pas
- Pas un prédicteur de la précision de transcription. Voir le test ci-dessus.
- Pas un STI. C’est un proxy construit à partir de niveaux, phrase par phrase. Il vous dit si la voix se tient assez au-dessus de ce qu’il y a derrière ; il ne modélise pas l’oreille d’un auditeur, et il n’a pas été testé contre des auditeurs.
- Pas un détecteur de parole pour la musique. Le détecteur de phrases lit un chant comme de la parole, donc un fichier de musique avec une voix peut revenir
buried. Lisez la musique sursceneBackgroundetspeechRatioailleurs, ou ne l’envoyez pas ici du tout. - Non mesuré sur les fichiers courts. En dessous de deux phrases mesurables, chaque champ de scène vaut
null. Traiteznullcomme « non mesuré », jamais comme « bon » ou « mauvais ». - Lu après les premières 0,4 s de chaque pause, pour que la queue du dernier mot ne compte pas comme du fond. Les pauses de moins d’une seconde ne comptent pas du tout.
Fichiers en attente et agents
Pour un stock de fichiers en attente, POST /v1/batch exécute la même route sur jusqu’à 20 URL en un appel et renvoie un résultat par URL, dans l’ordre. Pour un agent, l’outil MCP analyze_voice renvoie les mêmes champs pour une url (ou un path local avec le paquet npm, qui lit le fichier sur votre machine et le téléverse vers l’API pour le mesurer). Le palier gratuit comprend 1 000 appels par mois, ce qui suffit pour voir quelle part de votre flux entrant porte chaque note avant de décider quoi que ce soit.
Vous voulez d’abord voir les mêmes chiffres à la main ? Déposez un fichier sur l’espace de travail et ouvrez le groupe Scene dans l’onglet Voice, ou lisez les définitions et le statut de chaque mesure scene.* sur /lenses.
Ensuite dans VoiceLab docs
Ce que mesure vraiment la décroissance après la parole →
Nous avons construit un estimateur de réverbération bon marché à partir de la décroissance après chaque phrase, puis nous l’avons testé contre 24 pièces mesurées. Il ne mesure pas la réverbération. Voici les chiffres et ce que nous avons changé.
More in VoiceLab docs
- Intro
Voice AI : dix questions, dix réponses
Ce que AudioLab mesure pour un agent vocal, ce qu'il ne mesure pas, où va votre audio, comment un verdict est rendu et qui fixe les limites, comment comparer des versions et automatiser les contrôles, et ce qui est gratuit.
- Intro
Pourquoi la densité de mots de remplissage compte plus que leur nombre
Compter les « euh » est la mauvaise mesure. La densité dit s'ils posent problème.
- Practical
Une cible de loudness pragmatique pour les podcasts
La bonne cible de loudness pour les podcasts parlés n'est pas la même que pour la musique. Voici les chiffres et le pourquoi.
- Practical
Mesurer avec un seul claquement combien de temps une pièce résonne
Le profil room lit le temps de réverbération par bande d’octave à partir d’un claquement, d’un éclatement de ballon, d’une réponse impulsionnelle ou d’un balayage. Comment l’enregistrer, comment lire la réponse et jusqu’où les chiffres sont éprouvés.
- Practical
Hauteur et qualité de la voix : ce que le profil donne et ce qu’il retient
Le profil pitch lit où se situe une voix, de combien elle bouge, à quel point l’enregistrement est voisé et à quel point la voix est propre. Les chiffres du test, les limites et pourquoi la gigue et le scintillement ne sont pas encore proposés.
- Practical
Trouver les paquets perdus dans un enregistrement
Le profil chain compte les trous de silence numérique qu’un paquet perdu laisse au milieu de la parole. Comment il décide, les chiffres du test, ce qu’il ne voit pas et la mesure d’écho et de slapback.