本文主要演示如何使用Android系统中的 Text-to-speech API实现将指定的文本转成不同语言音频输出,以增强用户体验。
侦测TTS资源的可用性
当前大部分加载有Android操作系统的设备都通过这套引擎来提供TTS功能,但由于一些设备的存储空间非常有限而影响到TTS无法最大限度的发挥功能,因此,建议首先使用检测模块,让用户自行选择是否有足够的空间或者需求来加载此项资源。 相关的代码如下:
1 | Intent checkIntent = new Intent(); |
从以上代码可以看出,检测是通过Intent来调用TextToSpeech引擎提供的功能来实现的,因此需要在对应Activity的返回方法中获取检测的结果,代码如下:
1 | if (requestCode == RESULT_CHECK_TEXT_2_SPEECH) { |
当返回的代码是: TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, 说明该设备已经具备了使用TTS的相关资源。否则,调用 ACTION_INSTALL_TTS_DATA Action来安装相关资源。
初始化
如果资源允许,就可以初始化 TTS 引擎中的 Text-To-Speech 对象来进行相关的操作了。
初始化并设置语言为英语:
1 | textToSpeech = new TextToSpeech(MainActivity.this, new TextToSpeech.OnInitListener() { |
朗读文本
1 | textToSpeech.speak("Hello World", TextToSpeech.QUEUE_FLUSH, null); |
完整的示例代码
在示例代码中,我们在一个Activity中建立了两个按钮,一个按钮执行资源检测的动作,一个用来朗读内容”hello world”的文本。学员可以很方便的扩展这个示例代码来实现自己的需求。
Activity 的 Java 代码
1 | package cn.com.hohistar.tutorial.text2speech; |
Activity 的界面定义:
1 |
|