Android 实现自动朗读(TTS)
2010-03-25 17:02:00 来源:WEB开发网mTts.isLanguageAvailable(Locale.CANADA_FRENCH))
mTts.isLanguageAvailable(new Locale("spa"))
两个语句的返回值均为“ TextToSpeech.LANG_AVAILABLE ” 。第一个是检测当前系统是否支持加拿*****语,由于系统在资源库中无法找到这个地区的法语分支,其含义是仅支持这项语言(法语),而不支持当前紫光 v4.0下载地区的语言分支。
另外,相比于上面强制用户应用预定的语音设置,更加提倡利用Locale.getDefault() 方法根据用户默认的地区设置来选择合适的语言库。
执行Speak的具体方法:
根据上边的介绍,基本实现了 TextToSpeech的初始化和参数配置。下面是一个有关闹钟的应用实例,利用Speak()方法可以直接在应用程序中发挥强大的语音功能。没错,用起来就是这么简单:
String myText1 = "This Translation is from androidRes";
String myText2 = "I hope so, because it's time to wake up.";
mTts.speak(myText1, TextToSpeech.QUEUE_FLUSH, null);
mTts.speak(myText2, TextToSpeech.QUEUE_ADD, null);
TTS Engine的工作原理:
每个独立的应用程序都可以单独创建一个TTS实体,而他们需要执行的语音消息列队(Queue)都统一由TTS Engine管理和语音合成。
名词解释:
synthesize [snθsaz] DJ ['snθsaz] KK:to produce sounds, music or speech using electronic equipment (音响)合成
utterances [trns] DJ [trns] KK :说话方式,语音/语调。
每个独立的TTS实例管理语音消息列队请求的优先级和顺序等。当引用 “TextToSpeech.QUEUE_FLUSH” 调用Speak()方法时,会中断当前实例正在运行的任务(也可以理解为清除当前语音任务,转而执行新的列队任务)。引用 “TextToSpeech.QUEUE_ADD”标签的发音任务将被添加到当前任务列队之后。
为语音任务关联Stream Type:
在Android操作系统中所有的Audio Stream任务都是通过AudioManager类来实现,而它会针对不同的Stream Type来改变语音的播放模式。StreamType可以理解为语音的播放属性,这个属性是用户根据自己的需要在系统中配置的应用方案。如果将语音任务都清楚的分门别类,可以方便的统一管理相同类别任务的属性。基于上一个Alarm Clock例子的基础上,将Speak()方法的最后一个Null参数替换成具有实际含义的数值。这个参数的类型是HashMap,如果希望将当前的 Stream
赞助商链接