本文介紹了如何使用阿里云智能語音服務提供的舊版Android SDK,包括SDK的安裝方法及SDK代碼示例。請注意,新用戶請關注新版Android SDK。
推薦您使用新版本Android SDK,本版本后續將不再更新。詳情請參見Android SDK。
前提條件
關鍵接口
NlsClient:語音處理客戶端,利用該客戶端可以進行一句話識別、實時語音識別和語音合成的語音處理任務。該客戶端為線程安全,建議全局僅創建一個實例。
SpeechSynthesizer:代表一次語音合成請求。
SpeechSynthesizerCallback:語音合成回調接口,在獲得合成音頻數據、發生錯誤等事件發生時會觸發回調。您需要實現此接口,在回調方法中加入自己的處理邏輯。
調用順序
創建NlsClient實例。
定義SpeechSynthesizerCallback實現類,按業務需求處理識別結果或錯誤情況。
調用NlsClient.createSynthesizerRequest()方法得到SpeechSynthesizer實例。
設置SpeechSynthesizer參數。
包括access Token、appkey、語音文本(text)、發音人(voice)和語速(speechRate)等。
調用SpeechSynthesizer.start()方法開始與云端服務連接。
在回調中獲得合成的音頻數據并播放,或者處理錯誤。
調用SpeechSynthesizer.stop()方法結束語音合成。
說明如果需要發起新的請求,請重復步驟3~7。
調用NlsClient.release()方法釋放客戶端實例。
Proguard配置
如果代碼使用了混淆,請在proguard-rules.pro中配置:
-keep class com.alibaba.idst.util.*{*;}
代碼示例
創建識別請求
// 創建語音合成對象 speechSynthesizer = client.createSynthesizerRequest(callback); speechSynthesizer.setToken(""); speechSynthesizer.setAppkey(""); // 設置語音編碼,PCM編碼可以直接用audioTrack播放,其他編碼不行。 speechSynthesizer.setFormat(SpeechSynthesizer.FORMAT_PCM); // 以下選項都會改變最終合成的語音效果。 // 設置語音數據采樣率 speechSynthesizer.setSampleRate(SpeechSynthesizer.SAMPLE_RATE_16K); // 設置人聲 speechSynthesizer.setVoice(SpeechSynthesizer.VOICE_XIAOGANG); // 設置語音合成方法 speechSynthesizer.setMethod(SpeechSynthesizer.METHOD_RUS); // 設置語速 speechSynthesizer.setSpeechRate(100); // 設置是否返回語音對應的時間戳信息 speechSynthesizer.setEnableSubtitle(true); // 設置要轉為語音的文本 speechSynthesizer.setText("歡迎使用智能語音!"); speechSynthesizer.start()
獲取合成語音并播放
// 獲取音頻數據的回調,在這里將音頻寫入播放器。 @Override public void OnBinaryReceived(byte[] data, int code) { Log.d(TAG, "binary received length: " + data.length); if (!playing) { playing = true; audioTrack.play(); } audioTrack.write(data, 0, data.length); }
返回語音時間戳信息
// 調用onMetaInfo,需要設置:SpeechSynthesizer.setEnableSubtitle(true)。 @Override public void onMetaInfo(String message, int code) { Log.d(TAG,"onMetaInfo " + message + ": " + String.valueOf(code)); }