Расшифровка аудио в текст: Whisper локально — тест 4 моделей на голосовом

Расшифровка аудио в текст больше не требует облачных сервисов: нейросеть Whisper делает это на обычном компьютере, без интернета и без отправки записи чужим серверам. Мы прогнали через Whisper одно и то же «голосовое сообщение» — в чистом виде и с шумом и сжатием, как в мессенджере, — на четырёх моделях разного размера. Ниже — как перевести аудио в текст локально, какую модель выбрать, как получить субтитры и где Whisper ошибается.

Расшифровка аудио в текст с помощью Whisper
Whisper large-v3-turbo расшифровывает зашумлённое голосовое сообщение

Что такое Whisper

Whisper — модель распознавания речи от OpenAI с открытыми весами: её можно скачать и запускать у себя бесплатно. Она понимает десятки языков, включая русский, сама расставляет знаки препинания и умеет выдавать текст с таймкодами — готовые субтитры.

Удобнее всего запускать Whisper через faster-whisper — это та же модель, переписанная для скорости: по данным разработчиков, до 4 раз быстрее оригинала при той же точности и с меньшим расходом памяти. Отдельно ставить FFmpeg для неё не нужно.

Наш тест: голосовое сообщение на четырёх моделях

Для теста мы синтезировали 20-секундную запись открытой моделью синтеза речи Piper — так у нас есть точный исходный текст для сравнения. Текст специально с подвохами: технические термины, число и номер телефона (номер выдуманный):

Привет! Это тестовое голосовое сообщение для проверки распознавания речи. Завтра в десять утра переносим сайт на новый сервер. Перед этим нужно сделать резервную копию базы данных, проверить DNS-записи домена и снизить TTL до трёхсот секунд. Если что-то пойдёт не так, звоните по номеру восемь девятьсот девяносто девять, сто двадцать три, сорок пять, шестьдесят семь.

Вторую версию мы испортили, как в реальном голосовом: добавили фоновый шум, обрезали частоты до «телефонных» и сжали в Opus с битрейтом 12 кбит/с — примерно так мессенджеры хранят голосовые. Запуск — на сервере без видеокарты, 4 ядра процессора, faster-whisper 1.2.1.

МодельРазмерВремя на 20 с записиКак справилась
tiny75 МБ3 сплохо: «сайт на новой сергах», номер склеен в одно число
small464 МБ11 ссредне: «Новый Сергов», термины искажены
medium1,5 ГБ22–28 схорошо, но TTL стал «твиттером»
large-v3-turbo1,6 ГБ10–12 случше всех и быстрее medium

Результат large-v3-turbo на зашумлённом «голосовом»:

Привет! Это тестовое голосовое сообщение для проверки распознавания речи. Завтра в 10 утра переносим сайт на Новый Серго. Перед этим нужно сделать резервную копию базы данных, проверить длительные записи домена и снизить их летел до 300 секунд. Если что-то пойдет не так, звоните по номеру 8 999 123 45 67.

Обычная речь, время и номер телефона распознаны точно, цифры сразу записаны цифрами. Ошибки — в трёх местах, и все на терминах: «сервер» в шуме стал «Новым Серго», «DNS» — «длительными», «TTL» — «их летел». На чистой записи та же модель написала «новый сервер» правильно. Учтите, что наша запись синтезирована: аббревиатуры синтезатор произносит неидеально, и часть ошибок — на его совести. Но вывод от этого не меняется: термины и имена собственные — слабое место любой распознавалки.

Как исправить термины: подсказка

У Whisper есть параметр initial_prompt — текст-подсказка, который модель учитывает как «начало разговора». Если передать в него ожидаемые слова, модель охотнее их использует. С подсказкой «Переезд сайта: сервер, DNS-записи, TTL.» large-v3-turbo на той же зашумлённой записи написала «снизить TTL до 300 секунд» правильно. «DNS» и «сервер» в шуме всё равно остались ошибочными — подсказка помогает, но не спасает плохую запись.

Как перевести голосовое и аудио в текст: установка и запуск

Нужен Python 3.9 или новее. Установка одной командой:

pip install faster-whisper

Скрипт, который мы запускали (сохраните как transcribe.py):

from faster_whisper import WhisperModel

model = WhisperModel("large-v3-turbo", device="cpu", compute_type="int8")
segments, info = model.transcribe(
    "voice.ogg",
    language="ru",
    beam_size=5,
    initial_prompt="Переезд сайта: сервер, DNS-записи, TTL.",  # необязательно
)
print(" ".join(s.text.strip() for s in segments))

При первом запуске модель скачается автоматически (около 1,6 ГБ), дальше всё работает без интернета. Понимает любые форматы: голосовые .ogg из мессенджеров, .mp3, .m4a, .wav, звук из видео. Параметр compute_type="int8" уменьшает расход памяти и ускоряет работу на процессоре почти без потери качества.

С видеокартой NVIDIA замените device="cpu" на device="cuda" и compute_type на "float16" — по документации faster-whisper, для этого нужны библиотеки cuBLAS и cuDNN от NVIDIA. Расшифровка ускорится в разы.

Субтитры SRT из аудио и видео

Каждый фрагмент в ответе Whisper содержит время начала и конца, поэтому субтитры получаются в несколько строк кода:

def ts(x):
    h, m, s = int(x // 3600), int(x % 3600 // 60), x % 60
    return f"{h:02}:{m:02}:{s:06.3f}".replace(".", ",")

segments, _ = model.transcribe("video.mp4", language="ru")
with open("video.srt", "w", encoding="utf-8") as f:
    for i, s in enumerate(segments, 1):
        f.write(f"{i}\n{ts(s.start)} --> {ts(s.end)}\n{s.text.strip()}\n\n")

Начало файла, который получился у нас:

1
00:00:00,000 --> 00:00:04,400
Привет! Это тестовое голосовое сообщение для проверки распознавания речи.

2
00:00:04,640 --> 00:00:07,140
Завтра в 10 утра переносим сайт на Новый Серго.

Какую модель Whisper выбрать

  • large-v3-turbo — выбор по умолчанию. По нашему тесту она и точнее, и быстрее medium; на обычном процессоре расшифровывает быстрее, чем длится запись.
  • small — если памяти мало (слабый ноутбук, VPS с 2 ГБ): текст понятен, но термины и имена придётся править.
  • tiny — только чтобы проверить, что всё установилось.

Для часовой записи на процессоре large-v3-turbo займёт, если пропорция нашего теста сохранится, около получаса. На сервере без видеокарты расшифровку удобно запускать в фоне — на VPS пригодится статья про swap и память.

Локально или онлайн

Онлайн-сервисы расшифровки удобнее для разовой задачи, но запись уходит на чужой сервер. Для совещаний, звонков с клиентами, голосовых с личными данными локальный Whisper надёжнее: файл не покидает компьютер. Тот же подход — локальная модель вместо облака — мы разбирали для распознавания текста с картинки и для текстовых нейросетей в Ollama.

И главное правило для любой расшифровки: вычитывайте термины, имена, суммы и адреса. Whisper пишет гладко и уверенно, поэтому ошибку вроде «Новый Серго» вместо «новый сервер» легко пропустить.

Источники: faster-whisper, модель Whisper large-v3-turbo, модели faster-whisper, голоса Piper (для тестовой записи). Тест: faster-whisper 1.2.1, процессор 4 ядра, без видеокарты. Проверено 29 сентября 2026 года.

2 / 1
Оцените статью
Да будет Интернет!