1 """Support for the Microsoft Cognitive Services text-to-speech service."""
5 from pycsspeechtts
import pycsspeechtts
6 from requests.exceptions
import HTTPError
7 import voluptuous
as vol
11 PLATFORM_SCHEMA
as TTS_PLATFORM_SCHEMA,
18 CONF_GENDER =
"gender"
19 CONF_OUTPUT =
"output"
21 CONF_VOLUME =
"volume"
23 CONF_CONTOUR =
"contour"
24 _LOGGER = logging.getLogger(__name__)
26 GENDERS = [
"Female",
"Male"]
28 DEFAULT_LANG =
"en-us"
29 DEFAULT_GENDER =
"Female"
30 DEFAULT_TYPE =
"JennyNeural"
31 DEFAULT_OUTPUT =
"audio-24khz-96kbitrate-mono-mp3"
34 DEFAULT_PITCH =
"default"
36 DEFAULT_REGION =
"eastus"
38 PLATFORM_SCHEMA = TTS_PLATFORM_SCHEMA.extend(
40 vol.Required(CONF_API_KEY): cv.string,
41 vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORTED_LANGUAGES),
42 vol.Optional(CONF_GENDER, default=DEFAULT_GENDER): vol.In(GENDERS),
43 vol.Optional(CONF_TYPE, default=DEFAULT_TYPE): cv.string,
44 vol.Optional(CONF_RATE, default=DEFAULT_RATE): vol.All(
45 vol.Coerce(int), vol.Range(-100, 100)
47 vol.Optional(CONF_VOLUME, default=DEFAULT_VOLUME): vol.All(
48 vol.Coerce(int), vol.Range(-100, 100)
50 vol.Optional(CONF_PITCH, default=DEFAULT_PITCH): cv.string,
51 vol.Optional(CONF_CONTOUR, default=DEFAULT_CONTOUR): cv.string,
52 vol.Optional(CONF_REGION, default=DEFAULT_REGION): cv.string,
58 """Set up Microsoft speech component."""
73 """The Microsoft speech API provider."""
76 self, apikey, lang, gender, ttype, rate, volume, pitch, contour, region
78 """Init Microsoft TTS service."""
84 self.
_rate_rate = f
"{rate}{PERCENTAGE}"
85 self.
_volume_volume = f
"{volume}{PERCENTAGE}"
89 self.
namename =
"Microsoft"
93 """Return the default language."""
94 return self.
_lang_lang
98 """Return list of supported languages."""
99 return SUPPORTED_LANGUAGES
103 """Return list of supported options like voice, emotion."""
104 return [CONF_GENDER, CONF_TYPE]
108 """Return a dict include default options."""
109 return {CONF_GENDER: self.
_gender_gender, CONF_TYPE: self.
_type_type}
112 """Load TTS from Microsoft."""
114 language = self.
_lang_lang
117 trans = pycsspeechtts.TTSTranslator(self.
_apikey_apikey, self.
_region_region)
120 gender=options[CONF_GENDER],
121 voiceType=options[CONF_TYPE],
123 rate=self.
_rate_rate,
129 except HTTPError
as ex:
130 _LOGGER.error(
"Error occurred for Microsoft TTS: %s", ex)
def __init__(self, apikey, lang, gender, ttype, rate, volume, pitch, contour, region)
def supported_options(self)
def default_language(self)
def supported_languages(self)
def get_tts_audio(self, message, language, options)
def default_options(self)
def get_engine(hass, config, discovery_info=None)