我在Chrome中实现的Web Speech API SpeechRecognition()在我说英语时工作得很好,但在其他语言中它经常返回英语单词。我是否错误地实现了this.recognition.lang
?documentation仅给出了一个基本示例。this.recognition.lang
属于init()
还是start()
?也许我正在用英语(默认)初始化SpeechRecognition(),并且当用户切换到另一种语言时没有告诉它?
init() {
this.recognition.interimResults = true;
switch (this.language2!.short) {
case 'en':
this.recognition.lang = 'en-US';
break;
case 'es':
this.recognition.lang = 'es-ES';
break;
case 'fr':
this.recognition.lang = 'fr-FR';
break;
case 'de':
this.recognition.lang = 'de-DE';
break;
case 'it':
this.recognition.lang = 'it-IT';
break;
case 'pt':
this.recognition.lang = 'pt-PT';
break;
case 'ru':
this.recognition.lang = 'ru-RU';
break;
case 'zh':
this.recognition.lang = 'zh-CN';
break;
case 'fi':
this.recognition.lang = 'fi-FI';
break;
default:
this.recognition.lang = 'en-US';
break;
}
this.recognition.continuous = false;
this.recognition.addEventListener('result', (e: any) => {
const transcript = Array.from(e.results)
.map((result: any) => result[0])
.map((result) => result.transcript)
.join('');
this.tempWords = transcript;
this.speechRecognitionWait = false;
});
}
start() {
try {
this.recognition.start();
this.speechRecognitionStart = true;
this.isStoppedSpeechRecog = false;
this.speechRecognitionWait = true;
} catch (error) { // doesn't prevent error "Failed to execute 'start' on 'SpeechRecognition': recognition has already started"
this.recognition.stop();
console.error(error);
}
}
1条答案
按热度按时间dnph8jn41#
我写了一些日志,实际上,我正在用英语初始化SpeechRecognition(),并将应用程序切换到另一种语言并没有切换SpeechRecognition()语言。这段代码工作得更好。