Skip to content

Commit

Permalink
say verb support play audio in array (#482)
Browse files Browse the repository at this point in the history
* say verb support play audio in array

* fixed review comments

* added separated testcase
  • Loading branch information
xquanluu authored Oct 20, 2023
1 parent 1ff4f01 commit 4b7b0e3
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
11 changes: 10 additions & 1 deletion lib/tasks/say.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ class TaskSay extends Task {
return `${this.name}{${this.text[0]}}`;
}

_validateURL(urlString) {
try {
new URL(urlString);
return true;
} catch (e) {
return false;
}
}

async _synthesizeWithSpecificVendor(cs, ep, {vendor, language, voice, label}) {
const {srf} = cs;
const {updateSpeechCredentialLastUsed} = require('../utils/db-utils')(this.logger, srf);
Expand Down Expand Up @@ -153,7 +162,7 @@ class TaskSay extends Task {
}
};

const arr = this.text.map((t) => generateAudio(t));
const arr = this.text.map((t) => (this._validateURL(t) ? t : generateAudio(t)));
return (await Promise.all(arr)).filter((fp) => fp && fp.length);
} catch (err) {
this.logger.info(err, 'TaskSay:exec error');
Expand Down
40 changes: 40 additions & 0 deletions test/say-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,46 @@ test('\'config\' reset synthesizer tests', async(t) => {
}
});

test('Say verb array test', async(t) => {
clearModule.all();
const {srf, disconnect} = require('../app');

try {
await connect(srf);

// GIVEN
const verbs = [
{
"verb": "config",
"synthesizer": {
"vendor": "microsft",
"voice": "foobar"
},
},
{
"verb": "config",
"reset": 'synthesizer',
},
{
verb: 'say',
text: ['hello', 'https://samplelib.com/lib/preview/mp3/sample-3s.mp3']
}
];

const from = 'say_test_success';
await provisionCallHook(from, verbs)

// THEN
await sippUac('uac-success-received-bye.xml', '172.38.0.10', from);
t.pass('say: succeeds when using using account credentials');
disconnect();
} catch (err) {
console.log(`error received: ${err}`);
disconnect();
t.error(err);
}
});

const {MICROSOFT_CUSTOM_API_KEY, MICROSOFT_DEPLOYMENT_ID, MICROSOFT_CUSTOM_REGION, MICROSOFT_CUSTOM_VOICE} = process.env;
if (MICROSOFT_CUSTOM_API_KEY && MICROSOFT_DEPLOYMENT_ID && MICROSOFT_CUSTOM_REGION && MICROSOFT_CUSTOM_VOICE) {
test('\'say\' tests - microsoft custom voice', async(t) => {
Expand Down

0 comments on commit 4b7b0e3

Please sign in to comment.