[英]Javascript Speech Recognition API not continuous on mobile device
因此,我一直在開發一個基於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); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.