From 32ebc7017d50bb952ccac921a4d4f30b33578206 Mon Sep 17 00:00:00 2001 From: akirilyuk Date: Sat, 26 Feb 2022 23:30:12 +0100 Subject: [PATCH] add try catch in init speech --- lib/tasks/gather.js | 120 +++++++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 7b836965..614f3566 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -99,7 +99,7 @@ class TaskGather extends Task { } const startListening = (cs, ep) => { - this.logger.info({input: this.input, listenDuringPrompt: this.listenDuringPrompt}, "started listening for speech events via startListening"); + this.logger.info({input: this.input, listenDuringPrompt: this.listenDuringPrompt}, 'started listening for speech events via startListening'); this._startTimer(); if (this.input.includes('speech') && !this.listenDuringPrompt) { this._initSpeech(cs, ep) @@ -197,72 +197,78 @@ class TaskGather extends Task { } async _initSpeech(cs, ep) { - this.logger.info("started listening on speech events initSpeechEnter"); - const opts = {}; + this.logger.info('started listening on speech events initSpeechEnter'); + try { + const opts = {}; - if (this.vad.enable) { - opts.START_RECOGNIZING_ON_VAD = 1; - if (this.vad.voiceMs) opts.RECOGNIZER_VAD_VOICE_MS = this.vad.voiceMs; - if (this.vad.mode >= 0 && this.vad.mode <= 3) opts.RECOGNIZER_VAD_MODE = this.vad.mode; - } + if (this.vad.enable) { + opts.START_RECOGNIZING_ON_VAD = 1; + if (this.vad.voiceMs) opts.RECOGNIZER_VAD_VOICE_MS = this.vad.voiceMs; + if (this.vad.mode >= 0 && this.vad.mode <= 3) opts.RECOGNIZER_VAD_MODE = this.vad.mode; + } - if ('google' === this.vendor) { - if (this.sttCredentials) opts.GOOGLE_APPLICATION_CREDENTIALS = JSON.stringify(this.sttCredentials.credentials); - Object.assign(opts, { - GOOGLE_SPEECH_USE_ENHANCED: true, - GOOGLE_SPEECH_SINGLE_UTTERANCE: true, - GOOGLE_SPEECH_MODEL: 'command_and_search' - }); - if (this.hints && this.hints.length > 1) { - opts.GOOGLE_SPEECH_HINTS = this.hints.map((h) => h.trim()).join(','); - } - if (this.altLanguages && this.altLanguages.length > 1) { - opts.GOOGLE_SPEECH_ALTERNATIVE_LANGUAGE_CODES = this.altLanguages.join(','); - } - if (this.profanityFilter === true) { - Object.assign(opts, {'GOOGLE_SPEECH_PROFANITY_FILTER': true}); - } - ep.addCustomEventListener(GoogleTranscriptionEvents.Transcription, this._onTranscription.bind(this, cs, ep)); - ep.addCustomEventListener(GoogleTranscriptionEvents.EndOfUtterance, this._onEndOfUtterance.bind(this, cs, ep)); - } - else if (['aws', 'polly'].includes(this.vendor)) { - if (this.vocabularyName) opts.AWS_VOCABULARY_NAME = this.vocabularyName; - if (this.vocabularyFilterName) { - opts.AWS_VOCABULARY_NAME = this.vocabularyFilterName; - opts.AWS_VOCABULARY_FILTER_METHOD = this.filterMethod || 'mask'; - } - if (this.sttCredentials) { + if ('google' === this.vendor) { + if (this.sttCredentials) opts.GOOGLE_APPLICATION_CREDENTIALS = JSON.stringify(this.sttCredentials.credentials); Object.assign(opts, { - AWS_ACCESS_KEY_ID: this.sttCredentials.accessKeyId, - AWS_SECRET_ACCESS_KEY: this.sttCredentials.secretAccessKey, - AWS_REGION: this.sttCredentials.region + GOOGLE_SPEECH_USE_ENHANCED: true, + GOOGLE_SPEECH_SINGLE_UTTERANCE: true, + GOOGLE_SPEECH_MODEL: 'command_and_search' }); + if (this.hints && this.hints.length > 1) { + opts.GOOGLE_SPEECH_HINTS = this.hints.map((h) => h.trim()).join(','); + } + if (this.altLanguages && this.altLanguages.length > 1) { + opts.GOOGLE_SPEECH_ALTERNATIVE_LANGUAGE_CODES = this.altLanguages.join(','); + } + if (this.profanityFilter === true) { + Object.assign(opts, {'GOOGLE_SPEECH_PROFANITY_FILTER': true}); + } + ep.addCustomEventListener(GoogleTranscriptionEvents.Transcription, this._onTranscription.bind(this, cs, ep)); + ep.addCustomEventListener(GoogleTranscriptionEvents.EndOfUtterance, this._onEndOfUtterance.bind(this, cs, ep)); } - ep.addCustomEventListener(AwsTranscriptionEvents.Transcription, this._onTranscription.bind(this, cs, ep)); - } - else if ('microsoft' === this.vendor) { - if (this.sttCredentials) { - Object.assign(opts, { - 'AZURE_SUBSCRIPTION_KEY': this.sttCredentials.api_key, - 'AZURE_REGION': this.sttCredentials.region - }); + else if (['aws', 'polly'].includes(this.vendor)) { + if (this.vocabularyName) opts.AWS_VOCABULARY_NAME = this.vocabularyName; + if (this.vocabularyFilterName) { + opts.AWS_VOCABULARY_NAME = this.vocabularyFilterName; + opts.AWS_VOCABULARY_FILTER_METHOD = this.filterMethod || 'mask'; + } + if (this.sttCredentials) { + Object.assign(opts, { + AWS_ACCESS_KEY_ID: this.sttCredentials.accessKeyId, + AWS_SECRET_ACCESS_KEY: this.sttCredentials.secretAccessKey, + AWS_REGION: this.sttCredentials.region + }); + } + ep.addCustomEventListener(AwsTranscriptionEvents.Transcription, this._onTranscription.bind(this, cs, ep)); } - if (this.hints && this.hints.length > 1) { - opts.AZURE_SPEECH_HINTS = this.hints.map((h) => h.trim()).join(','); - } - //if (this.requestSnr) opts.AZURE_REQUEST_SNR = 1; - //if (this.profanityOption !== 'raw') opts.AZURE_PROFANITY_OPTION = this.profanityOption; - if (this.initialSpeechTimeoutMs > 0) opts.AZURE_INITIAL_SPEECH_TIMEOUT_MS = this.initialSpeechTimeoutMs; - opts.AZURE_USE_OUTPUT_FORMAT_DETAILED = 1; + else if ('microsoft' === this.vendor) { + if (this.sttCredentials) { + Object.assign(opts, { + 'AZURE_SUBSCRIPTION_KEY': this.sttCredentials.api_key, + 'AZURE_REGION': this.sttCredentials.region + }); + } + if (this.hints && this.hints.length > 1) { + opts.AZURE_SPEECH_HINTS = this.hints.map((h) => h.trim()).join(','); + } + //if (this.requestSnr) opts.AZURE_REQUEST_SNR = 1; + //if (this.profanityOption !== 'raw') opts.AZURE_PROFANITY_OPTION = this.profanityOption; + if (this.initialSpeechTimeoutMs > 0) opts.AZURE_INITIAL_SPEECH_TIMEOUT_MS = this.initialSpeechTimeoutMs; + opts.AZURE_USE_OUTPUT_FORMAT_DETAILED = 1; - ep.addCustomEventListener(AzureTranscriptionEvents.Transcription, this._onTranscription.bind(this, cs, ep)); - ep.addCustomEventListener(AzureTranscriptionEvents.NoSpeechDetected, this._onNoSpeechDetected.bind(this, cs, ep)); + ep.addCustomEventListener(AzureTranscriptionEvents.Transcription, this._onTranscription.bind(this, cs, ep)); + ep.addCustomEventListener(AzureTranscriptionEvents.NoSpeechDetected, this._onNoSpeechDetected.bind(this, cs, ep)); + } + this.logger.info('started listening on speech events initSpeechDone'); + await ep.set(opts) + .catch((err) => this.logger.info(err, 'Error setting channel variables')); + + } catch (err) { + this.logger.error("could not init speech for listening"); } - this.logger.info("started listening on speech events initSpeechDone"); - await ep.set(opts) - .catch((err) => this.logger.info(err, 'Error setting channel variables')); } + _startTranscribing(ep) { ep.startTranscription({ vendor: this.vendor,