mIat.setParameter(SpeechConstant.AUDIO_SOURCE, "-2");
mIat.setParameter(SpeechConstant.ASR_SOURCE_PATH, Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "FinalAudio.wav");
ret = mIat.startListening(mRecognizerListener);
if (ret != ErrorCode.SUCCESS) {
showTip("识别失败,错误码:" + ret);
} else {
byte[] audioData = FucUtil.readAudioFile(context, "FinalAudio.wav");
if (null != audioData) {
showTip("开始转换");
// 一次(也可以分多次)写入音频文件数据,数据格式必须是采样率为8KHz或16KHz(本地识别只支持16K采样率,云端都支持),位长16bit,单声道的wav或者pcm
// 写入8KHz采样的音频时,必须先调用setParameter(SpeechConstant.SAMPLE_RATE, "8000")设置正确的采样率
// 注:当音频过长,静音部分时长超过VAD_EOS将导致静音后面部分不能识别。
// 音频切分方法:FucUtil.splitBuffer(byte[] buffer,int length,int spsize);
mIat.writeAudio(audioData, 0, audioData.length);
mIat.stopListening();
} else {
mIat.cancel();
showTip("读取音频流失败");
}
}
这是部分代码,总是读取音频流失败,有人知道原因吗,本人感觉主要是
byte[] audioData = FucUtil.readAudioFile(context, "FinalAudio.wav");这句有问题,但是不知道具体问题出在哪,有大神指点一下吗?
mIat.setParameter(SpeechConstant.ASR_SOURCE_PATH, Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "FinalAudio.wav");
ret = mIat.startListening(mRecognizerListener);
if (ret != ErrorCode.SUCCESS) {
showTip("识别失败,错误码:" + ret);
} else {
byte[] audioData = FucUtil.readAudioFile(context, "FinalAudio.wav");
if (null != audioData) {
showTip("开始转换");
// 一次(也可以分多次)写入音频文件数据,数据格式必须是采样率为8KHz或16KHz(本地识别只支持16K采样率,云端都支持),位长16bit,单声道的wav或者pcm
// 写入8KHz采样的音频时,必须先调用setParameter(SpeechConstant.SAMPLE_RATE, "8000")设置正确的采样率
// 注:当音频过长,静音部分时长超过VAD_EOS将导致静音后面部分不能识别。
// 音频切分方法:FucUtil.splitBuffer(byte[] buffer,int length,int spsize);
mIat.writeAudio(audioData, 0, audioData.length);
mIat.stopListening();
} else {
mIat.cancel();
showTip("读取音频流失败");
}
}
这是部分代码,总是读取音频流失败,有人知道原因吗,本人感觉主要是
byte[] audioData = FucUtil.readAudioFile(context, "FinalAudio.wav");这句有问题,但是不知道具体问题出在哪,有大神指点一下吗?