/docs · VoiceLab · Practical
Measure how long a room rings with one clap
The room profile reads the reverberation time per octave band from one clap, a balloon pop, an impulse response or a sweep. How to record it, how to read the answer, and how far the numbers are tested.
Updated Oct 13, 2026
A recording of someone talking cannot tell you how long the room rings: we built a cheap proxy from the decay after each phrase and it did not measure reverb at all (what it measures instead). A clap can. It is short and loud, and the way it dies away is the room.
The room profile of POST /v1/analyze/profile reads that decay the way room acoustics does it: the backward integral of Schroeder, per octave band, with T30 when the decay has 45 dB of range and T20 otherwise (the method of ISO 3382). It is a paid preset, like every profile except basic.
Record it
- A quiet room, no fan, no music. The measurement uses the quiet before the clap to measure the noise, and it skips the first 0.3 s of the file so the tap on the record button does not count.
- Start recording, stay quiet for about a second, then clap once, firmly, about a metre from the microphone.
- Stay quiet while the room rings out, two to three seconds is enough for most rooms. If the file ends while the room is still ringing, the decay is cut short and the reading is too low.
- Do not clip. Three samples at full scale mark the whole answer as low confidence (
room.clipped).
A balloon pop works the same way and is read like a clap; say so with roomSource: "balloon". If you already have an impulse response, send that with roomSource: "impulse": it gives every band from 125 Hz, where a clap gives 500 Hz and up. roomSource: "sweep" is for a recording of the sweep that the RoomLab app plays; the engine reads exactly that signal.
Ask for it
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}'
Without series: true you get the single values. With it you also get room.rt60Bands, the table per octave band with the decay curve. A recording that holds no clap, a pop, an impulse response or a sweep is a 422 with the code room_not_measurable and the reason.
What comes back
| Lens | What it is |
|---|---|
room.rt60Mid | Seconds for the sound to fall 60 dB, the median of the 500 Hz, 1 kHz and 2 kHz bands. A speech room sits around 0.4 to 0.8 s, a living room 0.3 to 0.6 s. |
room.rt60Bands | Per band: the time, the noise in that band, T20 or T30, the decay range, a confidence (high from 35 dB of range) and the curve. A clap gives 500 Hz to 4 kHz; the lower bands say so instead of guessing. |
room.flutterStrength, room.flutterPeriodMs | A fast repeating echo between parallel walls. Read 0.4 and up as flutter, under 0.3 as none; the period is reliable from 0.3. |
room.noiseFloor | The quiet before the clap, in dBFS (relative to full scale, not a calibrated sound level). Above about -50 dBFS the background decides the measurement. |
room.clapAt, room.clapProminence, room.clipped, room.method | Where the clap was found, how far it stood out (20 dB is the minimum), whether the microphone overloaded, and how the response was obtained. |
A sweep recording adds room.sweepRange, room.directToReverb and room.tooCloseToSpeaker.
How far to trust it
We tested the method against real rooms, and we say what the test was.
- The measurement is the one of the RoomLab app, exactly. Over 385 measured impulse responses the difference between the app and the engine is 0.0 s in every band.
- Against the same method on the bare impulse response (every response struck with a clap spectrum and room noise, then measured as a recording): the mid value was a median 3.9 percent off over 155 rooms, 86 percent within 10 percent and 98 percent within 20 percent. Bands that gave themselves
highconfidence (at least 35 dB of decay) were a median 1.5 percent off; withlowconfidence a median 5.7 percent, so read those as an indication. - Against an independent implementation (numpy, another author) the Schroeder curve agreed within 5 percent in all 112 rooms with at least 35 dB of decay, a median 0.3 percent.
What was not tested: a real clap on a real phone (the clap was simulated with a clap spectrum and room noise), a real loudspeaker and microphone for the sweep, and flutter echo on real rooms (there is no truth for which rooms flutter). The numbers are a measurement, not a verdict: the engine does not tell you what to treat.
The full test, with the tables, is in the engine repository (scripts/validatie/room-ir/RESULT.md), and the status of every room.* measure is on the lenses page.
Related
Next in VoiceLab docs
Pitch and voice quality: what the profile gives and what it holds back →
The pitch profile reads where a voice sits, how much it moves, how voiced the recording is and how clean the voice is. The test numbers, the limits, and why jitter and shimmer are not offered yet.
More in VoiceLab docs
- Intro
Voice AI: ten questions, answered
What AudioLab measures for a voice agent, what it does not, where your audio goes, how a verdict is made and who sets the limits, how to compare versions and automate the checks, and what is free.
- Intro
Why filler density matters more than filler count
Counting "ums" is the wrong measurement. Density tells you whether they are a problem.
- Practical
A pragmatic loudness target for podcasts
The right loudness target for spoken-word podcasts is not the same as music. Here are the numbers and why.
- Practical
Read the audio before you transcribe
One call before the model: what the scene fields tell you about a file, and what they do not, with the numbers from our own transcription test.
- Deep
What envelope decay after speech actually measures
We built a cheap reverb proxy from the decay after each phrase, then tested it against 24 measured rooms. It does not measure reverb. Here are the numbers and what we changed.
- Practical
Find lost packets in a recording
The chain profile counts the gaps of digital silence that a lost packet leaves in the middle of speech. How it decides, the test numbers, what it cannot see, and why the echo and slapback measure is not offered.