Now the audio you deliver
No file at hand? See the verdict on our sample first
The engine measured one of our sample recordings and the same rules the browser uses judged it against the starting limits.
Read this before the verdict: our sample is one read sentence from our sample set, judged here against the starting limits, the range of 48 clean synthetic voices. It fails on integrated loudness and noise floor: on those measures it sits outside the range we measured on those voices. Against the EBU R128 broadcast: -23 LUFS, -1 dBTP target the same file gets "Pass". A limit does exactly this; the only question is whose limit it is, and that is why you set your own below.
speech-female-pangram.mp3 · 15.1 s · Starting point: 48 clean synthetic-voice recordings
Fail
At least one rule is broken by more than the margin of its measure. The rules below say which, and what to do.
2 rules broken: Integrated loudness, Noise floor.
- Pass · critical Clipped samples is 0, inside your limit (at most 0).
- Pass · critical Dropouts is 0, inside your limit (at most 0).
- Pass · critical Peak is -5.3 dBFS, inside your limit (at least -60.0 dBFS).
- Fail Integrated loudness is -23.2 LUFS, 1.2 LUFS under your minimum of -22.0 LUFS. The delivered audio is quieter than your range. What to do: Change the gain before encoding, by the same amount for every utterance, then measure again.
- Pass True peak is -5.3 dBTP, inside your limit (at most -2 dBTP).
- Fail Noise floor is -59.7 dBFS, 5.3 dBFS over your maximum of -65.0 dBFS. The noise floor is higher than your limit. What to do: Find the stage that adds the noise: the synthesis, a resampler, the encoder or the path after them.
- Pass Bandwidth is 11003 Hz, inside your limit (at least 7900 Hz).
Open the full report: five panels, each with what it measures, what good is, who chose the limit and what it does not see
Loudness and true peak
Does the delivered audio sit at the level you chose, without peaks that an encoder or a phone line will clip?
-23.2 LUFS
Margin: ±0.1 LU
Starting limit: at least -22.0 LUFS, at most -18.0 LUFS
Fail-5.3 dBTP
Margin: +0.2 / -0.4 dB
Starting limit: at most -2 dBTP
Pass-5.3 dBFS
No limit set: shown, not judged.
Pass2.2 LU
Margin: ±1 LU
No limit set: shown, not judged.
- What good is
- Integrated loudness inside your range and a true peak under your ceiling. The starting range is what we measured on 48 clean synthetic-voice recordings; a published delivery target can replace it.
- Who chose the limit
- You, or the platform whose target you pick. AudioLab only measured the starting range.
- If it is red
- Too quiet or too loud: change the gain before encoding, by the same amount for every utterance. True peak over the ceiling: limit before delivery. A peak under -60 dBFS is a file with nothing in it: do not ship it.
- What it does not see
- Whether the level suits the listener's device or the far end of a phone line, and how loud the other party is.
Clipping, noise floor, gaps and bandwidth
Did anything on the way out damage the signal: a stage that clips, a path that adds noise, a buffer that drops audio, a codec that cuts the band?
0
No limit set: shown, not judged.
Pass-59.7 dBFS
Starting limit: at most -65.0 dBFS
Fail0
No limit set: shown, not judged.
Passnot measured
Margin: ±2 ms
No limit set: shown, not judged.
11003 Hz
Starting limit: at least 7900 Hz
Pass0 ratio
No limit set: shown, not judged.
- What good is
- No clipped samples, no gaps of digital silence, a noise floor under your limit, and a bandwidth at or above what the destination carries.
- Who chose the limit
- Clipping and gaps: zero is the only sensible limit, so AudioLab sets it and you can switch it off. Noise floor and bandwidth: you, from your own good files.
- If it is red
- Clipping: lower the gain before the stage that clips (the synthesis output, a resampler, the encoder). A gap: look at the streaming or encoding path that assembled the file. A noise floor that rose: find the stage that adds it: the synthesis, a resampler, the encoder or the path after them. A band that narrowed: the source sample rate or a codec cut it.
- What it does not see
- Distortion that stays under the rail, codec artefacts, clicks inside sound, and packet loss a codec concealed. The gap count is a lower bound.
Pitch and voice quality
Is this the same voice as before, at its usual pitch and with its usual harmonicity?
218 Hz
Margin: ±3 percent
No limit set: shown, not judged.
16.2 dB
No limit set: shown, not judged.
- What good is
- Pitch inside the range you measured on good files of this voice, and a harmonics-to-noise ratio not below your floor. There is no starting range here: every voice has its own.
- Who chose the limit
- You, from good files of the same voice.
- If it is red
- A pitch outside the range: the wrong voice, a changed speed, or a resampling step. A harmonics-to-noise ratio that fell: added noise or a lossy codec on the path.
- What it does not see
- Naturalness, pronunciation, prosody and emotion. Jitter and shimmer are beta and are not shown.
Measured with the engine the check uses, decoded with ffmpeg here and with your browser in the live check, so the last digits can differ for the same file.
From the browser to the build
The limits you set here download in the format of the CI gate: a script that measures every file with the API and fails the build with a line that names the number, its value, its limit, its status and its margin. The gap count has no field among the ten numbers of that guide yet, so the download says so instead of dropping it. Here your audio is never uploaded; on the API route the file goes to the EU-hosted service and only numbers come back.
Pass, check or fail, and why
- Every rule is a measure with a status. The panels carry only validated measures. A limit you put on a proxy is information, never a pass or fail.
- The margin decides what the number can say. A value closer to its limit than the published margin of its measure is uncertain: the measure cannot tell which side it is on, so the verdict says "check", not "fail".
- Three faults fail the file on their own, whatever else passes: Clipped samples (at most 0), Dropouts (at most 0), Peak (at least -60). You can switch each of them off.
- There is no composite score. An average hides a critical defect, and no weighting of ours has been validated against anything. You get the rules, their outcomes and one verdict.
- The limits are yours. The starting set is the 5th to 95th percentile of 48 clean synthetic-voice recordings we measured on 2026-10-11, rounded outward: Integrated loudness at least -22 and at most -18; True peak at most -2; Noise floor at most -65; Bandwidth at least 7900. That is what we measured, not what is good. By construction up to about one in ten of those clean voices falls outside each limit, and with four limits a clean voice lands on "check" or "fail" on at least one of them more often than that: a property of a percentile range, not an error rate of the measures. Replace the set with the range of twenty of your own good files, or pick a published delivery target.
- The result says what produced it. It carries the rules version (outgoing-qc-rules/1), the engine version and a hash of your limits, so you can tell which rules and which limits judged a file. The last digits of a value can differ between decoders, here and in a pipeline; that is why the margin decides, not the digit.
What it does not do
- It does not judge how natural the voice sounds, whether the words are right or how they are pronounced, or how the audio sounds on the listener's device; see what AudioLab does not do.
- It keeps nothing: no history, no trend across versions. Two files side by side is as far as it goes; many files at once is the QC view, and your recogniser under known conditions is the stress test.