Разработка AI-IVR (интеллектуальное голосовое меню)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Разработка AI-IVR (интеллектуальное голосовое меню)
Средний
~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

Мы часто видим, как клиенты теряют терпение, пробиваясь через 4–7 уровней тонального меню. «Нажмите 1, чтобы... нажмите 2...» — такой DTMF-IVR раздражает и отсеивает до 40% звонков. Исследования показывают: 60% пользователей предпочитают речевой интерфейс. Наш подход — AI-IVR: система понимает свободную речь, определяет намерение за 1–2 вопроса и маршрутизирует звонок без кнопок. Мы внедряем такие решения последние 5 лет, и заказчики отмечают снижение времени обработки звонка на 30–50% и рост удовлетворённости на 20 процентных пунктов. Это не просто замена кнопок — это переход от жёсткого дерева сценариев к адаптивному диалогу на основе LLM.

Проблемы, которые решает AI-IVR

Традиционное тональное меню (DTMF) не справляется с нестандартными запросами, сложно обновляется и требует запоминания последовательностей. AI-IVR на базе NLP (Natural Language Processing) и ASR заменяет жёсткое дерево сценариев гибким диалогом. Клиент говорит: «У меня проблема с оплатой» — система сама понимает, что нужно в billing, и переводит.

Сравнение DTMF-IVR и AI-IVR

Параметр DTMF-IVR AI-IVR
Навигация 4–7 уровней, кнопки 1–2 вопроса, речь
Покрытие сценариев Ограничено деревом Неограниченно (LLM)
Обновление Сложно, требует разработки Промпт-файл
Для немобильных пользователей Проблемно Нормально
Стоимость разработки Низкая Средняя (окупается за 3–6 мес.)

Важно: AI-IVR не требует полной замены инфраструктуры — мы интегрируем его поверх существующей АТС через SIP или API.

Как AI-IVR понимает намерение клиента?

В основе — LLM (Large Language Model), например GPT-4o или LLaMA 3, которая получает расшифровку речи (ASR) и определяет намерение. Мы используем few-shot prompting: в промпт передаём список доступных направлений и примеры фраз. Модель возвращает JSON с destination и confidence. Если уверенность ниже 0.75 — система задаёт уточняющий вопрос. Этот подход обрабатывает 95% запросов без привлечения оператора.

class AIIVR:
    def __init__(self, routing_config: dict):
        self.destinations = routing_config["destinations"]
        self.llm = AsyncOpenAI()

    async def handle_call(self, call: IncomingCall) -> str:
        """Обрабатываем входящий звонок — возвращаем destination"""
        # Приветствие
        await call.say(
            "Добрый день! Вас приветствует {company}. Как я могу вам помочь?"
        )

        # Слушаем намерение (до 8 секунд)
        user_input = await call.listen(timeout_sec=8, silence_threshold_ms=800)

        if not user_input:
            return await self.handle_silence(call)

        # Распознаём намерение и маршрутизируем
        route = await self.recognize_intent(user_input)

        if route["confidence"] >= 0.75:
            return await self.route_call(call, route["destination"])
        else:
            return await self.clarify_intent(call, user_input)

    async def recognize_intent(self, user_input: str) -> dict:
        destinations_description = "\n".join(
            f"- {d['id']}: {d['description']}"
            for d in self.destinations
        )

        response = await self.llm.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{
                "role": "system",
                "content": f"""Определи куда направить звонок.
                Доступные направления:
                {destinations_description}
                Верни JSON: {{"destination": "id", "confidence": 0.0-1.0}}"""
            }, {"role": "user", "content": user_input}],
            response_format={"type": "json_object"}
        )
        return json.loads(response.choices[0].message.content)

    async def route_call(self, call: IncomingCall, destination: str) -> str:
        dest = next(d for d in self.destinations if d["id"] == destination)

        # Подтверждение маршрутизации
        await call.say(dest.get("routing_message",
                                 f"Перевожу вас в {dest['name']}..."))

        if dest["type"] == "queue":
            await call.transfer_to_queue(dest["queue_id"])
        elif dest["type"] == "extension":
            await call.transfer(dest["extension"])
        elif dest["type"] == "bot":
            await call.transfer_to_bot(dest["bot_id"])

        return destination

