После выполнения этой инструкции вы сможете получить текстовую расшифровку аудио с помощью локального Whisper или через OpenAI whisper-1 API, а также проверить результат по полю text и при необходимости запросить таймкоды.
Практический вердикт: самый воспроизводимый путь — транскрибировать аудиофайл. Для видео есть важная оговорка: локальный Whisper декодирует вход через системный ffmpeg, а API принимает, среди прочего, контейнеры mp4 и webm, но модель whisper-1 на странице модели отмечена как audio input only. Если ваш видеофайл не читается как источник звука, сначала извлеките аудиодорожку отдельным инструментом. Редакционное ограничение: в официальных источниках из этого пакета нет зафиксированной команды извлечения аудио из видео, поэтому ниже описаны только подтверждённые маршруты транскрибации.
| Время | 10–30 минут, в зависимости от способа и готовности окружения |
|---|---|
| Сложность | Средний |
| Стоимость | Локально: в источниках нет поминутной цены, затраты зависят от вашей машины. Через API: на странице модели whisper-1 указано $0.006 за минуту транскрипции. |
| Что потребуется | Для локального способа: Python, установленный пакет openai-whisper, системный ffmpeg в PATH, аудиофайл. Для API: OpenAI API key, файл в поддерживаемом формате, для legacy/whisper-1 — размер запроса до 25 MiB. |
| Актуальная версия | Локальный Whisper: latest release v20250625 на странице Releases; OpenAI API: модель whisper-1 по документации на 2026-08-17. |
Что выбрать: локальный Whisper или whisper-1 API
| Вариант | Когда подходит | Что подтверждено в источниках | Ограничения |
|---|---|---|---|
Локальный openai-whisper |
Нужна транскрибация на своей машине без обращения к API | Установка через pip install -U openai-whisper, зависимость от ffmpeg, CLI и Python-пример, перевод на английский через --task translate с мультиязычными моделями |
ffmpeg должен быть в PATH; источники здесь не фиксируют точные команды установки ffmpeg для каждой ОС |
whisper-1 API |
Нужен управляемый облачный вызов и JSON-ответ | Эндпоинты /v1/audio/transcriptions и /v1/audio/translations, поддерживаемые форматы, цена, проверка через поле text, verbose_json и timestamp_granularities |
Streaming для whisper-1 не поддерживается; legacy-лимит загрузки 25 MiB; нельзя передавать ссылку вместо файла; доступность зависит от аккаунта и региона |
Способ 1. Транскрибировать локально через openai-whisper
-
Установите
ffmpegи добавьте его в системныйPATH.Официальный репозиторий Whisper требует, чтобы
ffmpegбыл доступен вPATH. Это не факультативная зависимость: файлwhisper/audio.pyдекодирует вход через командуffmpeg.Ожидаемый результат: терминал вашей системы видит исполняемый файл
ffmpeg, и вы можете перейти к установке Whisper. -
Установите пакет Whisper.
pip install -U openai-whisperИменно эту команду README репозитория даёт как официальный путь установки. Альтернативно в README допускается установка из GitHub, но для большинства случаев достаточно варианта через
pip.Ожидаемый результат: пакет устанавливается без ошибки про отсутствие зависимостей Python.
-
Запустите официальную CLI-транскрибацию.
whisper audio.flac audio.mp3 audio.wav --model turboЭто официальный пример из README. Модель
turboиспользуется здесь именно для транскрибации. Если вы хотите обработать один файл, оставьте в команде только свой путь к нему.Ожидаемый результат: команда стартует без ошибок о том, что
whisperилиffmpegне найдены. -
Проверьте результат через Python-скрипт, чтобы увидеть явный текст в консоли.
import whisper model = whisper.load_model("turbo") result = model.transcribe("audio.mp3") print(result["text"])Это официальный Python-пример из README. Там же указано, что
transcribe()обрабатывает весь файл скользящим окном 30 секунд. Для проверки это удобнее CLI, потому что текст виден сразу вresult["text"].Ожидаемый результат: вы видите в консоли непустую строку с расшифровкой.
-
Если нужен перевод речи на английский, повторите запуск с
--task translateи выберите мультиязычную модель.README прямо уточняет, что для перевода на английский нужно использовать
--task translateи одну из моделейtiny,base,small,mediumилиlarge, потому чтоturboне обучен переводу.Ожидаемый результат: вы запускаете перевод без конфликта с ограничением модели
turbo.
Что важно знать про видео в локальном режиме
Из источников подтверждено, что локальный пайплайн Whisper декодирует вход через системный ffmpeg. Это означает, что практическая работа с видео зависит от того, может ли ваш ffmpeg прочитать аудиодорожку контейнера. Однако в README из этого пакета зафиксированы именно аудиопримеры, а не отдельная официальная команда для видео. Поэтому для гарантированно воспроизводимого сценария используйте аудиофайл.
Способ 2. Транскрибировать через whisper-1 API
-
Подготовьте локальный файл в поддерживаемом формате и проверьте размер.
Для
/v1/audio/transcriptionsи/v1/audio/translationsофициально поддерживаютсяflac,mp3,mp4,mpeg,mpga,m4a,ogg,wavиwebm. Для legacy/whisper-1FAQ фиксирует лимит запроса 25 MiB. Передавать ссылку на аудио вместо файла нельзя.Ожидаемый результат: у вас есть локальный файл подходящего формата, который укладывается в лимит.
-
Если исходник — видео, используйте его только как контейнер с читаемой аудиодорожкой.
Здесь есть важный нюанс. API принимает
mp4иwebmкак форматы загрузки, но страница моделиwhisper-1одновременно помечает модель как audio input only и video not supported. Практически это означает: проверяйте именно извлекаемость звука из контейнера. Если есть сомнения, сначала подготовьте отдельный аудиофайл.Ожидаемый результат: вы не рассчитываете на «понимание видео» как отдельной модальности и работаете со звуковой дорожкой.
-
Отправьте файл на эндпоинт транскрибации.
curl https://api.openai.com/v1/audio/transcriptions -H "Authorization: Bearer $OPENAI_API_KEY" -F file="@audio.mp3" -F model="whisper-1"Официальная документация указывает эндпоинт
/v1/audio/transcriptionsи модельwhisper-1для распознавания речи общего назначения.Ожидаемый результат: API возвращает JSON-ответ без ошибки загрузки.
-
Проверьте поле
textв ответе.Это официальный паттерн верификации результата для Audio API. Если поле
textсодержит расшифровку и она соответствует записи, базовая транскрибация работает.Ожидаемый результат: вы видите непустое значение
text. -
Если нужны таймкоды, повторите запрос в формате
verbose_json.В документации для проверки и детализации результата указаны
response_format=verbose_jsonиtimestamp_granularitiesсо значениямиwordилиsegment. Этот путь удобен, если вы готовите субтитры или хотите привязать текст к времени.Ожидаемый результат: помимо текста вы получаете структуру с временными метками в детализации, которую запросили.
Когда использовать эндпоинт перевода
Если нужна не просто транскрибация, а перевод речи на английский, используйте /v1/audio/translations. В источниках из этого пакета прямо указано, что для translations сейчас доступен только whisper-1.
Как проверить, что всё работает
- Локально через Python: скрипт с
result = model.transcribe("audio.mp3")выполняется и печатает непустойresult["text"]. - Через API: ответ от
/v1/audio/transcriptionsсодержит полеtextбез ошибки загрузки или формата. - Для таймкодов: при повторном запросе с
response_format=verbose_jsonв ответе появляются данные для слов или сегментов, если вы запросилиtimestamp_granularities. - Для видеоисточника: транскрипт должен соответствовать именно звуковой дорожке, а не визуальному содержимому ролика. Если результата нет, причина обычно в контейнере или дорожке, а не в «качестве понимания видео».
Если вам нужен самый надёжный контроль качества, сначала проверьте короткий аудиофрагмент локально через Python-пример, а затем переходите к массовой обработке или API.
Частые ошибки и исправления
- Ошибка: локальный Whisper не стартует из-за
ffmpeg.
Решение: убедитесь, чтоffmpegустановлен и доступен в системномPATH. Это требование подтверждено и README, и кодомwhisper/audio.py. - Ошибка: API отклоняет файл или вы пытаетесь передать ссылку вместо загрузки.
Решение: используйте локальный файл в одном из официально поддерживаемых форматов. FAQ прямо говорит, что ссылку на аудио передавать нельзя. - Ошибка: запрос к
whisper-1не проходит из-за размера файла.
Решение: для legacy/whisper-1держите размер загрузки в пределах 25 MiB или разбейте материал на части. - Ошибка: вы пытаетесь переводить локально через
turboи получаете неподходящее поведение.
Решение: для--task translateиспользуйте одну из мультиязычных моделейtiny,base,small,mediumилиlarge. README отдельно отмечает, чтоturboне обучен переводу. - Ошибка: вы ожидаете streaming или полноценную обработку видео как модальности в
whisper-1.
Решение: учитывайте документированное ограничение: streaming дляwhisper-1не поддерживается, а страница модели помечает видео как не поддерживаемую модальность. Работайте со звуковой дорожкой.
Безопасность и ограничения
- Локальный режим: в этой инструкции файл обрабатывается вашим локальным окружением, но работоспособность зависит от корректной установки Python и
ffmpeg. - API-режим: вы загружаете файл на аудио-эндпоинт OpenAI. Доступность
/v1/audio/transcriptionsи/v1/audio/translationsможет зависеть от аккаунта и региона; официальная страница по data controls перечисляет эти сервисы для ряда региональных доменов, но это нужно перепроверять для конкретной учётной записи. - Стоимость: для
whisper-1на странице модели указана цена$0.006за минуту транскрипции. Для локального способа официальные источники из этого пакета не фиксируют тариф, поэтому оценивайте только затраты своей инфраструктуры. - Лимиты: для legacy/
whisper-1FAQ фиксирует лимит 25 MiB на запрос. Streaming дляwhisper-1не поддерживается. - Редакционное ограничение: из-за отсутствия в исходном пакете официальной команды извлечения аудио из видео эта инструкция не описывает конкретный
ffmpeg-конвейер для подготовки видеофайлов. Если контейнер не читается, сначала получите отдельный аудиофайл в поддерживаемом формате.
Что делать дальше
- Если исходная запись шумная, сначала очистите звук: как улучшить качество аудио с Adobe Podcast AI.
- Если после расшифровки нужны субтитры для ролика, перейдите к инструкции как автоматически субтитровать видео с Descript.
- Если вы хотите озвучить полученный текст заново, пригодится руководство как озвучить текст с ElevenLabs.
- Если из стенограммы нужно сделать поиск или Q&A-интерфейс, посмотрите как создать чатбота с Flowise.
Источники
- GitHub – openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision · GitHub
- whisper/whisper/audio.py at main · openai/whisper · GitHub
- Releases · openai/whisper · GitHub
- Whisper Model | OpenAI API
- Audio | OpenAI API Reference
- Audio API FAQ | OpenAI Help Center
- Data controls in the OpenAI platform
- [2212.04356] Robust Speech Recognition via Large-Scale Weak Supervision
Вопросы и ответы
Можно ли транскрибировать видео напрямую?
Частично. API принимает mp4 и webm как форматы файла, а локальный Whisper декодирует вход через ffmpeg. Но whisper-1 помечен как audio input only, поэтому рассчитывайте на работу со звуковой дорожкой, а не с видео как отдельной модальностью.
Какие форматы поддерживаются в API?
Официально перечислены flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav и webm.
Можно ли получить таймкоды?
Да. Для API используйте response_format=verbose_json и параметр timestamp_granularities со значением word или segment. Для локального примера в этом пакете официально зафиксирована проверка через result["text"].
Поддерживается ли streaming в whisper-1?
Нет. И API Reference, и FAQ указывают, что streaming для whisper-1 не поддерживается.
Сколько стоит транскрибация через OpenAI API?
На странице модели whisper-1 указана цена $0.006 за минуту транскрипции. Для локального способа в этих источниках поминутный тариф не указан.