Decrease TTS generation delay by splitting a message on a new line

283ceb6bbfff486fdbbc8358c02099a4ff92a24d

Dzmitry Kazlouski <d.kazlouski@pxlnd.com>

1 files changed, +29 -4Ignore whitespace
public/scripts/extensions/tts/index.js+29 -4
@@ -120,7 +120,7 @@ async function onNarrateOneMessage() {
120120 }
121121
122122 resetTtsPlayback();
123123 ttsJobQueue.pushsplitMessageAndAddToTtsJobQueue(message);
124124 moduleWorker();
125125}
126126
@@ -147,7 +147,7 @@ async function onNarrateText(args, text) {
147147 }
148148
149149 resetTtsPlayback();
150150 ttsJobQueue.pushsplitMessageAndAddToTtsJobQueue({ mes: text, name: name });
151151 await moduleWorker();
152152
153153 // Return back to the chat voices
@@ -220,6 +220,31 @@ function isTtsProcessing() {
220220 return processing;
221221}
222222
223+/**
224+ * Splits a message into lines and adds each non-empty line to the TTS job queue.
225+ * @param {Object} message - The message object to be processed.
226+ * @param {string} message.mes - The text of the message to be split into lines.
227+ * @param {string} message.name - The name associated with the message.
228+ * @returns {void}
229+ */
230+function splitMessageAndAddToTtsJobQueue(message) {
231+ const lines = message.mes.split("\n");
232+
233+ for (let i = 0; i < lines.length; i++) {
234+ const line = lines[i];
235+
236+ if (line.length === 0) {
237+ continue;
238+ }
239+
240+ ttsJobQueue.push(
241+ Object.assign({}, message, {
242+ mes: line,
243+ })
244+ );
245+ }
246+}
247+
223248function debugTtsPlayback() {
224249 console.log(JSON.stringify(
225250 {
@@ -350,7 +375,7 @@ function onAudioControlClicked() {
350375 talkingAnimation(false);
351376 } else {
352377 // Default play behavior if not processing or playing is to play the last message.
353378 ttsJobQueue.pushsplitMessageAndAddToTtsJobQueue(context.chat[context.chat.length - 1]);
354379 }
355380 updateUiAudioPlayState();
356381}
@@ -816,7 +841,7 @@ async function onMessageEvent(messageId, lastCharIndex) {
816841 lastChatId = context.chatId;
817842
818843 console.debug(`Adding message from ${message.name} for TTS processing: "${message.mes}"`);
819844 ttsJobQueue.pushsplitMessageAndAddToTtsJobQueue(message);
820845}
821846
822847async function onMessageDeleted() {