Интеграция Vosk (офлайн STT) для распознавания речи

Вы запускаете голосовой ассистент в закрытом контуре: никакого доступа к облаку, данные под NDA, железо — Raspberry Pi 4. **Vosk** — единственный production-ready toolkit на базе [Kaldi](https://kaldi-asr.org/), который работает полностью офлайн, занимает от 50 МБ на диске и даёт latency ~200 мс на

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1439
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Вы запускаете голосовой ассистент в закрытом контуре: никакого доступа к облаку, данные под NDA, железо — Raspberry Pi 4. Vosk — единственный production-ready toolkit на базе Kaldi, который работает полностью офлайн, занимает от 50 МБ на диске и даёт latency ~200 мс на streaming. Без интернета, без утечек. Vosk поддерживает 20+ языков включая русский, но на каждом втором проекте мы сталкивались с проблемой WER выше ожидаемого — базовая модель не понимает медицинские или юридические термины. Мы внедряли Vosk в медицинские диктофоны, голосовые помощники для «чистых комнат», системы управления конвейером. Каждый раз упирались в два ограничения: точность на специфической лексике и производительность на слабом CPU. Ниже — как мы это обходим. При этом затраты на облачные API могут доходить до сотен тысяч долларов в месяц — переход на Vosk снижает расходы на 60–80%.

Какие проблемы решаем

  1. Высокий WER на предметной лексике. Стандартная модель vosk-model-ru-0.42 даёт WER ~12% на новостях, но на медицинских терминах — до 30%. Решение — кастомный словарь с weight-ами и fine-tuning на 1–2 часа целевых записей. На одном проекте мы за день снизили WER с 25% до 14%.

  2. Латенси на потоке. Vosk отдаёт partial results каждые 200 мс, но если нагрузка на CPU 100%, фреймворк начинает подвисать. Мы оптимизировали pipeline: вынесли декодинг в отдельный поток, добавили буфер на 2 секунды, использовали VAD для вырезания тишины. В результате p99 latency не превышает 350 мс.

  3. Необходимость уникальной модели. Для китайского языка Vosk предлагает не все акценты. На одном проекте с французским диалектом мы обучили адаптированную модель через Kaldi nnet3 — потратили неделю, но получили WER 8% против базовых 22%.

Как Vosk адаптировать под специфическую лексику?

Процесс включает четыре этапа: сбор аудиозаписей (1–2 часа), транскрибирование, создание кастомного словаря с весами, дообучение модели через Kaldi nnet3. На одном из проектов для французского диалекта мы снизили WER с 22% до 8% за неделю.

Почему Vosk лучше для edge-устройств?

Vosk потребляет в 40 раз меньше памяти, чем Whisper-large, и в 10 раз быстрее на Raspberry Pi. Ниже — сравнение доступных моделей для русского языка (данные — Vosk model zoo):

Модель Размер WER (чистая речь) RAM (итого) Идеальный сценарий
vosk-model-small-ru-0.22 45 MB ~20% ~80 MB Raspberry Pi Zero, микроконтроллеры
vosk-model-ru-0.42 1.5 GB ~12% ~1.6 GB Сервер, одноплатник с 2+ ГБ ОЗУ
Кастомная (fine-tune) от 100 MB 8–15% ~500 MB Нишевая лексика (медицина, юриспруденция)

Вывод: для low-power edge — small, для точности — full или кастом. Дополнительное сравнение по ресурсам:

Ресурс Vosk (small) Whisper (tiny) Whisper (base)
RAM 80 MB 1 GB 2.5 GB
CPU load (RPi4) 15% 60% 90%
Latency 200 ms 500 ms 1.2 s

Как мы интегрируем Vosk: кейс медицинского диктофона

Один из наших клиентов — медицинский центр, которому требовалось записывать приёмы врачей. Железо — Intel NUC (i5, 8 GB RAM). Мы использовали vosk-model-ru-0.42 с кастомным медицинским словарём. Фрагмент интеграции:

from vosk import Model, KaldiRecognizer import pyaudio model = Model("vosk-model-medical") rec = KaldiRecognizer(model, 16000) rec.SetGrammar(grammar) # медицинские термины p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=4000) while True: data = stream.read(4000, exception_on_overflow=False) if rec.AcceptWaveform(data): result = json.loads(rec.Result()) print(result["text"]) else: partial = json.loads(rec.PartialResult()) # отображаем промежуточный текст 

Первый прототип — за 4 дня. Ещё 3 дня ушло на калибровку словаря и стресс-тестирование. На выходе — WER 9% на реальных записях.

Подробнее о кастомном словаре Мы используем технику добавления терминов с весами: каждому слову назначается коэффициент от 0 до 1, влияющий на вероятность его распознавания. Например, для слова «диагноз» weight=1.5, для «гипертония» weight=1.2. Это позволяет поднять точность без увеличения размера модели.

Что входит в работу

  1. Аудит задачи и подбор модели.
  2. Интеграция Vosk в ваш код (Python, Java, C#, Go, Node.js).
  3. Кастомизация словаря и/или fine-tuning модели.
  4. Оптимизация latency и потребления памяти.
  5. Тестирование на ваших данных (100+ записей).
  6. Документация и обучение команды.
  7. Техподдержка 3 месяца.

Стоимость рассчитывается индивидуально, но в среднем замена облачного API на Vosk экономит 60–80% бюджета на распознавание.

Сроки интеграции Vosk

Базовая интеграция — от 3 до 5 дней. Если требуется кастомная модель или fine-tuning — 2–3 недели. Мы помогаем оценить проект: просто опишите задачу, и за день пришлём план.

Почему выбирают нашу интеграцию?

Опыт — более 10 проектов по голосовым технологиям. Мы даём гарантию на качество распознавания (оговорённый WER) и поддерживаем код после сдачи. Вы остаётесь владельцем всех моделей и скриптов — никакого vendor lock.

Свяжитесь с нами — пришлём тестовую модель под вашу задачу. Закажите пилот — получите прототип за 5 дней.