Whisper OpenAI: транскрибация и перевод речи нейросетью — полный гайд

Whisper OpenAI — open-source модель для транскрибации и перевода речи. Разбираем модели от tiny до large-v3, качество на русском языке, локальную установку, Whisper API и практические сценарии: субтитры, протоколы встреч, расшифровка подкастов.

Whisper OpenAI: транскрибация и перевод речи нейросетью — полный гайд

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 рус.
tiny39M~1 ГБ~32x7.7%~17%
base74M~1 ГБ~16x5.8%~13%
small244M~2 ГБ~6x4.2%~10%
medium769M~5 ГБ~2x3.5%~7%
large-v21550M~10 ГБ1x3.0%~6%
large-v31550M~10 ГБ1x2.7%~5%
large-v3-turbo809M~6 ГБ~3x3.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-whisper
from 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 whisperx
import 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 APIDeepgramAssemblyAIGoogle 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 покрывает все нюансы. А если вас интересует более широкий контекст голосовых технологий — читайте сравнение голосовых ИИ-ассистентов.