# Wake Word Implementation Plan

## Overview
Add "Hey Alfred" or "Alfred" wake word detection to activate voice input hands-free.

## Technology Choice: Porcupine by Picovoice

**Why Porcupine:**
- ✅ On-device processing (no internet required)
- ✅ Low battery usage
- ✅ Free tier available (1 wake word, non-commercial)
- ✅ Android SDK available
- ✅ Custom wake words supported

**Free Tier Limits:**
- 1 user account
- 1 custom wake word model
- Non-commercial use only
- On-device processing (unlimited uses)

## Implementation Steps

### 1. Sign up for Porcupine
- Go to https://console.picovoice.ai/
- Create account
- Get Access Key (free tier)
- Train custom "Alfred" wake word

### 2. Add Porcupine SDK

Add to `app/build.gradle.kts`:
```kotlin
dependencies {
    implementation("ai.picovoice:porcupine-android:3.0.2")
}
```

### 3. Add to secrets.properties
```
PORCUPINE_ACCESS_KEY=<your-access-key-here>
```

### 4. Create WakeWordManager.kt

Similar to VoiceInputManager, this would:
- Initialize Porcupine with the wake word model
- Listen continuously in the background (low power mode)
- Trigger voice input when wake word detected
- Show visual feedback (e.g., pulse animation)

### 5. Add Background Service

Wake word detection needs to run in the background:
- Foreground service with notification
- Shows "Listening for 'Hey Alfred'..." notification
- Can be toggled on/off from app
- Respects battery optimization settings

### 6. UI Updates

Add toggle in settings or status bar:
- "Wake Word Detection" switch
- Shows when listening
- Visual feedback when triggered (e.g., microphone icon pulses)

## User Experience Flow

1. User enables "Wake Word Detection" in app
2. App starts background service
3. Notification shows: "Listening for 'Hey Alfred'"
4. User says **"Hey Alfred"** or **"Alfred"**
5. App shows visual feedback (screen lights up, icon pulses)
6. Voice input starts automatically
7. User speaks their message
8. Message auto-sends when done
9. Alfred responds with voice

## Considerations

**Battery Impact:**
- Porcupine is optimized for low power
- Typically <1% battery drain per hour
- Can be toggled off when not needed

**Privacy:**
- All processing on-device
- No audio sent to cloud
- Only activates when wake word detected

**Implementation Complexity:**
- Medium complexity (1-2 hours work)
- Requires Porcupine setup
- Need background service implementation
- Permission handling (microphone always-on)

## Next Steps

If you want this feature:
1. Create Picovoice account
2. Get Access Key
3. Train "Alfred" wake word model
4. I can implement the code integration

Let me know if you want to proceed with this! 🎤
