Whisper OpenAI: транскрибация и перевод речи нейросетью — полный гайд
Whisper OpenAI — open-source модель для транскрибации и перевода речи. Разбираем модели от tiny до large-v3, качество на русском языке, локальную установку, Whisper API и практические сценарии: субтитры, протоколы встреч, расшифровка подкастов.
Whisper OpenAI — open-source модель распознавания речи, которая превращает аудио в текст на 99 языках с точностью, сопоставимой с профессиональным транскрибатором. OpenAI выпустила Whisper в сентябре 2022 года, и с тех пор модель прошла путь от research-проекта до индустриального стандарта: на ней работают субтитры в видеоредакторах, расшифровка совещаний в корпоративных инструментах и голосовые интерфейсы в мобильных приложениях. В этом гайде разберём всё — от выбора модели и установки до реальных сценариев использования и сравнения с альтернативами.
Что такое Whisper OpenAI и как он работает
Whisper — это нейросетевая модель архитектуры encoder-decoder на базе Transformer. В отличие от предыдущих подходов к распознаванию речи (вроде Kaldi или DeepSpeech), Whisper обучена end-to-end на 680 000 часов размеченного аудио, собранного из интернета. Это колоссальный объём: для сравнения, предыдущие модели обучались на 1 000–10 000 часах.
Ключевой принцип Whisper — мультизадачность. Одна модель решает сразу несколько задач:
- Транскрибация — преобразование речи в текст на исходном языке
- Перевод — перевод речи с любого из 98 языков на английский
- Определение языка — автоматическое детектирование языка аудио
- Расстановка временных меток — привязка текста к конкретным моментам в аудио
- Пунктуация — автоматическая расстановка знаков препинания и заглавных букв
Модель принимает аудио сегментами по 30 секунд, преобразует их в мел-спектрограмму и генерирует текст токен за токеном. Для длинных записей аудио разбивается на 30-секундные окна с перекрытием.
Модели Whisper OpenAI: от tiny до large-v3
OpenAI выпустила несколько размеров модели. Выбор зависит от баланса между качеством, скоростью и требованиями к железу:
| Модель | Параметры | VRAM | Скорость (относит.) | WER англ. | WER рус. |
|---|---|---|---|---|---|
| tiny | 39M | ~1 ГБ | ~32x | 7.7% | ~17% |
| base | 74M | ~1 ГБ | ~16x | 5.8% | ~13% |
| small | 244M | ~2 ГБ | ~6x | 4.2% | ~10% |
| medium | 769M | ~5 ГБ | ~2x | 3.5% | ~7% |
| large-v2 | 1550M | ~10 ГБ | 1x | 3.0% | ~6% |
| large-v3 | 1550M | ~10 ГБ | 1x | 2.7% | ~5% |
| large-v3-turbo | 809M | ~6 ГБ | ~3x | 3.0% | ~5.5% |
WER (Word Error Rate) — процент ошибочно распознанных слов. Чем ниже — тем лучше. Значения для русского приведены для чистой речи; на зашумлённых записях WER увеличивается в 1.5–2 раза.
large-v3-turbo — модель, выпущенная в октябре 2024 года. Она использует только 4 слоя декодера вместо 32 у large-v3, что даёт ускорение в 3 раза при почти том же качестве. Для большинства практических задач это оптимальный выбор.
Какую модель выбрать
- Для продакшена на GPU — large-v3-turbo. Лучший баланс качества и скорости
- Для максимального качества — large-v3. Когда каждое слово важно (медицина, юриспруденция)
- Для CPU или слабого GPU — small или medium. Medium даёт приемлемое качество на русском
- Для real-time на edge-устройствах — tiny или base. Быстро, но с заметными ошибками на русском
Whisper OpenAI и русский язык: реальное качество
Русский язык — один из наиболее поддерживаемых в Whisper. В обучающей выборке было около 15 000 часов русской речи — это третий по объёму язык после английского и испанского.
Что работает хорошо:
- Чистая речь одного спикера — WER 4–6% на large-v3 (сравнимо с человеком)
- Подкасты и интервью — стабильное распознавание с корректной пунктуацией
- Технические термины — модель знает слова вроде "фреймворк", "деплой", "кластер"
- Смешанная речь (русский + английские термины) — корректно переключается между языками
Где бывают проблемы:
- Сильный акцент или диалектная речь — WER может вырасти до 12–15%
- Несколько одновременных спикеров (crosstalk) — Whisper не разделяет дикторов
- Плохое качество записи (телефонная линия, шум улицы) — ошибки в каждом 5–8 слове
- Редкие имена собственные, топонимы, аббревиатуры — часто искажаются
Для сравнения: голосовые ИИ-ассистенты вроде Алисы показывают WER 4–5% на русском, но работают только онлайн и не дают доступа к raw-транскрипту.
Локальная установка Whisper: Python и CLI
Whisper — open-source проект с лицензией MIT. Установка занимает пару минут.
Установка через pip
# Установка Whisper
pip install openai-whisper
# Для GPU-ускорения убедитесь, что установлен PyTorch с CUDA
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# Дополнительно нужен ffmpeg для работы с аудиоформатами
# Ubuntu/Debian:
sudo apt install ffmpeg
# macOS:
brew install ffmpegИспользование через CLI
После установки доступна команда whisper в терминале:
# Базовая транскрибация (автоопределение языка)
whisper audio.mp3 --model large-v3-turbo
# Транскрибация на русском (указание языка ускоряет процесс)
whisper meeting.wav --model large-v3-turbo --language ru
# Генерация субтитров в формате SRT
whisper video.mp4 --model large-v3-turbo --language ru --output_format srt
# Перевод русской речи на английский
whisper speech_ru.mp3 --model large-v3 --task translate
# Все форматы вывода сразу (txt, vtt, srt, tsv, json)
whisper podcast.mp3 --model medium --language ru --output_format allИспользование из Python
import whisper
# Загрузка модели (скачивается при первом запуске)
model = whisper.load_model("large-v3-turbo")
# Транскрибация файла
result = model.transcribe(
"meeting.mp3",
language="ru",
verbose=True # показывать прогресс
)
# Полный текст
print(result["text"])
# Сегменты с таймкодами
for segment in result["segments"]:
start = segment["start"]
end = segment["end"]
text = segment["text"]
print(f"[{start:.1f}s - {end:.1f}s] {text}")Faster Whisper — ускоренная версия
Оригинальный Whisper работает на PyTorch. Faster Whisper — реализация на CTranslate2, которая работает в 4 раза быстрее при том же качестве и меньшем потреблении памяти:
pip install faster-whisperfrom faster_whisper import WhisperModel
# Загрузка модели
model = WhisperModel("large-v3-turbo", device="cuda", compute_type="float16")
# Транскрибация
segments, info = model.transcribe("meeting.mp3", language="ru")
print(f"Определённый язык: {info.language} (вероятность {info.language_probability:.2f})")
for segment in segments:
print(f"[{segment.start:.1f}s - {segment.end:.1f}s] {segment.text}")Для продакшена рекомендуется именно Faster Whisper — экономия по GPU-часам составляет 60–75%.
Whisper API от OpenAI
Если нет GPU или нужно быстро интегрировать транскрибацию в приложение, OpenAI предоставляет Whisper через свой API. Модель в API — whisper-1 (на базе large-v2 с оптимизациями).
Стоимость
$0.006 за минуту аудио. Часовая запись — $0.36. Это дешевле, чем аренда GPU для самостоятельного запуска, если объём транскрибации до 10–15 часов в день.
Пример использования через Python SDK
from openai import OpenAI
client = OpenAI() # ключ из переменной OPENAI_API_KEY
# Транскрибация
with open("meeting.mp3", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="ru",
response_format="verbose_json",
timestamp_granularities=["segment"]
)
print(transcript.text)
# Сегменты с таймкодами
for segment in transcript.segments:
print(f"[{segment['start']:.1f}s] {segment['text']}")Перевод через API
# Перевод русской речи на английский
with open("speech_ru.mp3", "rb") as audio_file:
translation = client.audio.translations.create(
model="whisper-1",
file=audio_file,
response_format="text"
)
print(translation) # текст на английскомОграничения API
- Максимальный размер файла — 25 МБ. Для длинных записей нужно разбивать на части
- Поддерживаемые форматы: mp3, mp4, mpeg, mpga, m4a, wav, webm
- Нет выбора модели — только whisper-1
- Нет диаризации (разделения по спикерам)
Подробнее о работе с OpenAI API на Python, включая аутентификацию и обработку ошибок, — в нашем полном гайде по ChatGPT API Python.
Обработка длинных файлов через API
Для файлов больше 25 МБ нужно разбивать аудио на части. Вот готовое решение с pydub:
from openai import OpenAI
from pydub import AudioSegment
import math
client = OpenAI()
def transcribe_long_audio(file_path: str, language: str = "ru") -> str:
"""Транскрибация длинных аудиофайлов через Whisper API."""
audio = AudioSegment.from_file(file_path)
# Разбиваем на части по 10 минут (с запасом по размеру)
chunk_length_ms = 10 * 60 * 1000
chunks = math.ceil(len(audio) / chunk_length_ms)
full_text = []
for i in range(chunks):
start = i * chunk_length_ms
end = min((i + 1) * chunk_length_ms, len(audio))
chunk = audio[start:end]
# Экспортируем chunk во временный файл
chunk_path = f"/tmp/chunk_{i}.mp3"
chunk.export(chunk_path, format="mp3")
with open(chunk_path, "rb") as f:
result = client.audio.transcriptions.create(
model="whisper-1",
file=f,
language=language
)
full_text.append(result.text)
print(f"Часть {i+1}/{chunks} готова")
return " ".join(full_text)
# Использование
text = transcribe_long_audio("long_meeting.mp3")
print(text)Практические сценарии использования Whisper
1. Субтитры для видео
Whisper генерирует SRT-файлы с точными таймкодами. Это работает из коробки:
whisper video.mp4 --model large-v3-turbo --language ru --output_format srtРезультат — файл video.srt, который можно загрузить в YouTube, VLC или любой видеоредактор. Для YouTube это особенно полезно: автоматические субтитры YouTube на русском значительно уступают Whisper по качеству.
2. Протоколы совещаний
Связка Whisper + LLM решает задачу протоколирования встреч за минуты вместо часов:
from faster_whisper import WhisperModel
from openai import OpenAI
# Шаг 1: транскрибация
whisper_model = WhisperModel("large-v3-turbo", device="cuda")
segments, _ = whisper_model.transcribe("meeting.mp3", language="ru")
transcript = "\n".join([s.text for s in segments])
# Шаг 2: суммаризация через GPT
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[
{"role": "system", "content": """Ты секретарь. Составь протокол встречи по транскрипту.
Формат: 1) Участники, 2) Обсуждённые темы, 3) Принятые решения, 4) Задачи с ответственными."""},
{"role": "user", "content": transcript}
]
)
print(response.choices[0].message.content)3. Расшифровка подкастов и интервью
Для подкастов важна диаризация — определение, кто говорит. Whisper сам по себе этого не умеет, но WhisperX решает проблему:
pip install whisperximport whisperx
# Транскрибация с выравниванием и диаризацией
model = whisperx.load_model("large-v3-turbo", device="cuda")
audio = whisperx.load_audio("podcast.mp3")
result = model.transcribe(audio, language="ru")
# Выравнивание по словам
align_model, metadata = whisperx.load_align_model(language_code="ru", device="cuda")
result = whisperx.align(result["segments"], align_model, metadata, audio, device="cuda")
# Диаризация (требуется токен Hugging Face)
diarize_model = whisperx.DiarizationPipeline(use_auth_token="hf_...")
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)
for segment in result["segments"]:
speaker = segment.get("speaker", "??")
print(f"[{speaker}] {segment['text']}")4. Голосовые заметки в текст
Автоматическая расшифровка голосовых сообщений из Telegram или голосовых заметок с диктофона. Можно настроить через бота или скрипт, который мониторит папку и транскрибирует новые файлы.
5. Поиск по аудиоархивам
Транскрибируйте весь аудиоархив, проиндексируйте текст — и получите полнотекстовый поиск по записям лекций, совещаний, звонков. С таймкодами Whisper можно перейти к точному моменту в аудио по найденной фразе.
Whisper OpenAI vs альтернативы: Deepgram, AssemblyAI, Google
| Критерий | Whisper (локально) | Whisper API | Deepgram | AssemblyAI | Google Speech-to-Text |
|---|---|---|---|---|---|
| Цена | Бесплатно | $0.006/мин | от $0.0043/мин | от $0.006/мин | от $0.006/мин |
| Русский язык | Хорошо | Хорошо | Средне | Хорошо | Хорошо |
| Задержка (real-time) | Зависит от GPU | Нет стриминга | <300 мс | <500 мс | <300 мс |
| Диаризация | Нет (через WhisperX) | Нет | Да | Да | Да |
| Real-time стриминг | Нет | Нет | Да | Да | Да |
| Офлайн | Да | Нет | Нет | Нет | Нет |
| Open-source | Да (MIT) | Нет | Нет | Нет | Нет |
Когда Whisper — лучший выбор:
- Конфиденциальность — данные не покидают ваш сервер
- Пакетная обработка — большие объёмы аудио без оплаты за минуту
- Кастомизация — возможность дообучения и модификации модели
- Офлайн-сценарии — работа без интернета
Когда лучше Deepgram или AssemblyAI:
- Real-time транскрибация — стриминг аудио с микрофона с задержкой менее 300 мс
- Диаризация из коробки — определение спикеров без дополнительных инструментов
- Масштабирование — не нужно управлять GPU-инфраструктурой
- Дополнительная аналитика — определение тональности, поиск ключевых слов, авторезюме
Оптимизация качества Whisper: практические советы
Предобработка аудио
Качество входного аудио напрямую влияет на результат. Несколько приёмов:
# Нормализация громкости и удаление шума с помощью ffmpeg
ffmpeg -i raw_meeting.mp3 -af "highpass=f=200,lowpass=f=3000,volume=2" clean_meeting.mp3
# Конвертация в формат, оптимальный для Whisper (16kHz mono WAV)
ffmpeg -i input.mp3 -ar 16000 -ac 1 output.wavПромпт для повышения точности
Whisper поддерживает initial_prompt — подсказку, которая задаёт контекст и стиль транскрибации:
result = model.transcribe(
"tech_meeting.mp3",
language="ru",
initial_prompt="Совещание команды разработки. Обсуждение: Kubernetes, CI/CD, микросервисы, PostgreSQL, Redis."
)Промпт помогает модели корректно распознавать специфические термины, имена и аббревиатуры. Для отраслевых записей (медицина, юриспруденция, IT) это даёт заметное улучшение.
Параметр temperature
# temperature=0 — детерминированный вывод (рекомендуется для стабильности)
result = model.transcribe("audio.mp3", language="ru", temperature=0)
# Fallback: если quality score низкий, Whisper пробует другие temperature
result = model.transcribe("audio.mp3", language="ru", temperature=(0.0, 0.2, 0.4, 0.6, 0.8, 1.0))Whisper в продакшене: архитектура и масштабирование
Для развёртывания Whisper в продакшене есть несколько подходов:
1. Очередь задач + GPU-воркеры. Аудио загружается в объектное хранилище (S3, MinIO), задача ставится в очередь (Redis, RabbitMQ), GPU-воркер забирает и обрабатывает. Масштабирование — добавлением воркеров.
2. Serverless GPU. Платформы вроде Replicate, Modal или RunPod позволяют запускать Whisper по запросу без управления инфраструктурой. Оплата — только за время работы GPU.
3. Whisper API + fallback. Основной канал — Whisper API от OpenAI ($0.006/мин), при превышении rate limit или для конфиденциальных записей — локальный Whisper на собственном GPU.
Часто задаваемые вопросы
Whisper работает в реальном времени?
Оригинальный Whisper — нет, он обрабатывает файлы пакетно. Но проекты whisper.cpp и whisper-streaming реализуют real-time транскрибацию с задержкой около 1–2 секунд на мощном GPU.
Можно ли дообучить Whisper на своих данных?
Да. Fine-tuning Whisper доступен через Hugging Face Transformers. Это полезно для доменной терминологии (медицинская, юридическая лексика) или нестандартных акцентов. Для fine-tuning достаточно 10–50 часов размеченного аудио.
Whisper разделяет спикеров?
Нет. Для диаризации используйте WhisperX (pyannote.audio) или NeMo от NVIDIA. Оба инструмента бесплатны и совместимы с Whisper.
Какой GPU нужен для large-v3?
Минимум — видеокарта с 10 ГБ VRAM (RTX 3080, RTX 4070 Ti). Для large-v3-turbo достаточно 6 ГБ (RTX 3060, RTX 4060). На CPU large-модели работают, но в 10–20 раз медленнее.
Заключение
Whisper OpenAI — редкий случай, когда open-source решение не уступает коммерческим сервисам. Модель large-v3 на русском языке даёт WER около 5% на чистой речи — это уровень профессионального транскрибатора. Для пакетной обработки, конфиденциальных данных и офлайн-сценариев Whisper не имеет равных по соотношению качество/стоимость.
Для real-time приложений и диаризации из коробки смотрите в сторону Deepgram или AssemblyAI. Для интеграции транскрибации в Python-приложения через API — наш гайд по OpenAI API покрывает все нюансы. А если вас интересует более широкий контекст голосовых технологий — читайте сравнение голосовых ИИ-ассистентов.