Как сделать так, чтобы список горячих слов / пробуждающих слов выполнял разные функции в модуле Snowboy Python?
from snowboy import snowboydecoder
import threading
def hello():
print('Hello')
def greeting():
print('Im doing good.')
def det_hi():
detector = snowboydecoder.HotwordDetector('Hi.pmdl', sensitivity=0.5, audio_gain=1)
detector.start(hello)
def det_greeting():
d2 = snowboydecoder.HotwordDetector('HowAreYou.pmdl', sensitivity=0.5, audio_gain=1)
d2.start(greeting)
thread1 = threading.Thread(target=det_hi)
thread2 = threading.Thread(target=det_greeting)
thread1.start()
thread2.start()
^^^^ Я пробовал запускать несколько экземпляров Snowboy в разных потоках, которые всегда слушают, и это немного работает, но через некоторое время потоки начинают бороться за доступ к микрофону, и он перестает работать
from snowboy import snowboydecoder
import threading
wake_words = ['Hi.pmdl', 'HowAreYou.pmdl']
def hello():
print('Hello')
def greeting():
print('Im doing good.')
detector = snowboydecoder.HotwordDetector(wake_words, sensitivity=0.5, audio_gain=1)
detector.start(hello)
^^^^ Я попытался поместить различные файлы пробуждающих слов в список и затем запустить его. Он работает, но теперь я не могу понять, как заставить его выполнять отдельную функцию для каждого слова пробуждения.
Я также заметил атрибут Detector.num_hotwords, но я не смог найти ни одной ссылки на него в документации или каким-либо способом использовать этот атрибут.
Какие-либо предложения?
1 ответ
Мне только что удалось разобраться, я публикую это на случай, если кому-то это понадобится в будущем.
from snowboy import snowboydecoder
import threading
def hello():
print('Hello')
def greeting():
print('Im doing good.')
wake_words = ['Hi.pmdl', 'HowAreYou.pmdl']
callbacks = [hello, greetings] # For some reason does work if you include the () on the function
detector = snowboydecoder.HotwordDetector(wake_words, sensitivity=0.5, audio_gain=1)
detector.start(detected_callback=callbacks)
Ключевым моментом было создание списка обратных вызовов такой же длины, как и список пробуждающих слов.