
Требования Whisper к аудио: полное руководство по поддерживаемым форматам и характеристикам
Eric King
Author
Понимание требований Whisper к аудио важно для наилучшей точности транскрипции. Whisper гибок и поддерживает многие форматы; соблюдение оптимальных характеристик обеспечивает максимальную производительность.
В этом руководстве рассмотрены все требования к аудио, поддерживаемые форматы, технические характеристики и лучшие практики подготовки файлов для транскрипции Whisper.
Поддерживаемые аудиоформаты
Whisper поддерживает широкий спектр аудио- и видеоформатов через FFmpeg. Полный список:
Аудиоформаты
| Формат | Расширение | Примечания |
|---|---|---|
| WAV | .wav | ✅ Предпочтительно, без потерь |
| MP3 | .mp3 | ✅ Самый распространённый |
| FLAC | .flac | ✅ Без потерь, хорошее сжатие |
| M4A | .m4a | ✅ Формат Apple, кодек AAC |
| AAC | .aac | ✅ Высококачественное сжатие |
| OGG | .ogg | ✅ Открытый формат |
| OPUS | .opus | ✅ Низкая задержка, удобно для веба |
| WMA | .wma | ⚠️ Реже встречается |
| AMR | .amr | ⚠️ Низкое качество, телефонные записи |
Видеоформаты (извлечение аудио)
| Формат | Расширение | Примечания |
|---|---|---|
| MP4 | .mp4 | ✅ Самый распространённый видеоформат |
| AVI | .avi | ✅ Старый формат, всё ещё поддерживается |
| MKV | .mkv | ✅ Контейнер |
| MOV | .mov | ✅ QuickTime |
| WebM | .webm | ✅ Веб-видео |
| FLV | .flv | ⚠️ Устаревший Flash |
Важно: Whisper автоматически извлекает аудио из видеофайлов — можно загружать видео напрямую.
Требования к частоте дискретизации
Оптимальная частота: 16 кГц
Whisper внутренне передискретизирует всё аудио в 16 кГц моно перед обработкой. Это оптимальная частота для распознавания речи.
Поддерживаемые частоты
Whisper принимает любую частоту дискретизации; важно следующее:
| Входная частота | Обработка в Whisper | Рекомендация |
|---|---|---|
| 8 кГц | Передискретизация до 16 кГц | ✅ Телефония, приемлемо |
| 16 кГц | Используется как есть | ✅ Оптимально, без передискретизации |
| 22,05 кГц | Передискретизация до 16 кГц | ✅ Хорошее качество |
| 44,1 кГц | Передискретизация до 16 кГц | ✅ Качество CD, нормально |
| 48 кГц | Передискретизация до 16 кГц | ✅ Профессиональное аудио, нормально |
| 96 кГц | Передискретизация до 16 кГц | ⚠️ Избыточно, крупнее файлы |
Главное: более высокая частота не повышает точность Whisper. Модель обучалась на аудио 16 кГц; подача 16 кГц на вход избегает лишней передискретизации и размера файла.
Лучшая практика
# Convert audio to 16 kHz before processing (optional optimization)
import ffmpeg
def convert_to_16khz(input_file, output_file):
stream = ffmpeg.input(input_file)
stream = ffmpeg.output(
stream,
output_file,
acodec='pcm_s16le',
ac=1, # Mono
ar=16000 # 16 kHz
)
ffmpeg.run(stream, overwrite_output=True)
Требования к разрядности
Поддерживаемая разрядность
| Разрядность | Статус | Примечания |
|---|---|---|
| 8 бит | ✅ Поддерживается | Низкое качество, не рекомендуется |
| 16 бит | ✅ Рекомендуется | Стандарт, достаточно |
| 24 бит | ✅ Поддерживается | Профессионально, крупнее файлы |
| 32 бит float | ✅ Поддерживается | Студийное качество, часто избыточно |
Рекомендация: PCM 16 бит — стандарт и отличное качество для распознавания речи. Большая разрядность не улучшает точность транскрипции.
Конфигурация каналов: моно и стерео
Моно (рекомендуется)
Whisper обрабатывает аудио внутренне в моно, поэтому моновход оптимален.
Преимущества:
- Меньший размер файла
- Быстрее обработка
- Не нужно смешивать каналы
- Оптимально для одного говорящего
Используйте моно для:
- Записей с одним говорящим
- Телефонных звонков
- Подкастов с одним ведущим
- Большинства задач транскрипции
Стерео (поддерживается)
Стереофайлы автоматически преобразуются в моно (усреднение или один канал).
Когда стерео уместно:
- Разные говорящие на разных каналах (редко)
- Исходная запись стерео (конвертация автоматическая)
Лучшая практика: при возможности конвертируйте стерео в моно до обработки:
import ffmpeg
# Convert stereo to mono
stream = ffmpeg.input('stereo_audio.wav')
stream = ffmpeg.output(
stream,
'mono_audio.wav',
ac=1 # Mono channel
)
ffmpeg.run(stream, overwrite_output=True)
Ограничения размера файла
Практические пределы
У Whisper нет жёсткого лимита размера, но есть практические соображения:
| Размер файла | Время обработки | Рекомендация |
|---|---|---|
| < 10 МБ | Секунды | ✅ Идеально |
| 10–100 МБ | Минуты | ✅ Хорошо |
| 100–500 МБ | 10–30 минут | ⚠️ Рассмотрите разбиение |
| > 500 МБ | 30+ минут | ⚠️ Нужно разбивать |
Память
Большие файлы требуют больше RAM/VRAM:
- Модель base: ~1–2 ГБ VRAM
- Модель small: ~2–3 ГБ VRAM
- Модель medium: ~5–6 ГБ VRAM
- Модель large: ~10–12 ГБ VRAM
Лучшая практика: для файлов > 100 МБ разбивайте на части (см. ниже).
Ограничения по длительности
Рекомендуемая длительность
| Длительность | Статус | Примечания |
|---|---|---|
| < 30 минут | ✅ Оптимально | Обрабатывать сразу |
| 30–60 минут | ✅ Хорошо | Может понадобиться разбиение |
| 1–2 часа | ⚠️ Рекомендуется разбиение | Часто точнее по частям |
| > 2 часов | ⚠️ Нужно разбивать | Для стабильности |
Зачем разбивать длинное аудио?
- Память: меньше ошибок нехватки памяти
- Точность: короткие фрагменты лучше сохраняют контекст
- Скорость: возможен параллельный запуск
- Отказоустойчивость: при сбое одного фрагмента остальные могут пройти
Стратегия разбиения:
# Split long audio into 30-60 second chunks with 5-10 second overlap
def chunk_audio(audio_path, chunk_length=60, overlap=5):
# Implementation: split audio into segments
# Process each chunk separately
# Merge results with timestamps
pass
Требования к качеству аудио
Минимальные стандарты
Для приемлемой точности аудио должно соответствовать:
| Фактор | Минимум | Оптимум |
|---|---|---|
| Отношение сигнал/шум | > 10 дБ | > 20 дБ |
| Битрейт (MP3) | ≥ 64 кбит/с | ≥ 128 кбит/с |
| Уровень громкости | Слышимо | Нормализовано до −3 дБ |
| Фоновый шум | Минимальный | Нет |
| Эхо/реверберация | Минимальные | Нет |
Чеклист качества
Перед транскрипцией убедитесь:
- ✅ Чёткая речь: говорящие разборчивы
- ✅ Мало шума: фон не перекрывает речь
- ✅ Ровная громкость: без резких скачков
- ✅ Без клиппинга: нет искажений и перегрузки
- ✅ Хороший микрофон: качественная запись
Требования к кодекам
Рекомендуемые кодеки
| Кодек | Формат | Качество | Рекомендация |
|---|---|---|---|
| PCM | WAV | Без потерь | ✅ Лучше для точности |
| FLAC | FLAC | Без потерь | ✅ Отлично, со сжатием |
| AAC | M4A, MP4 | Высокое | ✅ Очень хорошо |
| MP3 | MP3 | С потерями | ✅ Хорошо при ≥128 кбит/с |
| OGG Vorbis | OGG | С потерями | ✅ Хорошее качество |
| OPUS | OPUS | С потерями | ✅ Хорошо, низкая задержка |
Практика по кодекам
Для максимальной точности:
- Используйте PCM (WAV) или FLAC (без потерь)
Для практического применения:
- Используйте AAC или MP3 ≥128 кбит/с (отличные результаты)
Избегайте:
- Очень низкого битрейта MP3 (< 64 кбит/с)
- Сильно сжатых форматов
- Телефонных кодеков (AMR, G.711), если не нужно
Рекомендации по предобработке
Перед транскрипцией
Whisper многое исправляет автоматически; предобработка может улучшить результат:
1. Нормализация громкости
import numpy as np
from scipy.io import wavfile
def normalize_audio(audio_path, output_path, target_dB=-3.0):
sr, audio = wavfile.read(audio_path)
audio = audio.astype(np.float32)
# Normalize to target dB
max_val = np.max(np.abs(audio))
target_linear = 10 ** (target_dB / 20)
audio = audio * (target_linear / max_val)
# Clip to prevent overflow
audio = np.clip(audio, -1.0, 1.0)
wavfile.write(output_path, sr, (audio * 32767).astype(np.int16))
2. Удаление тишины
# Remove leading/trailing silence
# Helps with processing time and accuracy
3. Шумоподавление (опционально)
Для шумных записей:
# Use noise reduction libraries
# librosa, noisereduce, or specialized tools
# Only if background noise is significant
4. Передискретизация до 16 кГц (опционально)
Для уменьшения размера файла:
import ffmpeg
stream = ffmpeg.input('input.wav')
stream = ffmpeg.output(
stream,
'output_16k.wav',
ar=16000 # Resample to 16 kHz
)
ffmpeg.run(stream, overwrite_output=True)
Типичные проблемы с аудио и решения
Проблема 1: Очень низкая частота дискретизации (8 кГц)
Проблема: телефонные записи 8 кГц могут давать меньшую точность.
Решение:
- Используйте модель medium или large Whisper (лучше на низких частотах)
- Повысьте до 16 кГц (качество не восстановит, но поможет обработке)
Проблема 2: Стерео с разными говорящими
Проблема: два говорящих на разных каналах.
Решение:
# Extract each channel separately
import torchaudio
audio, sr = torchaudio.load('stereo.wav')
speaker1 = audio[0] # Left channel
speaker2 = audio[1] # Right channel
# Transcribe each separately
result1 = model.transcribe(speaker1)
result2 = model.transcribe(speaker2)
Проблема 3: MP3 с переменным битрейтом
Проблема: VBR может вызывать проблемы в некоторых инструментах.
Решение:
- Конвертируйте в постоянный битрейт (CBR) или WAV
- Whisper справляется с VBR; CBR предсказуемее
Проблема 4: Повреждённые аудиофайлы
Проблема: файл воспроизводится, Whisper падает.
Решение:
# Re-encode the file
import ffmpeg
stream = ffmpeg.input('corrupted.mp3')
stream = ffmpeg.output(
stream,
'fixed.wav',
acodec='pcm_s16le'
)
ffmpeg.run(stream, overwrite_output=True)
Проблема 5: Очень длинные файлы
Проблема: нехватка памяти или очень медленная обработка.
Решение:
- Разбейте на фрагменты 30–60 секунд
- Обрабатывайте последовательно или параллельно
- Объединяйте результаты с метками времени
Рекомендации по сценариям
Для телефонных звонков
| Параметр | Значение | Причина |
|---|---|---|
| Частота | 8–16 кГц | Качество телефонии |
| Формат | WAV или MP3 | Стандарт |
| Битрейт | ≥ 64 кбит/с | Качество кодека |
| Каналы | Моно | Обычно для звонков |
Для встреч (Zoom, Teams)
| Параметр | Значение | Причина |
|---|---|---|
| Частота | 16–48 кГц | Высокое качество |
| Формат | MP4 (извлечь аудио) | Видео |
| Битрейт | ≥ 128 кбит/с | Хорошее качество |
| Каналы | Моно или стерео | Зависит от настройки |
Для подкастов
| Параметр | Значение | Причина |
|---|---|---|
| Частота | 44,1–48 кГц | Профессиональное качество |
| Формат | MP3, WAV или M4A | Распространённые |
| Битрейт | ≥ 128 кбит/с | Хорошее качество |
| Каналы | Моно | Стандарт |
Для интервью
| Параметр | Значение | Причина |
|---|---|---|
| Частота | 16–48 кГц | Высокое качество |
| Формат | WAV или FLAC | Максимальная точность |
| Битрейт | Без потерь или ≥ 192 кбит/с | Профессионально |
| Каналы | Моно | Стандарт |
Сводка: требования Whisper к аудио
Минимальные требования
- ✅ Формат: любой поддерживаемый FFmpeg
- ✅ Частота: любая (рекомендуется минимум 8 кГц)
- ✅ Разрядность: 8 бит и выше
- ✅ Каналы: моно или стерео (предпочтительно моно)
- ✅ Размер файла: жёсткого лимита нет (разбивайте при > 100 МБ)
- ✅ Длительность: жёсткого лимита нет (разбивайте при > 1 часа)
Оптимальные требования
- ✅ Формат: WAV, FLAC или MP3 (≥128 кбит/с)
- ✅ Частота: 16 кГц (оптимально, без передискретизации)
- ✅ Разрядность: PCM 16 бит
- ✅ Каналы: моно
- ✅ Качество: чёткая речь, минимум шума
- ✅ Предобработка: нормализованная громкость, без клиппинга
Краткая памятка: чеклист подготовки
Перед транскрипцией Whisper:
- Формат: WAV, MP3, FLAC, M4A или другой поддерживаемый
- Частота: 16 кГц (оптимально) или другая поддерживаемая
- Разрядность: 16 бит (рекомендуется)
- Каналы: моно (предпочтительно) или стерео
- Размер: < 100 МБ (или план разбиения)
- Длительность: < 1 часа (или план разбиения)
- Качество: чёткая речь, минимум фонового шума
- Громкость: нормализована, без клиппинга
- Кодек: без потерь (WAV/FLAC) или качественный с потерями (MP3 ≥128 кбит/с)
Проверка аудио
Быстрый тест
import whisper
# Load model
model = whisper.load_model("base")
# Test transcription
result = model.transcribe("your_audio.wav")
# Check if successful
if result["text"]:
print("✅ Audio format is compatible")
print(f"Detected language: {result['language']}")
else:
print("⚠️ Transcription failed - check audio format")
Частые сообщения об ошибках
| Ошибка | Причина | Решение |
|---|---|---|
| "File not found" | Неверный путь | Проверьте путь |
| "Unsupported format" | Формат не поддерживается | Конвертируйте в WAV/MP3 |
| "Out of memory" | Файл слишком большой | Разбейте аудио |
| "Empty audio" | Повреждённый файл | Перекодируйте |
Кратко о лучших практиках
- Используйте 16 кГц, когда возможно (оптимально для Whisper)
- Предпочитайте моно стерео (внутри Whisper — моно)
- Используйте форматы без потерь (WAV/FLAC) для максимальной точности
- Разбивайте длинные файлы (> 1 часа) для точности и стабильности
- Нормализуйте аудио до стабильных уровней
- Минимизируйте фоновый шум
- Подбирайте размер модели (крупные модели лучше с плохим аудио)
- Сначала тестируйте на base перед крупными моделями
Заключение
Whisper очень гибок и поддерживает множество форматов и уровней качества. Соблюдение оптимальных характеристик даёт наилучшую точность транскрипции:
- Формат: WAV, FLAC или MP3 (≥128 кбит/с)
- Частота: 16 кГц (оптимально)
- Разрядность: PCM 16 бит
- Каналы: моно
- Качество: чёткая речь при минимальном шуме
Помните: чистое аудио важнее идеальных технических спецификаций. Даже при идеальных параметрах плохая запись снижает точность. Стремитесь к чёткой речи, малому шуму и хорошему расположению микрофона.
В продакшене платформы вроде SayToWords автоматически выполняют конвертацию формата, передискретизацию и оптимизацию, чтобы вы могли сосредоточиться на качественном звуке, а не на технических деталях.
Нужна помощь с подготовкой аудио для Whisper? Смотрите другие руководства по предобработке, стратегиям разбиения и повышению точности.
