Разработка 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+ проектов колл-центров. Гарантируем прозрачность: вы получаете полный доступ к промптам, весам и логам оценок. Закажите демо-доступ, чтобы увидеть результаты на ваших данных.

Распознавание и синтез речи: ASR, TTS, клонирование голоса

Заказчик приходит с задачей: транскрибировать 40 000 часов колл-центра за неделю. Штатный облачный 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 срезает короткие вставки.

Клонирование голоса — латентность или качество. XTTS v2 (Coqui) даёт натуральный голос, но при потоковой генерации stream_chunk_size=20 первый аудиочанк прилетает через 1.4–2.0 с — неприемлемо для интерактивных сценариев. StyleTTS2 и Kokoro быстрее, но требуют точной подготовки референсного аудио.

Как это решается на практике

Базовый стек для production-пайплайна:

  • ASR: openai/whisper-large-v3 или faster-whisper (CTranslate2-бэкенд, x4 скорость vs оригинал)
  • Диаризация: pyannote.audio 3.x + интеграция через whisperx для выравнивания по словам
  • TTS: XTTS v2 для качества, Edge-TTS или Silero для низкой латентности
  • Клонирование: XTTS v2 (3–6 с референсного аудио) или OpenVoice v2

Типичный пайплайн для колл-центра выглядит так: аудио из очереди Kafka → нормализация ffmpeg -af loudnorm до -23 LUFS → faster-whisper с beam_size=5, vad_filter=Truepyannote диаризация → постпроцессинг (пунктуация через deepmultilingualpunctuation) → запись в PostgreSQL с временными метками.

Кейс из практики. Финтех-компания с 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.0008/мин против $0.016/мин у облачного провайдера.

Дообучение 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 Whisper нужно замораживать 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.

Процесс работы

Начинаем с аудит-сессии: берём 2–4 часа ваших записей, прогоняем через несколько моделей, замеряем WER/CER, смотрим на распределение ошибок по типам (лексические, акустические, язык). Это занимает 1–2 дня и сразу показывает, нужен ли fine-tuning или достаточно пост-обработки.

Далее — выбор архитектуры под ваш throughput: один GPU для 1000 мин/день или кластер с балансировщиком для 100 000+ мин/день. Деплой через Docker-контейнер с FastAPI или Triton Inference Server для батчированного инференса.

Сроки зависят от сложности: базовая интеграция готовой модели — 1–2 недели. Fine-tuning с подготовкой данных и валидацией — 4–8 недель. Полная разработка голосового пайплайна (ASR + диаризация + TTS + мониторинг) — 2–4 месяца.