Інтеграція Deepgram: потокове STT з низькою затримкою

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Інтеграція Deepgram: потокове 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

Ми інтегруємо Deepgram для потокового розпізнавання мовлення із затримкою менше 200 мс. Коли вашому продукту потрібен real-time STT — live-субтитри, голосові асистенти, аналітика дзвінків — стандартні рішення на кшталт Google Speech-to-Text дають latency 500-800 мс і вимагають постобробки. Deepgram Nova-2 видає результат на 60% швидше при порівнянному WER 5-8% на англійській та 12-18% на російській (бета).

Які проблеми вирішує Deepgram?

Висока латентність. Багато хмарних STT-провайдерів навантажують pipeline: аудіо спочатку буферизується, потім надсилається пакетами, що додає затримку. Deepgram пропонує streaming через WebSocket із негайним поверненням проміжних та фінальних результатів. Ми проектуємо архітектуру так, щоб latency p99 не перевищував 250 мс.

Якість на російській мові. Для російської Deepgram — поки бета, WER 12-18% вищий, ніж на англійській. Щоб знизити рівень помилок, ми калібруємо мовну модель (domain-specific tuning), додаємо кастомні ключові слова та застосовуємо post-processing з корекцією на основі правил.

Діаризація та аналітика. Визначення "хто коли говорив" у багатоканальних дзвінках — нетривіальне завдання. Deepgram підтримує діаризацію на рівні каналів та мовців, але вимагає налаштування профілів голосів. Ми реалізуємо інтеграцію з прив'язкою до метаданих дзвінка.

Чому Nova-2 ефективніша за базові моделі?

Nova-2 обробляє аудіо в 30 разів швидше реального часу (30x RT) — це в 3-5 разів швидше за Base-модель при тому ж WER. Досягається завдяки архітектурі End-to-End з attention, яка не потребує окремих етапів декодування. Для порівняння: Google Chirp дає 10x RT, а Whisper large — 3x RT. Deepgram виграє у швидкості, жертвуючи точністю на рідкісних мовах.

Як знизити latency при стримінгу?

Ключові параметри:

  • Використовувати WebSocket замість REST (REST додає до 500 мс на round-trip).
  • Вимкнути опції, що буферизують результат (наприклад, punctuate=false, interim_results=true).
  • Зменшити розмір чанків до 10-20 мс (4096 байт для 16 kHz audio).
  • Вибрати модель Base, якщо точність не критична.

В одному проекті для live-трансляції вебінарів ми знизили latency з 600 мс до 180 мс, застосувавши ці оптимізації.

Як ми інтегруємо Deepgram: стек та підхід

Базовий сценарій — інтеграція через WebSocket з відкриттям постійного з'єднання. Використовуємо Python asyncio з бібліотекою websockets та офіційний SDK Deepgram для аутентифікації. Приклад коду для streaming (Nova-2, російська, діаризація):

import asyncio
import websockets
import json

async def transcribe_stream():
    url = "wss://api.deepgram.com/v1/listen"
    headers = {"Authorization": f"Token {DEEPGRAM_API_KEY}"}
    params = "?model=nova-2&language=ru&punctuate=true&diarize=true"

    async with websockets.connect(url + params, extra_headers=headers) as ws:
        async def send_audio():
            with open("audio.wav", "rb") as f:
                while chunk := f.read(4096):
                    await ws.send(chunk)
            await ws.send(json.dumps({"type": "CloseStream"}))

        async def receive_results():
            async for message in ws:
                result = json.loads(message)
                if result.get("is_final"):
                    transcript = result["channel"]["alternatives"][0]["transcript"]
                    print(transcript)

        await asyncio.gather(send_audio(), receive_results())

Додатково налаштовуємо параметри: utterances=true для розбивки на фрази, numerals=true для цифр, smart_format=true для пунктуації та символів.

Що входить у роботу?

  • Аудит поточної архітектури — оцінка вимог до затримки, мови, обсягу.
  • Проектування інтеграції — вибір моделі, протоколу (REST/WebSocket), схеми аутентифікації.
  • Реалізація — написання модуля для вашого backend (Python, Node.js, Go, Java).
  • Тестування — A/B-тестування на тестовому датасеті, заміри latency p50/p95/p99.
  • Документація — опис API, конфігів, інструкція з розгортання.
  • Навчання команди — воркшоп з експлуатації та моніторингу.

Процес роботи

  1. Аналітика (2-3 дні) — збір вимог, вибір моделі Deepgram, оцінка якості на вашому аудіо.
  2. Проектування (2-4 дні) — розробка архітектури, узгодження протоколів та методів обробки помилок (reconnect, backpressure).
  3. Реалізація (5-10 днів) — інтеграція через WebSocket, налаштування діаризації, post-processing.
  4. Тестування (3-5 днів) — прогін на тестових даних, оптимізація параметрів, навантажувальне тестування.
  5. Деплой та передача (2-3 дні) — розгортання у вашому середовищі (AWS/GCP/on-prem), передача документації.

