# Speech audio quality checker

Paste a short WAV clip as base64 or hex and check ASR readiness: sample rate, channels, SNR estimate, clipping, level, and verdict.

## Run it

- **CLI:** `gizza tool speech-audio-quality-checker "UklGRmQGAABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YUAGAAAAAOkSIiQhMqY71j9TPj43OitZGwgJ6PWu4/zTOchxwUDAwMSMzsLcH+4TAfATBCXLMgc85z8SPrE2bSpfGvYH2PS44jbTtMc5wVrAK8U9z6rdKO8mAvUU5CVwM2U89D/MPSA2nSljGeUGyvPF4XPSM8cGwXnAmcXxz5PeMvA6A/gVwCYSNL08/D+DPYs1yyhmGNMFvPLT4LPRtsbXwJ3ADMao0H/fPvFNBPoWmiexNBI9/z80PfI09SdmF8AEr/Hj3/fQPcatwMXAg8Zj0W7gSvJfBfoXcShLNWI9/j/iPFU0HCdlFq0Do/D23j7QycWIwPLA/sYi0l/hWPNyBvkYRSniNa49+D+KPLUzQSZiFZoCmO8M3ojPWcVnwCPBfcfk0lLiZvSDB/YZFip0NvU97T8vPBEzYyVeFIcBju4j3dbO7cRKwFnBAcip00fjdvWVCPEa5CoDNzg+3j/PO2kygiRYE3MAhu0+3CfOhcQzwJTBiMhx1D7khvalCekbryuON3Y+yj9rO70xniNQEmH/f+xa23zNIcQgwNLBE8k81Tfll/e1CuAcdywVOLA+sT8DOw4xuCJIEU3+eet62tXMwsMRwBbCo8kL1jLmqPjFC9UdOy2XOOU+lD+WOlwwzyE+EDr9deqc2THMZ8MHwF7CNsrc1i/nuvnTDMge/S0WORY/cz8lOqUv5CAzDyf8cunB2JLLEcMCwKrCzcqx1y7ozPrgDbgfui6QOUI/TD+wOewu9x8nDhT7cejp1/bKv8IBwPvCaMuI2C/p3/vtDqYgdS8HOmk/Ij82OS8uBx8aDQL6cucU113KccIFwFDDB8xi2THq8vz4D5IhLDB5Oow/8j65OG4tFR4MDPD4dOZB1snJKMIOwKrDqsw/2jXrBf4CEXsi4DDmOqo/vj43OKssIR39Ct73eeVy1TnJ5MEbwAjEUM0f2zrsGf8LEmIjkDFQO8Q/hj6yN+QrKhztCc32fCL31h+Pd0yTIaMFEwNHEqM7n3EnuPwEZFCgl5TIWPOk/Bz6aNk0qOBrLB630kuIX05/HMcFfwDzFWc/O3VLvUgIeFQcmijNzPPU/wT0INnwpOxm5Bp/znuFU0h/H/sB/wKvFDtC53l3wZQMhFuMmLDTLPPw/dj1zNakoPRinBZHyreCV0aPG0MCjwB/GxtCl32jxeAQjF7wnyTQfPf8/Jz3ZNNMnPheVBITxvt/Z0CvGp8DMwJbGgdHw//r/AgAMABQAGwAfACAAHwAaABMACwABAPn/8P/o/+P/4P/g/+P/6f/x//r/AwAMABUAGwAfACAAHgAaABMACgABAPj/7//o/+L/4P/g/+T/6f/x//v/AwANABUAGwAfACAAHgAaABMACgAAAPf/7//n/+L/4P/g/+T/6v/y//v/BAANABYAHAAfACAAHgAZABIACQAAAPf/7v/n/+L/4P/h/+T/6v/y//z/BQAOABYAHAAfACAAHgAZABIACQAAAPb/7v/n/+L/4P/h/+T/6//z//z/BQAOABYAHAAgACAAHgAZABEACAAAAPb/7f/m/+L/4P/h/+X/6//z//3/BgAPABcAHQAgACAAHQAYABEACAD///X/7f/m/+H/4P/h/+X/7P/0//3/BgAPABcAHQAgACAAHQAYABAABwD+//X/7P/m/+H/4P/h/+X/7P/0//7/BwAQABcAHQAgACAAHQAXABAABwD+//T/7P/l/+H/4P/h/+b/7P/1//7/BwAQABgAHQAgACAAHQAXAA8ABgD9//T/6//l/+H/4P/h/+b/7f/1////CAARABgAHQAgACAAHQAXAA8ABgD9//P/6//l/+H/4P/i/+b/7f/2/wAACAARABkAHgAgACAAHAAWAA4ABQD8//P/6//k/+H/4P/i/+f/7v/2/wAACQASABkAHgAgAB8AHAAWAA4ABAD8//L/6v/k/+H/4P/i/+f/7v/3/wAACQASABkAHgAgAB8AHAAWAA0ABAD7//L/6v/k/+D/4P/i/+f/7//4/wAACgATABoAHgAgAB8AGwAVAA0AAwD7//H/6f/k/+D/4P/i/+j/7//4/wEACgATABoA"`
- **Web:** https://gizza.ai/tools/speech-audio-quality-checker/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/speech-audio-quality-checker/tool.json

