zoukankan      html  css  js  c++  java
  • 移动语音引擎相关开发笔记

    随着移动应用的日益普及,移动语音应用越来越受到用户的重视和喜爱。在Android中使用语音引擎其实是很容易的事情,通过若干步骤就可以实现了,本文将指导用户如何在Android SDK中使用语音引擎去创建简单的应用。
      在本教程中,将一步步直接教读者如何创建语音应用,具体的代码在文末有下载。
      步骤一 创建Android工程
      我们首先创建一个Android工程,选用的是Android 2。3以上SDK的。
      步骤二 创建用户界面
      由于我们的例子很简单,所以只需要往界面中增添若干控件就可以了,我们打开main。xml文件,写入如下代码,增加了一个本文框和一个按钮:

    01   <TextView android:id="@+id/intro"
    02   android:layout_width="fill_parent"
    03   android:layout_height="wrap_content"
    04   android:text="Enter some text:"
    05   />
    06   <EditText android:id="@+id/enter"
    07   android:layout_width="fill_parent"
    08   android:layout_height="wrap_content"
    09   />
    10   <Button android:id="@+id/speak"
    11   android:layout_width="wrap_content"
    12   android:layout_height="wrap_content"
    13   android:text="Speak"
    14   />




      步骤三 编写监听事件
      接下来,我们为按钮添加事件处理,首先要获得用户输入的文字,代码如下:
      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语音引擎的实例,代码如下
    [java]
      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();
      但除非是明确用户不在需要应用进行朗读,否则如果要连续让系统朗读的话,则不应该添加这句代码。

  • 相关阅读:
    live555学习之RTSP连接建立以及请求消息处理过程
    RTSP协议学习笔记
    RTP头结构解析
    Doubango ims 框架 分析之 多媒体部分
    VMware虚拟机 NAT模式 配置静态ip
    计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解
    VMWare VMNet 8 的配置使用
    VMware虚拟机CentOS7
    如何禁止虚拟机自动获取DHCP分配的ip地址
    Linux之VMware虚拟机取消DHCP
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3757521.html
Copyright © 2011-2022 走看看