add try catch in init speech

This commit is contained in:
akirilyuk
2022-02-26 23:30:12 +01:00
parent 87ef510dea
commit 32ebc7017d

View File

@@ -99,7 +99,7 @@ class TaskGather extends Task {
} }
const startListening = (cs, ep) => { 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(); this._startTimer();
if (this.input.includes('speech') && !this.listenDuringPrompt) { if (this.input.includes('speech') && !this.listenDuringPrompt) {
this._initSpeech(cs, ep) this._initSpeech(cs, ep)
@@ -197,72 +197,78 @@ class TaskGather extends Task {
} }
async _initSpeech(cs, ep) { async _initSpeech(cs, ep) {
this.logger.info("started listening on speech events initSpeechEnter"); this.logger.info('started listening on speech events initSpeechEnter');
const opts = {}; try {
const opts = {};
if (this.vad.enable) { if (this.vad.enable) {
opts.START_RECOGNIZING_ON_VAD = 1; opts.START_RECOGNIZING_ON_VAD = 1;
if (this.vad.voiceMs) opts.RECOGNIZER_VAD_VOICE_MS = this.vad.voiceMs; 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.mode >= 0 && this.vad.mode <= 3) opts.RECOGNIZER_VAD_MODE = this.vad.mode;
} }
if ('google' === this.vendor) { if ('google' === this.vendor) {
if (this.sttCredentials) opts.GOOGLE_APPLICATION_CREDENTIALS = JSON.stringify(this.sttCredentials.credentials); 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) {
Object.assign(opts, { Object.assign(opts, {
AWS_ACCESS_KEY_ID: this.sttCredentials.accessKeyId, GOOGLE_SPEECH_USE_ENHANCED: true,
AWS_SECRET_ACCESS_KEY: this.sttCredentials.secretAccessKey, GOOGLE_SPEECH_SINGLE_UTTERANCE: true,
AWS_REGION: this.sttCredentials.region 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 (['aws', 'polly'].includes(this.vendor)) {
} if (this.vocabularyName) opts.AWS_VOCABULARY_NAME = this.vocabularyName;
else if ('microsoft' === this.vendor) { if (this.vocabularyFilterName) {
if (this.sttCredentials) { opts.AWS_VOCABULARY_NAME = this.vocabularyFilterName;
Object.assign(opts, { opts.AWS_VOCABULARY_FILTER_METHOD = this.filterMethod || 'mask';
'AZURE_SUBSCRIPTION_KEY': this.sttCredentials.api_key, }
'AZURE_REGION': this.sttCredentials.region 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) { else if ('microsoft' === this.vendor) {
opts.AZURE_SPEECH_HINTS = this.hints.map((h) => h.trim()).join(','); if (this.sttCredentials) {
} Object.assign(opts, {
//if (this.requestSnr) opts.AZURE_REQUEST_SNR = 1; 'AZURE_SUBSCRIPTION_KEY': this.sttCredentials.api_key,
//if (this.profanityOption !== 'raw') opts.AZURE_PROFANITY_OPTION = this.profanityOption; 'AZURE_REGION': this.sttCredentials.region
if (this.initialSpeechTimeoutMs > 0) opts.AZURE_INITIAL_SPEECH_TIMEOUT_MS = this.initialSpeechTimeoutMs; });
opts.AZURE_USE_OUTPUT_FORMAT_DETAILED = 1; }
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.Transcription, this._onTranscription.bind(this, cs, ep));
ep.addCustomEventListener(AzureTranscriptionEvents.NoSpeechDetected, this._onNoSpeechDetected.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) { _startTranscribing(ep) {
ep.startTranscription({ ep.startTranscription({
vendor: this.vendor, vendor: this.vendor,