Android TTS学习——TTS初体验

一. 基础知识

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 rate Language ,如下图 2 所示可以知道 TTS 支持的语言。

2 TTS 语言选择

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

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

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

TTS engine依托于当前 Android Platform 所支持的几种主要的语言: English French German Italian Spanish 五大语言 (暂时也是没有对中文提供支持)。 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篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章