Аудио и видео в Whisper: форматы и звуковые дорожки
См. также — глоссарий
Видео — контейнер с потоками. Если текст пустой или не соответствует записи, сначала убедитесь, что выбрана нужная звуковая дорожка. Пример принимает локальные файлы WAV, MP3, M4A, MP4, FLAC, OGG, OPUS, WebM и MKV; фактический кодек должен поддерживаться PyAV.
Начните с оригинала
Для обычной записи с одной дорожкой передайте аудио или видео прямо в пример. faster-whisper декодирует звук через PyAV, поэтому основному Python-сценарию не нужен исполняемый файл ffmpeg. Для диагностических команд ниже FFmpeg устанавливается отдельно.
Переименование расширения не конвертирует кодек. Не перекодируйте сжатую запись многократно: преобразование MP3 в WAV не восстанавливает данные, потерянные при исходном сжатии.
Выберите дорожку
Для фильма с несколькими языками, записи экрана или экспорта встречи сначала посмотрите потоки, затем извлеките нужный звук:
ffprobe -v error -show_entries stream=index,codec_type,codec_name,channels \
-of json input/lecture.mp4
ffmpeg -nostdin -n -i input/lecture.mp4 -map 0:a:0 -vn \
-ac 1 -ar 16000 input/lecture-audio.wav
0:a:0 означает первый аудиопоток, а не первый поток любого типа. Меняйте индекс после проверки списка и прослушивания. -n запрещает перезапись готового файла. -nostdin не даёт FFmpeg читать ввод терминала при обработке пакета. Распознавайте отдельно lecture-audio.wav либо складывайте конвертированные файлы в другую папку, чтобы не обработать обе версии.
Для ASR пример сводит каналы. Если слева и справа записаны разные люди или один канал намного чище, обычный mono mix может потерять полезное разделение. Сохраните оригинал и при необходимости подготовьте файлы отдельных каналов; это не универсальная диаризация спикеров.
Длинные записи и хранение
Размер сжатого файла не определяет необходимую память. Декодированные отсчёты занимают значительно больше RAM, а декодирование происходит до получения полного текста. Проверьте характерный длинный файл, наблюдайте за RAM и при необходимости экспортируйте более короткие исходные фрагменты. У независимых фрагментов таймкоды начинаются с нуля: для сборки полных субтитров сохраняйте смещения.
Передавайте файлы по SSH/SFTP или другим способом с контролем доступа. Не открывайте папку с аудио всему интернету только ради переноса. До завершения аренды убедитесь, что оригиналы и результаты скопированы в ваше хранилище.
Далее — проверка субтитров или обработка папки.
Готовы запустить?
Запустить GPU-сервер