Разработка AI Speech Analytics для анализа звонков: STT, NLP, compliance

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Разработка AI Speech Analytics для анализа звонков: STT, NLP, compliance
Сложный
~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% записей. Compliance-нарушения, негативная тональность, отступления от скриптов — всё это остаётся скрытым до поступления жалобы от клиента. Мы разрабатываем AI-системы Speech Analytics, которые обрабатывают 100% записей в реальном времени, автоматически извлекая темы, тональность, compliance-флаги и ключевые паттерны поведения. Результат: экономия до 80% затрат на аудит, снижение времени выявления проблем с недель до минут.

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

Какие проблемы решает AI Speech Analytics?

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

Благодаря 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
    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", [])

Compliance мониторинг

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 недели реальное время
Объективность субъективно единые критерии
Compliance выборочно автоматические флаги
Стоимость высокая экономия до 80%

Почему AI Speech Analytics быстрее и точнее?

AI-система анализирует звонок за секунды, а не часы. По нашим данным, точность детекции compliance-нарушений выше на 30% по сравнению с ручным аудитом, а скорость обработки — в 50 раз выше. Это достигается за счёт комбинации fine-tuned моделей и rule-based проверок. В одном из проектов для банка мы обрабатывали 10 000 звонков в день — после внедрения количество выявленных нарушений выросло втрое, а время анализа сократилось с двух недель до 15 минут.

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

  1. Анализ требований: определяем цели бизнеса, compliance-стандарты, скрипты.
  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-центра.

Распознавание и синтез речи: 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 месяца.