diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index ded01391..7cd9da38 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -30,13 +30,14 @@ export let copyToClipboard: Function; export let regenerateResponse: Function; - let audioMap = {}; - let edit = false; let editedContent = ''; let tooltipInstance = null; + + let audioMap = {}; let speaking = null; + let loadingSpeech = false; $: tokens = marked.lexer(message.content); @@ -126,6 +127,7 @@ speaking = true; if ($settings?.speech?.engine === 'openai') { + loadingSpeech = true; const res = await synthesizeOpenAISpeech( localStorage.token, $settings?.speech?.speaker, @@ -140,6 +142,8 @@ const blobUrl = URL.createObjectURL(blob); console.log(blobUrl); + loadingSpeech = false; + const audio = new Audio(blobUrl); audioMap[message.id] = audio; @@ -458,10 +462,42 @@ ? 'visible' : 'invisible group-hover:visible'} p-1 rounded dark:hover:bg-gray-800 transition" on:click={() => { - toggleSpeakMessage(message); + if (!loadingSpeech) { + toggleSpeakMessage(message); + } }} > - {#if speaking} + {#if loadingSpeech} + + {:else if speaking}