HarmonyOS 鸿蒙Next中设置了长语音实时录音识别,但20秒就自动停止录制,该怎么解决?
HarmonyOS 鸿蒙Next中设置了长语音实时录音识别,但20秒就自动停止录制,该怎么解决?
创建引擎代码
let asrEngine: speechRecognizer.SpeechRecognitionEngine;
// 创建引擎,通过callback形式返回
// 设置创建引擎参数
let extraParam: Record<string, Object> = {
"locate": "CN",
"recognizerMode": "long" // 长语音识别
};
let initParamsInfo: speechRecognizer.CreateEngineParams = {
language: 'zh-CN',
online: 1,
extraParams: extraParam
};
// 调用createEngine方法
speechRecognizer.createEngine(initParamsInfo,
(err: BusinessError, speechRecognitionEngine: speechRecognizer.SpeechRecognitionEngine) => {
if (!err) {
console.info('Succeeded in creating engine.');
// 接收创建引擎的实例
asrEngine = speechRecognitionEngine;
} else {
console.error(`Failed to create engine. Code: ${err.code}, message: ${err.message}.`);
}
});
语音识别代码
private startListeningForRecording() {
let audioParam: speechRecognizer.AudioInfo = { audioType: 'pcm', sampleRate: 16000, soundChannel: 1, sampleBit: 16 }// audioInfo参数配置请参考AudioInfo
let extraParam: Record<string, Object> = {
"recognitionMode": 0 // 实时录音识别(需应用开启录音权限:ohos.permission.MICROPHONE)
}
let recognizerParams: speechRecognizer.StartParams = {
sessionId: "2333",
audioInfo: audioParam,
extraParams: extraParam
}
console.info('startListening start');
asrEngine.startListening(recognizerParams);
};
更多关于HarmonyOS 鸿蒙Next中设置了长语音实时录音识别,但20秒就自动停止录制,该怎么解决?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
解决方案
需要在语音识别方法的 extraParams 中增加 maxAudioDuration,并设置为 8 * 60 * 60 * 1000 (长语音模式最大识别时间),即可解决问题。

修改后的代码
private startListeningForRecording() {
let audioParam: speechRecognizer.AudioInfo = { audioType: 'pcm', sampleRate: 16000, soundChannel: 1, sampleBit: 16 }// audioInfo参数配置请参考AudioInfo
let extraParam: Record<string, Object> = {
"recognitionMode": 0, // 实时录音识别(需应用开启录音权限:ohos.permission.MICROPHONE)
"maxAudioDuration": 8 * 60 * 60 * 1000 // 长语音模式最大识别时间
}
let recognizerParams: speechRecognizer.StartParams = {
sessionId: "2333",
audioInfo: audioParam,
extraParams: extraParam
}
console.info('startListening start');
asrEngine.startListening(recognizerParams);
};
更多关于HarmonyOS 鸿蒙Next中设置了长语音实时录音识别,但20秒就自动停止录制,该怎么解决?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,长语音实时录音识别自动停止通常由系统默认录音时长限制或应用权限配置导致。检查应用的录音权限是否完整,确保在配置文件中声明了ohos.permission.MICROPHONE权限。在代码中,使用AudioCapturer时需正确设置AudioCapturerInfo中的bufferSizeInBytes与samplingRate,确保音频缓冲区大小适配长时间录制。同时,验证AudioCapturer的start方法是否在后台被系统资源管理中断,可尝试在ability中保持前台服务或使用ContinuousTask能力。


