Diagnosing Acoustic vs. Language Model Errors in Practice
How to tell whether a bad transcript is an acoustic problem or a language-model problem, and what to change in each case.
- acoustic-model
- language-model
- guide
A simple diagnostic flow
Case 1 — Acoustic problems
Symptoms: garbled syllables, missing words, wrong sounds entirely.
Typical causes and fixes:
# 1. Wrong sample rate/channels — always re-check this first
ffprobe -v error -show_entries stream=sample_rate,channels input.wav
# 2. Background noise overwhelming speech — try denoising first
ffmpeg -i input.wav -af "afftdn=nf=-25" denoised.wav
# 3. Model too small for a noisy/technical recording — step up a size
./whisper-cli -m models/ggml-small.en.bin -f denoised.wavCase 2 — Language-model problems
Symptoms: fluent-sounding sentences that are factually wrong, repeated phrases, or invented content ("hallucination").
# Reduce hallucination by disabling temperature fallback drift
./whisper-cli -m models/ggml-base.en.bin -f audio.wav \
--temperature 0.0 \
--entropy-thold 2.4 \
--logprob-thold -1.0
# Provide domain vocabulary as an "initial prompt" to bias the language side
./whisper-cli -m models/ggml-base.en.bin -f audio.wav \
--prompt "Kubernetes, gRPC, whisper.cpp, ffmpeg"The --prompt flag is the most underused tool here: whisper.cpp treats it as prior context, which measurably improves recognition of jargon, product names, and acronyms without retraining anything.
Combining both fixes
For genuinely difficult audio (noisy technical meeting, non-native accent), apply both layers:
ffmpeg -i meeting.wav -af "afftdn=nf=-25,loudnorm" clean.wav \
|| { echo "Error: audio cleanup failed" >&2; exit 1; }
./whisper-cli -m models/ggml-medium.en.bin -f clean.wav \
--prompt "sprint planning, Jira, staging environment" \
--temperature 0.0 \
|| { echo "Error: transcription failed on cleaned audio" >&2; exit 1; }Up next
The final article looks at how acoustic and language modeling combine at the architecture level inside a modern end-to-end transformer like Whisper, and what that means for future improvements.