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>
Signed| @@ -16,6 +16,7 @@ class ElevenLabsTtsProvider { | ||
| 16 | 16 | similarity_boost: 0.75, |
| 17 | 17 | style_exaggeration: 0.00, |
| 18 | 18 | speaker_boost: true, |
| 19 | + speed: 1.0, | |
| 19 | 20 | apiKey: '', |
| 20 | 21 | model: 'eleven_turbo_v2_5', |
| 21 | 22 | voiceMap: {}, |
| @@ -43,6 +44,8 @@ class ElevenLabsTtsProvider { | ||
| 43 | 44 | <input id="elevenlabs_tts_stability" type="range" value="${this.defaultSettings.stability}" min="0" max="1" step="0.01" /> |
| 44 | 45 | <label for="elevenlabs_tts_similarity_boost">Similarity Boost: <span id="elevenlabs_tts_similarity_boost_output"></span></label> |
| 45 | 46 | <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" /> | |
| 46 | 49 | <div id="elevenlabs_tts_v2_options" style="display: none;"> |
| 47 | 50 | <label for="elevenlabs_tts_style_exaggeration">Style Exaggeration: <span id="elevenlabs_tts_style_exaggeration_output"></span></label> |
| 48 | 51 | <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 { | ||
| 86 | 89 | this.settings.similarity_boost = $('#elevenlabs_tts_similarity_boost').val(); |
| 87 | 90 | this.settings.style_exaggeration = $('#elevenlabs_tts_style_exaggeration').val(); |
| 88 | 91 | this.settings.speaker_boost = $('#elevenlabs_tts_speaker_boost').is(':checked'); |
| 92 | + this.settings.speed = $('#elevenlabs_tts_speed').val(); | |
| 89 | 93 | this.settings.model = $('#elevenlabs_tts_model').find(':selected').val(); |
| 90 | 94 | $('#elevenlabs_tts_stability_output').text(Math.round(this.settings.stability * 100) + '%'); |
| 91 | 95 | $('#elevenlabs_tts_similarity_boost_output').text(Math.round(this.settings.similarity_boost * 100) + '%'); |
| 92 | 96 | $('#elevenlabs_tts_style_exaggeration_output').text(Math.round(this.settings.style_exaggeration * 100) + '%'); |
| 97 | + $('#elevenlabs_tts_speed_output').text(this.settings.speed + 'x'); | |
| 93 | 98 | $('#elevenlabs_tts_v2_options').toggle(this.shouldInvolveExtendedSettings()); |
| 94 | 99 | saveTtsProviderSettings(); |
| 95 | 100 | } |
| @@ -121,6 +126,7 @@ class ElevenLabsTtsProvider { | ||
| 121 | 126 | $('#elevenlabs_tts_similarity_boost').val(this.settings.similarity_boost); |
| 122 | 127 | $('#elevenlabs_tts_style_exaggeration').val(this.settings.style_exaggeration); |
| 123 | 128 | $('#elevenlabs_tts_speaker_boost').prop('checked', this.settings.speaker_boost); |
| 129 | + $('#elevenlabs_tts_speed').val(this.settings.speed); | |
| 124 | 130 | $('#elevenlabs_tts_api_key').val(this.settings.apiKey); |
| 125 | 131 | $('#elevenlabs_tts_model').val(this.settings.model); |
| 126 | 132 | $('#eleven_labs_connect').on('click', () => { this.onConnectClick(); }); |
| @@ -128,10 +134,12 @@ class ElevenLabsTtsProvider { | ||
| 128 | 134 | $('#elevenlabs_tts_stability').on('input', this.onSettingsChange.bind(this)); |
| 129 | 135 | $('#elevenlabs_tts_style_exaggeration').on('input', this.onSettingsChange.bind(this)); |
| 130 | 136 | $('#elevenlabs_tts_speaker_boost').on('change', this.onSettingsChange.bind(this)); |
| 137 | + $('#elevenlabs_tts_speed').on('input', this.onSettingsChange.bind(this)); | |
| 131 | 138 | $('#elevenlabs_tts_model').on('change', this.onSettingsChange.bind(this)); |
| 132 | 139 | $('#elevenlabs_tts_stability_output').text(Math.round(this.settings.stability * 100) + '%'); |
| 133 | 140 | $('#elevenlabs_tts_similarity_boost_output').text(Math.round(this.settings.similarity_boost * 100) + '%'); |
| 134 | 141 | $('#elevenlabs_tts_style_exaggeration_output').text(Math.round(this.settings.style_exaggeration * 100) + '%'); |
| 142 | + $('#elevenlabs_tts_speed_output').text(this.settings.speed + 'x'); | |
| 135 | 143 | $('#elevenlabs_tts_v2_options').toggle(this.shouldInvolveExtendedSettings()); |
| 136 | 144 | try { |
| 137 | 145 | await this.checkReady(); |
| @@ -320,6 +328,7 @@ class ElevenLabsTtsProvider { | ||
| 320 | 328 | voice_settings: { |
| 321 | 329 | stability: Number(this.settings.stability), |
| 322 | 330 | similarity_boost: Number(this.settings.similarity_boost), |
| 331 | + speed: Number(this.settings.speed), | |
| 323 | 332 | }, |
| 324 | 333 | }; |
| 325 | 334 | if (this.shouldInvolveExtendedSettings()) { |