Adds profanity filter, fixes bugs.
[python_utils.git] / google_assistant.py
index 500a909feae4f5f898cbd5fbb6812449043f4796..a50003c7eb2a41e8326714ad24e4eccd2ec6cc34 100644 (file)
@@ -49,6 +49,7 @@ def tell_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
 
 
 def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
+    logging.debug(f"Asking google: '{cmd}'")
     payload = {
         "command": cmd,
         "user": config.config['google_assistant_username'],
@@ -63,6 +64,10 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
         j = r.json()
         success = bool(j["success"])
         response = j["response"] if success else j["error"]
+        if success:
+            logger.debug('Google request succeeded.')
+            if len(response) > 0:
+                logger.debug(f"Google said: '{response}'")
         audio = f"{config.config['google_assistant_bridge']}{j['audio']}"
         if recognize_speech:
             recognizer = sr.Recognizer()
@@ -74,9 +79,15 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
                     sample_rate=24000,
                     sample_width=2,
                 )
-                audio_transcription = recognizer.recognize_google(
-                    speech,
-                )
+                try:
+                    audio_transcription = recognizer.recognize_google(
+                        speech,
+                    )
+                    logger.debug(f"Transcription: '{audio_transcription}'")
+                except sr.UnknownValueError as e:
+                    logger.exception(e)
+                    logger.warning('Unable to parse Google assistant\'s response.')
+                    audio_transcription = None
     else:
         logger.error(
             f'HTTP request to {url} with {payload} failed; code {r.status_code}'