diff --git a/src/lib/components/VoicePanel.svelte b/src/lib/components/VoicePanel.svelte new file mode 100644 index 0000000..6771b79 --- /dev/null +++ b/src/lib/components/VoicePanel.svelte @@ -0,0 +1,664 @@ + + + + +
+
+

🎤 Sprachsteuerung

+ {#if !isVoiceAvailable} + API Key fehlt + {/if} +
+ + {#if isVoiceAvailable} +
+ +
+ + +
+ + +
+ + {#if isListening} +
+ + Höre zu... +
+ {/if} +
+ + +
+ {#if voiceMode === 'push-to-talk'} + +

Oder Leertaste gedrückt halten

+ {:else} + + {/if} +
+ + + {#if currentTranscript} +
+ Du: + {currentTranscript} +
+ {/if} + + + {#if isSpeaking} +
+ + Claude spricht... + +
+ {/if} + + +
+ + +
+
+ {:else} +
+

Setze OPENAI_API_KEY Umgebungsvariable für Sprachsteuerung.

+

Oder warte auf lokale Whisper/Piper Integration.

+
+ {/if} +
+ + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 9063af8..13266b5 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -14,6 +14,7 @@ import PerformancePanel from '$lib/components/PerformancePanel.svelte'; import HooksPanel from '$lib/components/HooksPanel.svelte'; import ProgramsPanel from '$lib/components/ProgramsPanel.svelte'; + import VoicePanel from '$lib/components/VoicePanel.svelte'; let activeMiddleTab = 'activity'; let activeRightTab = 'agents'; @@ -30,6 +31,7 @@ const rightTabs = [ { id: 'agents', label: 'Agents', icon: '🤖' }, + { id: 'voice', label: 'Sprache', icon: '🎤' }, { id: 'context', label: 'Context', icon: '📌' }, { id: 'hooks', label: 'Hooks', icon: '🪝' }, { id: 'guards', label: 'Guard-Rails', icon: '🛡️' }, @@ -108,6 +110,8 @@
{#if activeRightTab === 'agents'} + {:else if activeRightTab === 'voice'} + {:else if activeRightTab === 'context'} {:else if activeRightTab === 'hooks'}