Angular - проблема с интеграцией нативного Web Speech API - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь интегрировать нативный 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');
            }
        }

1 Ответ

0 голосов
/ 21 октября 2019

Вы должны убедиться, что используете правильную заглавную букву: это SpeechRecognition() с прописными буквами S.

Это должно быть правильное утверждение:

let recognition = new window.SpeechRecognition();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...