Test files › Audio and video › silence-30s.wav

30-second silent WAV file

30 seconds of digital silence, 16-bit PCM mono.

↓ Download silence-30s.wav
Filenamesilence-30s.wav
FormatWAV
Size2.5 MB (2,646,044 bytes)
MIME typeaudio/wav
SHA-25634e20072bd56124004287878b329f8869869aba39273214720521bf7a0a3425f
What this file catchesTranscription and voice-activity pipelines that hang or return an empty result without distinguishing "no speech" from "processing failed". Also normalisation code that divides by peak amplitude - here, zero.

Handle it in code

Each snippet below was run against this exact file with Python 3.14.4 and Node 24.15.0 when this page was built, and the output shown is what it printed.

Python

Compare what the header declares with what the file holds, and refuse a header that is itself cut short.

import wave

try:
    with wave.open("silence-30s.wav") as w:
        declared = w.getnframes()
        frame_size = w.getsampwidth() * w.getnchannels()
        actual = len(w.readframes(declared)) // frame_size
    note = "truncated or lying header" if actual < declared else "ok"
    print(f"header says {declared} frames, file holds {actual}: {note}")
except (wave.Error, EOFError) as e:
    print("rejected:", str(e) or "the header is cut short")

Run against this file, it prints: header says 1323000 frames, file holds 1323000: ok

Related guides and tools

Sample MP3, WAV and MP4 filesFile signaturesMIME typesCheck a file's real typeVerify its SHA-256

Download & verify

curl -fsSL -o "silence-30s.wav" "https://files.hexaqa.com/audio/silence-30s.wav"
curl -fsSL "https://files.hexaqa.com/audio/silence-30s.wav" | sha256sum # expect: 34e20072bd56124004287878b329f8869869aba39273214720521bf7a0a3425f

More audio and video test files

declared-length-mismatch.wavno-id3-raw.mp3silence-5s.mp3tone-5s.wavtruncated-header.wavvery-short-10ms.wavempty-ftyp-only.mp4fake-mp4-wrong-magic.mp4

← All Audio and video files