feat: convo mode

This commit is contained in:
Timothy J. Baek 2024-02-09 17:09:14 -08:00
parent cb5520c519
commit 3015bb766d
3 changed files with 34 additions and 2 deletions

View file

@ -674,6 +674,7 @@
{#if messages.length == 0 || messages.at(-1).done == true}
{#if speechRecognitionEnabled}
<button
id="voice-input-button"
class=" text-gray-600 dark:text-gray-300 transition rounded-lg p-1.5 mr-0.5 self-center"
type="button"
on:click={() => {

View file

@ -149,6 +149,9 @@
audio.onended = () => {
speaking = null;
if ($settings.conversationMode) {
document.getElementById('voice-input-button')?.click();
}
};
audio.play().catch((e) => console.error('Error playing audio:', e));
}
@ -166,6 +169,9 @@
speak.onend = () => {
speaking = null;
if ($settings.conversationMode) {
document.getElementById('voice-input-button')?.click();
}
};
speak.voice = voice;
speechSynthesis.speak(speak);

View file

@ -6,6 +6,7 @@
// Voice
let conversationMode = false;
let speechAutoSend = false;
let responseAutoPlayback = false;
@ -37,6 +38,11 @@
}, 100);
};
const toggleConversationMode = async () => {
conversationMode = !conversationMode;
saveSettings({ conversationMode: conversationMode });
};
const toggleResponseAutoPlayback = async () => {
responseAutoPlayback = !responseAutoPlayback;
saveSettings({ responseAutoPlayback: responseAutoPlayback });
@ -50,6 +56,7 @@
onMount(async () => {
let settings = JSON.parse(localStorage.getItem('settings') ?? '{}');
conversationMode = settings.conversationMode ?? false;
speechAutoSend = settings.speechAutoSend ?? false;
responseAutoPlayback = settings.responseAutoPlayback ?? false;
@ -104,7 +111,25 @@
</div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">Voice Input Auto-Send</div>
<div class=" self-center text-xs font-medium">Conversation Mode</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
on:click={() => {
toggleConversationMode();
}}
type="button"
>
{#if conversationMode === true}
<span class="ml-2 self-center">On</span>
{:else}
<span class="ml-2 self-center">Off</span>
{/if}
</button>
</div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">Auto-send input after 3 sec.</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
@ -122,7 +147,7 @@
</div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">TTS Automatic Playback</div>
<div class=" self-center text-xs font-medium">Auto-playback response</div>
<button
class="p-1 px-3 text-xs flex rounded transition"