mirror of
https://github.com/jambonz/speech-utils.git
synced 2025-12-19 03:37:49 +00:00
wip
This commit is contained in:
@@ -25,7 +25,7 @@ function getExtensionAndSampleRate(path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function addFileToCache(client, logger, path,
|
async function addFileToCache(client, logger, path,
|
||||||
{account_sid, vendor, language, voice, deploymentId, engine, model, text}) {
|
{account_sid, vendor, language, voice, deploymentId, engine, model, text, instructions}) {
|
||||||
let key;
|
let key;
|
||||||
logger = logger || noopLogger;
|
logger = logger || noopLogger;
|
||||||
|
|
||||||
@@ -38,6 +38,7 @@ async function addFileToCache(client, logger, path,
|
|||||||
engine,
|
engine,
|
||||||
model,
|
model,
|
||||||
text,
|
text,
|
||||||
|
instructions
|
||||||
});
|
});
|
||||||
const [extension, sampleRate] = getExtensionAndSampleRate(path);
|
const [extension, sampleRate] = getExtensionAndSampleRate(path);
|
||||||
const audioBuffer = await fs.readFile(path);
|
const audioBuffer = await fs.readFile(path);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ const debug = require('debug')('jambonz:realtimedb-helpers');
|
|||||||
* @returns {object} result - {error, purgedCount}
|
* @returns {object} result - {error, purgedCount}
|
||||||
*/
|
*/
|
||||||
async function purgeTtsCache(client, logger, {all, account_sid, vendor,
|
async function purgeTtsCache(client, logger, {all, account_sid, vendor,
|
||||||
language, voice, deploymentId, engine, model, text} = {all: true}) {
|
language, voice, deploymentId, engine, model, text, instructions} = {all: true}) {
|
||||||
logger = logger || noopLogger;
|
logger = logger || noopLogger;
|
||||||
|
|
||||||
let purgedCount = 0, error;
|
let purgedCount = 0, error;
|
||||||
@@ -35,6 +35,7 @@ async function purgeTtsCache(client, logger, {all, account_sid, vendor,
|
|||||||
engine,
|
engine,
|
||||||
model,
|
model,
|
||||||
text,
|
text,
|
||||||
|
instructions
|
||||||
});
|
});
|
||||||
purgedCount = await client.del(key);
|
purgedCount = await client.del(key);
|
||||||
if (purgedCount === 0) error = 'Specified item not found';
|
if (purgedCount === 0) error = 'Specified item not found';
|
||||||
|
|||||||
@@ -171,7 +171,8 @@ async function synthAudio(client, createHash, retrieveHash, logger, stats, { acc
|
|||||||
engine,
|
engine,
|
||||||
// model or model_id is used to identify the tts cache.
|
// model or model_id is used to identify the tts cache.
|
||||||
model: model || credentials.model_id,
|
model: model || credentials.model_id,
|
||||||
text
|
text,
|
||||||
|
instructions
|
||||||
});
|
});
|
||||||
|
|
||||||
debug(`synth key is ${key}`);
|
debug(`synth key is ${key}`);
|
||||||
|
|||||||
@@ -23,10 +23,11 @@ function makeSynthKey({
|
|||||||
voice,
|
voice,
|
||||||
engine = '',
|
engine = '',
|
||||||
model = '',
|
model = '',
|
||||||
text
|
text,
|
||||||
|
instructions = '',
|
||||||
}) {
|
}) {
|
||||||
const hash = crypto.createHash('sha1');
|
const hash = crypto.createHash('sha1');
|
||||||
hash.update(`${language}:${vendor}:${voice}:${engine}:${model}:${text}`);
|
hash.update(`${language}:${vendor}:${voice}:${engine}:${model}:${text}:${instructions}`);
|
||||||
const hexHashKey = hash.digest('hex');
|
const hexHashKey = hash.digest('hex');
|
||||||
const accountKey = account_sid ? `:${account_sid}` : '';
|
const accountKey = account_sid ? `:${account_sid}` : '';
|
||||||
const key = `tts${accountKey}:${hexHashKey}`;
|
const key = `tts${accountKey}:${hexHashKey}`;
|
||||||
|
|||||||
@@ -887,7 +887,8 @@ test('TTS Cache tests', async(t) => {
|
|||||||
// save some random tts keys to cache
|
// save some random tts keys to cache
|
||||||
const minRecords = 8;
|
const minRecords = 8;
|
||||||
for (const i in Array(minRecords).fill(0)) {
|
for (const i in Array(minRecords).fill(0)) {
|
||||||
await client.set(makeSynthKey({vendor: i, language: i, voice: i, engine: i, model: i, text: i}), i);
|
await client.set(makeSynthKey({vendor: i, language: i, voice: i, engine: i, model: i, text: i,
|
||||||
|
instructions: i}), i);
|
||||||
}
|
}
|
||||||
const count = await getTtsSize();
|
const count = await getTtsSize();
|
||||||
t.ok(count >= minRecords, 'getTtsSize worked.');
|
t.ok(count >= minRecords, 'getTtsSize worked.');
|
||||||
@@ -906,7 +907,7 @@ test('TTS Cache tests', async(t) => {
|
|||||||
try {
|
try {
|
||||||
// save some random tts keys to cache
|
// save some random tts keys to cache
|
||||||
for (const i in Array(10).fill(0)) {
|
for (const i in Array(10).fill(0)) {
|
||||||
await client.set(makeSynthKey({vendor: i, language: i, voice: i, engine: i, text: i}), i);
|
await client.set(makeSynthKey({vendor: i, language: i, voice: i, engine: i, text: i, instructions: i}), i);
|
||||||
}
|
}
|
||||||
// save a specific key to tts cache
|
// save a specific key to tts cache
|
||||||
const opts = {vendor: 'aws', language: 'en-US', voice: 'MALE', engine: 'Engine', text: 'Hello World!'};
|
const opts = {vendor: 'aws', language: 'en-US', voice: 'MALE', engine: 'Engine', text: 'Hello World!'};
|
||||||
@@ -944,10 +945,10 @@ test('TTS Cache tests', async(t) => {
|
|||||||
const account_sid = "12412512_cabc_5aff"
|
const account_sid = "12412512_cabc_5aff"
|
||||||
const account_sid2 = "22412512_cabc_5aff"
|
const account_sid2 = "22412512_cabc_5aff"
|
||||||
for (const i in Array(minRecords).fill(0)) {
|
for (const i in Array(minRecords).fill(0)) {
|
||||||
await client.set(makeSynthKey({account_sid, vendor: i, language: i, voice: i, engine: i, text: i}), i);
|
await client.set(makeSynthKey({account_sid, vendor: i, language: i, voice: i, engine: i, text: i, instructions: i}), i);
|
||||||
}
|
}
|
||||||
for (const i in Array(minRecords).fill(0)) {
|
for (const i in Array(minRecords).fill(0)) {
|
||||||
await client.set(makeSynthKey({account_sid: account_sid2, vendor: i, language: i, voice: i, engine: i, text: i}), i);
|
await client.set(makeSynthKey({account_sid: account_sid2, vendor: i, language: i, voice: i, engine: i, text: i, instructions: i}), i);
|
||||||
}
|
}
|
||||||
const {purgedCount} = await purgeTtsCache({account_sid});
|
const {purgedCount} = await purgeTtsCache({account_sid});
|
||||||
t.equal(purgedCount, minRecords, `successfully purged at least ${minRecords} tts records from cache for account_sid:${account_sid}`);
|
t.equal(purgedCount, minRecords, `successfully purged at least ${minRecords} tts records from cache for account_sid:${account_sid}`);
|
||||||
|
|||||||
Reference in New Issue
Block a user