第三方——科大訊飛語音合成

使用步驟:

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();
}

設置不同的發音人讀音會有不一樣的效果。

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