android典型应用之语音合成
android 典型应用之语音合成
#移动开发 #Android
1. android 语音合成介绍
- 语音合成引擎
语音引擎是真正实现语音合成的程序,必须安装它,应用程序才能使用此功能
- pico 引擎
android 2.0 之后,源码自带语音软件 pico,其位置在 external/svox/pico*
,它只支持英法西班牙等五六种文字,不包含中文支持
- espeak 引擎
如何需要支持中文,需要下载扩展支持 espeak, 下载 tts_3.0_rc05.apk(在此下载:[
http://code.google.com/p/eyes-
free/downloads/detail?name=tts_3.0_rc05.apk&can=2&q
](http://code.google.com/p/eyes-
free/downloads/detail?name=tts_3.0_rc05.apk&can=2&q))
设置系统语音支持
设置 -> 语音输入输出 -> 文字转语音设置
选中使用我的设置, 引擎选择 espeak, 默认引擎选择 espeak, 语言选择中文, 聆听示例试用语音工具
下读短信的工具
[http://www.tigersw.cn/soft14228.html
](http://www.tigersw.cn/soft14228.html)
安装后尝试其郎读短信的功能
2. android 对 TTS 的支持
应用程序调用接口
frameworks/base/core/java/android/speech/tts/TextToSpeech.java
3. 例程
功能
朗读编辑框中的文字可从此处下载可独立运行的代码
[http://download.csdn.net/source/2600900
](http://download.csdn.net/source/2600900)
- 核心代码及说明
_ package com.android.mytts; _
_ _
_ import android.app.Activity; _
_ import android.os.Bundle; _
_ import android.speech.tts.TextToSpeech; _
_ import android.util.Log; _
_ import android.view.View; _
_ import android.widget.EditText; _
_ import android.widget.Button; _
_ import java.util.Locale; _
_ _
_ public class MyttsActivity extends Activity implements
TextToSpeech.OnInitListener { _
_ private static final String TAG = "TextToSpeechDemo"; _
_ private TextToSpeech mTts; _
_ private Button mButton; _
_ _
_ @Override _
_ public void onCreate(Bundle savedInstanceState) { _
_ super.onCreate(savedInstanceState); _
_ setContentView(R.layout.main); _
_ mTts = new TextToSpeech(this, this/listener/); // _ _ 初始化语音合成句柄 _
_ mButton = (Button) findViewById(R.id.again_button); _
_ _ _ mButton.setOnClickListener(new View.OnClickListener() { _
_ public void onClick(View v) { // _ _ 按钮按下时读编辑框中内容 _
_ EditText edit = (EditText) findViewById(R.id.EditText01); _
_ sayText(String.valueOf(edit.getText())); _
_ } _
_ }); _
_ } _
_ _
_ @Override _
_ public void onDestroy() { _
_ if (mTts!= null) { _
_ mTts.stop(); _
_ mTts.shutdown(); // _ _ 退出时一定要释放资源 _
_ } _
_ super.onDestroy(); _
_ } _
_ _
_ public void onInit(int status) { _
_ if (status == TextToSpeech.SUCCESS) { _
_ int result = mTts.setLanguage(Locale.CHINA); // _ _ 设置读中文(需安装 espeak)_
_ // int result = mTts.setLanguage(Locale.US); // _ _ 设置读英文 _
_ if (result == TextToSpeech.LANG_MISSING_DATA || _
_ result == TextToSpeech.LANG_NOT_SUPPORTED) { _
_ Log.e(TAG, "Language is not available."); _
_ } else { _
_ mButton.setEnabled(true); // _ _ 系统支持所选语言时将按钮设为可用 _
_ } _
_ } else { _
_ Log.e(TAG, "Could not initialize TextToSpeech."); _
_ } _
_ } _
_ _
_ private void sayText(String str) { _
_ mTts.speak(str, _
_ TextToSpeech.QUEUE_FLUSH, _
_ null); // _ _ 朗读 _
_ } _
_ } _ __