#!/usr/bin/env python # -*- coding: utf-8 -*- import PicoVoice.Porcupine as pc import PicoVoice.Rhino as rh from pvrecorder import PvRecorder class PicoVoice(object): instance = None @staticmethod def getInstance(): if PicoVoice.instance==None: PicoVoice.instance = PicoVoice() return PicoVoice.instance def __init__(self): self._porcupine = pc.Porcupine.getInstance() self._rhino = rh.Rhino.getInstance() self._porcupine.RegisterFunc(self.OnWeakWord) self._weakwordFunc = [] def start(self): self._porcupine.start() @property def Porcupine(self): return self._porcupine @property def Rhino(self): return self._rhino def OnWeakWord(self, index:int, weakword:str, isAdmin:bool): print(f"OnWeakWord({index}, '{weakword}', {isAdmin})") #Schnake.Schnake.getInstance().Send("/Weakword",weakword) sindex=str(index) for itm in self._weakwordFunc: if itm["weakword"]==sindex or itm["weakword"]==weakword or itm["weakword"]=="" or itm["weakword"]=="*" or weakword=="*": itm["func"](index,weakword) def RegisterOnWeakWord(self, func, weakword = "*"): res={"func": func, "weakword": weakword} self._weakwordFunc.append(res) @staticmethod def show_audio_devices(): devices = PvRecorder.get_audio_devices() for i in range(len(devices)): print("index: "+str(i)+", device name: '"+devices[i]+"'")