javascript - Javascript语音识别API在移动设备上不连续
问题描述
所以我一直在开发一个关于反应的应用程序,它使用语音识别,我已经设置它并且在 PC 上运行良好,但是当我在我的手机上尝试它时它运行并且工作但它在转录后停止。
我已启用recognition.continuous = true;
调用语音识别的代码。
voiceCommands() {
recognition.onstart = () => {
console.log('Voice is activated');
}
recognition.onresult = (e) => {
const current = e.resultIndex;
let transcript = e.results[current][0].transcript;
let mobileRepeatBug = (current == 1 && transcript == e.results[0][0].transcript);
if(!mobileRepeatBug) {
if(transcript === 'next' || transcript === ' next') {
this.incrementStep();
e.reuslts = {};
}
if(transcript === 'back' || transcript === ' back') {
this.decrementStep();
e.reuslts = {};
}
}
}
recognition.onspeechend = () => {
recognition.stop();
console.log('voice stopped');
}
}
更改状态的按钮的代码
handleVoice() {
this.setState({
voice: !this.state.voice
}, () => {
if(this.state.voice) {
recognition.start();
console.log("Voice started");
} else {
recognition.stop();
}
});
}
我的目标是让它连续运行,直到我用按钮禁用它。我不确定这是否与 chrome 如何处理手机上的语音权限有关,以及这是否可能。
任何帮助表示赞赏
解决方案
您可以在一段时间后重新开始。
recognition.onresult = (e) => {
const current = e.resultIndex;
let transcript = e.results[current][0].transcript;
let mobileRepeatBug = (current == 1 && transcript == e.results[0][0].transcript);
if(!mobileRepeatBug) {
if(transcript === 'next' || transcript === ' next') {
this.incrementStep();
e.results = {};
}
if(transcript === 'back' || transcript === ' back') {
this.decrementStep();
e.results = {};
}
}
setTimeout(() => {
recognition.start();
}, 50);
}
推荐阅读
- c++ - opencv4+ 中 cvGetWindowHandle() 的替代方案
- linux - 如何将嵌套命令传递给 ssh 以在命令行中运行?
- c# - 从 Windows 窗体将文件上传到网站
- python - 如何组合 DataFrame 以创建带有附加列的新 DataFrame?
- python - 分区中唯一子串的最大数量
- python - AttributeError:“str”对象没有属性“train”
- python - 如何合并具有相同值的csv行中的特定单元格
- microsoft-graph-api - 使用 Graph beta API 为新创建的日历事件添加参考附件时附件未打开
- docker - 在没有 unbound.conf 的情况下配置 DNS 解析
- python-3.x - 如何为没有许可证的用户锁定 Python 代码?