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

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Интеграция Vosk (офлайн STT) для распознавания речи
Простой
от 1 дня до 3 дней
Часто задаваемые вопросы

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

Этапы разработки AI-решения

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

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

Вы запускаете голосовой ассистент в закрытом контуре: никакого доступа к облаку, данные под 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 дней.

Edge AI и оптимизация: деплой моделей без облака

Представьте: ваша модель распознавания лиц выдаёт 4 секунды latency на Jetson Orin, батарея садится за час, модель вылетает по OOM. Мы — команда инженеров по Edge AI с 5+ лет опыта — оптимизировали более 150 моделей для граничных устройств. Без профилирования и правильного выбора квантизации или дистилляции проект обречён. Разрыв между исследовательским кодом и edge-деплоем — отдельная инженерная дисциплина, мы помогаем её освоить за 2–16 недель под ключ. Услуги Edge AI и оптимизация моделей — это не просто экспорт, а системная работа с железом.

Почему просто «экспортировать модель» не работает

PyTorch-модель с float32 и batch_size=32 не готова к edge. Типичные проблемы:

  • ResNet-50 в fp32 занимает 98 MB, inference на Cortex-A78 — 380 мс. После INT8-квантизации torch.ao.quantization — 24 MB, 95 мс. Экспорт в ONNX + TensorRT на Jetson — 28 мс.
  • YOLOv8m на Raspberry Pi 5 в fp32 — 2.8 fps. TFLite INT8 — 9.4 fps. С XNNPACK делегатом — 14 fps.
  • Transformer-энкодер на мобильном CPU: MobileBERT в fp16 через CoreML на iPhone 15 — 18 мс/инференс. distilbert-base-uncased в ONNX — 42 мс.

Проблема не в выборе «квантизировать или нет» — правильный путь определяется устройством, задачей и допустимой деградацией метрики. Предлагаем оценку вашего проекта: за 24 часа скажем, насколько реально ускорить модель.

Какой метод квантизации выбрать для вашей задачи?

PTQ (Post-Training Quantization) — быстрый путь. Берёте обученную модель, прогоняете calibration dataset (200–1000 примеров), получаете INT8 или INT4 веса. Инструменты: torch.ao.quantization, ONNX Runtime quantization tool, bitsandbytes. Деградация точности: 0.5–2% на классификации. Красная зона — детекция мелких объектов и сегментация, где PTQ даёт -4–8% mAP.

QAT (Quantization-Aware Training) — обучение с симулированными квантизационными шумами. Дороже (переобучение), но деградация 0.1–0.5%. Оправдано, когда PTQ неприемлем. В PyTorch — torch.ao.quantization.prepare_qat().

GPTQ / AWQ — для LLM. AWQ лучше сохраняет качество при 4-bit квантизации. llm-compressor от Neural Magic или autoawq — основные библиотеки.

Метод Время реализации Деградация точности Инструменты
PTQ 1–2 дня 0.5–2% (до 8% на детекции) torch.ao, ONNX RT, bitsandbytes
QAT 1–3 недели 0.1–0.5% torch.ao.prepare_qat, TF Quantization
GPTQ/AWQ 3–7 дней 1–3% (LLM) autoawq, llm-compressor

Экономия от выбора правильного метода: до 350 000 ₽ в год на облачных инстансах за счёт снижения latency и энергопотребления. Стоимость проекта рассчитывается индивидуально — диапазон от 100 000 до 500 000 ₽ в зависимости от сложности модели.

Прунинг и дистилляция

Структурный прунинг удаляет каналы или слои. torch.nn.utils.prune — базовый инструмент. Для transformer — прунинг attention heads (LTP, movement pruning). Результат: ResNet-50 после удаления 40% каналов с fine-tuning — -35% размера, -28% latency, -1.2% top-1 accuracy.

