Skip to content

Emeteil/wake_word

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

WakeWord Detector

Высокоуровневая Python-оболочка над библиотекой openWakeWord, предназначенная для реализации фонового прослушивания и распознавания ключевых слов активации (Wake Words) в реальном времени.

Архитектурные решения

Система спроектирована с учетом требований к производительности и возможности простой интеграции в другие проекты.

1. Неблокирующий захват аудио

Использование sounddevice.InputStream с механизмом callback-функций позволяет выполнять захват и первичную обработку аудиопотока во внутренних потоках системных библиотек, не блокируя основной поток выполнения приложения.

2. Динамическое управление состоянием

Реализованы методы pause() и unpause(), которые критически важны для систем голосового взаимодействия (Voice User Interface). Это позволяет временно отключать распознавание в моменты, когда устройство само воспроизводит звук, исключая возможность ложных срабатываний на собственный голос.

3. Механизмы фильтрации и стабилизации

  • Cooldown: Настраиваемая задержка после срабатывания (cooldown_sec), предотвращающая каскадные детекции одного и того же события.
  • Init Delay: Программная задержка начала анализа (init_delay_sec) для игнорирования переходных процессов в аудио-тракте при включении микрофона.
  • Threshold: Настройка чувствительности для баланса между полнотой (recall) и точностью (precision).

4. Изоляция инференса

Выполнение пользовательских callback-функций при обнаружении слова вынесено в отдельные потоки (daemon=True). Это гарантирует, что длительная обработка команды (например, сетевой запрос к LLM) не приведет к переполнению буфера аудио-стрима и потере данных.

About

A wrapper for the openWakeWord library

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages