Validation¶
Validation checks converted output before it is accepted into a manifest.
Checks¶
validate_output checks, in order:
- The path exists and is a file.
- The file is not empty.
soundfilecan read the audio header.- The sample rate matches
ConversionConfig.sample_rate. - The channel count matches
ConversionConfig.channels. - Duration is at least
ConversionConfig.min_duration_sec.
Failures return a ValidationResult with valid=False and a human-readable
reason.
Duration Probing¶
probe_duration uses FFprobe and can inspect formats that soundfile may not
read directly, including MP3.
CLI Example¶
Validation runs automatically after every successful conversion:
audio-prep convert \
--input-dir data/raw_mp3 \
--output-dir data/wav16k \
--sample-rate 16000 \
--channels 1 \
--min-duration-sec 0.5 \
--manifest data/manifest.jsonl
Python Example¶
from pathlib import Path
from audio_prep import ConversionConfig, validate_output
config = ConversionConfig(sample_rate=16_000, channels=1)
result = validate_output(Path("data/wav16k/clip.wav"), config)
if not result.valid:
print(result.reason)