Android中使用语音引擎入门七步曲

简介:

现在,随着移动应用的日益普及,移动语音应用越来越受到用户的重视和喜爱,本文将指导用户如何在Android SDK中使用语音引擎去创建简单的应用。在Android中使用语音引擎其实是很容易的事情,通过若干步骤就可以实现了,尽管其中有些地方在使用中要注意。在本教程中,将一步步直接教读者如何创建语音应用,具体的代码在文末有下载。

  步骤一 创建Android工程

  我们首先创建一个Android工程,选用的是Android 2.3以上SDK的。

  步骤二 创建用户界面

  由于我们的例子很简单,所以只需要往界面中增添若干控件就可以了,我们打开main.xml文件,写入如下代码,增加了一个本文框和一个按钮:

   <TextView android:id="@+id/intro"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Enter some text:"
/> 
<EditText android:id="@+id/enter"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/> 
<Button android:id="@+id/speak"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Speak"
/>

  其中文本框中是输入要发音朗读的文字内容。界面如下图:


  步骤三 编写监听事件

  接下来,我们为按钮添加事件处理,首先要获得用户输入的文字,代码如下:

import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.view.View;
import android.widget.EditText;
  public class SpeakingAndroid extends Activity implements OnClickListener
{

       //create the Activity
    public void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
            
          Button speakButton = (Button)findViewById(R.id.speak);
            //监听button事件
            speakButton.setOnClickListener(this);
   
   }
//onClick事件的响应代码
      public void onClick(View v) {

            //获得用户输入的文字
            EditText enteredText = (EditText)findViewById(R.id.enter);
            String words = enteredText.getText().toString();
           //调用语音引擎的方法
            speakWords(words);
    }

}

  步骤四 编写相关的语音方法

  首先,要导入相关的语音引擎包,代码如下:

  import android.speech.tts.TextToSpeech;

  import android.speech.tts.TextToSpeech.OnInitListener;

  接下来,为了能系统先对运行语音引擎的准备工作进行检查,因此先要对其运行前的数据进行就绪检查,所以首先声明一个成员变量,如下:

  private int MY_DATA_CHECK_CODE = 0;

  并且在oncreate方法中,编写如下代码:

  Intent checkTTSIntent = new Intent();

  checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);

  startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);

  以上代码的目的为,创建一个Intent,去检查TTS所需要的数据是否准备好,如果准备好的话,则调用onActivityResult方法,这个方法在下文中会提到。

  步骤五 创建TTS的实例

  在onActivityResult方法中,可以开始创建其TTS语音引擎的实例,代码如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == MY_DATA_CHECK_CODE) { 
        if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
            myTTS = new TextToSpeech(this, this); 
        } 
        else { 
            Intent installTTSIntent = new Intent(); 
            installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
            startActivity(installTTSIntent); 
        } 
        } 
}

  当TTS的数据就绪数据检查完毕后,将调用这个方法,其中resultCode为TTS验证是否通过的标记,如果通过验证的话,则通过myTTS = new TextToSpeech(this, this);

  创建一个语音TTS实例。如果没能通过TTS准备就绪的安装测试,则新声明一个Intent,将用户引导到这个安装TTS引擎的界面中去。

  步骤六 初始化引擎的数据

  由于在本程序中实现了OnInitListener接口,因此可以在oninit方法中,对语音引擎进行初始化设置,比如设置语言等,首先应该导入相关的类库,如下:

  import java.util.Locale;

  在oninit方法中写入如下代码:

