Розробка AI-системи автоматичної оцінки дзвінків операторів

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

Напрямки 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

Реальний кейс з нашої практики: наш клієнт — роздрібна мережа з 300 дзвінками на день. QA-відділ встигав прослухати лише 15% (45 дзвінків). Пропущені 85% містили порушення сценарію, падіння емпатії та пропущені можливості продажів. Втрати — до 8% виручки щомісяця (в середньому 500 тис. руб). Ми спроектували AI-систему на базі GPT-4o та Whisper, яка забезпечила 100% покриття, підвищила точність оцінки до 92% (порівняно з людиною-асесором) та скоротила час виведення на 70%. Економія склала від 400 тис. руб щомісяця, а окупність — 2–3 місяці.

Система скорингу дзвінків (за визначенням Wikipedia) присвоює числову оцінку кожному дзвінку за стандартизованою методологією, створює рейтинги операторів та виявляє патерни, що потребують коригувального навчання. Оцінка — не бінарна (ок/не ок), а багатовимірна: привітання, утримання, прощання, емпатія, розуміння проблеми, точність рішення, дотримання GDPR, ефективність AHT та FCR.

Які проблеми реально вирішує AI-скоринг?

  1. Вибірковий контроль. Людина-асесор оцінює 10–20% дзвінків, решта — чорна скриня. AI обробляє 100%: кожен дзвінок отримує повний scorecard. 2. Необ'єктивність. Втома, суб'єктивне сприйняття, різна трактовка критеріїв. LLM послідовно застосовує одну методологію до всіх дзвінків. 3. Відсутність трендів. Ручна оцінка не дає зведених метрик. Ми будуємо дашборди з ковзним середнім, трендом за тиждень/місяць та heatmap за типами порушень.

Як ми це робимо: стек та кейс

Для оцінки використовуємо GPT-4o з response_format=json_object. Промпт містить усі критерії з вагами, інструкцію «оціни від 0 до 10» та вимогу пояснити кожну оцінку. Застосовуємо fine-tuning (LoRA) для адаптації під специфіку мовлення операторів. Для транскрибації використовуємо Whisper з цільовим WER менше 10%. У складних випадках підключаємо RAG з базою сценаріїв та частих питань.

Приклад scorecard — модель Pydantic:

from pydantic import BaseModel
from typing import Optional

class CallScorecard(BaseModel):
    call_id: str
    operator_id: str
    duration_seconds: float

    # Compliance (відповідність вимогам)
    greeting_score: float        # 0-10
    hold_procedure_score: float  # 0-10
    farewell_score: float        # 0-10
    gdpr_compliance: float       # 0-10

    # Quality (якість обслуговування)
    problem_understanding: float # 0-10
    solution_accuracy: float     # 0-10
    empathy_score: float         # 0-10

    # Efficiency (ефективність)
    aht_relative: float          # 0-10 (відносно цільового AHT)
    first_call_resolution: float # 0 або 10

    # Sales/Upsell (якщо застосовно)
    offer_made: Optional[float] = None
    offer_quality: Optional[float] = None

    @property
    def total_score(self) -> float:
        scores = [
            self.greeting_score * 0.10,
            self.hold_procedure_score * 0.05,
            self.farewell_score * 0.05,
            self.gdpr_compliance * 0.10,
            self.problem_understanding * 0.20,
            self.solution_accuracy * 0.25,
            self.empathy_score * 0.15,
            self.aht_relative * 0.05,
            self.first_call_resolution * 0.05,
        ]
        return round(sum(scores), 1)

Автоматична оцінка через LLM:

async def score_call_llm(transcript: dict) -> CallScorecard:
    full_dialog = format_dialog(transcript["turns"])

    response = await client.chat.completions.create(
        model="gpt-4o",
        messages=[{
            "role": "system",
            "content": """Ти експерт з оцінки якості обслуговування.
            Оціни дзвінок за кожним критерієм від 0 до 10.
            Будь об'єктивним, ґрунтуй оцінку тільки на тексті.
            Поверни JSON з полями: greeting_score, hold_procedure_score, farewell_score,
            gdpr_compliance, problem_understanding, solution_accuracy, empathy_score,
            first_call_resolution. Для кожного поля додай comment_FieldName з поясненням."""
        }, {"role": "user", "content": full_dialog[:6000]}],
        response_format={"type": "json_object"}
    )

    data = json.loads(response.choices[0].message.content)
    return CallScorecard(
        call_id=transcript["call_id"],
        operator_id=transcript["operator_id"],
        duration_seconds=transcript["duration"],
        **{k: v for k, v in data.items() if not k.startswith("comment_")}
    )

