diff --git a/public/scripts/extensions/tts/index.js b/public/scripts/extensions/tts/index.js index 6d187c76b..bb45414fa 100644 --- a/public/scripts/extensions/tts/index.js +++ b/public/scripts/extensions/tts/index.js @@ -261,6 +261,7 @@ async function playAudioData(audioJob) { audioElement.addEventListener('ended', completeCurrentAudioJob); audioElement.addEventListener('canplay', () => { console.debug('Starting TTS playback'); + audioElement.playbackRate = extension_settings.tts.playback_rate; audioElement.play(); }); } @@ -538,6 +539,7 @@ const defaultSettings = { currentProvider: 'ElevenLabs', auto_generation: true, narrate_user: false, + playback_rate: 1 }; function setTtsStatus(status, success) { @@ -1022,6 +1024,20 @@ $(document).ready(function () { Pass Asterisks to TTS Engine +
+
+
+ Audio Playback Speed +
+
+
+ +
+
+ +
+
+

@@ -1046,6 +1062,17 @@ $(document).ready(function () { $('#tts_pass_asterisks').on('click', onPassAsterisksClick); $('#tts_auto_generation').on('click', onAutoGenerationClick); $('#tts_narrate_user').on('click', onNarrateUserClick); + + $('#playback_rate').val(extension_settings.tts.playback_rate); + $('#playback_rate_counter').val(Number(extension_settings.tts.playback_rate).toFixed(2)); + $('#playback_rate').on('input', function () { + const value = $(this).val(); + const formattedValue = Number(value).toFixed(2); + extension_settings.tts.playback_rate = value; + $('#playback_rate_counter').val(formattedValue); + saveSettingsDebounced(); + }); + $('#tts_voices').on('click', onTtsVoicesClick); for (const provider in ttsProviders) { $('#tts_provider').append($('