Add debugging in gcal renderer.
[kiosk.git] / listen.py
index 70d19855df1b0307a835924f874bdadb99758867..56f32294b34c80d65b992b7a441b4beff6773ad9 100755 (executable)
--- a/listen.py
+++ b/listen.py
@@ -3,14 +3,12 @@
 import os
 import struct
 from datetime import datetime
-from threading import Thread
 
-import numpy as np
 import pvporcupine
 import pyaudio
-import soundfile
 import speech_recognition as sr
 
+
 class HotwordListener(object):
     def __init__(self,
                  command_queue,
@@ -19,7 +17,6 @@ class HotwordListener(object):
                  input_device_index=None,
                  library_path=pvporcupine.LIBRARY_PATH,
                  model_path=pvporcupine.MODEL_PATH):
-        super(HotwordListener, self).__init__()
         self._queue = command_queue
         self._library_path = library_path
         self._model_path = model_path
@@ -30,7 +27,9 @@ class HotwordListener(object):
     def listen_forever(self):
         keywords = list()
         for x in self._keyword_paths:
-            keywords.append(os.path.basename(x).replace('.ppn', '').split('_')[0])
+            keywords.append(
+                os.path.basename(x).replace('.ppn', '').split('_')[0]
+            )
 
         porcupine = None
         pa = None
@@ -58,28 +57,40 @@ class HotwordListener(object):
             print('}')
 
             while True:
-                raw = audio_stream.read(porcupine.frame_length, exception_on_overflow=False)
+                raw = audio_stream.read(
+                    porcupine.frame_length,
+                    exception_on_overflow=False
+                )
                 pcm = struct.unpack_from("h" * porcupine.frame_length, raw)
                 result = porcupine.process(pcm)
                 if result >= 0:
-                    os.system('/usr/bin/aplay /var/www/kiosk/attention.wav')
+                    cmd = 'aplay /var/www/kiosk/attention.wav'
+                    print(f'Running {cmd}...')
+                    x = os.system(cmd)
+                    print(f'---- (done {x}) ----')
                     print('[%s] >>>>>>>>>>>>> Detected wakeword %s' % (
                         str(datetime.now()), keywords[result])
                     )
                     print('>>>>>>>>>>>>>>> Listening for command now...')
                     raw = bytearray()
-                    for i in range(0, int(porcupine.sample_rate / porcupine.frame_length * 4)):
+                    for i in range(
+                            0,
+                            int(porcupine.sample_rate / porcupine.frame_length * 4)
+                    ):
                         raw += audio_stream.read(porcupine.frame_length,
                                                  exception_on_overflow=False)
-                    print(f'>>>>>>>>>>>>>> Recognizing command... {len(raw)} bytes')
+                    print(
+                        f'>>>>>>>>>>>>>> Recognizing command... {len(raw)} bytes'
+                    )
                     speech = sr.AudioData(
                         frame_data = bytes(raw),
                         sample_rate = porcupine.sample_rate,
                         sample_width = 2,  # 16 bits
                     )
                     command = recognizer.recognize_google(speech)
-                    print('[%s] >>>>>>>>>>>>> Google says command was %s' % (
-                        str(datetime.now()), command)
+                    print(
+                        '[%s] >>>>>>>>>>>>> Google says command was %s' % (
+                            str(datetime.now()), command)
                     )
                     self._queue.put(command)
 
@@ -111,7 +122,9 @@ class HotwordListener(object):
 
 
 def main():
-    keyword_paths = [pvporcupine.KEYWORD_PATHS[x] for x in ["blueberry", "bumblebee"]]
+    keyword_paths = [
+        pvporcupine.KEYWORD_PATHS[x] for x in ["blueberry", "bumblebee"]
+    ]
     sensitivities = [0.85, 0.95]
     HotwordListener(
         [],
@@ -119,5 +132,6 @@ def main():
         sensitivities,
     ).listen_forever()
 
+
 if __name__ == '__main__':
     main()