Google Text to Speech 引擎的独特之处在于,如果用户没有安装额外的“离线”下载,它可以使用网络合成语音。
通常要请求这个,你会包括:
put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, String.valueOf(shouldNetwork()));
他们的网络合成声音过去具有明显更高的质量,但随着最近的改进,这一点变得不那么明显了。
文本到语音引擎提供的 API < 21 的信息是无望的,而且一般是错误的,正如您从isLanguageAvailable(Locale loc)
大多数引擎报告错误的调用中所注意到的那样。新的 API 试图解决这个问题,因此您将努力 API < 21 来获取您可以依赖的详细信息。查看我对这个问题的回答,了解如何查询元素。
在撰写本文时,即使使用了新的 API,引擎也提供了不正确的信息。
以 IVONA 为例,查询时getVoices()
返回类似于:
Voice[Name: en-US, locale: en_US, quality: 300, latency: 300, requiresNetwork: false, features: [embeddedTts]]
但它省略了:
Voice[Name: en-US, locale: en_US, quality: 300, latency: 300, requiresNetwork: false, features: [embeddedTts, **notInstalled**]]
所以,你的代码会假设这个引擎可以工作,但它不会......这非常令人沮丧,还有我给他们的未答复的错误报告。
综上所述,当您第一次尝试与引擎对话时,您目前可能不得不依靠一个简单的通知,点击后会导致您的应用出现常见问题解答 - 在常见问题解答中,您将解释如果引擎不说话,检查安装和下载......
令人沮丧的是,我无法为您发布一个简单的代码片段,让一切都正常工作。