Этап 4: слово активации через Vosk

- Фоновое прослушивание микрофона маленькой моделью Vosk, фразы настраиваются
- Свободное распознавание + требование устойчивой гипотезы: грамматика давала массу ложных срабатываний
- Пауза прослушивания, пока ассистент слушает команду, думает или говорит
- Модель скачивается с зеркала HuggingFace, проверка слов по словарю модели
- Переключатель в меню трея
- Тесты поиска фразы и фонового слушателя

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nid
2026-09-17 03:56:32 +03:00
co-authored by Claude Opus 5
parent 513d010c19
commit a719980d74
12 changed files with 931 additions and 5 deletions
+15 -1
View File
@@ -6,7 +6,7 @@
- Текстовый чат со стримингом ответа
- Озвучка ответов голосом Silero: фразы проговариваются по мере генерации, блоки кода пропускаются
- Голосовой ввод по глобальной горячей клавише: faster-whisper на видеокарте, конец фразы по паузе (Silero VAD)
- В планах: слово активации
- Слово активации («ассистент») через Vosk — без нажатия клавиш
## Запуск
@@ -46,6 +46,20 @@ Silero читает только кириллицу: числа переводя
`nvidia-cublas-cu12` и `nvidia-cudnn-cu12`, отдельно устанавливать CUDA Toolkit не нужно.
Без видеокарты распознавание идёт на CPU — тогда лучше выбрать модель `small` или `medium`.
### Слово активации
Включается пунктом меню значка или `wake_word.enabled: true` в конфиге. Скажите «Ассистент»,
дождитесь сигнала и произнесите команду. Фразы задаются в `wake_word.phrases`, все слова должны
быть в словаре модели — иначе приложение сообщит, каких слов не хватает.
Пока ассистент слушает команду, думает или говорит, слово активации не отслеживается:
микрофон не занят дважды, и ассистент не реагирует на собственный голос. Перебить его во время
ответа можно горячей клавишей.
Используется маленькая модель Vosk (~45 МБ) со свободным распознаванием: в простое она почти
не нагружает процессор. Слова, начинающиеся с ключевого («ассистентка»), могут давать ложные
срабатывания.
Закрытие окна сворачивает приложение в трей. Клик по значку открывает чат, в меню значка —
переключение провайдера, новый диалог и выход.