Щоб побачити, як це працює на ваших даних, зв'яжіться з нами — ми надішлемо демо-доступ.

Як налаштувати scorecard за 5 кроків

  1. Визначте типи дзвінків (вхідні/вихідні, продажі/підтримка).
  2. Виберіть критерії з бібліотеки (15 базових, можна додати кастомні).
  3. Призначте ваги кожному критерію (сума 1.0).
  4. Вкажіть порогові значення (наприклад, AHT не більше 300 с).
  5. Запустіть пілот на 100 дзвінках та скоригуйте промпт за результатами.

Порівняння AI та людини: хто точніший?

Метрика AI (LLM) Людина-асесор Різниця
Покриття 100% 15% у 6,7 раза більше
Швидкість оцінки 2 секунди 12 хвилин у 360 разів швидше
Узгодженість (Корр. Пірсона) 0.92 0.78 (між асесорами) на 18% вище
Об'єктивність Висока (однакові критерії) Залежить від втоми
Вартість за дзвінок Значно нижча Висока у десятки разів дешевше

Чому AI працює точніше людини?

LLM не втомлюється, не пропускає дзвінки через брак часу та застосовує однакові критерії до всіх діалогів. У нашому A/B-тесті AI показав узгодженість 92% з контрольною групою (2 QA-менеджери, 100 дзвінків), тоді як між двома асесорами узгодженість була 78%. Це підтверджує, що автоматична оцінка не лише швидша, але й об'єктивніша.

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

  • Архітектура ETL для транскрибації дзвінків (Whisper, моделі розпізнавання української/російської мов).
  • Інтеграція з ACD/CRM — отримання дзвінків та збагачення даними клієнта.
  • Scorecard з 15 критеріїв — налаштування ваг під ваш сценарій.
  • LLM-асистент — генерація scorecard з поясненнями.
  • Дашборд рейтингів та трендів — Grafana або React.
  • Калібрування та моніторинг — автоматичне відстеження кореляції AI vs людина.

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

  1. Аналітика та аудит — розбираємо поточні критерії оцінки, сценарії, типи дзвінків.
  2. Проектування scorecard — ваги, норми AHT, межі FCR.
  3. Інтеграція та розмітка — підключаємося до телефонії, збираємо історичні записи.
  4. Навчання та калібрування — запускаємо baseline, коригуємо промпт, донавчаємо модель при необхідності (LoRA).
  5. Тестування A/B — порівнюємо AI з ручними оцінками.
  6. Деплой та дашборди — розгортаємо інференс, підключаємо оповіщення (Telegram, Slack).

Терміни орієнтовно

Компонент Термін
Базова оцінка (15 критеріїв) 4–6 тижнів
Рейтинги операторів та тренди 6–8 тижнів
Дашборди та сповіщення 2–4 тижні додатково

Вартість розраховується індивідуально залежно від обсягу дзвінків, необхідної латентності та потреби у fine-tuning. Замовте консультацію — ми надішлемо приклад scorecard та кошторис.

Калібрування: як підтримуємо точність

Періодично порівнюємо AI-оцінки з ручними оцінками QA-менеджерів. Цільовий показник: кореляція Пірсона > 0.85. Якщо кореляція падає, запускаємо перекалібрування на свіжій розміченій вибірці. Процес включає:

  • Збір нових транскрибів (100 дзвінків)
  • Розмітка двома QA-менеджерами
  • Навчання LoRA-адаптера на основі розбіжностей
  • A/B-тест на наступному тижні

Досвід нашої команди — 5+ років у NLP та 30+ проектів кол-центрів. Гарантуємо прозорість: ви отримуєте повний доступ до промптів, ваг та логів оцінок. Замовте демо-доступ, щоб побачити результати на ваших даних.

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

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