main.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import PicoVoice.Porcupine as pc
  4. import PicoVoice.Rhino as rh
  5. from pvrecorder import PvRecorder
  6. class PicoVoice(object):
  7. instance = None
  8. @staticmethod
  9. def getInstance():
  10. if PicoVoice.instance==None:
  11. PicoVoice.instance = PicoVoice()
  12. return PicoVoice.instance
  13. def __init__(self):
  14. self._porcupine = pc.Porcupine.getInstance()
  15. self._rhino = rh.Rhino.getInstance()
  16. self._porcupine.RegisterFunc(self.OnWeakWord)
  17. self._weakwordFunc = []
  18. def start(self):
  19. self._porcupine.start()
  20. @property
  21. def Porcupine(self):
  22. return self._porcupine
  23. @property
  24. def Rhino(self):
  25. return self._rhino
  26. def OnWeakWord(self, index:int, weakword:str, isAdmin:bool):
  27. print(f"OnWeakWord({index}, '{weakword}', {isAdmin})")
  28. #Schnake.Schnake.getInstance().Send("/Weakword",weakword)
  29. sindex=str(index)
  30. for itm in self._weakwordFunc:
  31. if itm["weakword"]==sindex or itm["weakword"]==weakword or itm["weakword"]=="" or itm["weakword"]=="*" or weakword=="*":
  32. itm["func"](index,weakword)
  33. def RegisterOnWeakWord(self, func, weakword = "*"):
  34. res={"func": func, "weakword": weakword}
  35. self._weakwordFunc.append(res)
  36. @staticmethod
  37. def show_audio_devices():
  38. devices = PvRecorder.get_audio_devices()
  39. for i in range(len(devices)):
  40. print("index: "+str(i)+", device name: '"+devices[i]+"'")