Как использовать несколько слов для пробуждения (снежный мальчик) с помощью Python?
Я создаю личного голосового помощника, и я хочу, чтобы мой ИИ слушал команды с помощью слов пробуждения (я не знаю, хорошая ли это идея, поэтому, если не посоветуйте мне), поскольку SpeechRecogniton требует Интернета, и это немного тяжеловато и заставляет ИИ реагировать медленнее... Но когда я вставляю более 1 слова пробуждения и выполняю его, он не распознает ни одной команды...
import datetime
import pyttsx3 # pip install pyttsx3
import os
import sys
import re
import snowboy.snowboydecoder as snowboydecoder
engine = pyttsx3.init()
voices = engine.getProperty('voices')
# for voice in voices:
# print(voice.id)
engine.setProperty('voice', voices[0].id)
def speak(audio):
engine.say(audio)
engine.runAndWait()
def Greetings():
speak ("Hi Sir")
def How_are_you_doing():
speak ("I'm very good, Sir. And You?")
def wake_word():
print ("Hello_word")
detector=snowboydecoder.HotwordDetector("Hey_Bold.pmdl",sensitivity=0.5,audio_gain=1)
detector.start(Greetings)
def how_you_doing():
print ("how_you_doing_word")
detector_how = snowboydecoder.HotwordDetector("How_you_doing.pmdl", sensitivity=0.5, audio_gain=1)
detector_how.start(How_are_you_doing)
Приветствуются любые устройства!
1 ответ
Чтобы прослушать несколько слов пробуждения, просто передайте список путей модели слов пробуждения в HotwordDetector (см. ниже).
ниже приведен рабочий пример прослушивания ряда wakewords, связанных с помощником Google (запуск rpi 4 с AIY VOICE IMAGE с https://github.com/google/aiyprojects-raspbian/releases/tag/v20191113)
import locale
import logging
import signal
from aiy.assistant.grpc import AssistantServiceClientWithLed
from aiy.board import Board
import mod.snowboydecoder as snowboydecoder
models = ['/home/pi/snowboy/resources/wake_word1.umdl',
'/home/pi/snowboy/resources/wake_word12.umdl']
def main():
logging.basicConfig(level=logging.DEBUG)
signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(0))
detector = snowboydecoder.HotwordDetector(models, sensitivity=0.5)
with Board() as board:
assistant = AssistantServiceClientWithLed(
board=board,
volume_percentage=100,
language_code=locale.getdefaultlocale())
while True:
logging.info('say any of your pre-defined hotwords to start the assisteant')
detector.start()
logging.info('assistant is now listening :)')
assistant.conversation()
if __name__ == '__main__':
main()