Терміни та вартість

Терміни: від 2 до 4 тижнів залежно від складності (потокове vs пакетне, необхідність кастомної моделі, діаризація). Вартість розраховується індивідуально на основі обсягу роботи та обраного стеку. На старті ми проводимо безкоштовний технічний аудит — оцінюємо поточну архітектуру та даємо попередній план. Зв'яжіться з нами, щоб обговорити ваш проект. Отримайте консультацію — надішлемо деталі щодо термінів та вартості.

Порівняння Deepgram з альтернативами

Параметр Deepgram Nova-2 Google STT Whisper large
WER (англ.) 5-8% 6-10% 8-12%
Latency streaming 100-200 мс 400-800 мс 500-1000 мс
Реальна швидкість 30x RT 10x RT 3x RT
Підтримка російської бета (12-18%) повна (10-15%) 99+ мов
Діаризація вбудована окреме налаштування немає
Ціна за хвилину $0.0043 (Nova-2) $0.006 $0.000 (self-hosted)

Спираючись на досвід у real-time speech, ми гарантуємо інтеграцію з latency p99 не вище 300 мс та точністю, порівнянною з еталонними моделями. Наші інженери мають сертифікати Deepgram та AWS, що підтверджує надійність рішень.

Параметри налаштування для low latency
Параметр Значення за замовчуванням Рекомендація
punctuate false true (якщо важлива пунктуація)
interim_results false true (для проміжних результатів)
chunk_size 8192 байт 4096 байт (16 kHz)
model nova-2 base (якщо точність не критична)

За даними Deepgram, модель Nova-2 економить до 40% витрат порівняно з Google STT при високих навантаженнях. Зв'яжіться з нами для безкоштовного аудиту вашого проекту.

Розпізнавання та синтез мовлення: перша лінія проблеми

Ми стикаємося із замовником, який має 40 000 годин записів кол-центру й хоче транскрибувати їх за тиждень — це типова задача розпізнавання мови ASR. Штатний хмарний ASR (Google Speech-to-Text) видає WER 28% на галузевій лексиці, а ціна при таких обсягах стає непідйомною. Завдання — знизити WER нижче 10% і перейти на self-hosted інференс. Така ситуація повторюється в кожному другому проєкті, і ми маємо напрацьований патерн рішення.

Типові технічні проблеми та їх усунення

WER не сходиться до потрібної метрики. Найчастіше винна не архітектура, а дані: шумні аудіо без нормалізації рівня (–23 LUFS замість стандарту), змішані мови в одному каналі, акцент, специфічна доменна лексика. Whisper large-v3 з коробки дає WER 8–12% на чистій українській і провалюється до 25–35% на записах з PSTN-артефактами та вузькосмуговим кодеком G.711.

Діаризація ламається при більш ніж двох спікерах. pyannote/speaker-diarization-3.1 працює стабільно при 2–3 мовцях, але DER (Diarization Error Rate) зростає з 6% до 18–22% при 5+ учасниках конференції. Проблема посилюється перехресними репліками: за замовчуванням min_duration_on=0.1 обрізає короткі вставки. Рішення — збільшити min_duration_on до 0.3 та додати overlap detection через pyannote-overlap-detection.

Клонування голосу — латентність чи якість. XTTS v2 (Coqui) дає натуральний голос, але при потоковій генерації stream_chunk_size=20 перший аудіочанк прилітає через 1.4–2.0 с — неприйнятно для інтерактивних сценаріїв. StyleTTS2 та Kokoro швидші, але вимагають точного підготовки референсного аудіо. Ми навчилися вирішувати цю дилему за допомогою гібридного підходу: на старті використовуємо Silero TTS (50–100 мс TTFB), а після отримання перших 3 секунд аудіо перемикаємо на XTTS для кращої натуральності.

Як вибрати ASR-модель під ваші дані?

Модель WER (українська, чистий запис) WER (PSTN, кодек G.711) Швидкість інференсу (фактор real-time) Вартість інференсу (1 год аудіо, A10G)
Whisper large-v3 8–10% 25–35% ~0.1x (55 с на 40 хв) ~$0.50
Whisper medium 12–15% 30–40% ~0.3x ~$0.15
Wav2Vec2 XLSR-53 15–18% 28–35% ~0.8x ~$0.08
Whisper large-v3 + fine-tune 4–7% 10–15% ~0.1x ~$0.50

faster-whisper (CTranslate2) швидший за оригінальний Whisper у 4 рази при однаковому WER. Для продакшену ми завжди використовуємо його.