## Inputs

- `input` — WAV bytes (base64 or hex) _(field)_
- `input_format` — Input encoding _(field)_
- `output` — Output format _(field)_
- `target_sample_rate` — Target sample rate (Hz) _(field)_
- `min_snr_db` — Minimum SNR (dB) _(field)_
- `max_clipping_pct` — Max clipping (%) _(field)_
- `clipping_threshold` — Clipping threshold (full scale) _(field)_

## Output

- Quality report (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `input` — WAV bytes (base64 or hex)
- `input_format` — Input encoding
- `output` — Output format
- `target_sample_rate` — Target sample rate (Hz)
- `min_snr_db` — Minimum SNR (dB)
- `max_clipping_pct` — Max clipping (%)
- `clipping_threshold` — Clipping threshold (full scale)

Example: `https://gizza.ai/tools/speech-audio-quality-checker/?input=UklGRmQGAABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YUAGAAAAAOkSIiQhMqY71j9TPj43OitZGwgJ6PWu4%2FzTOchxwUDAwMSMzsLcH%2B4TAfATBCXLMgc85z8SPrE2bSpfGvYH2PS44jbTtMc5wVrAK8U9z6rdKO8mAvUU5CVwM2U89D%2FMPSA2nSljGeUGyvPF4XPSM8cGwXnAmcXxz5PeMvA6A%2FgVwCYSNL08%2FD%2BDPYs1yyhmGNMFvPLT4LPRtsbXwJ3ADMao0H%2FfPvFNBPoWmiexNBI9%2Fz80PfI09SdmF8AEr%2FHj3%2FfQPcatwMXAg8Zj0W7gSvJfBfoXcShLNWI9%2Fj%2FiPFU0HCdlFq0Do%2FD23j7QycWIwPLA%2FsYi0l%2FhWPNyBvkYRSniNa49%2BD%2BKPLUzQSZiFZoCmO8M3ojPWcVnwCPBfcfk0lLiZvSDB%2FYZFip0NvU97T8vPBEzYyVeFIcBju4j3dbO7cRKwFnBAcip00fjdvWVCPEa5CoDNzg%2B3j%2FPO2kygiRYE3MAhu0%2B3CfOhcQzwJTBiMhx1D7khvalCekbryuON3Y%2Byj9rO70xniNQEmH%2Ff%2Bxa23zNIcQgwNLBE8k81Tfll%2Fe1CuAcdywVOLA%2BsT8DOw4xuCJIEU3%2Beet62tXMwsMRwBbCo8kL1jLmqPjFC9UdOy2XOOU%2BlD%2BWOlwwzyE%2BEDr9deqc2THMZ8MHwF7CNsrc1i%2FnuvnTDMge%2FS0WORY%2Fcz8lOqUv5CAzDyf8cunB2JLLEcMCwKrCzcqx1y7ozPrgDbgfui6QOUI%2FTD%2BwOewu9x8nDhT7cejp1%2FbKv8IBwPvCaMuI2C%2Fp3%2FvtDqYgdS8HOmk%2FIj82OS8uBx8aDQL6cucU113KccIFwFDDB8xi2THq8vz4D5IhLDB5Oow%2F8j65OG4tFR4MDPD4dOZB1snJKMIOwKrDqsw%2F2jXrBf4CEXsi4DDmOqo%2Fvj43OKssIR39Ct73eeVy1TnJ5MEbwAjEUM0f2zrsGf8LEmIjkDFQO8Q%2Fhj6yN%2BQrKhztCc32fCL31h%2BPd0yTIaMFEwNHEqM7n3EnuPwEZFCgl5TIWPOk%2FBz6aNk0qOBrLB630kuIX05%2FHMcFfwDzFWc%2FO3VLvUgIeFQcmijNzPPU%2FwT0INnwpOxm5Bp%2FznuFU0h%2FH%2FsB%2FwKvFDtC53l3wZQMhFuMmLDTLPPw%2Fdj1zNakoPRinBZHyreCV0aPG0MCjwB%2FGxtCl32jxeAQjF7wnyTQfPf8%2FJz3ZNNMnPheVBITxvt%2FZ0CvGp8DMwJbGgdHw%2F%2Fr%2FAgAMABQAGwAfACAAHwAaABMACwABAPn%2F8P%2Fo%2F%2BP%2F4P%2Fg%2F%2BP%2F6f%2Fx%2F%2Fr%2FAwAMABUAGwAfACAAHgAaABMACgABAPj%2F7%2F%2Fo%2F%2BL%2F4P%2Fg%2F%2BT%2F6f%2Fx%2F%2Fv%2FAwANABUAGwAfACAAHgAaABMACgAAAPf%2F7%2F%2Fn%2F%2BL%2F4P%2Fg%2F%2BT%2F6v%2Fy%2F%2Fv%2FBAANABYAHAAfACAAHgAZABIACQAAAPf%2F7v%2Fn%2F%2BL%2F4P%2Fh%2F%2BT%2F6v%2Fy%2F%2Fz%2FBQAOABYAHAAfACAAHgAZABIACQAAAPb%2F7v%2Fn%2F%2BL%2F4P%2Fh%2F%2BT%2F6%2F%2Fz%2F%2Fz%2FBQAOABYAHAAgACAAHgAZABEACAAAAPb%2F7f%2Fm%2F%2BL%2F4P%2Fh%2F%2BX%2F6%2F%2Fz%2F%2F3%2FBgAPABcAHQAgACAAHQAYABEACAD%2F%2F%2FX%2F7f%2Fm%2F%2BH%2F4P%2Fh%2F%2BX%2F7P%2F0%2F%2F3%2FBgAPABcAHQAgACAAHQAYABAABwD%2B%2F%2FX%2F7P%2Fm%2F%2BH%2F4P%2Fh%2F%2BX%2F7P%2F0%2F%2F7%2FBwAQABcAHQAgACAAHQAXABAABwD%2B%2F%2FT%2F7P%2Fl%2F%2BH%2F4P%2Fh%2F%2Bb%2F7P%2F1%2F%2F7%2FBwAQABgAHQAgACAAHQAXAA8ABgD9%2F%2FT%2F6%2F%2Fl%2F%2BH%2F4P%2Fh%2F%2Bb%2F7f%2F1%2F%2F%2F%2FCAARABgAHQAgACAAHQAXAA8ABgD9%2F%2FP%2F6%2F%2Fl%2F%2BH%2F4P%2Fi%2F%2Bb%2F7f%2F2%2FwAACAARABkAHgAgACAAHAAWAA4ABQD8%2F%2FP%2F6%2F%2Fk%2F%2BH%2F4P%2Fi%2F%2Bf%2F7v%2F2%2FwAACQASABkAHgAgAB8AHAAWAA4ABAD8%2F%2FL%2F6v%2Fk%2F%2BH%2F4P%2Fi%2F%2Bf%2F7v%2F3%2FwAACQASABkAHgAgAB8AHAAWAA0ABAD7%2F%2FL%2F6v%2Fk%2F%2BD%2F4P%2Fi%2F%2Bf%2F7%2F%2F4%2FwAACgATABoAHgAgAB8AGwAVAA0AAwD7%2F%2FH%2F6f%2Fk%2F%2BD%2F4P%2Fi%2F%2Bj%2F7%2F%2F4%2FwEACgATABoA&input_format=base64&output=report&target_sample_rate=16000&min_snr_db=20&max_clipping_pct=1.0&clipping_threshold=0.99`

---

## About this tool

Paste a short uncompressed WAV recording and this tool checks whether it is ready
for speech-to-text / ASR. It decodes the actual audio bytes in WebAssembly, then
reports the sample rate, channel count, duration, peak and RMS dBFS, an estimated
signal-to-noise ratio, clipped-sample percentage, longest clipped run, and an
overall readiness verdict.

Use it before sending a representative clip to a transcription system. The
default thresholds match common ASR guidance: 16 kHz or better, mono preferred,
about 20 dB or better SNR, and no more than 1% clipped samples. You can tighten or
relax those thresholds when your pipeline has different requirements.

### Worked example

The built-in example is a tiny 16 kHz mono PCM WAV with loud speech-like frames
and quiet background frames. With default settings, the report includes:

```text
[PASS] Sample rate
[PASS] Channels
Verdict: READY for ASR / transcription
```

Switch **Output format** to `json` when you need machine-readable metrics such as
`sample_rate`, `snr_db`, `clipping_pct`, and `verdict`.

### Limits and edge cases

- This pure browser tool decodes uncompressed RIFF/WAVE only: PCM 8/16/24/32-bit
  integer and IEEE-float WAV. Convert MP3, AAC/M4A, FLAC, Ogg/Opus, A-law, or
  mu-law to PCM WAV first.
- Paste short representative clips rather than multi-hour recordings; base64 text
  grows about 33% larger than the binary file.
- SNR is a percentile estimate from 20 ms frame levels, not a voice-activity or
  perceptual speech-quality model.
- Everything runs locally in the browser; the audio text you paste is not
  uploaded.

## FAQ

<details>
<summary>What audio formats does this checker support?</summary>

It supports uncompressed RIFF/WAVE files: PCM 8-bit, 16-bit, 24-bit, and 32-bit
integer WAV, plus IEEE 32-bit and 64-bit float WAV. Compressed containers such as
MP3, AAC/M4A, FLAC, Ogg/Opus, A-law, and mu-law are rejected with a clear message
so the result is not guessed.

</details>

<details>
<summary>How is SNR estimated?</summary>

The tool downmixes the clip to mono, splits it into 20 ms frames, measures each
frame's RMS level, and subtracts the 10th-percentile level from the 90th-percentile
level. That gives a useful noise-floor estimate for quick preflight checks, but it
is not a true speech/non-speech SNR because no voice-activity model runs here.

</details>

<details>
<summary>Why does stereo audio warn instead of fail?</summary>

Most ASR systems downmix to mono internally. Stereo usually increases file size
without improving transcription accuracy, so the checker marks it as a warning:
still usable, but worth downmixing before batch transcription.

</details>

<details>
<summary>Can I upload a .wav file directly?</summary>

This generic page uses pasted base64 or hex text rather than a file picker. Run a
command such as `base64 clip.wav`, paste the output into the input box, and leave
**Input encoding** set to `base64`.

</details>

## Related tools

- [Convert an Audio File](https://gizza.ai/tools/audio-convert/): Convert any audio file to MP3, WAV, OGG, FLAC or M4A right in your browser — pick a bitrate for lossy formats. Runs locally, nothing is uploaded, free.
- [Change Audio Speed (Keep Pitch)](https://gizza.ai/tools/audio-time-stretch/): Free online audio speed & tempo changer — speed up or slow down any track without changing the pitch. Set a factor, BPM ratio, or percentage in your browser.
- [Extract Audio from a Video](https://gizza.ai/tools/extract-audio-from-video/): Pull the audio track out of any video as MP3 or WAV, right in your browser — pick a format and bitrate. Runs locally with ffmpeg, nothing is uploaded, free.
- [Convert a Voice Note](https://gizza.ai/tools/voice-note-converter/): Convert WhatsApp, Telegram, Signal and other Opus/Ogg voice notes to MP3 or WAV, or encode audio back to Opus voice notes in your browser.
- [Convert AIFF to FLAC](https://gizza.ai/tools/aiff-to-flac/): Convert AIFF or AIF audio to lossless FLAC in your browser — preserve samples and textual tags, choose FLAC compression level 0-12, and download the result.
