Repository: MycroftAI/mycroft-core

Issue:
gTTS needs to be upgraded to 2.2.2 on dev branch
**Describe the bug**
When using Google TTS, the audio service returns an error and never returns audio.
```
2021-02-06 02:39:24.895 | ERROR    |     1 | mycroft.audio.speech:mute_and_speak:134 | TTS execution failed (gTTSError('200 (OK) from TTS API. Probable cause: Unknown'))
```

I had to upgrade `gTTS` from `2.2.0` to `2.2.2` to fix the issue.

```
pip install gTTS -U
Collecting gTTS
  Downloading https://files.pythonhosted.org/packages/5f/b9/94e59337107be134b21ce395a29fc0715b707b560108d6797de2d93e1178/gTTS-2.2.2-py3-none-any.whl
Requirement already satisfied, skipping upgrade: click in /opt/mycroft-venv/lib/python3.7/site-packages (from gTTS) (7.1.2)
Requirement already satisfied, skipping upgrade: six in /opt/mycroft-venv/lib/python3.7/site-packages (from gTTS) (1.15.0)
Requirement already satisfied, skipping upgrade: requests in /opt/mycroft-venv/lib/python3.7/site-packages (from gTTS) (2.20.0)
Requirement already satisfied, skipping upgrade: urllib3<1.25,>=1.21.1 in /opt/mycroft-venv/lib/python3.7/site-packages (from requests->gTTS) (1.24.3)
Requirement already satisfied, skipping upgrade: chardet<3.1.0,>=3.0.2 in /opt/mycroft-venv/lib/python3.7/site-packages (from requests->gTTS) (3.0.4)
Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in /opt/mycroft-venv/lib/python3.7/site-packages (from requests->gTTS) (2020.12.5)
Requirement already satisfied, skipping upgrade: idna<2.8,>=2.5 in /opt/mycroft-venv/lib/python3.7/site-packages (from requests->gTTS) (2.7)
Installing collected packages: gTTS
  Found existing installation: gTTS 2.2.0
    Uninstalling gTTS-2.2.0:
      Successfully uninstalled gTTS-2.2.0
Successfully installed gTTS-2.2.2
```

**Environment:**
 - Device type: Raspberry Pi 4
 - OS: Raspberry OS 64-bit
 - Mycroft-core version: dev




Discussion:

Resolving patch:
diff --git a/mycroft/tts/google_tts.py b/mycroft/tts/google_tts.py
--- a/mycroft/tts/google_tts.py
+++ b/mycroft/tts/google_tts.py
@@ -20,7 +20,7 @@
 from mycroft.util.log import LOG
 
 # Live list of languages
-# Cached list of supported languages (2020-05-27)
+# Cached list of supported languages (2021-02-09)
 _default_langs = {'af': 'Afrikaans', 'sq': 'Albanian', 'ar': 'Arabic',
                   'hy': 'Armenian', 'bn': 'Bengali', 'bs': 'Bosnian',
                   'ca': 'Catalan', 'hr': 'Croatian', 'cs': 'Czech',
@@ -40,20 +40,7 @@
                   'su': 'Sundanese', 'sw': 'Swahili', 'sv': 'Swedish',
                   'ta': 'Tamil', 'te': 'Telugu', 'th': 'Thai', 'tr': 'Turkish',
                   'uk': 'Ukrainian', 'ur': 'Urdu', 'vi': 'Vietnamese',
-                  'cy': 'Welsh', 'zh-cn': 'Chinese (Mandarin/China)',
-                  'zh-tw': 'Chinese (Mandarin/Taiwan)',
-                  'en-us': 'English (US)', 'en-ca': 'English (Canada)',
-                  'en-uk': 'English (UK)', 'en-gb': 'English (UK)',
-                  'en-au': 'English (Australia)', 'en-gh': 'English (Ghana)',
-                  'en-in': 'English (India)', 'en-ie': 'English (Ireland)',
-                  'en-nz': 'English (New Zealand)',
-                  'en-ng': 'English (Nigeria)',
-                  'en-ph': 'English (Philippines)',
-                  'en-za': 'English (South Africa)',
-                  'en-tz': 'English (Tanzania)', 'fr-ca': 'French (Canada)',
-                  'fr-fr': 'French (France)', 'pt-br': 'Portuguese (Brazil)',
-                  'pt-pt': 'Portuguese (Portugal)', 'es-es': 'Spanish (Spain)',
-                  'es-us': 'Spanish (United States)'
+                  'cy': 'Welsh', 'zh': 'Chinese (Mandarin/China)'
                   }
 
 


Test patch:
diff --git a/test/unittests/tts/test_google_tts.py b/test/unittests/tts/test_google_tts.py
--- a/test/unittests/tts/test_google_tts.py
+++ b/test/unittests/tts/test_google_tts.py
@@ -11,14 +11,14 @@ class TestGoogleTTS(unittest.TestCase):
     def test_get_tts(self, _, gtts_mock):
         gtts_response = mock.Mock()
         gtts_mock.return_value = gtts_response
-        tts = GoogleTTS('en-US', {})
+        tts = GoogleTTS('en', {})
         sentence = 'help me Obi-Wan Kenobi, you are my only hope'
         mp3_file, vis = tts.get_tts(sentence, 'output.mp3')
-        gtts_mock.assert_called_with(text=sentence, lang='en-us')
+        gtts_mock.assert_called_with(text=sentence, lang='en')
         gtts_response.save.assert_called_with('output.mp3')
 
     def test_validator(self, _, gtts_mock):
-        validator = GoogleTTSValidator(GoogleTTS('en-US', {}))
+        validator = GoogleTTSValidator(GoogleTTS('en', {}))
         validator.validate_connection()
         with self.assertRaises(Exception):
             def sideeffect(**kwargs):
@@ -33,5 +33,5 @@ def test_lang_connection_error(self, mock_get_langs, _, gtts_mock):
         def sideeffect(**kwargs):
             raise Exception
         mock_get_langs.side_effect = sideeffect
-        tts = GoogleTTS('en-US', {})
-        self.assertEqual(tts.google_lang, 'en-us')
+        tts = GoogleTTS('en', {})
+        self.assertEqual(tts.google_lang, 'en')