Android的TTS已经显著的扩大了,它允许应用程序非常简便的实现自定义TTS,当应用程序在选在TTS引擎时,想要使用几个包含新的API的TTS引擎。
使用TTS引擎
在Android以前的版本里面,使用系统提供的TTS引擎,你应该使用TextToSpeech类,来执行TTS操作,或者你用setEngineByPackageName()方法来自定义一个引擎。在Android4.0,setEngineByPackageName()方法已经过时了,现在你可以通过一个新的TextToSpeeck的构造方法来指定引擎,该方法接收一个TTS引擎的包名。
你还可以通过getEngines()来查询可用的TTS引擎,这个方法返回一个TextToSpeech.EngineInfo对象的集合,改对象包含引擎的图标、标签和包名等信息。
建立TTS引擎
在以前,自定义引擎的要求是引擎得使用一个无证本地头文件,在Android4.0,有一套完整的API框架来建立TTS引擎。
一个基本的设置要求是需要一个响应了INTENT_ACTION_TTS_SERVICE意图的TextToSpeeckService的实现,一个TTS引擎的主要工作发生在一个继承TextToSpeechService的service的onSynthesizeText()回调里面,系统给这个方法提供了两个对象:
SynthesisRequest:它包含多种数据,包括合成的文字,环境,语速和语调
SynthesisRequest:这是一个你的TTS引擎提供了音频流的接口。首先,引擎必须调用start()方法,来表明已经准备好提供音频数据,然后,调用audioAvailable()方法,传递一个byte buffer的音频数据。一旦你的引擎通过了所有的音频,调用done().
现在,改框架支持一个真正创建TTS引擎的API,本地代码实现的支持已经被删除。查找一篇关于兼容层得博客,你可以把你旧的TTS引擎转换到新的框架下。
这篇文档对您是否有帮助?