From d0dfd07204203a925e350a2aaa3e0410986fd908 Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Thu, 7 Mar 2024 13:44:40 -0500 Subject: [PATCH] remove seemingly redundant code, reintroduce param to force bypass of tts streaming --- lib/synth-audio.js | 29 ++++++++++++----------------- test/synth.js | 2 +- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/lib/synth-audio.js b/lib/synth-audio.js index 5ba0973..2209705 100644 --- a/lib/synth-audio.js +++ b/lib/synth-audio.js @@ -77,7 +77,7 @@ const trimTrailingSilence = (buffer) => { */ async function synthAudio(client, logger, stats, { account_sid, vendor, language, voice, gender, text, engine, salt, model, credentials, deploymentId, - disableTtsCache, renderForCaching, options + disableTtsCache, renderForCaching, disableTtsStreaming, options }) { let audioBuffer; let servedFromCache = false; @@ -200,21 +200,14 @@ async function synthAudio(client, logger, stats, { account_sid, break; case 'elevenlabs': audioBuffer = await synthElevenlabs(logger, { - credentials, options, stats, language, voice, text, renderForCaching, filePath + credentials, options, stats, language, voice, text, renderForCaching, disableTtsStreaming, filePath }); - if (typeof audioBuffer === 'object' && audioBuffer.filePath) { - return audioBuffer; - } - else { - audioBuffer = await synthElevenlabs(logger, {credentials, options, stats, language, voice, text, filePath}); - } + if (audioBuffer?.filePath) return audioBuffer; break; case 'whisper': - audioBuffer = await synthWhisper(logger, {credentials, stats, voice, text, renderForCaching}); - if (typeof audioBuffer === 'object' && audioBuffer.filePath) { - return audioBuffer; - } - audioBuffer = await synthWhisper(logger, {credentials, stats, voice, text}); + audioBuffer = await synthWhisper(logger, { + credentials, stats, voice, text, renderForCaching, disableTtsStreaming}); + if (audioBuffer?.filePath) return audioBuffer; break; case 'deepgram': audioBuffer = await synthDeepgram(logger, {credentials, stats, model, text}); @@ -611,12 +604,14 @@ const synthCustomVendor = async(logger, {credentials, stats, language, voice, te } }; -const synthElevenlabs = async(logger, {credentials, options, stats, language, voice, text, renderForCaching}) => { +const synthElevenlabs = async(logger, { + credentials, options, stats, voice, text, renderForCaching, disableTtsStreaming +}) => { const {api_key, model_id, options: credOpts} = credentials; const opts = !!options && Object.keys(options).length !== 0 ? options : JSON.parse(credOpts || '{}'); /* default to using the streaming interface, unless disabled by env var OR we want just a cache file */ - if (!process.env.JAMBONES_DISABLE_TTS_STREAMING && !renderForCaching) { + if (!process.env.JAMBONES_DISABLE_TTS_STREAMING && !renderForCaching && !disableTtsStreaming) { let params = ''; params += `{api_key=${api_key}`; params += `,model_id=${model_id}`; @@ -660,10 +655,10 @@ const synthElevenlabs = async(logger, {credentials, options, stats, language, vo } }; -const synthWhisper = async(logger, {credentials, stats, voice, text, renderForCaching}) => { +const synthWhisper = async(logger, {credentials, stats, voice, text, renderForCaching, disableTtsStreaming}) => { const {api_key, model_id, baseURL, timeout, speed} = credentials; /* if the env is set to stream then bag out, unless we are specifically rendering to generate a cache file */ - if (!process.env.JAMBONES_DISABLE_TTS_STREAMING && !renderForCaching) { + if (!process.env.JAMBONES_DISABLE_TTS_STREAMING && !renderForCaching && !disableTtsStreaming) { let params = ''; params += `{api_key=${api_key}`; params += `,model_id=${model_id}`; diff --git a/test/synth.js b/test/synth.js index 7bd2b18..b7728f3 100644 --- a/test/synth.js +++ b/test/synth.js @@ -537,7 +537,7 @@ test('Deepgram speech synth tests', async(t) => { credentials: { api_key: process.env.DEEPGRAM_API_KEY }, - model: 'alpha-asteria-en-v2', + model: 'aura-asteria-en', text, }); t.ok(!opts.servedFromCache, `successfully synthesized deepgram audio to ${opts.filePath}`);