Add Speed Control to ElevenLabs TTS Provider (#4213) * add speed * Adjust speed range * More granular step --------- Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>

a7783b62a851b1255bd45388ead298abfaacf677

Vin Astralis <victor@augusteo.com>

Signed
1 files changed, +9 -0Ignore whitespace
public/scripts/extensions/tts/elevenlabs.js+9 -0
@@ -16,6 +16,7 @@ class ElevenLabsTtsProvider {
1616 similarity_boost: 0.75,
1717 style_exaggeration: 0.00,
1818 speaker_boost: true,
19+ speed: 1.0,
1920 apiKey: '',
2021 model: 'eleven_turbo_v2_5',
2122 voiceMap: {},
@@ -43,6 +44,8 @@ class ElevenLabsTtsProvider {
4344 <input id="elevenlabs_tts_stability" type="range" value="${this.defaultSettings.stability}" min="0" max="1" step="0.01" />
4445 <label for="elevenlabs_tts_similarity_boost">Similarity Boost: <span id="elevenlabs_tts_similarity_boost_output"></span></label>
4546 <input id="elevenlabs_tts_similarity_boost" type="range" value="${this.defaultSettings.similarity_boost}" min="0" max="1" step="0.01" />
47+ <label for="elevenlabs_tts_speed">Speed: <span id="elevenlabs_tts_speed_output"></span></label>
48+ <input id="elevenlabs_tts_speed" type="range" value="${this.defaultSettings.speed}" min="0.7" max="1.2" step="0.01" />
4649 <div id="elevenlabs_tts_v2_options" style="display: none;">
4750 <label for="elevenlabs_tts_style_exaggeration">Style Exaggeration: <span id="elevenlabs_tts_style_exaggeration_output"></span></label>
4851 <input id="elevenlabs_tts_style_exaggeration" type="range" value="${this.defaultSettings.style_exaggeration}" min="0" max="1" step="0.01" />
@@ -86,10 +89,12 @@ class ElevenLabsTtsProvider {
8689 this.settings.similarity_boost = $('#elevenlabs_tts_similarity_boost').val();
8790 this.settings.style_exaggeration = $('#elevenlabs_tts_style_exaggeration').val();
8891 this.settings.speaker_boost = $('#elevenlabs_tts_speaker_boost').is(':checked');
92+ this.settings.speed = $('#elevenlabs_tts_speed').val();
8993 this.settings.model = $('#elevenlabs_tts_model').find(':selected').val();
9094 $('#elevenlabs_tts_stability_output').text(Math.round(this.settings.stability * 100) + '%');
9195 $('#elevenlabs_tts_similarity_boost_output').text(Math.round(this.settings.similarity_boost * 100) + '%');
9296 $('#elevenlabs_tts_style_exaggeration_output').text(Math.round(this.settings.style_exaggeration * 100) + '%');
97+ $('#elevenlabs_tts_speed_output').text(this.settings.speed + 'x');
9398 $('#elevenlabs_tts_v2_options').toggle(this.shouldInvolveExtendedSettings());
9499 saveTtsProviderSettings();
95100 }
@@ -121,6 +126,7 @@ class ElevenLabsTtsProvider {
121126 $('#elevenlabs_tts_similarity_boost').val(this.settings.similarity_boost);
122127 $('#elevenlabs_tts_style_exaggeration').val(this.settings.style_exaggeration);
123128 $('#elevenlabs_tts_speaker_boost').prop('checked', this.settings.speaker_boost);
129+ $('#elevenlabs_tts_speed').val(this.settings.speed);
124130 $('#elevenlabs_tts_api_key').val(this.settings.apiKey);
125131 $('#elevenlabs_tts_model').val(this.settings.model);
126132 $('#eleven_labs_connect').on('click', () => { this.onConnectClick(); });
@@ -128,10 +134,12 @@ class ElevenLabsTtsProvider {
128134 $('#elevenlabs_tts_stability').on('input', this.onSettingsChange.bind(this));
129135 $('#elevenlabs_tts_style_exaggeration').on('input', this.onSettingsChange.bind(this));
130136 $('#elevenlabs_tts_speaker_boost').on('change', this.onSettingsChange.bind(this));
137+ $('#elevenlabs_tts_speed').on('input', this.onSettingsChange.bind(this));
131138 $('#elevenlabs_tts_model').on('change', this.onSettingsChange.bind(this));
132139 $('#elevenlabs_tts_stability_output').text(Math.round(this.settings.stability * 100) + '%');
133140 $('#elevenlabs_tts_similarity_boost_output').text(Math.round(this.settings.similarity_boost * 100) + '%');
134141 $('#elevenlabs_tts_style_exaggeration_output').text(Math.round(this.settings.style_exaggeration * 100) + '%');
142+ $('#elevenlabs_tts_speed_output').text(this.settings.speed + 'x');
135143 $('#elevenlabs_tts_v2_options').toggle(this.shouldInvolveExtendedSettings());
136144 try {
137145 await this.checkReady();
@@ -320,6 +328,7 @@ class ElevenLabsTtsProvider {
320328 voice_settings: {
321329 stability: Number(this.settings.stability),
322330 similarity_boost: Number(this.settings.similarity_boost),
331+ speed: Number(this.settings.speed),
323332 },
324333 };
325334 if (this.shouldInvolveExtendedSettings()) {