1. 程式人生 > >百度語音合成(TTS)SDK使用方法

百度語音合成(TTS)SDK使用方法

語音合成是實現人機語音互動,建立一個有聽和講能力的互動系統所必需的關鍵技術。 這篇文章將介紹如何使用百度Android語音合成SDK。 與語音識別SDK類似,使用語音合成SDK也需要註冊,並開啟語音合成API服務,詳細步驟可以參考   點選開啟連結        中的註冊部分。 百度語音合成SDK以JAR包+動態連結庫形式釋出,需要開發者在        點選開啟連結      下載SDK開發包,並將libs資料夾拷貝到工程中 申請必要的許可權
  1. <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
    ></uses-permission>  
  3. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  

初始化SpeechSynthesizer物件
  1. speechSynthesizer = new SpeechSynthesizer(getApplicationContext(),  
  2.         "holder"this);  
  3. // 此處需要將setApiKey方法的兩個引數替換為你在百度開發者中心註冊應用所得到的apiKey和secretKey
  4. speechSynthesizer.setApiKey("your-apiKey"
    "your-secretKey");  

引數設定
  1. privatevoid setParams() {  
  2.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");  
  3.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "5");  
  4.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED, "5");  
  5.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH, "5"
    );  
  6.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_ENCODE, "1");  
  7.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_RATE, "4");  
  8.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_LANGUAGE, "ZH");  
  9.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_NUM_PRON, "0");  
  10.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ENG_PRON, "0");  
  11.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PUNC, "0");  
  12.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_BACKGROUND, "0");  
  13.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_STYLE, "0");  
  14.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_TERRITORY, "0");  
  15.     }  
不需要實現這麼多引數,具體引數的含義可以參看SDK的使用文件和引數設定。 如果需要對音訊播報的音訊流進行設定,可以呼叫如下介面
  1. speechSynthesizer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
以上內容即可以實現語音合成的操作,識別過程中可以使用SpeechSynthesizerListener來監聽狀態,從而更好的實現介面同步。
  1. class listener implements SpeechSynthesizerListener {  
  2.        @Override
  3.        publicvoid onStartWorking(SpeechSynthesizer synthesizer) {  
  4.            logDebug("開始工作,請等待資料...");  
  5.        }  
  6.        @Override
  7.        publicvoid onSpeechStart(SpeechSynthesizer synthesizer) {  
  8.            logDebug("朗讀開始");  
  9.        }  
  10.        @Override
  11.        publicvoid onSpeechResume(SpeechSynthesizer synthesizer) {  
  12.            logDebug("朗讀繼續");  
  13.        }  
  14.        @Override
  15.        publicvoid onSpeechProgressChanged(SpeechSynthesizer synthesizer, int progress) {  
  16.        }  
  17.        @Override
  18.        publicvoid onSpeechPause(SpeechSynthesizer synthesizer) {  
  19.            logDebug("朗讀已暫停");  
  20.        }  
  21.        @Override
  22.        publicvoid onSpeechFinish(SpeechSynthesizer synthesizer) {  
  23.            logDebug("朗讀已停止");  
  24.        }  
  25.        @Override
  26.        publicvoid onNewDataArrive(SpeechSynthesizer synthesizer, byte[] dataBuffer, int dataLength) {  
  27.            logDebug("新的音訊資料:" + dataLength);  
  28.        }  
  29.        @Override
  30.        publicvoid onError(SpeechSynthesizer synthesizer, SpeechError error) {  
  31.            logError("發生錯誤:" + error.errorDescription + "(" + error.errorCode + ")");  
  32.        }  
  33.        @Override
  34.        publicvoid onCancel(SpeechSynthesizer synthesizer) {  
  35.            logDebug("已取消");  
  36.        }  
  37.        @Override
  38.        publicvoid onBufferProgressChanged(SpeechSynthesizer synthesizer, int progress) {  
  39.        }  
  40.    }