Android TTS学习——TTS初体验

来源:互联网 发布:王福明javascript 编辑:程序博客网 时间:2024/04/28 23:03

一.基础知识

TextToSpeech简称 TTS称为语音合成,Android 1.6版本开始支持的新功能,能将所指定的文本转成不同语言音频输出。

在具体介绍前我们先来看下Adnroid系统带的TTS设置界面,点击Settings->Speech synthesis,如下图所示:

图 1 Android TTS设置界面

    当点击“Listen to an example”时,会发出“This is an example of speech synthesis in English.”,如果没有安装TTS Data的话可以点击第二项安装,在Default settings可以设置Speech rateLanguage,如下图2所示可以知道TTS支持的语言。

2 TTS语言选择

    如果勾选“Always use my settings”时要注意,设置了这个选项后那么我们就不能在程序中对speech rateLanguages进行设置了,这里的设置回覆盖我们程序中的设置。

TTS功能需要有TTS Engine的支持,下面我们就来了解下android提供的TTS Engine。

Android使用了叫Pico的支持多种语言的语音合成引擎,Pico在后台负责把分析输入的文本,把分本分成他能识别的各个片段,再把合成的各个语音片段以听起来比较自然的方式连接在一起,这个过程Android系统帮我们做,我们只把他当做一个神奇的过程就可以了。

TTS engine依托于当前Android Platform所支持的几种主要的语言:EnglishFrenchGermanItalianSpanish五大语言(暂时也是没有对中文提供支持)。TTS可以将文本随意的转换成以上任意五种语言的语音输出。与此同时,对于个别的语言版本将取决于不同的时区,例如:对于English,在TTS中可以分别输出美式和英式两种不同的版本

二.实例分析

下面我们先做一个具体的实例来亲自体会一下Android的TTS的效果。

我们做一个简单的输入英文句子然后朗读出来的例子,了解Android的TTS使用方法。

在具体做之前给个AndroidTTS的API的链接,

http://androidappdocs.appspot.com/reference/android/speech/tts/package-summary.html

可以先看下大概了解TTS提供的功能。

图3 Android TTS API

可以看到TTS提供了两个接口和两个类。

我们希望做的效果如下:

图4 实现效果图

上面一个输入框,点击Speak按钮则朗读上面的文字内容。

创建一个Android工程,工程名为AndroidTTSDemoFirst,其中SDK必须选择1.6版本及以上。

其中Main.xml文件很简单,如下所示:

Java文件的编写:

要使用TTS得实现OnInitListener接口

接着定义好下面要用到的几个变量:

虽然安装Android1.6版本及之后的Android机器都默认安装了TTS引擎,但某些设备可能会因为存储容量的限制而缺少安装和语言对应的资源文件,因此在使用TTS前,得先要检查是否安装了TTS语言数据,在onCreate函数中添加以下内容:

这里启动一个新的Intent去检查TTS数据是否已经安装,我们根据其返回的结果进行处理,如下所示:

如果返回CHECK_VOICE_DATA_PASS表示检查成功,可以新建一个TextToSpeech,否则就去下载TTS数据。

当TTS数据检测成功创建一个TextToSpeech后,就会调用接口OnInitListener中定义的回调函数

在这个回调函数里,我们设置语言,然后就可以进行使用TTS引擎进行操作了。

创建一个TextToSpeech是需要占用资源的,因此我们要适时的释放这个资源:

最后,在onCreate函数中设置EditText和Button的使用:

至此,我们的Demo就完成了,当启动程序后,首先会朗读“This is an example of speech synthesis in English.”,然后你在EditText中输入内容,点击Speak按钮就能把内容给朗读出来。

文章对应的完整代码例子可以在这里下载:

http://download.csdn.net/source/2610740

注:文章参加“首届Google暑期大学生博客分享大赛——2010 Andriod篇