AI-интеграция с облачной АТС: транскрибация и аналитика

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
AI-интеграция с облачной АТС: транскрибация и аналитика
Средний
~3-5 дней
Часто задаваемые вопросы

Направления 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

Операторы тратят до 15% рабочего времени на ручной ввод данных после звонка. Менеджеры прослушивают часы записей в поисках одной цифры. Стандартные IVR-меню заставляют клиентов нажимать кнопки, теряя контекст. Интеграция AI с облачной АТС решает все три проблемы разом: автотранскрибация, NLP-аналитика и умная маршрутизация без развёртывания собственной телефонии. Мы реализовали такие решения для 15+ компаний — от отделов продаж до контакт-центров на 300 операторов. Наш опыт — 5+ лет, гарантируем SLA 2 часа и соответствие 152-ФЗ.

Как работает интеграция AI с облачной АТС?

Архитектура строится на Webhook: АТС отправляет POST-запрос на ваш AI-сервер при каждом событии (входящий звонок, завершение разговора). Сервер обрабатывает аудио, возвращает команды маршрутизации или обновляет CRM. Это позволяет интегрироваться за 1–4 недели — в 3 раза быстрее самостоятельной разработки.

Облачная АТС (Mango/Zadarma/UIS)
      ↕ Webhook при входящем
AI-Platform API
      ↕ Инструкция АТС (переключить/ответить)
      ↕ URL аудиофайла при завершении
      ↕ STT → NLP → CRM update

Какие проблемы решает AI-интеграция?

Проблема 1: Потеря контекста звонка. Без автоматической расшифровки аналитики тратят часы на прослушивание записей. AI-транскрибация с точностью 95%+ и анализ тональности выделяет ключевые моменты за секунды.

Проблема 2: Медленная маршрутизация. Стандартные IVR-меню заставляют клиента выбирать опции. Умная маршрутизация на основе NLP и истории взаимодействий направляет звонок нужному специалисту без участия клиента. Время обработки сокращается на 20–30%.

Проблема 3: Ручное заполнение CRM. Операторы тратят до 15% времени на ввод данных после звонка. Автоматическое извлечение сущностей (номер заказа, ФИО, адрес) из транскрибации заполняет карточку клиента мгновенно.

Интеграция с конкретными АТС

Mango Office

Mango Office предоставляет два основных API: управление вызовами и загрузка записей. Подписка на события через callback-URL. Пример кода для получения записи и динамической маршрутизации:

import hashlib
import hmac
import json
import requests

class MangoOfficeIntegration:
    def __init__(self, api_key: str, api_salt: str):
        self.api_key = api_key
        self.api_salt = api_salt
        self.base_url = "https://app.mango-office.ru/vpbx"

    def sign(self, json_data: str) -> str:
        return hashlib.sha256(
            f"{self.api_key}{json_data}{self.api_salt}".encode()
        ).hexdigest()

    async def get_call_recording(self, recording_id: str) -> bytes:
        data = json.dumps({"recording_id": recording_id, "action": "download"})
        response = requests.post(
            f"{self.base_url}/queries/recording/post_load",
            data={"vpbx_api_key": self.api_key, "sign": self.sign(data), "json": data}
        )
        return response.content

    async def set_call_routing(self, from_number: str, to_extension: str):
        """Динамическая маршрутизация входящего звонка"""
        data = json.dumps({
            "from_number": from_number,
            "to_number": to_extension,
            "sip_headers": {"X-AI-Routed": "true"}
        })
        requests.post(
            f"{self.base_url}/routing/transfer",
            data={"vpbx_api_key": self.api_key, "sign": self.sign(data), "json": data}
        )

UIS (CloudTalk)

UIS предоставляет REST API с событиями через вебхуки. Пример обработчика завершённого звонка:

class UISIntegration:
    async def handle_call_event(self, event: dict) -> None:
        if event["type"] == "call.finished":
            recording_url = event.get("recording_url")
            if recording_url:
                audio = await self.download_recording(recording_url)
                analysis = await self.analyze_call(audio, event)
                await self.push_to_crm(event["contact_id"], analysis)

    async def set_smart_routing(self, caller_id: str) -> str:
        """Определяем куда направить звонок на основе истории клиента"""
        customer = await crm.lookup_by_phone(caller_id)
        if not customer:
            return "general_queue"

        if customer.get("open_tickets"):
            return "support_queue"
        elif customer.get("segment") == "vip":
            return "vip_queue"
        return "general_queue"

