第三方——科大讯飞语音合成

使用步骤:

1、设置权限

2、导入资源包

3、设置代码

放在程序入口处:

需要离线语音的时候设置

//应用程序入口处调用,避免手机内存过小,杀死后台进程,造成SpeechUtility对象为null
// 设置你申请的应用appid
StringBufferparam = new StringBuffer();
param.append("appid=55c01620");
param.append(",");
// 设置使用v5+
// ENGINE_MODE客户端引擎选择模式。
// 可选:msc,plus,auto。默认:auto,表示云端优先使用MSC,本地优先使用语音+;msc:只使用MSC;plus:只使用语音+
param.append(SpeechConstant.ENGINE_MODE +"=" + SpeechConstant.MODE_MSC);//客户端引擎选择模式为只使用MSC
Log.i("aa", param.toString());
SpeechUtility.createUtility(MainActivity.this, param.toString());


不需要离线语音的时候可以这样设置

// 初始化即创建语音配置对象,只有初始化后才可以使用MSC的各项服务。离线的时候需要安装语音+
SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID
           + "=申请的科大讯飞APPID");
 
// 1.创建SpeechSynthesizer对象,第二个参数:本地合成时传InitListener
mTts = SpeechSynthesizer.createSynthesizer(MainActivity.this,
<span style="white-space:pre">	</span>mTtsInitListener);
// 2.设置参数
// 设置合成
if (mEngineType.equals(SpeechConstant.TYPE_CLOUD)) {
<span style="white-space:pre">	</span>// 设置使用云端引擎
       <span style="white-space:pre">	</span>mTts.setParameter(SpeechConstant.ENGINE_TYPE,
                 SpeechConstant.TYPE_CLOUD);
<span style="white-space:pre">	</span>// 设置使用云端引擎
<span style="white-space:pre">	</span>mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);
<span style="white-space:pre">	</span>// 设置发音人
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">	</span>* 小燕 青年女声 中英文(普通话)xiaoyan
<span style="white-space:pre">	</span>* 凯瑟琳 青年女声 英文 catherine
<span style="white-space:pre">	</span>* 玛丽 青年女声 英文 vimary
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>mTts.setParameter(SpeechConstant.VOICE_NAME, "catherine");
}else {
<span style="white-space:pre">	</span>// 设置使用本地引擎
<span style="white-space:pre">	</span>mTts.setParameter(SpeechConstant.ENGINE_TYPE,
<span style="white-space:pre">		</span> SpeechConstant.TYPE_LOCAL);
<span style="white-space:pre">	</span>// 获取发音人资源路径
<span style="white-space:pre">	</span>StringBuffer tempBuffer = new StringBuffer();
<span style="white-space:pre">	</span>// 合成通用资源
<span style="white-space:pre">	</span>tempBuffer.append(ResourceUtil.generateResourcePath(
<span style="white-space:pre">		</span>MainActivity.this, RESOURCE_TYPE.assets,"tts/common.jet"));
<span style="white-space:pre">	</span>tempBuffer.append(";");
<span style="white-space:pre">	</span>// 发音人资源
<span style="white-space:pre">	</span>tempBuffer.append(ResourceUtil
<span style="white-space:pre">		</span>.generateResourcePath(MainActivity.this,
<span style="white-space:pre">		</span>RESOURCE_TYPE.assets,"tts/xiaofeng.jet"));
<span style="white-space:pre">	</span>// 设置发音人资源路径
<span style="white-space:pre">	</span>mTts.setParameter(ResourceUtil.TTS_RES_PATH,tempBuffer.toString());
<span style="white-space:pre">	</span>// 设置发音人
<span style="white-space:pre">	</span>mTts.setParameter(SpeechConstant.VOICE_NAME,"xiaofeng");
}
mTts.setParameter(SpeechConstant.SPEED,"50");// 设置语速
mTts.setParameter(SpeechConstant.PITCH,"50");// 设置音调
mTts.setParameter(SpeechConstant.VOLUME,"50");// 设置音量
mTts.setParameter(SpeechConstant.STREAM_TYPE,"3");// 设置播放器音频流类型
// 3.开始合成
int code =mTts.startSpeaking(speech,mSynListener);//开始合成
if (code != ErrorCode.SUCCESS) {
<span style="white-space:pre">	</span> Toast.makeText(MainActivity.this,"语音合成失败,错误码: " + code,
                Toast.LENGTH_SHORT).show();
}

设置不同的发音人读音会有不一样的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章