Asistente de voz simple que escucha, transcribe, consulta a ChatGPT y responde con voz.
- Detecta una palabra de activación ("Alexa" con OpenWakeWord)
- Graba tu voz hasta que haya silencio (WebRTC VAD)
- Transcribe el audio localmente con Vosk (español)
- Envía el texto a OpenAI (GPT) con contexto web opcional (Brave Search)
- Responde con voz usando OpenAI TTS
Implementado:
- Detección de palabra de activación (wake word)
- Grabación con detección de actividad de voz (VAD)
- Transcripción offline en español (Vosk)
- Integración con OpenAI (chat + TTS)
- Búsqueda web opcional (Brave API)
Próximamente:
- Optimización para Raspberry Pi Zero / Zero 2 W
- TTS local con Piper (alternativa offline)
- Modo de conversación continua
- Clona el repositorio y crea el entorno virtual:
git clone https://github.com/xMigma/HomeGPT.git
cd HomeGPT
python3 -m venv .venv
source .venv/bin/activate- Instala las dependencias:
pip install -r requirements.txt- Descarga los modelos necesarios:
Vosk (Transcripción en español):
wget https://alphacephei.com/vosk/models/vosk-model-small-es-0.42.zip
unzip vosk-model-small-es-0.42.zip -d models/OpenWakeWord (Palabra de activación):
mkdir -p models/openwakeword
wget https://github.com/dscripka/openWakeWord/releases/download/v0.1.0/alexa_v0.1.tflite -O models/openwakeword/alexa_v0.1.tflitePiper (TTS local - opcional):
mkdir -p models/piper
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/es/es_ES/mls_10246/low/es_ES-mls_10246-low.onnx -O models/piper/es_ES-mls_10246-low.onnx
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/es/es_ES/mls_10246/low/es_ES-mls_10246-low.onnx.json -O models/piper/es_ES-mls_10246-low.onnx.json- Configura tus claves API en
config.env:
OPENAI_API_KEY=sk-... # Obligatorio
BRAVE_API_KEY=... # Opcional- Ejecuta el asistente:
python voice-assistant/main.pyDi "Alexa" y luego tu pregunta. El asistente responderá con voz.
HomeGPT/
├── voice-assistant/
│ ├── main.py # Punto de entrada
│ ├── wake_word.py # Detección de palabra de activación
│ ├── voice_recognizer.py # Grabación + VAD + Vosk
│ ├── assistant.py # OpenAI + búsqueda web
│ ├── tts/ # Síntesis de voz
│ │ ├── openai_tts.py # OpenAI TTS (actual)
│ │ └── piper.py # Piper TTS (futuro)
│ └── web/ # Proveedores de búsqueda
│ ├── brave.py
│ └── ddgs.py
└── models/ # Modelos offline
├── vosk-model-small-es-0.42/
├── piper/
└── openwakeword/
- Python 3.9+
- Micrófono y altavoces configurados como dispositivos por defecto
- Linux recomendado (probado en Ubuntu/Debian)
sudo apt-get install portaudio19-dev ffmpegPuedes ajustar parámetros en el código:
voice_recognizer.py:
vad_aggressiveness: 0-3 (sensibilidad del VAD)speech_threshold_ms: milisegundos mínimos de vozsilence_threshold_ms: silencio para terminar grabación
assistant.py:
model: modelo de OpenAI a usarmax_tokens: límite de respuesta
MIT