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

jopen 10年前發布 | 223K 次閱讀 語音合成 Android開發 移動開發
語音合成是實現人機語音交互,建立一個有聽和講能力的交互系統所必需的關鍵技術。
這篇文章將介紹如何使用百度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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!