1 """Support for the Google speech service."""
3 from __future__
import annotations
9 from gtts
import gTTS, gTTSError
10 import voluptuous
as vol
14 PLATFORM_SCHEMA
as TTS_PLATFORM_SCHEMA,
34 _LOGGER = logging.getLogger(__name__)
36 SUPPORT_OPTIONS = [
"tld"]
38 PLATFORM_SCHEMA = TTS_PLATFORM_SCHEMA.extend(
40 vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES),
41 vol.Optional(CONF_TLD, default=DEFAULT_TLD): vol.In(SUPPORT_TLD),
49 discovery_info: DiscoveryInfoType |
None =
None,
51 """Set up Google speech component."""
57 config_entry: ConfigEntry,
58 async_add_entities: AddEntitiesCallback,
60 """Set up Google Translate speech platform via config entry."""
61 default_language = config_entry.data[CONF_LANG]
62 default_tld = config_entry.data[CONF_TLD]
67 """The Google speech API entity."""
69 def __init__(self, config_entry: ConfigEntry, lang: str, tld: str) ->
None:
70 """Init Google TTS service."""
71 if lang
in MAP_LANG_TLD:
72 self.
_lang_lang = MAP_LANG_TLD[lang].lang
73 self.
_tld_tld = MAP_LANG_TLD[lang].tld
75 self.
_lang_lang = lang
77 self.
_attr_name_attr_name = f
"Google Translate {self._lang} {self._tld}"
82 """Return the default language."""
83 return self.
_lang_lang
87 """Return list of supported languages."""
88 return SUPPORT_LANGUAGES
92 """Return a list of supported options."""
93 return SUPPORT_OPTIONS
96 self, message: str, language: str, options: dict[str, Any] |
None =
None
98 """Load TTS from google."""
100 if language
in MAP_LANG_TLD:
101 tld_language = MAP_LANG_TLD[language]
102 tld = tld_language.tld
103 language = tld_language.lang
104 if options
is not None and "tld" in options:
107 tts = gTTS(text=message, lang=language, tld=tld)
111 tts.write_to_fp(mp3_data)
112 except gTTSError
as exc:
114 "Error during processing of TTS request %s", exc, exc_info=
True
118 return "mp3", mp3_data.getvalue()
122 """The Google speech API provider."""
124 def __init__(self, hass: HomeAssistant, lang: str, tld: str) ->
None:
125 """Init Google TTS service."""
127 if lang
in MAP_LANG_TLD:
128 self.
_lang_lang = MAP_LANG_TLD[lang].lang
129 self.
_tld_tld = MAP_LANG_TLD[lang].tld
131 self.
_lang_lang = lang
133 self.
namename =
"Google Translate"
137 """Return the default language."""
138 return self.
_lang_lang
142 """Return list of supported languages."""
143 return SUPPORT_LANGUAGES
147 """Return a list of supported options."""
148 return SUPPORT_OPTIONS
151 self, message: str, language: str, options: dict[str, Any]
153 """Load TTS from google."""
155 if language
in MAP_LANG_TLD:
156 tld = MAP_LANG_TLD[language].tld
157 language = MAP_LANG_TLD[language].lang
160 tts = gTTS(text=message, lang=language, tld=tld)
164 tts.write_to_fp(mp3_data)
166 _LOGGER.exception(
"Error during processing of TTS request")
169 return "mp3", mp3_data.getvalue()
str default_language(self)
list[str] supported_languages(self)
list[str] supported_options(self)
None __init__(self, HomeAssistant hass, str lang, str tld)
TtsAudioType get_tts_audio(self, str message, str language, dict[str, Any] options)
list[str] supported_options(self)
str default_language(self)
None __init__(self, ConfigEntry config_entry, str lang, str tld)
list[str] supported_languages(self)
TtsAudioType get_tts_audio(self, str message, str language, dict[str, Any]|None options=None)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
GoogleProvider async_get_engine(HomeAssistant hass, ConfigType config, DiscoveryInfoType|None discovery_info=None)