feat: Porcupine Wake-Word Integration (Built-In Keywords, "Jarvis" default)
WakeWordService wrappt jetzt Picovoice Porcupine:
- loadFromStorage(): Access Key + Keyword aus AsyncStorage, init Porcupine
- configure(key, keyword): Settings-Wechsel, Re-Init
- start(): wenn Porcupine bereit → 'armed' (passives Lauschen),
sonst Fallback auf direktes 'conversing' (klassischer Modus)
- onWakeDetected: Porcupine pausieren → 'conversing' → wakeCallback
- endConversation: Porcupine wieder starten → 'armed' (Wake-Word weiter
aktiv im Hintergrund, kein erneuter Tap noetig)
- Pro Geraet eigene Wahl: jeder User kann sein eigenes Wake-Word haben
Settings: neuer Bereich "Wake-Word"
- Picovoice Access Key Input (mit Eye-Toggle), kostenlos auf
console.picovoice.ai
- Built-In Keyword Chips: jarvis, computer, picovoice, porcupine,
bumblebee, terminator, alexa, hey google, ok google, hey siri
- "Speichern + Aktivieren" Button mit Status-Feedback
- Hinweis dass "ARIA" Custom-Keyword spaeter via Diagnostic kommt
ChatScreen: ruft wakeWordService.loadFromStorage() beim Mount.
package.json: @picovoice/porcupine-react-native + react-native-voice-processor
hinzugefuegt — npm install + native rebuild noetig.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -139,6 +139,11 @@ const ChatScreen: React.FC = () => {
|
||||
return () => clearInterval(interval);
|
||||
}, []);
|
||||
|
||||
// Wake Word: einmalig laden + Porcupine vorbereiten (wenn Access Key gesetzt)
|
||||
useEffect(() => {
|
||||
wakeWordService.loadFromStorage().catch(() => {});
|
||||
}, []);
|
||||
|
||||
const toggleMute = useCallback(() => {
|
||||
setTtsMuted(prev => {
|
||||
const next = !prev;
|
||||
|
||||
Reference in New Issue
Block a user