【Android语音合成TTS】云知声离线TTS使用详解

请尊重他人的劳动成果,转载请注明出处:【Android语音合成TTS】云知声离线TTS使用详解 

PS.


云知声是2012年创立的,虽然只有1年多的发展历程,但其语音识别技术核心团队已经从业十余年,积累颇丰,这也是为什么能够短短一年时间能够在语音识别领域内做得风生水起的缘故。微语音插件、搜狗语音助手、乐视超级电视、老罗锤子操作系统、触宝输入法,还有网易+电信推出的的易信,用的是云知声的语音识别。2013年,云知声在资本市场的认可度非常高,极受追捧。

目前云知声提供免费的离线TTS,但API比较少,功能也比较简单,合成的语音也比较生硬,如果对合成的语音要求不高的话可以考虑接入。

集成方法:


导入云知声TTS相关jar包和so文件

如图:

为了方便使用我这里将百度语音合成引擎做了进一步的封装,封装成了SpeechUtilOffline以方便调用: 

package comjph.tts.usc;

import android.content.Context;
import android.media.AudioManager;
import android.util.Log;
import cn.yunzhisheng.tts.offline.TTSPlayerListener;
import cn.yunzhisheng.tts.offline.basic.ITTSControl;
import cn.yunzhisheng.tts.offline.basic.TTSFactory;

/**
 * 离线语音解析
 * 
 * @author JPH
 * @date 2015-4-14 下午7:20:25
 */
public class SpeechUtilOffline implements TTSPlayerListener {
	public static final String appKey = "_appKey_";
	public static final String  secret = "_secret_";
	private ITTSControl mTTSPlayer;
	private Context context;

	public SpeechUtilOffline(Context context) {
		this.context = context;
		init();
	}

	/**
	 * 初始化引擎
	 * @author JPH
	 * @date 2015-4-14 下午7:32:58
	 */
	private void init() {
		mTTSPlayer = TTSFactory.createTTSControl(context, appKey);// 初始化语音合成对象
		mTTSPlayer.setTTSListener(this);// 设置回调监听
		mTTSPlayer.setStreamType(AudioManager.STREAM_MUSIC);//设置音频流
		mTTSPlayer.setVoiceSpeed(2.5f);//设置播报语速,播报语速,数值范围 0.1~2.5 默认为 1.0
		mTTSPlayer.setVoicePitch(1.1f);//设置播报音高,调节音高,数值范围 0.9~1.1 默认为 1.0
		mTTSPlayer.init();// 初始化合成引擎
	}
	/**
	 * 停止播放
	 * @author JPH
	 * @date 2015-4-14 下午7:50:35
	 */
	public void stop(){
		mTTSPlayer.stop();
	}

	/**
	 * 播放
	 * 
	 * @author JPH
	 * @date 2015-4-14 下午7:29:24
	 */
	public void play(String content) {
		mTTSPlayer.play(content);
	}

	/**
	 * 释放资源
	 * 
	 * @author JPH
	 * @date 2015-4-14 下午7:27:56
	 */
	public void release() {
		// 主动释放离线引擎
		mTTSPlayer.release();
	}

	@Override
	public void onPlayEnd() {
		// 播放完成回调
		Log.i("msg", "onPlayEnd");
	}

	@Override
	public void onPlayBegin() {
		// 开始播放回调
		Log.i("msg", "onPlayBegin");
	}

	@Override
	public void onInitFinish() {
		// 初始化成功回调
		Log.i("msg", "onInitFinish");
	}

	@Override
	public void onError(cn.yunzhisheng.tts.offline.common.USCError arg0) {
		// 语音合成错误回调
		Log.i("msg", "onError");
	}

	@Override
	public void onCancel() {
		// 取消播放回调
		Log.i("msg", "onCancel");
	}

	@Override
	public void onBuffer() {
		// 开始缓冲回调
		Log.i("msg", "onBuffer");

	}
}

使用方法: 

package comjph.tts.usc;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;

public class TTSOfflineActivity extends Activity implements OnClickListener {
	private EditText mTTSText;
	private SpeechUtilOffline offline;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_offline_tts);
		mTTSText = (EditText) findViewById(R.id.textViewResult);
		offline=new SpeechUtilOffline(this);
	}
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btnPlay:
			offline.play(mTTSText.getText().toString());
			break;
		case R.id.btnStop:
			offline.stop();
			break;
		default:
			break;
		}

	}
}
推荐阅读:
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值