ilia bdbf09a9ac feat: Implement voice I/O services (TICKET-006, TICKET-010, TICKET-014)
 TICKET-006: Wake-word Detection Service
- Implemented wake-word detection using openWakeWord
- HTTP/WebSocket server on port 8002
- Real-time detection with configurable threshold
- Event emission for ASR integration
- Location: home-voice-agent/wake-word/

 TICKET-010: ASR Service
- Implemented ASR using faster-whisper
- HTTP endpoint for file transcription
- WebSocket endpoint for streaming transcription
- Support for multiple audio formats
- Auto language detection
- GPU acceleration support
- Location: home-voice-agent/asr/

 TICKET-014: TTS Service
- Implemented TTS using Piper
- HTTP endpoint for text-to-speech synthesis
- Low-latency processing (< 500ms)
- Multiple voice support
- WAV audio output
- Location: home-voice-agent/tts/

 TICKET-047: Updated Hardware Purchases
- Marked Pi5 kit, SSD, microphone, and speakers as purchased
- Updated progress log with purchase status

📚 Documentation:
- Added VOICE_SERVICES_README.md with complete testing guide
- Each service includes README.md with usage instructions
- All services ready for Pi5 deployment

🧪 Testing:
- Created test files for each service
- All imports validated
- FastAPI apps created successfully
- Code passes syntax validation

🚀 Ready for:
- Pi5 deployment
- End-to-end voice flow testing
- Integration with MCP server

Files Added:
- wake-word/detector.py
- wake-word/server.py
- wake-word/requirements.txt
- wake-word/README.md
- wake-word/test_detector.py
- asr/service.py
- asr/server.py
- asr/requirements.txt
- asr/README.md
- asr/test_service.py
- tts/service.py
- tts/server.py
- tts/requirements.txt
- tts/README.md
- tts/test_service.py
- VOICE_SERVICES_README.md

Files Modified:
- tickets/done/TICKET-047_hardware-purchases.md

Files Moved:
- tickets/backlog/TICKET-006_prototype-wake-word-node.md → tickets/done/
- tickets/backlog/TICKET-010_streaming-asr-service.md → tickets/done/
- tickets/backlog/TICKET-014_tts-service.md → tickets/done/
2026-01-12 22:22:38 -05:00

1.4 KiB

Weather Tool Setup

The weather tool uses the OpenWeatherMap API to get real-time weather information.

Setup

  1. Get API Key (Free tier available):

  2. Set Environment Variable:

    export OPENWEATHERMAP_API_KEY="your-api-key-here"
    
  3. Or add to .env file (if using python-dotenv):

    OPENWEATHERMAP_API_KEY=your-api-key-here
    

Rate Limits

  • Free tier: 60 requests per hour
  • The tool automatically enforces rate limiting
  • Requests are tracked per hour

Usage

The tool accepts:

  • Location: City name (e.g., "San Francisco, CA" or "London, UK")
  • Units: "metric" (Celsius), "imperial" (Fahrenheit), or "kelvin" (default: metric)

Example

# Via MCP
{
  "method": "tools/call",
  "params": {
    "name": "weather",
    "arguments": {
      "location": "New York, NY",
      "units": "metric"
    }
  }
}

Error Handling

The tool handles:

  • Missing API key (clear error message)
  • Invalid location (404 error)
  • Rate limit exceeded (429 error)
  • Network errors (timeout, connection errors)
  • Invalid API key (401 error)

Privacy Note

Weather is an exception to the "no external APIs" policy as documented in the privacy policy. This is the only external API used by the system.