/docs · VoiceLab · 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.
Mis à jour 13 oct. 2026
Un enregistrement de quelqu’un qui parle ne dit pas combien de temps la pièce résonne : nous avions construit une estimation simple à partir de la décroissance après chaque phrase, et elle ne mesurait pas du tout la réverbération (ce qu’elle mesure à la place). Un claquement, lui, le peut. Il est bref et fort, et la façon dont il s’éteint, c’est la pièce.
Le profil room de POST /v1/analyze/profile lit cette décroissance comme le fait l’acoustique des salles : l’intégrale rétrograde de Schroeder, par bande d’octave, avec T30 quand la décroissance couvre 45 dB et T20 sinon (la méthode de l’ISO 3382). C’est un preset payant, comme tout profil sauf basic.
L’enregistrer
- Une pièce calme, sans ventilateur, sans musique. La mesure utilise le calme avant le claquement pour mesurer le bruit, et ignore les 0,3 premières secondes du fichier pour que le toucher du bouton d’enregistrement ne compte pas.
- Lancez l’enregistrement, restez silencieux environ une seconde, puis frappez une seule fois dans les mains, fermement, à environ un mètre du microphone.
- Restez silencieux pendant que la pièce s’éteint ; deux à trois secondes suffisent pour la plupart des pièces. Si le fichier s’arrête alors que la pièce résonne encore, la décroissance est coupée et la lecture est trop basse.
- Ne saturez pas. Trois échantillons à pleine échelle marquent toute la réponse en faible confiance (
room.clipped).
Un éclatement de ballon fonctionne de la même façon et est lu comme un claquement ; dites-le avec roomSource: "balloon". Si vous avez déjà une réponse impulsionnelle, envoyez-la avec roomSource: "impulse" : elle donne chaque bande à partir de 125 Hz, là où un claquement donne 500 Hz et au-dessus. roomSource: "sweep" sert pour l’enregistrement du balayage que joue l’application RoomLab ; le moteur lit exactement ce signal.
La demander
curl https://audiolab.tools/v1/analyze/profile \
-H "Authorization: Bearer $AUDIOLAB_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/clap.wav", "profile": "room", "series": true}'
Sans series: true, vous obtenez les valeurs simples. Avec, vous obtenez aussi room.rt60Bands, le tableau par bande d’octave avec la courbe de décroissance. Un enregistrement qui ne contient ni claquement, ni éclatement, ni réponse impulsionnelle, ni balayage est un 422 avec le code room_not_measurable et la raison.
Ce qui revient
| Lens | Ce que c’est |
|---|---|
room.rt60Mid | Secondes pour que le son baisse de 60 dB, la médiane des bandes 500 Hz, 1 kHz et 2 kHz. Une salle de parole se situe vers 0,4 à 0,8 s, un salon vers 0,3 à 0,6 s. |
room.rt60Bands | Par bande : le temps, le bruit dans cette bande, T20 ou T30, la plage de décroissance, un confidence (high à partir de 35 dB de plage) et la courbe. Un claquement donne 500 Hz à 4 kHz ; les bandes plus basses le disent au lieu de deviner. |
room.flutterStrength, room.flutterPeriodMs | Un écho qui se répète vite entre des murs parallèles. Lisez 0,4 et plus comme un écho flottant, sous 0,3 comme aucun ; la période est fiable à partir de 0,3. |
room.noiseFloor | Le calme avant le claquement, en dBFS (relatif à la pleine échelle, pas un niveau sonore étalonné). Au-dessus d’environ -50 dBFS, le fond décide de la mesure. |
room.clapAt, room.clapProminence, room.clipped, room.method | Où le claquement a été trouvé, de combien il dépassait le reste (20 dB est le minimum), si le microphone a saturé et comment la réponse a été obtenue. |
Un enregistrement de balayage ajoute room.sweepRange, room.directToReverb et room.tooCloseToSpeaker.
Jusqu’où lui faire confiance
Nous avons éprouvé la méthode sur de vraies pièces, et nous disons ce qu’était l’épreuve.
- La mesure est celle de l’application RoomLab, exactement. Sur 385 réponses impulsionnelles mesurées, l’écart entre l’application et le moteur est de 0,0 s dans chaque bande.
- Face à la même méthode sur la réponse impulsionnelle brute (chaque réponse excitée avec un spectre de claquement et un bruit de pièce, puis mesurée comme un enregistrement) : la valeur médiane s’écartait de 3,9 pour cent en médiane sur 155 pièces, 86 pour cent à moins de 10 pour cent et 98 pour cent à moins de 20 pour cent. Les bandes qui se donnaient la confiance
high(au moins 35 dB de décroissance) s’écartaient de 1,5 pour cent en médiane ; aveclow, de 5,7 pour cent en médiane : lisez-les comme une indication. - Face à une implémentation indépendante (numpy, un autre auteur), la courbe de Schroeder concordait à moins de 5 pour cent dans les 112 pièces ayant au moins 35 dB de décroissance, 0,3 pour cent en médiane.
Ce qui n’a pas été éprouvé : un vrai claquement sur un vrai téléphone (le claquement a été simulé avec un spectre de claquement et un bruit de pièce), un vrai haut-parleur et un vrai microphone pour le balayage, et l’écho flottant dans de vraies pièces (il n’existe pas de vérité sur les pièces qui en ont). Les chiffres sont une mesure, pas un verdict : le moteur ne vous dit pas quoi traiter.
L’épreuve complète, avec les tableaux, se trouve dans le dépôt du moteur (scripts/validatie/room-ir/RESULT.md), et le statut de chaque mesure room.* est sur la page des lenses.
À lire aussi
Ensuite dans VoiceLab docs
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.
More in VoiceLab docs
- 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.
- Deep
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é.
- 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 pourquoi la mesure d’écho et de slapback n’est pas proposée.