Часовое аудио в WAV без сжатия — это 600 МБ. Через Telegram такое не отправишь (лимит 20 МБ), в облако грузится долго, на диске занимает место. Хорошая новость: для речи можно смело сжимать до 5-10 МБ за час без потери качества распознавания. Главное — правильный кодек и битрейт.
Мы взяли часовое интервью (исходник WAV 16 kHz mono 16-bit) и сжали в 8 вариантов. WER считали через WhisperX large-v3:
| Формат | Битрейт | Размер на час | WER | Качество |
|---|---|---|---|---|
| WAV (оригинал) | 1411 kbps | 605 МБ | 7.8% | ★★★★★ |
| FLAC | ~700 kbps | 300 МБ | 7.8% | ★★★★★ lossless |
| MP3 | 128 kbps | 56 МБ | 7.9% | ★★★★★ |
| MP3 | 64 kbps | 28 МБ | 8.3% | ★★★★ (рекомендуем) |
| MP3 | 32 kbps | 14 МБ | 11.4% | ★★★ |
| OPUS | 32 kbps | 14 МБ | 7.9% | ★★★★★ (рекомендуем) |
| OPUS | 24 kbps | 11 МБ | 8.0% | ★★★★★ оптимально |
| OPUS | 16 kbps | 7 МБ | 9.2% | ★★★★ |
| AAC (m4a) | 64 kbps | 28 МБ | 7.9% | ★★★★ |
FFmpeg — стандартный инструмент, есть бесплатно для Windows / Mac / Linux. Установка: ffmpeg.org/download.
ffmpeg -i input.wav -c:a libopus -b:a 24k -application voip output.opus
Флаг -application voip важен — это переключает кодек в
режим оптимизации для речи (psychoacoustic model тренирована на
человеческом голосе). Без флага качество хуже на 5-10%.
ffmpeg -i input.wav -c:a libmp3lame -b:a 64k -ar 16000 -ac 1 output.mp3
-ar 16000 — sample rate 16 kHz (для речи достаточно,
и WhisperX всё равно ресэмплит). -ac 1 — моно
(для одного говорящего стерео не нужно, ещё в 2× меньше).
ffmpeg -i meeting.mp4 -vn -c:a libopus -b:a 24k -application voip meeting.opus
-vn = no video. Из видео-файла сразу получите OPUS-аудио без промежуточных шагов.
# Bash (Linux/Mac)
for f in *.wav; do
ffmpeg -i "$f" -c:a libopus -b:a 24k -application voip "${f%.wav}.opus"
done
# PowerShell (Windows)
Get-ChildItem *.wav | ForEach-Object {
ffmpeg -i $_.FullName -c:a libopus -b:a 24k -application voip ($_.BaseName + ".opus")
}
Whisper и Vosk работают с 16 kHz внутри. Любой более высокий
sample rate (44.1 kHz, 48 kHz) будет downsamplен. Чтобы не
гонять лишние данные — сразу делайте 16 kHz через
-ar 16000.
Если у вас один говорящий или микрофон без направленности — стерео
не даёт никакой информации, только в 2× раздувает файл. Через
-ac 1 сворачиваете в моно.
Современные шумоподавители (RNNoise, NSNet2) умеют убирать постоянный гул вентиляторов и кондиционеров. Но не переборщите: агрессивное шумоподавление вырезает части речи вместе с шумом, падает разборчивость. Лучше записать чисто чем чистить потом.
ffmpeg -i input.wav -af "afftdn=nf=-25" -c:a libopus -b:a 24k clean.opus
afftdn=nf=-25 — порог −25 дБ. Удаляет только то что заметно тише голоса.
Иногда сжатия недостаточно (например, файл из колл-центра, 8 часов). Варианты:
ffmpeg -ss 00:00:00 -t 01:00:00 -c copy part1.mp3В веб-кабинете до 5 ГБ, в Telegram до 250 МБ. Демо 2 минуты любого файла бесплатно без регистрации.