Ви запускаєте голосовий асистент у закритому контурі: жодного доступу до хмари, дані під NDA, залізо — Raspberry Pi 4. Vosk — єдиний production-ready toolkit на базі Vosk Kaldi, який працює повністю офлайн, займає від 50 МБ на диску і дає latency ~200 мс на streaming. Завдяки цьому забезпечується STT без інтернету та приватне розпізнавання мовлення. Vosk підтримує 20+ мов, але на кожному другому проекті ми стикалися з проблемою WER вищого за очікуваний — базова модель не розуміє медичні або юридичні терміни. Ми впроваджували Vosk у медичні диктофони, голосові помічники для «чистих кімнат», системи керування конвеєром. Щоразу впиралися в два обмеження: точність на специфічній лексиці та продуктивність на слабкому CPU. Нижче — як ми це обходимо. При цьому витрати на хмарні API можуть сягати сотень тисяч рублів на місяць — перехід на Vosk знижує витрати на 60–80%. Наприклад, базова інтеграція коштує $500, а повна з кастомізацією – від $2000 до $5000.
Які проблеми вирішуємо
-
Високий WER на предметній лексиці. Стандартна модель vosk-model-uk-0.3 дає WER ~12% на новинах, але на медичних термінах — до 30%. Рішення — кастомний словник з вагами та fine-tuning на 1–2 години цільових записів. На одному проекті ми за день знизили WER з 25% до 14%.
-
Латенсі на потоці. Vosk віддає partial results кожні 200 мс, але якщо навантаження на CPU 100%, фреймворк починає зависати. Ми оптимізували pipeline: винесли декодинг в окремий потік, додали буфер на 2 секунди, використали VAD (Voice Activity Detection) для вирізання тиші, налаштували beam search та масштабування мовної моделі. В результаті p99 latency не перевищує 350 мс.
-
Необхідність унікальної моделі. Для китайської мови Vosk пропонує не всі акценти. На одному проекті з французьким діалектом ми навчили адаптовану модель через Kaldi nnet3 — витратили тиждень, але отримали WER 8% проти базових 22%.
Як адаптувати Vosk під специфічну лексику?
Процес включає чотири етапи: збір аудіозаписів (1–2 години), транскрибування, створення кастомного словника з вагами, донавчання моделі через Kaldi nnet3. На одному з проектів для французького діалекту ми знизили WER з 22% до 8% за тиждень.
Чому Vosk кращий для edge-пристроїв?
Vosk в 40 разів економніший за пам'яттю та в 10 разів швидший за Whisper на Raspberry Pi. Vosk споживає в 40 разів менше пам'яті, ніж Whisper-large, і в 10 разів швидший на Raspberry Pi. Нижче — порівняння доступних моделей для української мови (дані — Vosk model zoo Vosk Documentation):
| Модель | Розмір | WER (чисте мовлення) | RAM (всього) | Ідеальний сценарій |
|---|---|---|---|---|
| vosk-model-small-uk-0.2 | 45 MB | ~20% | ~80 MB | Raspberry Pi Zero, мікроконтролери |
| vosk-model-uk-0.3 | 1.5 GB | ~12% | ~1.6 GB | Сервер, одноплатник з 2+ ГБ ОЗУ |
| Кастомна (fine-tune) | від 100 MB | 8–15% | ~500 MB | Нішева лексика (медицина, юриспруденція) |
Висновок: для low-power edge — small, для точності — full або кастом. Додаткове порівняння за ресурсами (для RPi4):
| Ресурс | Vosk (small) | Whisper (tiny) | Whisper (base) |
|---|---|---|---|
| RAM | 80 MB | 1 GB | 2.5 GB |
| CPU load | 15% | 60% | 90% |
| Latency | 200 ms | 500 ms | 1.2 s |
Як ми інтегруємо Vosk: кейс медичного диктофона
З нашої практики: наш клієнт, медичний центр, якому потрібно було записувати прийоми лікарів. Залізо — Intel NUC (i5, 8 GB RAM). Ми використали vosk-model-uk-0.3 з кастомним медичним словником. Фрагмент інтеграції:
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% на реальних записах. Вартість такої інтеграції стартує від $500, а економія на хмарних API сягає $3000 на місяць.
Детальніше про кастомний словник
Ми використовуємо техніку додавання термінів з вагами: кожному слову призначається коефіцієнт від 0 до 1, що впливає на ймовірність його розпізнавання. Наприклад, для слова «діагноз» weight=1.5, для «гіпертонія» weight=1.2. Це дозволяє підвищити точність без збільшення розміру моделі. Також застосовуємо фонетичну декомпозицію та біграмні моделі для зниження WER.Що входить у роботу
- Аудит завдання та підбір моделі.
- Інтеграція Vosk у ваш код (Python, Java, C#, Go, Node.js).
- Кастомізація словника та/або fine-tuning моделі.
- Оптимізація latency та споживання пам'яті.
- Тестування на ваших даних (100+ записів).
- Документація та навчання команди.
- Техпідтримка 3 місяці.
Вартість розраховується індивідуально, але в середньому заміна хмарного API на Vosk економить 60–80% бюджету на розпізнавання. Для типових проектів бюджет становить $500–$3000.
Терміни інтеграції Vosk
Базова інтеграція — від 3 до 5 днів. Якщо потрібна кастомна модель або fine-tuning — 2–3 тижні. Ми допомагаємо оцінити проект: просто опишіть задачу, і за день надішлемо план.
Чому обирають нашу інтеграцію?
Досвід — більше 10 проектів з голосових технологій. Ми даємо гарантію на якість розпізнавання (обумовлений WER) і підтримуємо код після здачі. Ви залишаєтеся власником усіх моделей і скриптів — жодного vendor lock.
Зв'яжіться з нами — надішлемо тестову модель під вашу задачу. Замовте пілот — отримайте прототип за 5 днів.







