Javascript 语音识别 API 在移动设备上不连续
Javascript Speech Recognition API not continuous on mobile device
所以我一直在开发一个关于 React 的应用程序,它使用语音识别,我已经设置它并且在 PC 上运行良好但是当我在我的 phone 上尝试它时它 运行s 和有效,但在转录后停止。
我启用了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 如何处理 phone 上的语音权限有关,以及这是否可能。
感谢任何帮助
你可以间隔一段时间再开始。
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);
}
所以我一直在开发一个关于 React 的应用程序,它使用语音识别,我已经设置它并且在 PC 上运行良好但是当我在我的 phone 上尝试它时它 运行s 和有效,但在转录后停止。
我启用了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 如何处理 phone 上的语音权限有关,以及这是否可能。
感谢任何帮助
你可以间隔一段时间再开始。
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);
}