Материалы / 15 минут
Соединить локальные ASR, LLM и TTS в управляемый голосовой контур без облачной зависимости.
Компоненты должны оставаться отдельными
ASR, LLM и TTS имеют разные модели отказа и требования к ресурсам. Соединяйте их через узкие сообщения, а не через общий процесс с неявным состоянием.
Оркестратор владеет turn ID, отменой, таймаутами и состоянием интерфейса. Модели только преобразуют вход в выход.
Нужны очереди и backpressure
Если синтез речи медленнее генерации текста, очередь не должна расти бесконечно. Ограничивайте число сегментов и останавливайте генерацию после interrupt.
Одновременная работа трёх моделей может превысить RAM. Измерьте последовательный и параллельный режим и выберите профиль устройства.
Офлайн надо доказывать
После установки отключите сеть и повторите полный сценарий. Модели, tokenizer, голоса и конфигурация должны находиться локально.
Логи не должны содержать сырое аудио и полный transcript по умолчанию. Для отладки используйте явный режим с ограниченным сроком хранения.
turn:
id: local-42
deadline_ms: 12000
asr:
input: audio/turn-42.wav
llm:
context_limit: 4096
tts:
chunk_queue_limit: 3