Make this feature togglable in extensions > "Narrate by paragraphs (when not streaming)"

63e7acb87bfdd1b10de1a2e669d371ae2ecd90f0

Dzmitry Kazlouski <d.kazlouski@pxlnd.com>

2 files changed, +26 -5Ignore whitespace
public/scripts/extensions/tts/index.js+22 -5
@@ -120,7 +120,7 @@ async function onNarrateOneMessage() {
120120 }
121121
122122 resetTtsPlayback();
123123 splitMessageAndAddToTtsJobQueueprocessAndQueueTtsMessage(message);
124124 moduleWorker();
125125}
126126
@@ -147,7 +147,7 @@ async function onNarrateText(args, text) {
147147 }
148148
149149 resetTtsPlayback();
150150 splitMessageAndAddToTtsJobQueueprocessAndQueueTtsMessage({ mes: text, name: name });
151151 await moduleWorker();
152152
153153 // Return back to the chat voices
@@ -227,7 +227,12 @@ function isTtsProcessing() {
227227 * @param {string} message.name - The name associated with the message.
228228 * @returns {void}
229229 */
230230function splitMessageAndAddToTtsJobQueueprocessAndQueueTtsMessage(message) {
231+ if (!extension_settings.tts.narrate_by_paragraphs) {
232+ ttsJobQueue.push(message);
233+ return;
234+ }
235+
231236 const lines = message.mes.split("\n");
232237
233238 for (let i = 0; i < lines.length; i++) {
@@ -375,7 +380,7 @@ function onAudioControlClicked() {
375380 talkingAnimation(false);
376381 } else {
377382 // Default play behavior if not processing or playing is to play the last message.
378383 splitMessageAndAddToTtsJobQueueprocessAndQueueTtsMessage(context.chat[context.chat.length - 1]);
379384 }
380385 updateUiAudioPlayState();
381386}
@@ -594,6 +599,7 @@ function loadSettings() {
594599 $('#tts_narrate_quoted').prop('checked', extension_settings.tts.narrate_quoted_only);
595600 $('#tts_auto_generation').prop('checked', extension_settings.tts.auto_generation);
596601 $('#tts_periodic_auto_generation').prop('checked', extension_settings.tts.periodic_auto_generation);
602+ $('#tts_narrate_by_paragraphs').prop('checked', extension_settings.tts.narrate_by_paragraphs);
597603 $('#tts_narrate_translated_only').prop('checked', extension_settings.tts.narrate_translated_only);
598604 $('#tts_narrate_user').prop('checked', extension_settings.tts.narrate_user);
599605 $('#tts_pass_asterisks').prop('checked', extension_settings.tts.pass_asterisks);
@@ -663,6 +669,11 @@ function onPeriodicAutoGenerationClick() {
663669 saveSettingsDebounced();
664670}
665671
672+function onNarrateByParagraphsClick() {
673+ extension_settings.tts.narrate_by_paragraphs = !!$('#tts_narrate_by_paragraphs').prop('checked');
674+ saveSettingsDebounced();
675+}
676+
666677
667678function onNarrateDialoguesClick() {
668679 extension_settings.tts.narrate_dialogues_only = !!$('#tts_narrate_dialogues').prop('checked');
@@ -841,7 +852,12 @@ async function onMessageEvent(messageId, lastCharIndex) {
841852 lastChatId = context.chatId;
842853
843854 console.debug(`Adding message from ${message.name} for TTS processing: "${message.mes}"`);
844- splitMessageAndAddToTtsJobQueue(message);
855+
856+ if (extension_settings.tts.periodic_auto_generation) {
857+ ttsJobQueue.push(message);
858+ } else {
859+ processAndQueueTtsMessage(message);
860+ }
845861}
846862
847863async function onMessageDeleted() {
@@ -1181,6 +1197,7 @@ jQuery(async function () {
11811197 $('#tts_pass_asterisks').on('click', onPassAsterisksClick);
11821198 $('#tts_auto_generation').on('click', onAutoGenerationClick);
11831199 $('#tts_periodic_auto_generation').on('click', onPeriodicAutoGenerationClick);
1200+ $('#tts_narrate_by_paragraphs').on('click', onNarrateByParagraphsClick);
11841201 $('#tts_narrate_user').on('click', onNarrateUserClick);
11851202
11861203 $('#playback_rate').on('input', function () {
public/scripts/extensions/tts/settings.html+4 -0
@@ -30,6 +30,10 @@
3030 <input type="checkbox" id="tts_periodic_auto_generation">
3131 <small data-i18n="Narrate by paragraphs (when streaming)">Narrate by paragraphs (when streaming)</small>
3232 </label>
33+ <label class="checkbox_label" for="tts_narrate_by_paragraphs">
34+ <input type="checkbox" id="tts_narrate_by_paragraphs">
35+ <small data-i18n="Narrate by paragraphs (when not streaming)">Narrate by paragraphs (when not streaming)</small>
36+ </label>
3337 <label class="checkbox_label" for="tts_narrate_quoted">
3438 <input type="checkbox" id="tts_narrate_quoted">
3539 <small data-i18n="Only narrate quotes">Only narrate "quotes"</small>