Voice Loop — компактный голосовой агент на Python с продвинутыми функциями: детекция пауз (turn detection), обработка прерываний с эхоподавлением и модульная архитектура для разных моделей. Важно правильно настроить turn detection и эхоподавление для плавного взаимодействия.
Voice Loop — A Local Voice Agent in ~500 Lines of Python
наведи и нажми на цифру — раскроется глава
полный разбор ролика · 5 глав ↓
Введение и демонстрация
Voice Loop — голосовой агент на ~500 строк Python, который понимает и отвечает голосом, включая сложные функции, как детекция пауз и прерываний.
Демонстрируются базовые команды и ответы, показывая возможности модели в реальном времени.
Архитектура и модели
Голос с микрофона транскрибируется Moonshine base — маленькой моделью ASR.
Текст обрабатывается LLM Jamf4, затем результат синтезируется в речь через Kokoro TTS.
Все модели подобраны для баланса скорости и качества.
Turn detection и прерывания
Используется smart turn v3 для оценки вероятности окончания речи, чтобы не перебивать пользователя.
Важна голосовая активация и эхоподавление, чтобы отличать прерывания от воспроизведения TTS.
Без эхоподавления прерывания не распознаются корректно.
Дополнительные функции и память
Можно включить chime для информирования пользователя об ожидании ответа.
Реализована простая память: LLM анализирует ответы и сохраняет ключевые данные в файл с периодической консолидацией.
Есть режим без TTS для ускоренного текстового отклика.
Режим аудио-входа и ограничения
Gemma LLM поддерживает аудио-вход, но качество и стабильность хуже, чем при транскрибировании.
Для истории диалога всё равно используют текст из ASR, а в LLM передают только последний аудиофрагмент.
Потенциал для обучения модели на аудио для улучшения turn detection и прерываний, но пока не реализовано.