百度語音合成(TTS)SDK使用方法
語音合成是實現人機語音交互,建立一個有聽和講能力的交互系統所必需的關鍵技術。
這篇文章將介紹如何使用百度Android語音合成SDK。
與語音識別SDK類似,使用語音合成SDK也需要注冊,并開啟語音合成API服務,詳細步驟可以參考 點擊打開鏈接 中的注冊部分。
百度語音合成SDK以JAR包+動態鏈接庫形式發布,需要開發者在 點擊打開鏈接 下載SDK開發包,并將libs文件夾拷貝到工程中
申請必要的權限
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
初始化SpeechSynthesizer對象
speechSynthesizer = new SpeechSynthesizer(getApplicationContext(), "holder", this); // 此處需要將setApiKey方法的兩個參數替換為你在百度開發者中心注冊應用所得到的apiKey和secretKey speechSynthesizer.setApiKey("your-apiKey", "your-secretKey");
參數設置
private void setParams() { speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "5"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED, "5"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH, "5"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_ENCODE, "1"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_RATE, "4"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_LANGUAGE, "ZH"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_NUM_PRON, "0"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ENG_PRON, "0"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PUNC, "0"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_BACKGROUND, "0"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_STYLE, "0"); speechSynthesizer.setParam(SpeechSynthesizer.PARAM_TERRITORY, "0"); }不需要實現這么多參數,具體參數的含義可以參看SDK的使用文檔和參數設置。
如果需要對音頻播報的音頻流進行設置,可以調用如下接口
speechSynthesizer.setAudioStreamType(AudioManager.STREAM_MUSIC);以上內容即可以實現語音合成的操作,識別過程中可以使用SpeechSynthesizerListener來監聽狀態,從而更好的實現界面同步。
class listener implements SpeechSynthesizerListener { @Override public void onStartWorking(SpeechSynthesizer synthesizer) { logDebug("開始工作,請等待數據..."); } @Override public void onSpeechStart(SpeechSynthesizer synthesizer) { logDebug("朗讀開始"); } @Override public void onSpeechResume(SpeechSynthesizer synthesizer) { logDebug("朗讀繼續"); } @Override public void onSpeechProgressChanged(SpeechSynthesizer synthesizer, int progress) { } @Override public void onSpeechPause(SpeechSynthesizer synthesizer) { logDebug("朗讀已暫停"); } @Override public void onSpeechFinish(SpeechSynthesizer synthesizer) { logDebug("朗讀已停止"); } @Override public void onNewDataArrive(SpeechSynthesizer synthesizer, byte[] dataBuffer, int dataLength) { logDebug("新的音頻數據:" + dataLength); } @Override public void onError(SpeechSynthesizer synthesizer, SpeechError error) { logError("發生錯誤:" + error.errorDescription + "(" + error.errorCode + ")"); } @Override public void onCancel(SpeechSynthesizer synthesizer) { logDebug("已取消"); } @Override public void onBufferProgressChanged(SpeechSynthesizer synthesizer, int progress) { } }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!