Чтобы распознавать русскую речь офлайн на 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 зн/мин) |
|---|---|---|---|
| ответ в чате | 300 | 2 мин | 0.5 мин |
| письмо | 1500 | 8 мин | 1.7 мин |
| пост или протокол | 4000 | 20 мин | 4.4 мин |
| статья | 10000 | 50 мин | 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, так что модели можно использовать в своих проектах по условиям этой лицензии.
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 или новее.
- Установите пакет:
pip3 install vosk. - Скачайте русскую модель со страницы моделей и распакуйте её в папку, например
models/ru. - Приведите запись к WAV mono PCM 16 бит: другие форматы пример не принимает.
- Создайте модель:
model = Model("models/en")— в этом примере из репозитория вместоmodels/enподставьте путь к русской модели. Есть и вариантModel(lang="en-us"), для русского вам нужна именно скачанная русская модель. - Создайте распознаватель:
rec = KaldiRecognizer(model, wf.getframerate()), гдеwf— открытый WAV-файл. - Включите слова в результате:
rec.SetWords(True). - Читайте файл кусками
wf.readframes(4000)и передавайте каждый кусок вrec.AcceptWaveform(data). - Забирайте результат:
rec.Result(),rec.PartialResult()иrec.FinalResult()возвращают строки JSON.
Остальной код — открытие файла и вывод — берите из примера test_simple.py в репозитории vosk-api. Про русское распознавание в Windows без сторонних библиотек есть отдельная статья: как включить русскую диктовку через Win+H. Как измерять качество, объясняет разбор метрики WER.
Когда Vosk на Python не подойдёт
Если нужна диктовка в любое приложение, скрипт на Python — не замена: Поток — облачный сервис, распознавание на серверах в России; без интернета не работает. Для готовых записей у Потока есть Telegram-бот potok_now_bot: одна подписка — приложение для диктовки и бот для записей и голосовых. Если же нужен именно офлайн и вы готовы возиться с моделями и форматами, Vosk для этого и сделан.
Частые вопросы
В примере test_simple.py на входе WAV mono PCM 16 бит: если файл другой, пример выводит сообщение «Audio file must be WAV format mono PCM». Запись в другом формате сначала нужно перевести в такой WAV.
На странице моделей alphacephei.com/vosk/models. Для русского там есть vosk-model-small-ru-0.22 размером 45M и vosk-model-ru-0.42 размером 1.8G. В пример подставляют путь к распакованной папке модели.
Это обработка голосовых и текстовых данных пользователя на серверах, физически расположенных в России, с соблюдением требований федерального закона №152-ФЗ «О персональных данных» — актуально для компаний, которым запрещена трансграничная передача персональных данных за рубеж.
Поток — облачный сервис: распознавание идёт на серверах в России, локальной обработки нет. Данные хранятся в России (152-ФЗ); для бизнеса по запросу — серверы в периметре компании (on-prem), SSO и общий словарь.
Зависит от конкретного сервиса — у одних аудио удаляется сразу после получения текста, у других хранится некоторое время для улучшения качества модели. Это должно быть прямо указано в политике конфиденциальности конкретного продукта; общего правила для всех сервисов нет.
Голос и производный от него текст могут содержать персональные данные, поэтому для бизнеса важно, где физически стоят серверы обработки и распространяется ли на сервис 152-ФЗ. Поток предлагает бизнес-тариф с размещением on-prem или на серверах в РФ именно под это требование.
Скачать «Поток»
Работает по одной клавише в любой программе. 14 дней полного доступа, потом Free 2500 слов в неделю или Pro 690 ₽/мес (499 ₽/мес за год). «Поток» — облачный сервис: распознавание идёт на серверах в России, без интернета он не работает.
Скачать «Поток»Голосовое из мессенджера или запись созвона можно переслать боту @potok_now_bot — он пришлёт текст. Бот входит в ту же подписку, что и приложение «Поток».
Встроенная диктовка и «Поток»
| Средство | Где работает | Русский язык | Где распознаётся речь |
|---|---|---|---|
| Голосовой ввод Windows (Win+H) | Windows 10 и 11 | только в Windows 11 | облако Microsoft, без интернета не работает |
| Диктовка macOS | macOS | есть | на устройстве или на серверах Apple |
| Поток | Windows, macOS, Linux | основной язык | облако, серверы в России, без интернета не работает |
Первоисточники: support.microsoft.com · support.apple.com