Красный дашборд SIP-транка, частота обрывов WebRTC бьет рекорды, а средняя продолжительность исходящего вызова застряла на отметке в восемь секунд. Именно так физически выглядит смерть очередного «быстрого пилота». Я смотрю на метрики крупного B2C-клиента, который решил автоматизировать реактивацию лидов и купился на обещания вендора развернуть умного LLM-робота за три дня через облачные API. Базовое правило real-time систем непреклонно: голосовой ИИ-агент для исходящего обзвона: где окупается, а где за 800 мс латентности выжигает базу — это вопрос чистой физики сети и архитектуры инференса. В данном случае база выгорала со скоростью сто тысяч контактов в неделю, а конверсия пробила дно, оказавшись в десять раз ниже человеческой.
В Morana Labs мы строим индустриальный ИИ: хардкорный edge, инференс на железе клиента, reinforcement learning под high-load. К нам приходят, когда хайп разбивается о суровую реальность продакшена. Клиент принес нам этот горящий кластер с одной задачей: заставить робота звучать как человек и убрать данные из чужого контура. Когда вы слушаете записи звонков того облачного агента, это больше похоже на пытку. Человек говорит «Алло». Робот молчит 2.4 секунды. Человек раздраженно переспрашивает «Я вас не слышу?». Робот наконец-то просыпается и начинает пулеметной очередью вываливать свой скрипт, накладываясь на голос абонента. Абонент бросает трубку. Доля жалоб на спам летит в космос.
Разберем анатомию этих 2.4 секунд, потому что именно в них умирает вся экономика проекта. В наивной облачной архитектуре первый удар наносит Voice Activity Detection (VAD). Чтобы понять, что абонент закончил фразу, стандартному WebRTC VAD нужно около 300–400 миллисекунд абсолютной тишины. Дальше кусок аудио летит по сети в облачный ASR уровня Whisper. Сетевой хоп плюс транскрибация — это еще 400 миллисекунд. Текст падает в тяжелый LLM-промпт, где модель переваривает контекст и выплевывает первый токен. Даже со стримингом на это уходит от 600 до 800 миллисекунд. И, наконец, текст отправляется в облачный TTS, который съедает еще 300–400 миллисекунд на генерацию первых байтов аудио, прежде чем они полетят обратно в SIP-шлюз. В сумме набегает около двух секунд мертвой тишины. Для сравнения: человек в диалоге отвечает за 300–500 миллисекунд. Как только латентность робота переваливает за 800 мс, иллюзия разрушается мгновенно, и абонент переходит в режим отторжения.
Но задержка ответа — это лишь половина катастрофы. Настоящий убийца конверсии — это сломанный turn-taking (удержание очереди в диалоге) и отсутствие механизма barge-in (перебивания). Агент звучит дешево не из-за синтезированного голоса, так как современные нейросетевые вокодеры уже неотличимы от человека. Он звучит дешево, потому что не дышит и не умеет вовремя заткнуться. Если абонент кашлянул или хмыкнул, наивный VAD реагирует на этот шум, резко обрывает генерацию LLM, сбрасывает контекст, и бот замолкает на полуслове, чтобы через секунду начать фразу заново. Пользователь чувствует, что говорит с поломанной рацией.
# Простейший паттерн потокового перебивания (Barge-in), 152-ФЗ compliant, 0 облаков.
# Крутится на edge-узле поверх WebRTC-стрима клиента.
async def run_duplex_agent(audio_stream, vad_event_queue, llm_context):
async for tx_chunk in audio_stream:
if not vad_event_queue.empty():
vad_event = await vad_event_queue.get()
# Анализируем энергию: фильтруем кашель и шум клавиатуры.
# Если человек реально перебивает (говорит > 250мс громко) — рубим TTS.
if vad_event.duration_ms > 250 and vad_event.energy > NOISE_FLOOR:
audio_stream.cancel_synthesis()
await llm_context.register_interruption(vad_event.timestamp)
break # Выходим из цикла генерации, слушаем абонента
await sip_trunk.write_rtp(tx_chunk)Дальше в игру вступает юридическая и инфраструктурная реальность. Клиент заливал десятки тысяч номеров и персональные данные в публичные облака для персонализации LLM-скриптов. В условиях 152-ФЗ слив аудиозаписей разговоров и ПДн на сторонние эндпоинты без железобетонного согласия на обработку — это прямая дорога к многомиллионным штрафам. Мы в Morana Labs решаем это радикально: полный отказ от SaaS и перенос инференса на on-premise сервера клиента. Когда вы ставите квантованную Llama-3 или специализированную SLM (Small Language Model), стриминговый Kaldi-based ASR и потоковый TTS на локальный кластер с L4 или A10G GPU внутри контура, данные не покидают периметр. Но главное — исчезают сетевые хопы. Латентность мгновенно падает на 600–700 миллисекунд просто за счет физики локальной сети.
Теперь о деньгах. LLM робот обзвон экономика — это жесткий калькулятор, а не красивые презентации. Минута облачного ASR, токенов LLM и премиального TTS суммарно обходится примерно в 4–6 рублей. Добавьте стоимость самой SIP-телефонии, и вы получите 5–7 рублей за минуту разговора. Живой оператор в региональном колл-центре обходится в 8–10 рублей за минуту чистого времени в линии (с учетом ФОТ, налогов и простоев). Маржа минимальна. Если голосовая система тупит на 1.5 секунды, ее конверсия падает до 15–20% от уровня живого человека. Вы платите 70% стоимости оператора за 15% его результата. В таких условиях ROI голосового робота уходит в глубокий минус. Автоматизация окупается только тогда, когда агент работает с околонулевой задержкой, что позволяет бесконечно масштабировать параллельные линии, не выжигая базу впустую.
Мы полностью вырезали облачный пайплайн и собрали edge-архитектуру с жестким лимитом по времени. Внедрили стриминговый ASR, который отдает частичные транскрипты прямо в LLM еще до того, как абонент закончил фразу. Использовали спекулятивную генерацию: модель предсказывает вероятный конец реплики человека и заранее прогревает TTS. Локальный VAD натренировали игнорировать фоновый шум машин и стук посуды. Бюджет латентности реального времени сжался до стабильных 450 миллисекунд (p99). Робот стал достаточно агрессивным, чтобы вести разговор, и достаточно умным, чтобы мгновенно замолкать при реальном перебивании.
Но идеальная техника не отменяет бизнес-логики. Нельзя просто натравить даже самую быструю нейросеть на любой процесс и ждать прибыли. Карта сценариев жестко диктует, где исходящий ИИ работает, а где его запуск — это саботаж собственных продаж. Мы заставляем каждого клиента сверяться с этой матрицей до того, как будет закуплен первый сервер.
| Сценарий обзвона | Критичная латентность | Вердикт | Почему окупается или минусит |
|---|---|---|---|
| Напоминания (запись к врачу, доставка) | до 1200 мс | Запускать | Простой утилитарный граф диалога. Абоненты прощают паузы, так как им нужна только информация. ROI > 300%. |
| Квалификация лида (B2C услуги, опросы) | до 700 мс | Запускать | Лид холодный. При малейшей неестественности бросает трубку. Требуется идеальный стриминг и turn-taking. |
| Реактивация спящей базы | до 800 мс | Запускать | Операторам слишком дорого прозванивать отказников с конверсией 2%. Робот окупается за счет массового масштаба. |
| Soft-collection (ранние просрочки) | до 600 мс | С осторожностью | Требуется удержание инициативы. Если бот виснет на секунду, должник чувствует уязвимость, хамит и перехватывает диалог. |
| Сложные B2B продажи | — | Не запускать | Абсолютный ноль. Линейные скрипты не работают, а LLM галлюцинирует в терминологии и условиях контракта. |
Метрики нашего пилота развернулись на 180 градусов сразу после того, как мы пробили порог в 800 миллисекунд сверху вниз. Удержание на линии (доля абонентов, прошедших дальше приветствия) взлетело с жалких 12% до 68%. Конверсия в целевое действие закрепилась на уровне 82% от показателей лучших живых операторов. Учитывая, что локальный инференс позволил держать 500 одновременных линий без тарификации за каждую минуту генерации, юнит-экономика улетела в зеленую зону. Доля жалоб на спам упала до фоновых значений, потому что система перестала нагло перебивать людей посреди фразы.
Если вы прямо сейчас планируете запускать speech-ai (голосового агента) для исходящего трафика, прекратите слушать заранее отрендеренные MP3-демки вендоров. Запрашивайте тестовый SIP-транк, звоните роботу сами, кашляйте в трубку, перебивайте его и замеряйте p99 латентность с секундомером. Берите срез мертвой базы, разворачивайте on-premise пилот с замером воронки от дозвона до конверсии и считайте честный ФОТ против затрат на железо. Любой другой подход — это просто сжигание ваших лидов ради красивого пресс-релиза о внедрении искусственного интеллекта.