//识别语音初始化
initRecord() {
const that = this;
manager.onStart = function (res) {
that.setData({
recordState: true, //录音状态
})
}
manager.onError = function (res) {
that.setData({
recordState: false,
});
const tips = {
'-30003': '说话时间间隔太短,无法识别语音',
'-30004': '没有听清,请再说一次~',
'-30011': '上个录音正在识别中,请稍后尝试',
};
const retcode = res?.retcode.toString();
retcode &&
wx.showToast({
title: tips[`${retcode}`],
icon: 'none',
duration: 2000,
});
}
//识别结束事件
manager.onStop = function (res) {
wx.showModal({
title: '提示',
content: '听不清楚,请重新说一遍!',
showCancel: false,
})
return;
}
let _res = res.result.replace(/[,,。!?,.!?]/g, ' ');
that.setData({
searchKey: _res
})
}
},
//按住说话
touchStart(event) {
manager.start({
duration: 30000,
lang: 'zh_CN',
})
},
//松开结束
touchEnd(e) {
this.setData({
recordState: false,
})
manager.stop();
},
这是一个已知问题,我们会尽快进行修复。
建议换方案,这问题应该3年左右了。。。
同问啥时候解决
可以监测这个状态来引导用户尽量不说话的情况 当onError有返回接口的时候 我们可以直接把麦克风图标变成灰色,当用户再次点击的时候给他提示“语音输入需说话,否则可能等待数秒后才能正常使用此功能”,这样起码不会让用户懵在那里,知道自己操作失误产生的,当onStop 当有返回的时候在把麦克风图标恢复颜色,可以解决目前官方无法解决的问题
manager.start({
duration: RECORD_DURATION * 1000, // 使用变量设置录音时长
lang: "zh_CN"
});
当RECORD_DURATION为30时,运行正常,为45时提示录音错误。该如何让录音时长超过30秒?
该问题已经修复了,亲测有效
现在有解决方案吗
给官方写邮件了,不知道他会不会去修复
狗日的插件,这bug还不修复
同样的问题