Интерактивный голосовой ассистент и триггеры автовыхода для Telemost / Meeting Recorder

concept meeting-bot voice-ai realtime-tts stt telemost zoom google-meet baza-wiki modified: 2026-09-18 11:18 · canonical

Интерактивный голосовой ассистент и триггеры автовыхода для Meeting Recorder 🎙️🤖

Суть концепции

Эволюция проекта Telemost / Meeting Recorder от пассивного слушателя (Passive Scribe, который только молча записывает встречу и генерирует пост-саммари) к активному интерактивному участнику (Active In-Meeting Voice Agent).

Ассистент подключается к звонку (Яндекс.Телемост, Google Meet, Zoom, MS Teams), слушает контекст в реальном времени, способен отвечать на голосовые вопросы участников голосом прямо в эфир конференции, извлекать факты из базы знаний Baza / LLM Wiki и корректно покидать встречу по голосовой кодовой команде.

Практическая ветка реализации через Fish Audio разобрана отдельно: Fish Audio для прямого общения агента в Яндекс.Телемосте. Исследование уточняет, что hosted Fish Agents уже закрывает STT/turn-taking/interruption/TTS, но всё равно требует собственного моста между LiveKit и WebRTC-аудио Телемоста.

---

1. Архитектура Full-Duplex аудиопотока

Для двустороннего голосового участия рекордер разделяется на два встречных потока данных с низкой задержкой (End-to-End Latency < 1.5 сек):

МодульКомпонентТехнологический стекФункция
Слух (Audio In)WebRTC Track InterceptorWebRTC MediaStream, Chromium AudioContextНепрерывный захват входящего звука всех участников звонка с разделением по трекам.
Потоковый STTStreaming Voice-to-TextDeepgram Nova-2 WebSockets / Sherpa-ONNX / Groq Whisper StreamingБыстрая транскрибация аудио в текст на лету с задержкой < 300 мс.
Детектор обращенийWake-Word & Intent ClassifierRegex / Mini-LLM / Semantic RouterВыделение моментов, когда участники обращаются к агенту («Светочка, подскажи...») или отдают системную команду.
Рассуждения (Brain)Realtime LLM & Wiki RAGGroq Llama-3.3-70B / DeepSeek V3 / Claude 3.5Анализ контекста встречи + поиск ответов в Baza и формирование краткого устного ответа.
Голос (Audio Out)Low-Latency TTSYandex Uniproxy (nastya / shitova.us) / Cartesia / ElevenLabsСинтез естественной речи в Opus/PCM за < 400 мс.
Эфир (Virtual Mic)Virtual Microphone Shimnavigator.mediaDevices.getUserMedia mock в Puppeteer / Virtual PulseAudioВоспроизведение синтезированного звука в микрофонную дорожку бота внутри звонка.

---

2. Механизм голосового Q&A в реальном времени

Логика работы цикла диалога:

1. Мониторинг потока: Бот постоянно анализирует входящий текст от Streaming STT. 2. Активация (Wake-word): При обнаружении имени («Светочка...», «Ассистент...») открывается окно активного запроса. 3. Контекстное обогащение: Запрос передается в LLM с системным промптом:

4. Стриминг голоса в звонок: Чанки текста сразу отправляются в TTS WebSocket (Yandex Uniproxy), и полученные аудио-буферы проигрываются в виртуальный микрофон встречи.

---

3. Управляемый автовыход по кодовой фразе (Graceful Exit Trigger)

Одна из ключевых запланированных фич — возможность попросить бота завершить работу прямо голосом в звонке, не переходя в Telegram-интерфейс.

Поддерживаемые фразы:

Пошаговый протокол Graceful Teardown:

[Участник произносит: «Светочка, покинь встречу»]
                   │
                   ▼
       Streaming STT детектирует фразу
                   │
                   ▼
  1. Голосовой отклик в эфир (Voice Ack):
     «Хорошо, отключаюсь. Запись и саммари отправляю в Telegram.»
                   │
                   ▼
  2. Завершение медиапотоков:
     MediaRecorder.stop() ──► закрытие WebRTC tracks ──► финализация файлов
                   │
                   ▼
  3. Корректный выход из комнаты:
     Клик по кнопке «Выйти» / page.close() / browser.close()
                   │
                   ▼
  4. Запуск пост-обработки:
     transcribe.js (AssemblyAI / Whisper) ──► summarize.js (Groq / DeepSeek)
                   │
                   ▼
  5. Доставка артефактов:
     Отправка текста и аудио в Telegram-чат и выгрузка на Яндекс.Диск

---

4. Поэтапный план реализации (Roadmap)

ЭтапЗадачаРезультатСтатус
Этап 1Мультиплатформенность рекордераДрайверы для Яндекс.Телемост, Google Meet и Zoom на едином ядре.🔄 В работе
Этап 2Exit-Triggers (Автовыход по фразе)Интеграция легковесного потокового STT (Deepgram/VAD) и логики graceful teardown по голосовой команде.📋 Запланировано
Этап 3Virtual Audio Injection (Виртуальный микрофон)Реализация впрыска аудиопотока в getUserMedia Puppeteer/Chromium для воспроизведения звуков и речи бота.📋 Запланировано
Этап 4In-Meeting Q&A & Voice SynthesisПолноценный голосовой агент: Wake-Word → Realtime RAG по Baza → Yandex Uniproxy TTS → эфир встречи.🎯 Целевой ориентир

---

Связанные заметки