Поток

Vosk: офлайн-распознавание речи на Python для русского языка

Марк Весёлый · основатель «Потока» · ~5 мин
Vosk: офлайн-распознавание речи на Python для русского языка

Чтобы распознавать русскую речь офлайн на Python, поставьте пакет командой pip3 install vosk, скачайте русскую модель (малая vosk-model-small-ru-0.22 весит 45M, большая vosk-model-ru-0.42 — 1.8G) и передайте в KaldiRecognizer WAV-файл mono PCM 16 бит. Результат приходит строками JSON. Если нужна диктовка с облачным распознаванием, есть Поток (potok.now).

Vosk — это библиотека распознавания речи, которая работает на вашем компьютере без отправки звука на сервер. На Python она ставится одной командой, а русский язык подключается отдельной моделью.

Расчёт по средней скорости печати и речи, не замер.
ЗадачаЗнаковПечать (200 зн/мин)Голос (900 зн/мин)
ответ в чате3002 мин0.5 мин
письмо15008 мин1.7 мин
пост или протокол400020 мин4.4 мин
статья1000050 мин11.1 мин

Какую русскую модель взять

На странице моделей Vosk для русского языка выложены две: vosk-model-small-ru-0.22 размером 45M и vosk-model-ru-0.42 размером 1.8G. Какая из них подойдёт, проверяйте на своих записях.

Скачанную модель распаковывают и передают в Model(...) путём к её папке: в примере Vosk это строка Model("models/en"), где путь меняют на русскую модель.

Лицензия Vosk-моделей — Apache 2.0, так что модели можно использовать в своих проектах по условиям этой лицензии.

Три шага диктовки в «Потоке»: зажал Ctrl + Space, сказал фразу вслух, текст появился в активном поле
Диктовка в «Потоке»: горячая клавиша, речь, готовый текст в том окне, где стоит курсор.

Vosk офлайн на Python: как запустить распознавание речи на русском

Vosk-модель работает на платформах Linux x86_64, Raspbian, Linux arm64, macOS (x86 и M1), Windows x86/64. ARMv6 и Windows ARM64 не поддерживаются. Страница установки указывает Python 3.5–3.9 и pip 20.3 или новее.

  1. Установите пакет: pip3 install vosk.
  2. Скачайте русскую модель со страницы моделей и распакуйте её в папку, например models/ru.
  3. Приведите запись к WAV mono PCM 16 бит: другие форматы пример не принимает.
  4. Создайте модель: model = Model("models/en") — в этом примере из репозитория вместо models/en подставьте путь к русской модели. Есть и вариант Model(lang="en-us"), для русского вам нужна именно скачанная русская модель.
  5. Создайте распознаватель: rec = KaldiRecognizer(model, wf.getframerate()), где wf — открытый WAV-файл.
  6. Включите слова в результате: rec.SetWords(True).
  7. Читайте файл кусками wf.readframes(4000) и передавайте каждый кусок в rec.AcceptWaveform(data).
  8. Забирайте результат: rec.Result(), rec.PartialResult() и rec.FinalResult() возвращают строки JSON.

Остальной код — открытие файла и вывод — берите из примера test_simple.py в репозитории vosk-api. Про русское распознавание в Windows без сторонних библиотек есть отдельная статья: как включить русскую диктовку через Win+H. Как измерять качество, объясняет разбор метрики WER.

Разбор темы в три шага: Какую русскую модель взять → Vosk офлайн на Python → Когда Vosk на Python не подойдёт
О чём страница по шагам: Какую русскую модель взять → Vosk офлайн на Python → Когда Vosk на Python не подойдёт.

Когда Vosk на Python не подойдёт

Если нужна диктовка в любое приложение, скрипт на Python — не замена: Поток — облачный сервис, распознавание на серверах в России; без интернета не работает. Для готовых записей у Потока есть Telegram-бот potok_now_bot: одна подписка — приложение для диктовки и бот для записей и голосовых. Если же нужен именно офлайн и вы готовы возиться с моделями и форматами, Vosk для этого и сделан.

Сравнение «Потока» и Win+H по строкам: платформы, бесплатно, оплата из рф, распознавание
«Поток» и Win+H: условия по официальным сайтам сервисов.

Частые вопросы

Какой формат аудио принимает пример Vosk?

В примере test_simple.py на входе WAV mono PCM 16 бит: если файл другой, пример выводит сообщение «Audio file must be WAV format mono PCM». Запись в другом формате сначала нужно перевести в такой WAV.

Где взять русскую модель для Vosk?

На странице моделей alphacephei.com/vosk/models. Для русского там есть vosk-model-small-ru-0.22 размером 45M и vosk-model-ru-0.42 размером 1.8G. В пример подставляют путь к распакованной папке модели.

Что такое режим 152-ФЗ для голосового ввода?

Это обработка голосовых и текстовых данных пользователя на серверах, физически расположенных в России, с соблюдением требований федерального закона №152-ФЗ «О персональных данных» — актуально для компаний, которым запрещена трансграничная передача персональных данных за рубеж.

Безопасно ли диктовать рабочие документы в облако?

Поток — облачный сервис: распознавание идёт на серверах в России, локальной обработки нет. Данные хранятся в России (152-ФЗ); для бизнеса по запросу — серверы в периметре компании (on-prem), SSO и общий словарь.

Хранится ли аудиозапись после распознавания речи?

Зависит от конкретного сервиса — у одних аудио удаляется сразу после получения текста, у других хранится некоторое время для улучшения качества модели. Это должно быть прямо указано в политике конфиденциальности конкретного продукта; общего правила для всех сервисов нет.

Что говорит 152-ФЗ о персональных данных в голосовой записи?

Голос и производный от него текст могут содержать персональные данные, поэтому для бизнеса важно, где физически стоят серверы обработки и распространяется ли на сервис 152-ФЗ. Поток предлагает бизнес-тариф с размещением on-prem или на серверах в РФ именно под это требование.

Скачать «Поток»

Работает по одной клавише в любой программе. 14 дней полного доступа, потом Free 2500 слов в неделю или Pro 690 ₽/мес (499 ₽/мес за год). «Поток» — облачный сервис: распознавание идёт на серверах в России, без интернета он не работает.

Скачать «Поток»

Голосовое из мессенджера или запись созвона можно переслать боту @potok_now_bot — он пришлёт текст. Бот входит в ту же подписку, что и приложение «Поток».

Встроенная диктовка и «Поток»

По справке Microsoft и Apple.
СредствоГде работаетРусский языкГде распознаётся речь
Голосовой ввод Windows (Win+H)Windows 10 и 11только в Windows 11облако Microsoft, без интернета не работает
Диктовка macOSmacOSестьна устройстве или на серверах Apple
ПотокWindows, macOS, Linuxосновной языкоблако, серверы в России, без интернета не работает

Первоисточники: support.microsoft.com · support.apple.com

Марк Весёлый — основатель «Потока». Пишет о голосовом вводе на русском: как диктовать в рабочих программах, что мешает и чем это чинится.
© Поток · Липатников Владимир Олегович · ИНН 502915859701 · Оферта Сравнения · Вопросы и ответы · О проекте Бесплатный голосовой ввод · Голосовой ввод для нейросетей · Данные и 152-ФЗ · Голосовой ввод на Mac · Тарифы бота · 14 дней Pro за отзыв