android源代码文本转语音api,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值