public void onInit(int initStatus) { 
    if (initStatus == TextToSpeech.SUCCESS) { 
        myTTS.setLanguage(Locale.US); 

else if (initStatus == TextToSpeech.ERROR) {
            Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();
        }
}

  这里判断如果TTS已经就绪成功,则调用setLanguage方法设置为使用对应的语言(这

  里是英文),如果判断TTS不能准备就绪,则调用Toast的显示方法告知用户。

  步骤七 让TTS说话

  在准备好以上步骤后,最后一步就是让TTS开口说话了,在speakWords方法中,写入如下代码即可

  private void speakWords(String speech) {

  myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);

  }

  其中的speak方法中有很多参数可以选用,具体请参考Android文档,这里选用了

  参数TextToSpeech.QUEUE_FLUSH,如果想让TTS语音引擎连续不断地朗读,可以使用

  myTTS.speak(speech, TextToSpeech.QUEUE_ADD, null)的参数。如果要求应用不再进行朗读,则可以添加一句:

  myTTS.shutdown();

  但除非是明确用户不在需要应用进行朗读,否则如果要连续让系统朗读的话,则不应该添加这句代码。

  小结

  本文简单一步步地介绍了如何在Android SDK中使用语音引擎TTS,读者可以通过这个例子,创建更多丰富的语音应用。本文的代码在










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/754002,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
JSON 自然语言处理 Java
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
122 0
|
1月前
|
搜索推荐 测试技术 定位技术
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
|
1月前
|
定位技术 API 数据库
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
|
10月前
|
传感器 Java Linux
基于Android的运动记录APP设计与实现(论文+源码)_kaic
随着人们生活水平和生活质量的提高,人们越来越关注自己的身体健康。而跑步成为人们最受欢迎的运动方式,运动软件可以在人们锻炼身体的时候提供极大的帮助。本文针对运动轨迹和计步,设计一款基于Android 平台的运动软件。本系统通过使用百度鹰眼、重力传感器和数据库技术,实现了运动轨迹追踪、计步、查看运动记录等功能。本系统界面友好,操作简单,可以稳定运行。本款运动软件适合空闲时间不足的人群,方便人们随时锻炼身体,并查看自己的运动情况。
|
存储 JSON 缓存
大麦 Android 选座场景性能优化全解析
大麦 Android 选座场景性能优化全解析
390 1
大麦 Android 选座场景性能优化全解析
|
前端开发 Java Linux
从零开始系统化学Android,实战篇
从零开始系统化学Android,实战篇
从零开始系统化学Android,实战篇
|
XML 编解码 程序员
Android修行手册-几个适配方案【建议收藏】
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
141 0
|
存储 缓存 Java
Android 和 iOS 孰优孰劣:真实应用开发过程告诉你答案
随便搜索一下“Android vs. iOS”,都会出现很多关于哪个平台更好的争论,大多数的争论点都是关于市场占有率、易用性和设备分化等问题。当然也有一些“以开发者的角度”去比较这两个平台的文章,但是很少有从技术上做深入的比较,通常也只是用一个简单的示例应用介绍一些基本的特性。缺少这种深入的比较其实是有原因的:一个公司要做一个足够复杂的移动应用,通常需要一个人或团队做Android,另外一个人或团队做iOS。这两个平台使用不同的编程语言(Java和Objective-C),提供不同的SDK,使用不同的开发工具,所以人力资源分配上各做各的平台也就不奇怪了。
266 0
Android 和 iOS 孰优孰劣:真实应用开发过程告诉你答案
|
程序员 Android开发 开发者
《深入探索Android热修复技术原理》实体书正式出版!给你一个更充实全面的热修复技术视角
我们在2017年6月发布了《深入探索 Android 热修复技术原理》一书的电子版,电子版发布以后得到了很好的反响。之后,我们对电子版内容做了认真的整理和校对,对全书内容进行了全面的充实,于2018年秋正式出版了《深入探索 Android 热修复技术原理》的彩页印刷版实体书,实体书内容更加精彩!
3802 0
《深入探索Android热修复技术原理》实体书正式出版!给你一个更充实全面的热修复技术视角
|
XML Java Android开发
Android群英传实践过程参考文章荟萃
控件的测量和绘制: Android getWidth和getMeasuredWidth的正解 measure getMeasuredWidth/getWidth getRawX/getX的作用和区别 自定义View: Canvas的常见用法 ...
824 0