Я пытаюсь интегрировать нативный Web Speech API без какой-либо сторонней библиотеки ngx.
Я мог бы успешно интегрировать API в свой сервис. Распознавание голоса также работает и может генерировать текст из распознанного голоса. Но единственная проблема, с которой я сталкиваюсь в терминале - это ошибка -
TypeError: speechRecognition не является конструктором
Вот мой интерфейс для доступа window
-
export interface IWindow extends Window {
webkitSpeechRecognition: any;
webkitSpeechGrammarList: any;
webkitSpeechRecognitionEvent: any;
SpeechRecognition: any;
SpeechGrammarList: any;
SpeechRecognitionEvent: any;
}
Вот моя сервисная функция, которая запускается в конструкторе сервисов -
initializeNativeVoiceRecognition(){
let speechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
this.recognition = new speechRecognition();
this.recognition.lang = 'en-US';
this.recognition.interimResults = false;
this.recognition.maxAlternatives = 1;
}
Я получаю сообщение об ошибке терминала из следующей строки -
this.recognition = new speechRecognition();
Просто для справки, здесь есть обратные вызовы API веб-речи, которые работают нормально -
initializeVoiceRecognitionCallback(){
this.recognition.onresult = (event) => {
var last = event.results.length - 1;
var queryText = event.results[last][0].transcript;
this.voiceText$.next(queryText);
}
this.recognition.onspeechend = () => {
this.voiceActiveSectionStatus$.next(true);
}
this.recognition.onnomatch = (event) => {
this.voiceActiveSectionStatus$.next(true);
this.voiceText$.next('Voice does not match');
}
this.recognition.onerror = (event) => {
this.voiceActiveSectionStatus$.next(true);
this.voiceText$.next('Error when recognizing voice');
}
}