Updated docs.
[python_utils.git] / google_assistant.py
index 71301e4779c2736a4a908df84b7ec7e67ba02b3f..b34197a3e60d0db9eff5c9cc6609ebe04e581bab 100644 (file)
@@ -45,10 +45,16 @@ audio_url: {self.audio_url}"""
 
 
 def tell_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
+    """Alias for ask_google."""
     return ask_google(cmd, recognize_speech=recognize_speech)
 
 
 def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
+    """Send a command string to Google via the google_assistant_bridge as the
+    user google_assistant_username and return the response.  If recognize_speech
+    is True, perform speech recognition on the audio response from Google so as
+    to translate it into text (best effort, YMMV).
+    """
     logging.debug(f"Asking google: '{cmd}'")
     payload = {
         "command": cmd,
@@ -79,10 +85,15 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
                     sample_rate=24000,
                     sample_width=2,
                 )
-                audio_transcription = recognizer.recognize_google(
-                    speech,
-                )
-                logger.debug(f"Transcription: '{audio_transcription}'")
+                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}'