Knowledge distillation — обучаем маленькую student имитировать большую teacher. Классика через KLDivLoss на soft labels. Feature distillation на промежуточных слоях эффективнее. Hugging Face DistilBERT: 66M vs 110M параметров, -40% latency, -3% на GLUE. Согласно Wikipedia, это техника сжатия модели.

Комбинированный подход: дистилляция → прунинг → QAT. Даёт максимальный эффект на ограниченном железе. Экономия на облачных вычислениях достигает 70% — мы фиксировали такую у нескольких клиентов.

Целевые платформы и инструменты

Платформа Предпочтительный формат Инструмент Специфика
NVIDIA Jetson TensorRT engine trtexec, torch2trt INT8 calibration, DLA offload
Apple Silicon / iOS CoreML (.mlmodel) coremltools ANE (Neural Engine) автоматически
Android TFLite (.tflite) tf.lite.TFLiteConverter GPU delegate, NNAPI
x86 CPU ONNX + ORT onnxruntime AVX-512, VNNI
Arm Cortex TFLite / ONNX ort-arm, tflite XNNPACK, NEON
Qualcomm NPU QNN (.dlc) Qualcomm AI Hub Hexagon DSP

TensorRT — главный инструмент для NVIDIA edge. TRT строит граф с fusion операторов, выбирает оптимальные ядра. На Jetson AGX Orin YOLOv8m в TRT INT8 даёт 78 fps против 22 fps в fp16 PyTorch.

Практический кейс: детекция дефектов на производственной линии

Задача: обнаружение царапин на металле в реальном времени, 30 fps, камера к Jetson Xavier NX (16GB). Исходная модель YOLOv8l mAP50 0.91, inference на сервере 28 мс, на Jetson в fp16 — 110 мс (9 fps). Не подходит.

Шаги оптимизации:

  1. Переход на YOLOv8m — mAP50 0.887 (-2.3%), 68 мс
  2. Экспорт в TensorRT FP16 через yolo export format=engine half=True — 31 мс (32 fps)
  3. INT8 calibration на 500 кадрах — 22 мс (45 fps), mAP50 0.879

Итого: деградация 3.5% при 5× ускорении. Клиент получил engine и документацию. Гарантируем, что метрика не упадёт ниже оговорённого порога — прописано в договоре.

Пример профилирования модели (latency по слоям)

Срез профиля YOLOv8m на Jetson Xavier NX (fp16):

  • Convolution (layer 1–5): 12 ms
  • Bottleneck (layer 6–10): 8 ms
  • Head (detection): 11 ms

Узкое место — последние слои head'а. После квантования head'а отдельно latency head снизилась до 4 ms.

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

  • Отчёт по профилированию модели на целевом устройстве (latency по слоям, узкие места)
  • Выбор и обоснование методов оптимизации (quantization / pruning / distillation)
  • Оптимизированная модель (TensorRT engine / TFLite / CoreML / ONNX)
  • Конфиги для воспроизведения (скрипты, Docker-образ, инструкция)
  • Тестирование на реальном устройстве (не менее 10 000 инференсов)
  • Обучение вашей команды (2 часа онлайн)
  • Поддержка 1 месяц после передачи

Как заказать оптимизацию модели

  1. Оставьте заявку на сайте или свяжитесь с нами любым удобным способом.
  2. Мы проводим бесплатное профилирование вашей модели на целевом устройстве в течение 24 часов.
  3. Готовим план оптимизации с оценкой trade-off (скорость vs качество).
  4. Вы утверждаете план — мы приступаем к работе.
  5. После завершения передаём оптимизированную модель, конфиги и документацию.
  6. Проводим обучение вашей команды и предоставляем месячную поддержку.

Сроки: оптимизация готовой модели — 2–4 недели. Разработка с нуля под edge — 6–16 недель.

Получите консультацию — мы бесплатно оценим вашу модель и предложим план за 24 часа. Закажите бесплатное профилирование прямо сейчас.