使用步驟:
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();
}
設置不同的發音人讀音會有不一樣的效果。