- server.py: FastAPI + WebSocket server wrapping Brain, TTS, Actions
- WS /ws/chat: streaming chat with token-by-token delivery
- GET /api/audio/{filename}: serve generated TTS audio
- GET /api/health: server status check
- Serves static web UI from web/ directory
- web/: self-contained HTML/CSS/JS frontend
- Responsive chat interface with message bubbles
- WebSocket client for real-time streaming
- Voice input via Web Speech API (mic button)
- TTS audio playback (auto + manual replay)
- Conversation sidebar with history
- Settings panel (voice, TTS, sidebar toggles)
- Dark mode support via prefers-color-scheme
- Updated requirements.txt with fastapi, uvicorn, websockets
- Updated .env.example with SERVER_HOST/PORT config
30 lines
1.1 KiB
Plaintext
30 lines
1.1 KiB
Plaintext
# ===========================================================
|
|
# Echo Voice Assistant — Environment Configuration
|
|
# ===========================================================
|
|
# Copy this file to .env and fill in your values:
|
|
# cp .env.example .env
|
|
# ===========================================================
|
|
|
|
# --- OpenRouter (required) ---
|
|
# Get your key at: https://openrouter.ai/keys
|
|
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxx
|
|
OPENROUTER_MODEL=qwen/qwen-3-235b-a22b
|
|
|
|
# --- Vosk STT (optional overrides) ---
|
|
# Download models from: https://alphacephei.com/vosk/models
|
|
# Set to a local path relative to the project root
|
|
VOSK_MODEL_PATH=models/vosk-model-small-en-us
|
|
WAKE_WORD=echo
|
|
|
|
# --- Qwen3-TTS — Cloned Voice (required) ---
|
|
# Path to your 3-second .wav voice sample (16 kHz mono, 16-bit).
|
|
# Record one with: python tts.py record
|
|
QWEN_TTS_MODEL=Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
|
|
QWEN_TTS_VOICE=voices/echo_voice.wav
|
|
QWEN_TTS_INSTRUCT=Speak clearly with a warm, friendly tone. Be natural and conversational.
|
|
|
|
# --- Web Server (optional) ---
|
|
# Run with: python server.py
|
|
SERVER_HOST=0.0.0.0
|
|
SERVER_PORT=8001
|