Android 文本转语音TextToSpeech (TTS)

Android 系统里内置了PicoTTS,遗憾的是不支持中文。我们可以安装讯飞语记TTS,中文就不是问题了。

调用起来简单方便,直接使用tts对象调用speak即可。其中speak函数的参数如下:

 public int speak(final String text, final int queueMode, final HashMap params) {
        return runAction(new Action()


text 需要转成语音的文字

queueMode 队列方式:

QUEUE_ADD:播放完之前的语音任务后才播报本次内容

QUEUE_FLUSH:丢弃之前的播报任务,立即播报本次内容

params 设置TTS参数,可以是null。

KEY_PARAM_STREAM:使用哪个音频通道,可以是:STREAM_MUSIC、STREAM_NOTIFICATION、STREAM_RING等

KEY_PARAM_VOLUME:音量大小,0-1f


返回值:

    /**
     * Denotes a successful operation.
     */
    public static final int SUCCESS = 0;
    /**
     * Denotes a generic operation failure.
     */
    public static final int ERROR = -1;


注意使用shutdown()及时释放不用的TTS资源。


以下是Demo源码:

package com.zms.ttsdemo;

import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
	private TextToSpeech tts;
	private Button btnSpeak;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		btnSpeak = (Button) findViewById(R.id.btnSpeak);
		btnSpeak.setOnClickListener(new MyOnClickListener());

		tts = new TextToSpeech(this, new MyOnInitialListener());

	}

	class MyOnInitialListener implements OnInitListener {

		@Override
		public void onInit(int status) {

			// tts.setEngineByPackageName("com.iflytek.vflynote");
			tts.setLanguage(Locale.CHINESE);

		}

	}

	class MyOnClickListener implements View.OnClickListener {

		@Override
		public void onClick(View v) {

			switch (v.getId()) {
			case R.id.btnSpeak:
				tts.speak("你好,我是TTS", TextToSpeech.QUEUE_FLUSH, null);
				break;

			default:
				break;
			}

		}

	}

	@Override
	protected void onDestroy() {
		super.onDestroy();

		if (tts != null) { // 关闭TTS引擎
			tts.shutdown();
		}
	}
}



相关源码:

frameworks\base\core\java\android\speech\tts\TextToSpeech.java


你可能感兴趣的:(Android)