所以我一直在 react 上开发一个应用程序,它使用语音识别,我已经设置了它并在 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);
}