initial changes for microsoft speech support (#11)

* initial changes for microsoft speech support

* remove very wordy log message
This commit is contained in:
Dave Horton
2021-11-17 20:50:26 -05:00
committed by GitHub
parent bc8ff644db
commit f1d7dcc6d2
5 changed files with 148 additions and 36 deletions
+54 -2
View File
@@ -8,12 +8,24 @@ const {
testGoogleTts,
testGoogleStt,
testAwsTts,
testAwsStt
testAwsStt,
testMicrosoftStt,
testMicrosoftTts
} = require('../../utils/speech-utils');
router.post('/', async(req, res) => {
const logger = req.app.locals.logger;
const {use_for_stt, use_for_tts, vendor, service_key, access_key_id, secret_access_key, aws_region} = req.body;
const {
use_for_stt,
use_for_tts,
vendor,
service_key,
access_key_id,
secret_access_key,
aws_region,
api_key,
region
} = req.body;
const account_sid = req.user.account_sid || req.body.account_sid;
let service_provider_sid;
if (!account_sid) {
@@ -47,6 +59,13 @@ router.post('/', async(req, res) => {
});
encrypted_credential = encrypt(data);
}
else if (vendor === 'microsoft') {
const data = JSON.stringify({
region,
api_key
});
encrypted_credential = encrypt(data);
}
else throw new DbErrorBadRequest(`invalid speech vendor ${vendor}`);
const uuid = await SpeechCredential.make({
account_sid,
@@ -85,6 +104,11 @@ router.get('/', async(req, res) => {
obj.access_key_id = o.access_key_id;
obj.secret_access_key = o.secret_access_key;
}
else if ('microsoft' === obj.vendor) {
const o = decrypt(credential);
obj.api_key = o.api_key;
obj.region = o.region;
}
return obj;
}));
} catch (err) {
@@ -110,6 +134,11 @@ router.get('/:sid', async(req, res) => {
obj.access_key_id = o.access_key_id;
obj.secret_access_key = o.secret_access_key;
}
else if ('microsoft' === obj.vendor) {
const o = JSON.parse(decrypt(credential));
obj.api_key = o.api_key;
obj.region = o.region;
}
res.status(200).json(obj);
} catch (err) {
sysError(logger, res, err);
@@ -239,6 +268,29 @@ router.get('/:sid/test', async(req, res) => {
}
}
}
else if (cred.vendor === 'microsoft') {
const {api_key, region} = credential;
if (cred.use_for_tts) {
try {
await testMicrosoftTts(logger, {api_key, region});
results.tts.status = 'ok';
SpeechCredential.ttsTestResult(sid, true);
} catch (err) {
results.tts = {status: 'fail', reason: err.message};
SpeechCredential.ttsTestResult(sid, false);
}
}
if (cred.use_for_stt) {
try {
await testMicrosoftStt(logger, {api_key, region});
results.stt.status = 'ok';
SpeechCredential.sttTestResult(sid, true);
} catch (err) {
results.stt = {status: 'fail', reason: err.message};
SpeechCredential.sttTestResult(sid, false);
}
}
}
res.status(200).json(results);
} catch (err) {
sysError(logger, res, err);