失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android 集成科大讯飞TTS语音合成

android 集成科大讯飞TTS语音合成

时间:2020-05-22 18:31:52

相关推荐

android 集成科大讯飞TTS语音合成

集成以及调用顺序为:

(1) 按官方文档导入对应资源文件

(2) 调用SpeechUtility.createUtility(getContext(), “appid=XXXX”); 传入申请的appid

(3) 调用TTSUtils.getInstance().initialTts(getContext()) 进行初始化

(4) 调用TTSUtils.getInstance().speak(“转换文字内容”, getContext()) 实现语音合成

(5) 转换保存的声音文件为pcm格式,搜索pcm2wav(PCM转换成WAV文件)转换工具即可

package com.test.test.util;import android.content.Context;import android.os.Bundle;import com.iflytek.cloud.ErrorCode;import com.iflytek.cloud.InitListener;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechEvent;import com.iflytek.cloud.SpeechSynthesizer;import com.iflytek.cloud.SynthesizerListener;public class TTSUtils implements InitListener, SynthesizerListener {private static volatile TTSUtils instance = null;private boolean isInitSuccess = false;private SpeechSynthesizer mTts;//单例模式public static TTSUtils getInstance() {if (instance == null) {synchronized (TTSUtils.class) {if (instance == null) {instance = new TTSUtils();}}}return instance;}// 初始化合成对象public void initialTts(Context context) {mTts = SpeechSynthesizer.createSynthesizer(context, this);// 清空参数mTts.setParameter(SpeechConstant.PARAMS, null);// 设置在线云端mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 设置发音人mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");// 设置发音语速mTts.setParameter(SpeechConstant.SPEED, "5");// 设置音调mTts.setParameter(SpeechConstant.PITCH, "50");// 设置合成音量mTts.setParameter(SpeechConstant.VOLUME, "100");// 设置播放器音频流类型mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");// 设置播放合成音频打断音乐播放,默认为truemTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true");// 设置音频保存路径,需要申请WRITE_EXTERNAL_STORAGE权限,如不需保存注释该行代码mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, VoiceConfig.TEST_CORPUS_PATH + "voice.pcm");}//开始合成public void speak(String msg, Context context) {if (isInitSuccess) {if (mTts.isSpeaking()) {stop();}mTts.startSpeaking(msg, this);} else {initialTts(context);}}public void stop() {mTts.stopSpeaking();}@Overridepublic void onEvent(int eventType, int i1, int i2, Bundle bundle) {//以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因if (SpeechEvent.EVENT_SESSION_ID == eventType) {String sid = bundle.getString(SpeechEvent.KEY_EVENT_SESSION_ID);}}@Overridepublic void onInit(int code) {if (code == ErrorCode.SUCCESS) {isInitSuccess = true;}}@Overridepublic void onSpeakBegin() {// 监听:开始播放}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos,String info) {// 合成进度}@Overridepublic void onSpeakPaused() {// 暂停播放}@Overridepublic void onSpeakResumed() {// 继续播放}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度}public void pause() {mTts.pauseSpeaking();}public void resume() {mTts.resumeSpeaking();}public void release() {if (null != mTts) {mTts.stopSpeaking();mTts.destroy(); //退出时释放}}@Overridepublic void onCompleted(SpeechError arg0) {// TODO Auto-generated method stub}}

如果觉得《android 集成科大讯飞TTS语音合成》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。