From 5eff0e5f61d405b2b167b7bd69db0c7b97d9894c Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Fri, 9 Feb 2024 16:00:39 -0800 Subject: [PATCH 1/2] feat: tts automatic playback --- .../chat/Messages/ResponseMessage.svelte | 1 + .../components/chat/Settings/Interface.svelte | 32 +------ src/lib/components/chat/Settings/Voice.svelte | 90 +++++++++++++++---- src/routes/(app)/+page.svelte | 8 ++ src/routes/(app)/c/[id]/+page.svelte | 8 ++ 5 files changed, 93 insertions(+), 46 deletions(-) diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 0568630bd..b1c0c8174 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -458,6 +458,7 @@ - - -
Response AutoCopy to Clipboard
@@ -146,9 +119,12 @@
+
-
Display the username instead of "You" in the Chat
+
+ Display the username instead of "You" in the Chat +
+
+ +
+
TTS Automatic Playback
+ +
diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte index 8b16ade0e..b213a5d41 100644 --- a/src/routes/(app)/+page.svelte +++ b/src/routes/(app)/+page.svelte @@ -448,6 +448,10 @@ if ($settings.responseAutoCopy) { copyToClipboard(responseMessage.content); } + + if ($settings.responseAutoPlayback) { + document.getElementById(`speak-button-${responseMessage.id}`)?.click(); + } } } } @@ -633,6 +637,10 @@ copyToClipboard(responseMessage.content); } + if ($settings.responseAutoPlayback) { + document.getElementById(`speak-button-${responseMessage.id}`)?.click(); + } + if (autoScroll) { window.scrollTo({ top: document.body.scrollHeight }); } diff --git a/src/routes/(app)/c/[id]/+page.svelte b/src/routes/(app)/c/[id]/+page.svelte index 60eb7cec0..58fbc0468 100644 --- a/src/routes/(app)/c/[id]/+page.svelte +++ b/src/routes/(app)/c/[id]/+page.svelte @@ -462,6 +462,10 @@ if ($settings.responseAutoCopy) { copyToClipboard(responseMessage.content); } + + if ($settings.responseAutoPlayback) { + document.getElementById(`speak-button-${responseMessage.id}`)?.click(); + } } } } @@ -647,6 +651,10 @@ copyToClipboard(responseMessage.content); } + if ($settings.responseAutoPlayback) { + document.getElementById(`speak-button-${responseMessage.id}`)?.click(); + } + if (autoScroll) { window.scrollTo({ top: document.body.scrollHeight }); } From 40d8605fead5dfd2d033acb2fb95ff2d4dbc2056 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Fri, 9 Feb 2024 16:37:21 -0800 Subject: [PATCH 2/2] fix: tts playback --- src/lib/components/chat/Settings/Interface.svelte | 1 - src/lib/components/chat/Settings/Voice.svelte | 3 +++ src/routes/(app)/+page.svelte | 2 ++ src/routes/(app)/c/[id]/+page.svelte | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/components/chat/Settings/Interface.svelte b/src/lib/components/chat/Settings/Interface.svelte index 3d831d5eb..45be9adb4 100644 --- a/src/lib/components/chat/Settings/Interface.svelte +++ b/src/lib/components/chat/Settings/Interface.svelte @@ -62,7 +62,6 @@ let settings = JSON.parse(localStorage.getItem('settings') ?? '{}'); titleAutoGenerate = settings.titleAutoGenerate ?? true; - speechAutoSend = settings.speechAutoSend ?? false; responseAutoCopy = settings.responseAutoCopy ?? false; showUsername = settings.showUsername ?? false; titleAutoGenerateModel = settings.titleAutoGenerateModel ?? ''; diff --git a/src/lib/components/chat/Settings/Voice.svelte b/src/lib/components/chat/Settings/Voice.svelte index 2656626b7..dc201069f 100644 --- a/src/lib/components/chat/Settings/Voice.svelte +++ b/src/lib/components/chat/Settings/Voice.svelte @@ -50,6 +50,9 @@ onMount(async () => { let settings = JSON.parse(localStorage.getItem('settings') ?? '{}'); + speechAutoSend = settings.speechAutoSend ?? false; + responseAutoPlayback = settings.responseAutoPlayback ?? false; + engine = settings?.speech?.engine ?? ''; speaker = settings?.speech?.speaker ?? ''; diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte index b213a5d41..a01e4d369 100644 --- a/src/routes/(app)/+page.svelte +++ b/src/routes/(app)/+page.svelte @@ -450,6 +450,7 @@ } if ($settings.responseAutoPlayback) { + await tick(); document.getElementById(`speak-button-${responseMessage.id}`)?.click(); } } @@ -638,6 +639,7 @@ } if ($settings.responseAutoPlayback) { + await tick(); document.getElementById(`speak-button-${responseMessage.id}`)?.click(); } diff --git a/src/routes/(app)/c/[id]/+page.svelte b/src/routes/(app)/c/[id]/+page.svelte index 58fbc0468..4ff1f3bd2 100644 --- a/src/routes/(app)/c/[id]/+page.svelte +++ b/src/routes/(app)/c/[id]/+page.svelte @@ -464,6 +464,7 @@ } if ($settings.responseAutoPlayback) { + await tick(); document.getElementById(`speak-button-${responseMessage.id}`)?.click(); } } @@ -652,6 +653,7 @@ } if ($settings.responseAutoPlayback) { + await tick(); document.getElementById(`speak-button-${responseMessage.id}`)?.click(); }