1 """Support for Baidu speech service."""
5 from aip
import AipSpeech
6 import voluptuous
as vol
10 PLATFORM_SCHEMA
as TTS_PLATFORM_SCHEMA,
16 _LOGGER = logging.getLogger(__name__)
18 SUPPORTED_LANGUAGES = [
"zh"]
20 SUPPORTED_PERSON = [0, 1, 3, 4, 5, 103, 106, 110, 111, 5003, 5118]
22 CONF_APP_ID =
"app_id"
23 CONF_SECRET_KEY =
"secret_key"
26 CONF_VOLUME =
"volume"
27 CONF_PERSON =
"person"
29 PLATFORM_SCHEMA = TTS_PLATFORM_SCHEMA.extend(
31 vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORTED_LANGUAGES),
32 vol.Required(CONF_APP_ID): cv.string,
33 vol.Required(CONF_API_KEY): cv.string,
34 vol.Required(CONF_SECRET_KEY): cv.string,
35 vol.Optional(CONF_SPEED, default=5): vol.All(
36 vol.Coerce(int), vol.Range(min=0, max=9)
38 vol.Optional(CONF_PITCH, default=5): vol.All(
39 vol.Coerce(int), vol.Range(min=0, max=9)
41 vol.Optional(CONF_VOLUME, default=5): vol.All(
42 vol.Coerce(int), vol.Range(min=0, max=15)
44 vol.Optional(CONF_PERSON, default=0): vol.In(SUPPORTED_PERSON),
56 SUPPORTED_OPTIONS = [CONF_PERSON, CONF_PITCH, CONF_SPEED, CONF_VOLUME]
60 """Set up Baidu TTS component."""
65 """Baidu TTS speech api provider."""
68 """Init Baidu TTS service."""
70 self.
_lang_lang = conf[CONF_LANG]
75 "appid": conf[CONF_APP_ID],
76 "apikey": conf[CONF_API_KEY],
77 "secretkey": conf[CONF_SECRET_KEY],
81 _OPTIONS[CONF_PERSON]: conf[CONF_PERSON],
82 _OPTIONS[CONF_PITCH]: conf[CONF_PITCH],
83 _OPTIONS[CONF_SPEED]: conf[CONF_SPEED],
84 _OPTIONS[CONF_VOLUME]: conf[CONF_VOLUME],
89 """Return the default language."""
90 return self.
_lang_lang
94 """Return a list of supported languages."""
95 return SUPPORTED_LANGUAGES
99 """Return a dict including default options."""
109 """Return a list of supported options."""
110 return SUPPORTED_OPTIONS
113 """Load TTS from BaiduTTS."""
115 aip_speech = AipSpeech(
122 for key, value
in options.items():
123 speech_data[_OPTIONS[key]] = value
125 result = aip_speech.synthesis(message, language, 1, speech_data)
127 if isinstance(result, dict):
129 "Baidu TTS error-- err_no:%d; err_msg:%s; err_detail:%s",
132 result[
"err_detail"],
136 return self.
_codec_codec, result
def default_language(self)
def get_tts_audio(self, message, language, options)
def supported_languages(self)
def __init__(self, hass, conf)
def default_options(self)
def supported_options(self)
def get_engine(hass, config, discovery_info=None)