AI-инжиниринг
Voice Agents в production: Vapi, LiveKit, Retell - голос который не обрывается
Цели урока
- Понять где накапливается latency в голосовом pipeline и как попасть в бюджет 500ms
- Разобраться с VAD: почему energy-based недостаточно и как работает semantic interruption detection
- Сравнить Vapi, Retell, LiveKit - выбрать под конкретный use case
- Разобрать production проблемы: call drops, barge-in, state management, warm transfer
Whisper + GPT-4o + ElevenLabs. Склеил три API и получил голосового ассистента. На демо работает. В проде - задержка 3 секунды, перебивания ломают диалог, 15% звонков дропается на первой секунде. Вот где начинается настоящий voice engineering.
- Voice AI рынок: USD 47B в 2025 году, рост 340% YoY - самый быстрорастущий сегмент AI-интеграций
- Vapi.ai: 100K+ разработчиков, USD 20M Series A (Bessemer, декабрь 2024) - наиболее широко используемая managed платформа
- Retell AI: задокументированный кейс в блоге OpenAI - 50% сокращение расходов на support для SaaS-клиентов
- LiveKit Agents: open-source framework, используется в Claude Code (голосовой режим) и Cursor
Предварительные знания
- Speech-to-text: распознавание речи, streaming STT, потоковая транскрипция
- Text-to-speech: синтез речи, потоковая генерация аудио, задержка до первого чанка
- Realtime AI и streaming: low-latency обработка, WebSocket/WebRTC, time-to-first-token
Голосовой стек 2024: от STT-LLM-TTS pipeline к speech-to-speech
Долгое время голосовой агент собирался из трёх отдельных моделей: STT (распознавание) переводит речь в текст, LLM генерирует ответ, TTS (синтез) озвучивает его. Этот pipeline работал, но накапливал задержку на каждом шаге и терял эмоции, ударения и интонацию при переходе через текст. В 2024 году экосистема резко повзрослела. Появились managed-платформы: Vapi (декабрь 2024, USD 20M Series A от Bessemer) скрывает оркестрацию STT-LLM-TTS за простым API, LiveKit выпустил open-source фреймворк LiveKit Agents поверх своей WebRTC-инфраструктуры, а Pipecat (open-source от Daily) дал гибкий конвейер для построения realtime голосовых ботов. Главным сдвигом стал анонс OpenAI Realtime API на DevDay 1 октября 2024: модель работает speech-to-speech напрямую, без промежуточного текста, через streaming аудио в обе стороны. Это резко снизило задержку и сохранило просодию, но оказалось дороже и менее кастомизируемо, чем классический pipeline. С тех пор инженерный выбор сводится к балансу: native speech-to-speech (быстрее, дороже) против STT-LLM-TTS (дешевле и гибче на масштабе).
Архитектура voice pipeline: STT - LLM - TTS и где копится latency
Whisper + GPT-4o + ElevenLabs. Склеил три API и получил голосового ассистента. На демо работает. В проде - задержка 3 секунды, перебивания ломают диалог, 15% звонков дропается на первой секунде. Вот где начинается настоящий voice engineering.
Классический voice pipeline - три последовательных этапа, каждый добавляет latency:
| Этап | Технология | Latency p50 | Оптимизация |
|---|---|---|---|
| VAD (конец речи) | Silero VAD / WebRTC VAD | 100-300ms | Reduce silence threshold |
| STT | Whisper API | 200-400ms | Deepgram streaming (-100ms) |
| STT | Deepgram Nova-2 | 100-200ms | Streaming = нет ожидания конца |
| LLM | GPT-4o (streaming) | 200-500ms TTFT | Prompt caching, меньше токенов |
| TTS | ElevenLabs | 200-400ms first chunk | TTS streaming + short sentences |
| TTS | OpenAI TTS tts-1 | 100-200ms first chunk | tts-1 быстрее tts-1-hd |
| Network | WebRTC / WebSocket | 20-80ms | Regional endpoints |
Latency бюджет для natural conversation:
OpenAI Realtime API (2024) и Anthropic Realtime API сворачивают весь pipeline в один speech-to-speech round trip: 200-500ms. Но цена выше: OpenAI Realtime - USD 0.06/min audio input + USD 0.24/min audio output vs USD 0.006/min Whisper + USD 0.015/min TTS. Имеет смысл при очень высоких требованиях к latency.
Почему классический voice pipeline (последовательный STT -> LLM -> TTS) медленнее оптимального?
VAD: голосовая активность - самая сложная часть
Voice Activity Detection (VAD) - определение когда пользователь начал и закончил говорить. Звучит просто. На практике - самая сложная часть voice pipeline.
Два подхода к VAD - energy-based и semantic:
| Подход | Как работает | Плюсы | Минусы |
|---|---|---|---|
| Energy-based VAD (WebRTC VAD, Silero) | Порог громкости аудиосигнала | Быстро (<5ms), дёшево, offline | Не различает речь и шум, много false positives |
| Semantic VAD (LLM-based) | Анализирует транскрипт на завершённость | Понимает смысл, различает паузы | Медленно (+100-200ms), дороже |
| Hybrid (LiveKit подход) | Energy VAD для detection + semantic для interruption | Баланс скорости и точности | Сложнее реализовать |
LiveKit Agents framework (open-source, используется в Claude Code и Cursor) реализует semantic VAD из коробки: TurnDetector компонент анализирует транскрипт через LLM и принимает решение о прерывании. Это один из ключевых аргументов в пользу LiveKit для production voice agents.
Почему energy-based VAD недостаточен для production voice агента?
Платформы: Vapi vs Retell vs LiveKit vs собственный стек
Четыре пути к production voice agent: managed платформы (Vapi, Retell), open-source framework (LiveKit), полностью собственный стек. Каждый со своим trade-off.
| Платформа | Тип | Цена | Сложность | Когда выбирать |
|---|---|---|---|---|
| Vapi.ai | Managed SaaS | USD 0.05/min + STT/LLM/TTS | Низкая | Быстрый старт, не хочется DevOps |
| Retell AI | Managed SaaS | USD 0.07-0.12/min | Низкая | Enterprise, OpenAI-featured, SaaS support |
| LiveKit Agents | Open-source framework | Платить только за infra + AI APIs | Средняя | Полный контроль, кастомизация VAD/logic |
| Собственный стек | DIY | Только AI APIs | Высокая | Уникальные требования, compliance, scale |
Vapi.ai: наиболее широко используемая managed платформа для voice agents.
LiveKit Agents: open-source framework, используется в Claude Code для голосового режима и в Cursor.
Retell AI упомянут в официальном блоге OpenAI как пример успешного voice agent в enterprise. Задокументированный кейс: 50% сокращение расходов на support для SaaS-клиентов после внедрения Retell-based voice agent. Фокус на enterprise telephony интеграции (Twilio, Vonage).
LiveKit Agents предпочтителен перед Vapi.ai когда:
Production проблемы: dropped calls, barge-in, state management
Voice agent в проде сталкивается с проблемами которых нет в демо: telephony интеграция, сохранение контекста между поворотами разговора, recovery когда LLM не отвечает вовремя.
| Проблема | Симптом | Решение |
|---|---|---|
| Call drop в первую секунду | 15% звонков дропаются сразу | WebRTC ICE candidates timeout - увеличить gathering timeout |
| LLM timeout mid-response | Оборванная фраза | Fallback phrase + retry с сохранённым context |
| Barge-in ломает state | После прерывания агент путается | Flush TTS buffer + reset turn на прерывании |
| Telephony latency (PSTN) | Дополнительные 100-300ms через SIP | WebRTC-first, SIP только для legacy |
| Context window overflow | Агент 'забывает' начало разговора | Sliding window + summarization старых turns |
| Echo cancellation | Агент слышит свой голос как input | AEC (Acoustic Echo Cancellation) на уровне WebRTC |
15% звонков дропаются в первую секунду - типичная проблема новых voice agent деплоев. Причина: WebRTC ICE negotiation timeout при плохом сетевом соединении или NAT-проблемах. Решение: TURN server для relay, увеличение ICE gathering timeout до 5 секунд, fallback на SIP при WebRTC failure.
При warm transfer (передаче оператору) в каком порядке должны выполняться шаги?
Voice agent = STT + LLM + TTS. Склеить три API - и готово
Техническая склейка - это 20% работы. Остальные 80%: VAD, barge-in handling, latency оптимизация, telephony интеграция, state management, error recovery
Демо на localhost без фоновых шумов и без interruptions выглядит хорошо. Production - это 100+ одновременных звонков, плохой сети, пользователи перебивают, LLM иногда таймаутит. Каждый из этих случаев нужно обрабатывать.
Realtime API (OpenAI / Anthropic) лучше классического pipeline для всех случаев
Realtime API быстрее, но в 10-15x дороже и менее кастомизируемый. Классический pipeline гибче и дешевле при масштабе
OpenAI Realtime: USD 0.06/min input + USD 0.24/min output. Deepgram + GPT-4o streaming + OpenAI TTS: ~USD 0.02/min. При тысячах минут в день разница существенная. Realtime API оправдан для premium tier с жёсткими latency требованиями.
Итоги
- Latency бюджет 500ms: Deepgram streaming (150ms) + GPT-4o TTFT (200ms) + TTS first chunk (100ms)
- VAD - самая сложная часть: semantic turn detection нужен чтобы различать прерывания и реакции согласия
- Vapi/Retell: managed, USD 0.05-0.12/min, низкий порог входа; LiveKit: open-source, полный контроль
- Production: WebRTC ICE для надёжности, conversation state в DB, warm transfer с предварительным контекстом
- Мониторинг: totalResponseMs p50, callDropRate, taskCompletionRate - три главных метрики
Вопросы для размышления
- Для конкретного use case (support bot vs sales agent vs scheduling) - какой компонент pipeline критичнее всего оптимизировать для лучшего user experience?
- Как архитектурно обрабатывать ситуацию когда LLM возвращает неполный ответ и пользователь уже слышит первые слова - что происходит с TTS?
- При каком объёме звонков в месяц имеет смысл переходить с managed платформы (Vapi) на собственный LiveKit деплой - посчитать break-even?
Что дальше
Voice agents в production освоены. Следующий уровень - System Design для AI: как проектировать большие AI-системы.
- Realtime AI — Deepdive в OpenAI/Anthropic Realtime API - фундамент voice pipeline
- Speech to Text — Deepgram, Whisper, streaming STT - первый этап pipeline
- Streaming — Streaming архитектура - ключ к low-latency voice pipeline
- Autonomous Agents — Voice agent как частный случай autonomous agent с voice interface