add support for azure custom endpoints

This commit is contained in:
Dave Horton
2022-09-27 09:32:30 +01:00
parent fe7f0900ce
commit 67aff2e2a9
2 changed files with 49 additions and 5 deletions

View File

@@ -34,7 +34,11 @@ const encryptCredential = (obj) => {
secret_access_key,
aws_region,
api_key,
region
region,
use_custom_tts,
custom_tts_endpoint,
use_custom_stt,
custom_stt_endpoint
} = obj;
switch (vendor) {
@@ -59,7 +63,14 @@ const encryptCredential = (obj) => {
case 'microsoft':
assert(region, 'invalid azure speech credential: region is required');
assert(api_key, 'invalid azure speech credential: api_key is required');
const azureData = JSON.stringify({region, api_key});
const azureData = JSON.stringify({
region,
api_key,
use_custom_tts,
custom_tts_endpoint,
use_custom_stt,
custom_stt_endpoint
});
return encrypt(azureData);
case 'wellsaid':
@@ -139,6 +150,10 @@ router.get('/', async(req, res) => {
const o = JSON.parse(decrypt(credential));
obj.api_key = obscureKey(o.api_key);
obj.region = o.region;
obj.use_custom_tts = o.use_custom_tts;
obj.custom_tts_endpoint = o.custom_tts_endpoint;
obj.use_custom_stt = o.use_custom_stt;
obj.custom_stt_endpoint = o.custom_stt_endpoint;
logger.info({obj, o}, 'retrieving azure speech credential');
}
else if ('wellsaid' === obj.vendor) {
@@ -181,6 +196,10 @@ router.get('/:sid', async(req, res) => {
const o = JSON.parse(decrypt(credential));
obj.api_key = obscureKey(o.api_key);
obj.region = o.region;
obj.use_custom_tts = o.use_custom_tts;
obj.custom_tts_endpoint = o.custom_tts_endpoint;
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));
@@ -321,10 +340,24 @@ router.get('/:sid/test', async(req, res) => {
}
}
else if (cred.vendor === 'microsoft') {
const {api_key, region} = credential;
const {
api_key,
region,
use_custom_tts,
custom_tts_endpoint,
use_custom_stt,
custom_stt_endpoint
} = credential;
if (cred.use_for_tts) {
try {
await testMicrosoftTts(logger, {api_key, region});
await testMicrosoftTts(logger, {
api_key,
region,
use_custom_tts,
custom_tts_endpoint,
use_custom_stt,
custom_stt_endpoint
});
results.tts.status = 'ok';
SpeechCredential.ttsTestResult(sid, true);
} catch (err) {

View File

@@ -54,7 +54,18 @@ const testAwsStt = (logger, credentials) => {
};
const testMicrosoftTts = async(logger, credentials) => {
const {api_key, region} = credentials;
const {
api_key,
region,
// eslint-disable-next-line no-unused-vars
use_custom_tts,
// eslint-disable-next-line no-unused-vars
custom_tts_endpoint,
// eslint-disable-next-line no-unused-vars
use_custom_stt,
// eslint-disable-next-line no-unused-vars
custom_stt_endpoint
} = credentials;
if (!api_key) throw new Error('testMicrosoftTts: credentials are missing api_key');
if (!region) throw new Error('testMicrosoftTts: credentials are missing region');