Vosk: как распознать русскую речь офлайн и проверить результат
Как выбрать русскую модель Vosk, обработать аудиофайл без облака, сохранить TXT или SRT и проверить слова, время и исходный формат.
Когда Vosk подходит для расшифровки
Vosk — локальный набор инструментов распознавания речи. Он подходит, когда запись нельзя отправлять во внешний сервис, нужен повторяемый сценарий на своём компьютере или требуется встроить распознавание в программу. Это не обещание идеального текста без интернета: качество зависит от модели, языка, акустики и исходной записи.
Для русского языка в официальном каталоге есть разные модели. На момент проверки там указаны небольшая модель vosk-model-small-ru-0.22 размером 45 МБ и серверная vosk-model-ru-0.42 размером 1,8 ГБ. Эти размеры и опубликованные разработчиками оценки не следует переносить на вашу запись как гарантию. Маленькая модель удобна для первой пробы; большую имеет смысл сравнивать на одном и том же фрагменте.
Если задача состоит только в разовой подготовке документа, настройка локального окружения может занять больше времени, чем сама расшифровка. В этом случае можно получить текст аудиофайла в Транскрибаторе, а Vosk оставить для регулярного или автономного процесса.
Подготовьте окружение и короткую пробу
Официальная инструкция предлагает установку Python-пакета через pip. Создайте отдельное виртуальное окружение и сначала посмотрите справку установленной версии. Документация проекта и фактически установленный пакет могут различаться по поддерживаемым версиям Python и параметрам команды, поэтому не копируйте старую команду без проверки.
python -m venv .venv
# активируйте окружение для своей ОС
python -m pip install --upgrade pip
python -m pip install vosk
vosk-transcriber --helpВ текущем исходном коде CLI предусмотрены параметры --input, --output, --output-type, --lang, --model и --model-name. Для первой проверки сохраните копию короткого русского фрагмента и попросите программу явно использовать русский язык:
vosk-transcriber -l ru -i sample.wav -o sample.txt -t txtКоманда отражает параметры проекта, но в этой инструкции не запускалась на вашем компьютере. Если автоматическая загрузка модели недоступна или нужна фиксированная версия, скачайте модель из официального каталога, распакуйте её и передайте путь через -m. Запишите точное имя модели: без него результат нельзя воспроизвести.
Не путайте ошибку формата с ошибкой распознавания
Простой пример проекта читает WAV и отдельно проверяет, что это одноканальный PCM-файл без сжатия. Другой официальный пример для SRT вызывает FFmpeg, приводит вход к частоте 16 кГц, одному каналу и потоку s16le. Поэтому сообщение о неподдерживаемом файле ещё не говорит о качестве русской модели.
Сохраните исходник отдельно. Если конвертация нужна, сделайте техническую копию и зафиксируйте параметры. После неё проверьте длительность, начало и конец: обрезанный последний фрагмент нельзя исправить выбором другой модели. Для общего процесса пригодится инструкция по конвертации аудио для расшифровки.
Для TXT достаточно проверить порядок и полноту фраз. Для SRT дополнительно прослушайте несколько границ реплик и длинные субтитры. Сам факт, что файл открывается, не подтверждает синхронизацию. Если нужен SRT, сверяйте выход с чек-листом структуры и таймкодов.
Примите результат по контрольным точкам
Выберите пять мест: начало, середину, конец, фрагмент с именем и фрагмент с числом. В каждом месте сравните звук и текст. Удобно помечать отдельно три типа проблем: неверное слово, пропущенная речь и техническая граница. Так можно понять, помогает ли другая модель, или запись сначала нужно улучшить.
Не исправляйте автоматически фамилии по догадке. Если имя не представлено в записи и нет проверяемого списка участников, оставьте пометку редактору. Числа, даты, адреса и артикулы тоже требуют первичного источника. Офлайн-обработка уменьшает передачу файла вовне, но не заменяет правила доступа к готовому тексту и резервным копиям.
Для сравнения моделей используйте один и тот же фрагмент и одну таблицу ошибок. Не меняйте одновременно модель, громкость, формат и шумоподавление. Иначе невозможно понять, какое изменение повлияло на результат. Сохраните команду, имя модели, исходный файл и исправленную версию текста.
Две модели на одном русском фрагменте
Учебный пример: в минутной записи есть фамилия, дата и тихая реплика в конце. Сравнивают небольшую и серверную русские модели на одном подготовленном файле.
| Контрольная точка | Модель A | Модель B |
|---|---|---|
| Фамилия | Искажена | Искажена иначе |
| Дата | Пропущено число | Число распознано |
| Тихая реплика | Пропущена | Есть с ошибкой |
| Конец файла | Присутствует | Присутствует |
Редактор не объявляет одну модель лучшей вообще. Для этой записи он фиксирует, где каждая версия ошиблась, выбирает рабочий вариант и отдельно исправляет подтверждённые имена и числа.
Карточка проверки Vosk
Исходный файл и длительность: Операционная система / версия Python: Версия пакета Vosk: Команда запуска: Русская модель и её точное имя: Техническая копия аудио: Формат результата: TXT / SRT / другое Начало записи проверено: Середина записи проверена: Конец записи проверен: Имена и термины: Числа и даты: Пропуски речи: Ошибки времени: Исходный результат / исправленная версия:
Частые вопросы
Vosk работает без интернета?
После установки и получения нужной модели распознавание можно выполнять локально. Проверяйте, не требует ли конкретный сценарий загрузки модели или других компонентов.
Какую русскую модель выбрать?
Начните с короткой пробы и сравните модели на одном фрагменте. Размер модели сам по себе не гарантирует лучший результат на вашей записи.
Почему пример требует WAV mono PCM?
Такое ограничение есть в простом официальном примере. CLI может использовать преобразование входа, но при ошибке формата сначала проверяйте техническую подготовку файла.
Можно ли сразу доверять SRT?
Нет. Проверьте содержание, наличие конца записи и несколько временных границ по исходному аудио.
Нужно ли хранить автоматический вариант?
Да. Отдельный исходный результат помогает отличить работу модели от последующей ручной правки.