Голос и коммуникация¶
SpeakNode использует WebRTC для голосовой связи в реальном времени между пользователями и AI-агентами.
Как это работает¶
- При запуске агента создаётся LiveKit-комната
- AI-агент (Python worker) подключается к комнате и начинает слушать
- Пользователь подключается через браузер (виджет или клиент) или телефон
- Аудио передаётся в обе стороны в реальном времени
- Сессия записывается автоматически (audio egress)
Голосовой пайплайн¶
Пользователь говорит → WebRTC аудио → STT (речь в текст) →
LLM обрабатывает текст → генерирует ответ →
TTS (текст в речь) → WebRTC аудио → Пользователь слышит
Распознавание речи (STT)¶
Преобразует речь пользователя в текст для LLM. Поддерживаемые провайдеры:
- Azure Speech Services
- Другие провайдеры через конфигурацию
Языковая модель (LLM)¶
Обрабатывает разговор и генерирует ответы. Поддерживаемые провайдеры:
- OpenAI (GPT-4 и др.)
- OpenRouter (доступ к множеству моделей)
- Cloudflare AI
Синтез речи (TTS)¶
Преобразует ответы агента в речь. Поддерживаемые провайдеры:
- ElevenLabs
- Azure Speech Services
- Minimax
Детекция голосовой активности (VAD)¶
Определяет, когда пользователь начинает и прекращает говорить. Управляет поведением очерёдности — когда агент должен начать или прекратить говорить.
Запись аудио¶
Каждый разговор автоматически записывается через LiveKit Egress. Записи включают:
- Полное аудио сессии (композитная запись)
- Треки отдельных участников
- Хранение в S3-совместимом объектном хранилище
Уведомления в реальном времени¶
Платформа использует SignalR для уведомления фронтенда о событиях сессии:
- Agent Ready — агент подключился к комнате
- Session Completed — разговор завершён, аудио доступно
Жизненный цикл сессии¶
| Статус | Описание |
|---|---|
| Pending | Сессия создана, комната ещё не готова |
| Dispatching | LiveKit-комната создана, ожидание подключения агента |
| Active | Агент подключился, разговор идёт |
| Completed | Разговор завершён нормально |
| Failed | Произошла ошибка во время сессии |