Android文字转语音应用

Android开箱即用提供的众多功能之一就是“ 语音合成 ”之一。 这也称为“文字转语音”(TTS),主要是设备“说”不同语言的文字的能力。 此功能是在Android平台的1.6版中引入的,您可以在Android-Developers官方博客上找到介绍性文章 。 在本教程中,我将向您展示如何快速将TTS功能​​引入您的应用程序。 让我们开始创建一个名为“ AndroidTextToSpeechProject”的新Eclipse项目,如下图所示: 请注意,Android 1.6被用作构建目标,而对于最低SDK版本,我使用了值4,因为以前的版本未提供此功能。 使用TTS API的第一步是检查设备是否真正支持它。 为此,有一个名为ACTION_CHECK_TTS_DATA的特殊动作,该动作包含在TextToSpeech.Engine中 。 如Javadoc所述,Intent使用它来“验证系统上资源文件的正确安装和可用性”。 如果资源不可用,则使用另一个名为ACTION_INSTALL_TTS_DATA的操作来触发其安装。 请注意,SDK的仿真器无需配置即可支持TTS。 在使用TTS引擎之前,我们必须确保已正确初始化它。 为了了解是否发生了这种情况,我们可以实现一个名为OnInitListener的接口。 当引擎初始化完成并带有伴随状态时,将调用onInit方法。 初始化后,我们可以使用TextToSpeech类使设备讲话。 相关的方法称为talk ,可以在其中传递文本,队列模式和一些其他参数。 描述队列模式很重要。 这是TTS引擎要使用的排队策略,即当新文本已排队到引擎时该怎么做。 有两种选择:

  • QUEUE_ADD :新条目添加到播放队列的末尾
  • QUEUE_FLUSH : 删除播放队列中的所有条目(要播放的媒体和要合成的文本),并用新条目替换

以上所有内容均转换为以下提供的代码:

package com.javacodegeeks.android.tts;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class TtsActivity extends Activity implements OnInitListener {
    
    private int MY_DATA_CHECK_CODE = 0;
    
    private TextToSpeech tts;
    
    private EditText inputText;
    private Button speakButton;
    
 @Override
 public void onCreate(Bundle savedInstanceState) {
    
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  
  inputText = (EditText) findViewById(R.id.input_text);
  speakButton = (Button) findViewById(R.id.speak_button);
  
  speakButton.setOnClickListener(new OnClickListener() {            
   @Override
   public void onClick(View v) {
       String text = inputText.getText().toString();
       if (text!=null && text.length()>0) {
    Toast.makeText(TtsActivity.this, "Saying: " + text, Toast.LENGTH_LONG).show();
    tts.speak(text, TextToSpeech.QUEUE_ADD, null);
       }
   }
      });
  
  Intent checkIntent = new Intent();
      checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
      startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
        
    }
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == MY_DATA_CHECK_CODE) {
            if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // success, create the TTS instance
                tts = new TextToSpeech(this, this);
            } 
            else {
                // missing data, install it
                Intent installIntent = new Intent();
                installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installIntent);
            }
        }

    }

    @Override
    public void onInit(int status) {        
        if (status == TextToSpeech.SUCCESS) {
            Toast.makeText(TtsActivity.this, 
                    "Text-To-Speech engine is initialized", Toast.LENGTH_LONG).show();
        }
        else if (status == TextToSpeech.ERROR) {
            Toast.makeText(TtsActivity.this, 
                    "Error occurred while initializing Text-To-Speech engine", Toast.LENGTH_LONG).show();
        }
    }
    
}

在onActivityResult方法中检查引擎支持。 如果支持TTS,我们将初始化引擎,否则将启动新的Intent来触发相关安装。 初始化后,我们使用Toast来通知用户操作状态。 最后,我们使用一个由用户提供文本的文本字段和一个向引擎提供所提供文本的按钮。 为了运行项目,需要适当的仿真器设备。 如果没有可用的,请在AVD管理器中使用以下配置(请注意,需要“ Android 1.6 – API Level 4”或更高版本): 在文本字段中提供您希望听到的文本,单击按钮,然后听模拟器与您说话! 所有人都很好,很简单。 现在,让您的设备说话! 您可以在此处下载创建的Eclipse项目。

相关文章 :
  • “ Android完整应用程序教程”系列
  • 带有Yahoo API的Android反向地理编码– PlaceFinder
  • Android基于位置的服务应用程序– GPS位置
  • 使用VirtualBox在PC上安装Android OS
  • 拥抱Android的强大功能:快速概述
相关示例:
  • Android RelativeLayout示例
  • Android ImageButton示例
  • Android ImageView示例
  • Android日期选择器示例

翻译自: https://www.javacodegeeks.com/2010/09/android-text-to-speech-application.html

你可能感兴趣的:(Android文字转语音应用)