Цель: Перевести стек голосового ассистента (Deepgram → OpenAI → Яндекс SpeechKit) на потоковую архитектуру для минимизации задержек между речью пользователя и ответом ассистента. Текущие проблемы:
- Последовательная обработка (ASR → LLM → TTS) вызывает задержки в 3–5 секунд.
- Яндекс SpeechKit не поддерживает потоковый ввод/вывод.
- Непредсказуемость при перебивании ассистента.
Ожидаемый результат:
- Ответ ассистента воспроизводится через 0.7–1.5 сек после речи пользователя.
- Параллельная обработка аудио, текста и синтеза речи.
- Возможность прерывания ответа.
2. Основные изменения
Бэкенд:
1. WebSocket-сервер (src/ws/server):
- Реализовать параллельную обработку потока: ASR (Deepgram) → OpenAI → TTS (Яндекс) без ожидания завершения на каждом этапе.
- Использовать асинхронные очереди для обработки чанков.
2. Механизм перебивания:
- Оприостановка текущей генерации ответа и синтеза речи при новом аудио вводе.
3. Текущий стек:
- Бэкенд: Асинхронные модули (Deepgram, OpenAI, TTS) + WebSocket.
- Фронтенд: Web Audio API + обработка потокового аудио.
3. Критерии приемки
1. Ответ ассистента начинается ≤ 1.5 сек после речи пользователя.
2. Поддержка прерывания ответа.
3. Стабильная работа при 500+ одновременных сессиях.
Риски: Если Яндекс TTS не справится с потоковым режимом, потребуется замена на ElevenLabs или другой качественный сервис. Необходимо учитывать правильность транскрипции и ударений.