Практичний приклад: fine-tuning Whisper на доменній лексиці

Фінтех-компанія з 12 000 дзвінків/день. Початковий WER на українській з банківською лексикою — 22% (Google STT). Після fine-tuning whisper-medium на 200 годинах розмічених записів через Hugging Face transformers + Seq2SeqTrainer з learning_rate=1e-5, warmup_steps=500 — WER впав до 7.3%. Інференс на одній A10G через faster-whisper з compute_type=float16 обробляє 40-хвилинний дзвінок за 55 секунд. Підсумкова вартість інференсу — $0.50 за годину аудіо, що в 6 разів дешевше за хмарне рішення. Проєкт виконано за 6 тижнів, включаючи підготовку даних і валідацію.

Техніка fine-tuning описана в офіційній документації Whisper на Hugging Face.

Як донавчити Whisper на доменних даних?

Коли загальна модель не справляється, fine-tuning — перший інструмент. Мінімальний датасет для помітного покращення — 20–30 годин розміченого аудіо в цільовому домені. Розмітку можна отримати через ітеративний процес: прогнати через базову модель → вручну виправити 10–15% помилок → перенавчити → повторити.

training_args = Seq2SeqTrainingArguments(
    per_device_train_batch_size=16,
    gradient_accumulation_steps=2,
    learning_rate=1e-5,
    warmup_steps=500,
    max_steps=5000,
    fp16=True,
    predict_with_generate=True,
    generation_max_length=225,
)

При fine-tuning обов’язково заморожуйте encoder перші 1000 кроків (model.freeze_encoder()), інакше акустичні ознаки роз’їдуться раніше, ніж decoder адаптується до нової лексики.

Синтез мовлення: що обрати для вашого сценарію?

Модель Латентність (TTFB) Натуральність MOS Клонування Мови
XTTS v2 1.2–2.0 с 4.1–4.3 Так, 3 с референсу 17
StyleTTS2 0.3–0.6 с 4.0–4.2 Так, вимагає адаптації en, + fine-tune
Kokoro-82M 0.08–0.15 с 3.7–3.9 Ні en, ja
Silero TTS 0.05–0.1 с 3.4–3.6 Ні ru, en, de, та ін.
Edge-TTS ~0.4 с (cloud) 4.0 Ні 100+

Для інтерактивних ботів з вимогою TTFB < 300 мс — Silero або Kokoro. Для озвучення контенту, де важлива натуральність — XTTS v2 з потоковою віддачею через WebSocket. Ми гарантуємо, що підібрана модель відповідатиме вашим вимогам до латентності та якості — це підтверджено на 50+ реалізованих проєктах.

Наш досвід та гарантії

10+ років досвіду в NLP та speech processing. 50+ успішних проєктів для fintech, telecom, медицини. Сертифіковані моделі (Model Card + bias audit). Ми гарантуємо зниження WER до цільового рівня, інакше повертаємо кошти.

Що входить у роботу з нами?

Клієнт отримує:

  • Документацію: model card, інструкцію з розгортання, API-специфікацію (OpenAPI 3.0)
  • Код: готові скрипти для інференсу, пайплайни обробки (Docker Compose + Kubernetes маніфести за потреби)
  • Доступи: до self-hosted інстансів, графіки моніторингу (Grafana + Prometheus)
  • Навчання: 2 сесії для вашої команди (налаштування, експлуатація, troubleshooting)

Ми також надаємо сертифікат відповідності моделі (Model Card + bias report), що підсилює довіру до рішення.

Процес роботи та терміни

  1. Аудит-сесія – беремо 2–4 години ваших записів, проганяємо через кілька моделей, вимірюємо WER/CER, дивимося на розподіл помилок (лексичні, акустичні, мова). Займає 1–2 дні.
  2. Вибір архітектури – під ваш throughput: один GPU для 1000 хв/день або кластер з балансувальником для 100 000+ хв/день.
  3. Реалізація – Docker-контейнер з FastAPI або Triton Inference Server для батчованого інференсу. Інтеграція з чергою Kafka.
  4. Тестування – A/B тест на продакшн-даних, порівняння з baseline (Google/Azure STT).
  5. Деплой – CI/CD (GitHub Actions + ArgoCD), моніторинг (Grafana + WER/CER алерти).

Терміни:

  • Базова інтеграція готової моделі – 1–2 тижні.
  • Fine-tuning з підготовкою даних та валідацією – 4–8 тижнів.
  • Повна розробка голосового пайплайну (ASR + діаризація + TTS + моніторинг) – 2–4 місяці.

Зв'яжіться з нами для безкоштовної консультації — оцінимо ваш проєкт за 2 дні. Або замовте пілотний fine-tuning на 20 годинах ваших даних і отримайте перші результати вже за 2 тижні.