forked from open-webui/open-webui
		
	feat: convo mode
This commit is contained in:
		
							parent
							
								
									cb5520c519
								
							
						
					
					
						commit
						3015bb766d
					
				
					 3 changed files with 34 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -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={() => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue