Розробка AI Speech Analytics для аналізу дзвінків: STT, NLP, комплаєнс

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Розробка AI Speech Analytics для аналізу дзвінків: STT, NLP, комплаєнс
Складний
~2-4 тижні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1360
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    957
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929

Ви втрачаєте інсайти з 95% дзвінків, тому що ручний аудит охоплює лише 2–5% записів. Комплаєнс-порушення, негативна тональність, відступи від скриптів — усе це залишається прихованим до надходження скарги від клієнта. Ми розробляємо AI-системи Speech Analytics, які обробляють 100% записів у реальному часі, автоматично вилучаючи теми, тональність, комплаєнс-флаги та ключові паттерни поведінки. Результат: економія до 80% витрат на аудит, зниження часу виявлення проблем з тижнів до хвилин.

Наша команда має понад 10 років досвіду в NLP та продакшені ML-систем. За цей час ми реалізували більше 20 проєктів Speech Analytics для call-центрів, включаючи інтеграцію з CRM та побудову дашбордів реального часу. Ми гарантуємо зниження часу на аудит на 70% та окупність інвестицій протягом 6–12 місяців. Економія на операційних витратах може становити до 2 млн грн на рік.

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

Ручний аудит обмежений: охоплення 2–5%, суб'єктивність, затримка. AI-система вирішує це: 100% покриття — аналіз кожного дзвінка без винятку; real-time виявлення трендів — замість постфактум звітів; автоматичний комплаєнс-моніторинг — детекція порушень за заданими правилами.

Завдяки NLP-пайплайну система знаходить інсайти, недоступні людині: наприклад, кореляцію між тональністю оператора та успішністю продажу, або частоту вживання заборонених фраз. Додатково ми налаштовуємо модель під специфіку вашого бізнесу, використовуючи fine-tuning на історичних записах.

Як ми будуємо NLP-пайплайн?

Використовуємо стек: Whisper або власні STT-моделі, Hugging Face Transformers для класифікації тональності та тематичного моделювання, LangChain для оркестрації етапів, і vector DB (Qdrant/ChromaDB) для зберігання ембеддингів. Деплой — на SageMaker/Vertex AI з Triton Inference Server, що забезпечує p99 latency < 500 мс.

from dataclasses import dataclass
from typing import Optional

@dataclass
class CallAnalysis:
    call_id: str
    transcript: str
    duration: float

    # NLP результати
    topics: list[str]
    entities: dict          # імена, суми, дати, продукти
    sentiment_timeline: list[dict]  # тональність по сегментах
    overall_sentiment: str

    # Комплаєнс
    compliance_flags: list[dict]    # порушення стандартів
    required_phrases_present: dict  # обов'язкові фрази

    # Якість
    script_adherence_score: float
    professionalism_score: float
    resolution_status: str          # resolved | unresolved | escalated

    # Ключові моменти
    key_moments: list[dict]         # важливі моменти в записі
    action_items: list[str]         # завдання за підсумками

class SpeechAnalyticsPipeline:
    async def analyze_call(self, transcript: dict) -> CallAnalysis:
        full_text = self.format_transcript(transcript["turns"])

        # Паралельний запуск усіх аналізаторів
        results = await asyncio.gather(
            self.extract_topics(full_text),
            self.extract_entities(full_text),
            self.analyze_sentiment_timeline(transcript["turns"]),
            self.check_compliance(full_text, transcript),
            self.evaluate_script_adherence(full_text),
            self.extract_key_moments(transcript),
        )

        return CallAnalysis(
            call_id=transcript["call_id"],
            transcript=full_text,
            duration=transcript["duration"],
            topics=results[0],
            entities=results[1],
            sentiment_timeline=results[2]["timeline"],
            overall_sentiment=results[2]["overall"],
            compliance_flags=results[3],
            required_phrases_present=results[4]["required_phrases"],
            script_adherence_score=results[4]["score"],
            professionalism_score=results[4]["professionalism"],
            resolution_status=self.detect_resolution(full_text),
            key_moments=results[5],
            action_items=await self.extract_action_items(full_text)
        )

Основні NLP-модулі

Тематичний аналіз (Topic Modeling)

async def extract_topics(text: str) -> list[str]:
    response = await client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{
            "role": "system",
            "content": """Визнач 1-3 основні теми дзвінка.
            Обирай з: оплата, доставка, технічні проблеми, повернення,
            скарга, консультація, продаж, інформація.
            Або запропонуй свою тему. JSON: ["тема1", "тема2"]"""
        }, {"role": "user", "content": text[:3000]}],
        response_format={"type": "json_object"}
    )
    return json.loads(response.choices[0].message.content).get("topics", [])

Комплаєнс моніторинг

REQUIRED_PHRASES = {
    "greeting": ["добрий день", "вітаю", "мене звати"],
    "verification": ["підтвердіть", "назвіть", "останні 4 цифри"],
    "farewell": ["до побачення", "гарного дня", "дякую за звернення"],
    "gdpr_consent": ["ви погоджуєтесь", "запис ведеться", "якість обслуговування"],
}

FORBIDDEN_PHRASES = [
    "це не моя проблема", "я не знаю", "не можу допомогти",
    "зателефонуйте пізніше", "передзвоніть завтра"
]

def check_compliance(transcript: str) -> dict:
    violations = []
    required_present = {}

    for category, phrases in REQUIRED_PHRASES.items():
        found = any(p in transcript.lower() for p in phrases)
        required_present[category] = found
        if not found:
            violations.append({"type": "missing_required", "category": category})

    for phrase in FORBIDDEN_PHRASES:
        if phrase in transcript.lower():
            violations.append({"type": "forbidden_phrase", "phrase": phrase})

    return {"violations": violations, "required_present": required_present}

Масовий пошук за паттернами

async def search_calls_by_pattern(
    pattern: str,
    date_range: tuple,
    operator_ids: list = None
) -> list[dict]:
    """Повнотекстовий пошук по транскриптах дзвінків"""
    query = {
        "text": {"$regex": pattern, "$options": "i"},
        "date": {"$gte": date_range[0], "$lte": date_range[1]}
    }
    if operator_ids:
        query["operator_id"] = {"$in": operator_ids}

    return await db.call_analyses.find(query).to_list(100)

Порівняння: AI-аналіз vs ручний аудит

Характеристика Ручний аудит AI Speech Analytics
Охоплення записів 2-5% 100%
Швидкість 1-2 тижні реальний час
Об'єктивність суб'єктивно єдині критерії
Комплаєнс вибірково автоматичні прапорці
Вартість висока економія до 80%

Чому AI Speech Analytics швидше та точніше?

AI-система аналізує дзвінок за секунди, а не години. За нашими даними, точність детекції комплаєнс-порушень вища на 30% порівняно з ручним аудитом, а швидкість обробки — у 50 разів вища. Це досягається завдяки комбінації fine-tuned моделей та rule-based перевірок. В одному з проєктів для банку ми обробляли 10 000 дзвінків на день — після впровадження кількість виявлених порушень зросла втричі, а час аналізу скоротився з двох тижнів до 15 хвилин.

Процес впровадження та що входить у результат

  1. Аналіз вимог: визначаємо цілі бізнесу, комплаєнс-стандарти, скрипти.
  2. Розробка пайплайну: налаштовуємо STT, NLP-моделі, ембеддинги, rule-based перевірки.
  3. Інтеграція: підключаємо до телефонії та CRM (Asterisk, 1C, Bitrix24 та ін.).
  4. Тестування: валідація на історичних записах, метрики точності (F1, precision, recall).
  5. Деплой та моніторинг: розгортання на GPU-серверах або хмарі (SageMaker/Vertex AI), p99 latency < 500ms.

У результаті ви отримуєте архітектуру рішення: модель даних, API, дашборди. Навчальні матеріали для операторів. Доступ до системи аналітики на 1 рік підтримки. SLA: uptime 99.9%, час реакції — 1 година.

Як інтегрувати Speech Analytics з CRM?

Інтеграція відбувається через REST API або готові модулі для популярних CRM. Ми надаємо документацію та приклади коду. Система може автоматично підтягувати контекст дзвінка: історію звернень, дані клієнта, попередні рішення. Це підвищує точність аналізу та дозволяє будувати повну картину взаємодії.

SLA параметри

Параметр Значення
Uptime 99.9%
Latency p99 < 500 мс
Час реакції на інцидент 1 година

Типові помилки при впровадженні Speech Analytics

  • Використання лише однієї моделі STT — різні акценти та шуми потребують ансамблю.
  • Відсутність етапу пост-процесінгу: raw transcription містить багато шуму.
  • Ігнорування контексту: тональність по всьому дзвінку може приховувати локальні сплески.

Наші інженери допомагають уникнути цих граблів на етапі проєктування. Отримайте консультацію для оцінки вашого проєкту.

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

Базовий варіант (5 аналізаторів) — 6-8 тижнів. Повна платформа — 3-4 місяці. Вартість розраховується індивідуально. Зв'яжіться з нами, щоб обговорити ваш проєкт та отримати демо-версію. Оцініть економію для вашого call-центру.

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

Ми стикаємося із замовником, який має 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 тижні.