diff --git a/lib/session/call-session.js b/lib/session/call-session.js index 7d25ec11..4348e66d 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -549,7 +549,9 @@ class CallSession extends Emitter { return { speech_credential_sid: credential.speech_credential_sid, api_key: credential.api_key, - region: credential.region + region: credential.region, + use_custom_stt: credential.use_custom_stt, + custom_stt_endpoint: credential.custom_stt_endpoint }; } else if ('wellsaid' === vendor) { diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 2b908686..ebda4bfc 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -82,6 +82,7 @@ class TaskGather extends Task { this.requestSnr = recognizer.requestSnr || false; this.initialSpeechTimeoutMs = recognizer.initialSpeechTimeoutMs || 0; this.azureServiceEndpoint = recognizer.azureServiceEndpoint; + this.azureSttEndpointId = recognizer.azureSttEndpointId; } else { this.hints = []; @@ -358,10 +359,18 @@ class TaskGather extends Task { else if ('microsoft' === this.vendor) { this.bugname = 'azure_transcribe'; if (this.sttCredentials) { + const {api_key, region, use_custom_stt, custom_stt_endpoint} = this.sttCredentials; + Object.assign(opts, { - 'AZURE_SUBSCRIPTION_KEY': this.sttCredentials.api_key, - 'AZURE_REGION': this.sttCredentials.region + 'AZURE_SUBSCRIPTION_KEY': api_key, + 'AZURE_REGION': region }); + if (this.azureSttEndpointId) { + Object.assign(opts, {'AZURE_SERVICE_ENDPOINT_ID': this.azureSttEndpointId}); + } + else if (use_custom_stt && custom_stt_endpoint) { + Object.assign(opts, {'AZURE_SERVICE_ENDPOINT_ID': custom_stt_endpoint}); + } } if (this.hints && this.hints.length > 0) { opts.AZURE_SPEECH_HINTS = this.hints.map((h) => h.trim()).join(','); diff --git a/lib/tasks/specs.json b/lib/tasks/specs.json index 0ecc4972..40c8b643 100644 --- a/lib/tasks/specs.json +++ b/lib/tasks/specs.json @@ -497,6 +497,7 @@ "requestSnr": "boolean", "initialSpeechTimeoutMs": "number", "azureServiceEndpoint": "string", + "azureSttEndpointId": "string", "asrDtmfTerminationDigit": "string", "asrTimeout": "number" }, diff --git a/lib/tasks/transcribe.js b/lib/tasks/transcribe.js index 44856e81..cb10c09b 100644 --- a/lib/tasks/transcribe.js +++ b/lib/tasks/transcribe.js @@ -54,6 +54,7 @@ class TaskTranscribe extends Task { this.requestSnr = recognizer.requestSnr || false; this.initialSpeechTimeoutMs = recognizer.initialSpeechTimeoutMs || 0; this.azureServiceEndpoint = recognizer.azureServiceEndpoint; + this.azureSttEndpointId = recognizer.azureSttEndpointId; } get name() { return TaskName.Transcribe; } @@ -232,10 +233,17 @@ class TaskTranscribe extends Task { } else if (this.vendor === 'microsoft') { this.bugname = 'azure_transcribe'; + const {api_key, region, use_custom_stt, custom_stt_endpoint} = this.sttCredentials; Object.assign(opts, { - 'AZURE_SUBSCRIPTION_KEY': this.sttCredentials.api_key, - 'AZURE_REGION': this.sttCredentials.region + 'AZURE_SUBSCRIPTION_KEY': api_key, + 'AZURE_REGION': region }); + if (this.azureSttEndpointId) { + Object.assign(opts, {'AZURE_SERVICE_ENDPOINT_ID': this.azureSttEndpointId}); + } + else if (use_custom_stt && custom_stt_endpoint) { + Object.assign(opts, {'AZURE_SERVICE_ENDPOINT_ID': custom_stt_endpoint}); + } if (this.hints && this.hints.length > 0) { opts.AZURE_SPEECH_HINTS = this.hints.map((h) => h.trim()).join(','); } diff --git a/lib/utils/db-utils.js b/lib/utils/db-utils.js index 7eb36a7e..c06b9092 100644 --- a/lib/utils/db-utils.js +++ b/lib/utils/db-utils.js @@ -36,6 +36,8 @@ const speechMapper = (cred) => { const o = JSON.parse(decrypt(credential)); obj.api_key = o.api_key; obj.region = o.region; + obj.use_custom_stt = o.use_custom_stt; + obj.custom_stt_endpoint = o.custom_stt_endpoint; } else if ('wellsaid' === obj.vendor) { const o = JSON.parse(decrypt(credential));