Post-call обработка и типичные ошибки

Паттерн единого эндпоинта

Чтобы унифицировать обработку звонков от разных провайдеров, используем единый эндпоинт:

@app.post("/webhook/call-completed")
async def handle_completed_call(payload: dict):
    """Единый обработчик завершённых звонков от разных АТС"""
    recording_url = payload.get("recording_url") or payload.get("record")
    call_id = payload.get("call_id") or payload.get("uid")

    if not recording_url:
        return {"status": "no_recording"}

    # Асинхронная обработка в фоне
    asyncio.create_task(process_call_recording(call_id, recording_url))
    return {"status": "processing"}

async def process_call_recording(call_id: str, recording_url: str):
    audio = await download_audio(recording_url)
    transcript = await transcribe(audio)
    analysis = await analyze_call(transcript)
    await update_crm(call_id, transcript, analysis)

Типичные ошибки

  • Игнорирование timeouts — некоторые АТС ждут ответа от webhook не более 5 секунд. Используйте асинхронную обработку с asyncio.create_task.
  • Отсутствие ретраев — при сбое скачивания записи нужно повторять попытку с exponential backoff.
  • Смешивание форматов аудио — Mango отдаёт WAV, UIS — MP3. Конвертируйте в единый формат (16kHz, mono) перед передачей в STT.

Почему AI-транскрибация точнее базовых решений?

Мы используем дообученные модели Whisper-large-v3 для STT — точность 95%+ на русском языке без дополнительного обучения. Для специфической терминологии (юридической, медицинской) проводим fine-tuning на ваших записях. Время обработки полного пайплайна (webhook → скачивание → STT → NLP → CRM update) не превышает 3 секунд для средней записи длительностью 5 минут. Экономия от автоматизации составляет существенную сумму для контакт-центра на 100 операторов, окупаемость — менее полугода.

Параметр Готовое решение Самостоятельная разработка
Сроки 1–4 недели 2–4 месяца
Точность STT 95%+ (дообученные модели) 80–90% (базовые API)
Умная маршрутизация На основе NLP и истории Только по IVR
Поддержка 24/7, SLA 2 часа Своя команда
АТС Тип API Формат аудио Сложность интеграции
Mango Office REST + callbacks WAV, MP3 Низкая
Zadarma REST + webhooks MP3 Низкая
Sipuni REST + webhooks WAV Средняя
UIS (CloudTalk) REST + webhooks MP3 Низкая

Кейс: автоматизация постобработки для отдела продаж

Один из проектов — интеграция с Mango Office для отдела продаж на 50 операторов. После внедрения AI-транскрибации и автообновления CRM среднее время постобработки звонка сократилось с 5 минут до 2 секунд. Заполнение карточек стало полностью автоматическим, что позволило сэкономить около 20 часов в неделю.

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

В результате вы получаете:

  • Рабочий webhook-эндпоинт для вашей АТС
  • Модуль транскрибации (STT) с дообученной моделью
  • NLP-аналитику: тональность, сущности, ключевые фразы
  • Интеграцию с CRM (автообновление карточек)
  • Умную маршрутизацию (опционально)
  • Документацию API и инструкцию для операторов
  • Техническую поддержку 24/7
  • Гарантию SLA 2 часа

Этапы работы

  1. Анализ — аудит текущей АТС, API, сценариев обработки звонков.
  2. Проектирование — архитектура интеграции, выбор моделей AI.
  3. Реализация — настройка webhook, транскрибация, NLP-аналитика, CRM-интеграция.
  4. Тестирование — нагрузочное тестирование (100+ одновременных звонков), проверка latency p99.
  5. Деплой — развёртывание на вашем сервере (Triton, vLLM) или в облаке.
  6. Документация — API-спецификация, инструкция оператора.

Сроки и стоимость

Сроки интеграции: от 1 недели (базовая post-call аналитика для одной АТС) до 4 недель (мультисистемная интеграция с кастомной маршрутизацией и NLP). Стоимость рассчитывается индивидуально после аудита. Получите консультацию — оценим ваш проект бесплатно. Просто напишите нам — пришлём коммерческое предложение.

Как заказать?

Оставьте заявку на нашем сайте — мы свяжемся в течение 2 часов, проведём аудит и предложим оптимальное решение. Гарантируем конфиденциальность данных и соответствие 152-ФЗ. Закажите интеграцию AI уже сегодня.

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