天天看點

百度 android tts sdk,百度Android語音合成(TTS)SDK使用方法

語音合成是實作人機語音互動,建立一個有聽和講能力的互動系統所必需的關鍵技術。随着語音技術的發展,百度自主研發了語音合成系統(TTS),功能是接受使用者發送的文本,生成語音發送給使用者。

這篇文章将介紹如何使用百度Android語音合成SDK。

與語音識别SDK類似,使用語音合成SDK也需要注冊,并開啟語音合成API服務,詳細步驟可以參考   點選打開連結        中的注冊部分。

百度語音合成SDK以JAR包+動态連結庫形式釋出,需要開發者在         點選打開連結      下載下傳SDK開發包,并将libs檔案夾拷貝到工程中

百度 android tts sdk,百度Android語音合成(TTS)SDK使用方法

申請必要的權限

初始化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) {

}

}