第三方整合訊飛 語音識別 文字轉音
阿新 • • 發佈:2019-01-06
private void init() { //合成監聽器 SynthesizerListener mSynListener = new SynthesizerListener() { //會話結束回撥介面,沒有錯誤時,error為null public void onCompleted(SpeechError error) { } //緩衝進度回撥 //percent為緩衝進度0~100,beginPos為緩衝音訊在文字中開始位置,endPos表示緩衝音訊在文字中結束位置,info為附加資訊。public void onBufferProgress(int percent, int beginPos, int endPos, String info) { } //開始播放 public void onSpeakBegin() { } //暫停播放 public void onSpeakPaused() { } //播放進度回撥 //percent為播放進度0~100,beginPos為播放音訊在文字中開始位置,endPos表示播放音訊在文字中結束位置.public void onSpeakProgress(int percent, int beginPos, int endPos) { } //恢復播放回調介面 public void onSpeakResumed() { } //會話事件回撥介面 public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) { } }; //1.建立SpeechSynthesizer物件, 第二個引數:本地合成時傳InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(MainActivity.this, null); /** 2.合成引數設定,詳見《科大訊飛MSC API手冊(Android)》SpeechSynthesizer 類 * */ // 清空引數 mTts.setParameter(SpeechConstant.PARAMS, null); mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //設定雲端 mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//設定發音人 mTts.setParameter(SpeechConstant.SPEED, "50");//設定語速 //設定合成音調 mTts.setParameter(SpeechConstant.PITCH, "50"); mTts.setParameter(SpeechConstant.VOLUME, "80");//設定音量,範圍0~100 mTts.setParameter(SpeechConstant.STREAM_TYPE, "3"); // 設定播放合成音訊打斷音樂播放,預設為true mTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true"); // 設定音訊儲存路徑,儲存音訊格式支援pcm、wav,設定路徑為sd卡請注意WRITE_EXTERNAL_STORAGE許可權 // 注:AUDIO_FORMAT引數語記需要更新版本才能生效 // mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav"); // boolean isSuccess = mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/tts2.wav"); // Toast.makeText(MainActivity.this, "語音合成 儲存音訊到本地:\n" + isSuccess, Toast.LENGTH_LONG).show(); //3.開始合成 int code = mTts.startSpeaking(write.getText().toString(), mSynListener); if (code != ErrorCode.SUCCESS) { if (code == ErrorCode.ERROR_COMPONENT_NOT_INSTALLED) { //上面的語音配置物件為初始化時: Toast.makeText(MainActivity.this, "語音元件未安裝", Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity.this, "語音合成失敗,錯誤碼: " + code, Toast.LENGTH_LONG).show(); } } }