Конфигурация направлений (YAML/JSON)

Пути маршрутизации задаются в простом конфиге — добавить новое направление можно без передеплоя.

destinations:
  - id: technical_support
    name: "Техническая поддержка"
    description: "Проблемы с сервисом, ошибки, не работает"
    type: queue
    queue_id: tech_support_q
    routing_message: "Соединяю с технической поддержкой. Ожидайте, пожалуйста."

  - id: billing
    name: "Оплата и счета"
    description: "Вопросы оплаты, счета, задолженности, тарифы"
    type: bot
    bot_id: billing_bot

  - id: sales
    name: "Продажи и новые подключения"
    description: "Подключить услугу, новый договор, тарифы"
    type: queue
    queue_id: sales_q

Какие бизнес-показатели улучшает AI-IVR?

По данным Gartner, внедрение интеллектуального IVR снижает load на первую линию поддержки на 40–60%. AI-IVR обрабатывает до 80% звонков без участия оператора — это в 3 раза больше, чем DTMF. Среднее время разговора сокращается вдвое. Экономия на операторах достигает 50% при масштабировании. За счёт снижения load вы можете перераспределить персонал на более сложные задачи.

Как AI-IVR интегрируется с существующей АТС?

Интеграция выполняется через SIP trunk или REST API. Мы подключаемся к Asterisk, 1С-Битрикс24, Cisco, Genesys и другим без полной замены инфраструктуры. Система работает как промежуточный слой: принимает звонок, обрабатывает диалог и передаёт управление обратно в АТС. Для on-premise используем vLLM с квантизацией INT4 — это снижает затраты на GPU до 4 раз по сравнению с FP16.

Почему latency критична для AI-IVR?

Если ASR + LLM занимает больше 3 секунд, пользователь бросает трубку. Мы используем streaming ASR (например, Whisper в реальном времени) и кеширование интентов для частых запросов. Типичная latency p99 — 1.5–2 секунды. Для снижения задержек применяем квантизацию моделей и инференс на Triton Inference Server.

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

Мы внедряем AI-IVR в несколько этапов:

Этап Длительность
Анализ сценариев и сбор данных 1–2 недели
Проектирование диалогов (prompt engineering) 1 неделя
Разработка и интеграция с АТС 2–3 недели
Тестирование (A/B, нагрузочное) 1–2 недели
Деплой и мониторинг 1 неделя

Общий срок для типового проекта — 4–6 недель. Для пилота с 3–5 направлениями — 2–3 недели.

Что входит в работу

  • Документация: архитектурная схема, описание промптов, инструкция по добавлению направлений.
  • Доступы: к системе логирования и мониторингу (Grafana, ELK), к API для самостоятельного обновления конфигов.
  • Обучение: воркшоп для команды (4 часа) по управлению AI-IVR и дообучению на новых сценариях.
  • Поддержка: 2 недели после запуска — ежедневные стендапы и фикс багов по приоритету.

Типичные ошибки при внедрении

  1. Слишком много направлений в промпте (более 10) — снижает точность. Оптимально 5–7.
  2. Отсутствие fallback-сценария при долгом молчании — система должна переспрашивать или переводить на оператора.
  3. Игнорирование latency: если ASR + LLM занимает больше 3 секунд, пользователь бросает трубку. Мы используем streaming ASR и кеширование интентов.
  4. Плохая обработка неоднозначных запросов — без уточняющего вопроса клиент может попасть не туда.

Закажите демонстрацию AI-IVR под ваш сценарий — мы оценим проект за один день и предложим решение с гарантией результата. Получите консультацию инженера: наши специалисты помогут подобрать оптимальную архитектуру.

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