forked from open-webui/open-webui
feat: audio loading spinner added
This commit is contained in:
parent
519e27978f
commit
3050267606
1 changed files with 40 additions and 4 deletions
|
@ -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={() => {
|
||||
if (!loadingSpeech) {
|
||||
toggleSpeakMessage(message);
|
||||
}
|
||||
}}
|
||||
>
|
||||
{#if speaking}
|
||||
{#if loadingSpeech}
|
||||
<svg
|
||||
class=" w-4 h-4"
|
||||
fill="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
><style>
|
||||
.spinner_S1WN {
|
||||
animation: spinner_MGfb 0.8s linear infinite;
|
||||
animation-delay: -0.8s;
|
||||
}
|
||||
.spinner_Km9P {
|
||||
animation-delay: -0.65s;
|
||||
}
|
||||
.spinner_JApP {
|
||||
animation-delay: -0.5s;
|
||||
}
|
||||
@keyframes spinner_MGfb {
|
||||
93.75%,
|
||||
100% {
|
||||
opacity: 0.2;
|
||||
}
|
||||
}
|
||||
</style><circle class="spinner_S1WN" cx="4" cy="12" r="3" /><circle
|
||||
class="spinner_S1WN spinner_Km9P"
|
||||
cx="12"
|
||||
cy="12"
|
||||
r="3"
|
||||
/><circle class="spinner_S1WN spinner_JApP" cx="20" cy="12" r="3" /></svg
|
||||
>
|
||||
{:else if speaking}
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
|
|
Loading…
Reference in a new issue