mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-22 01:27:55 +00:00
add try catch in init speech
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user