Control por voz para OpenCode AI. Habla en lugar de escribir.
# Di esto en tu microfono:
"oye open... muestra los archivos del directorio actual plan"
# Aparece escrito automaticamente en tu terminal.
# El agente lee la respuesta en voz alta.- Python 3.10+
- ffmpeg (para reproduccion de audio en Windows)
- Groq API key (gratis: console.groq.com)
# 1. Clonar
git clone https://github.com/ThomasTixerina/opencode-voice-cli.git
cd opencode-voice-cli
# 2. Instalar dependencias
pip install -r requirements.txt
# 3. Configurar API key
echo GROQ_API_KEY=gsk_tu_key_aqui > .env
# O edita .env directamente
# 4. Verificar ffmpeg
ffmpeg -version
# Si no lo tienes: winget install ffmpeg# Grabar y transcribir (copia al portapapeles)
python voice-cli.py --record
# Leer texto en voz alta
python voice-cli.py --speak "Hola mundo"
# Leer el portapapeles en voz alta
python voice-cli.py --hear
# Modo wake word + auto-type (escribe en terminal activa)
python voice-cli.py --listen --auto-type
# Vigilar archivo y leer cambios en voz alta
python voice-cli.py --watch archivo.txt
# Parametros opcionales
python voice-cli.py --duration 10 # Duracion max (default: 5s)
python voice-cli.py --voice es-MX-JorgeNeural # Voz TTS.\voice.ps1 --record
.\voice.ps1 --speak "Hola"
.\voice.ps1 --hear
.\voice.ps1 --listen --auto-type
.\voice.ps1 --status
.\voice.ps1 --install# Instalar en Windows Startup (una vez)
.\install-agent.ps1 -Install
pythonw .\voice-agent.pyw
# Comandos rapidos
voice --agent # Iniciar agente
voice --status # Ver estado
voice --install # Agregar a startup
voice --uninstall # Quitar de startupCLI completa con modos: --record, --speak, --hear, --listen, --watch.
Agente de fondo que se ejecuta con pythonw.exe (sin ventana de consola). Tres componentes:
| Componente | Funcion |
|---|---|
| Audio capture | Captura audio del microfono, detecta "oye open..." via Groq Whisper, extrae el comando, lo escribe en la terminal activa con SendKeys |
| File watcher | Vigila ~/.opencode/voice-output.txt, lee nuevos contenidos en voz alta con edge-tts |
| Indicador visual | Ventana tkinter en la esquina superior derecha con el estado actual |
Una ventana semitransparente aparece en la esquina superior derecha:
| Color | Estado | Significado |
|---|---|---|
| ● Verde | Activo | Esperando "oye open..." |
| ● Amarillo | Te escucho | Detecto voz, grabando |
| ● Azul | Pensando | Transcribiendo con Whisper |
| ● Rojo | Hablando | Reproduciendo respuesta TTS |
- El agente captura audio en chunks de 0.5s
- Cuando detecta voz (energia > umbral), el indicador cambia a amarillo
- Cuando hay silencio por 1.5s, envia el audio a Groq Whisper, indicador cambia a azul
- Si la transcripcion contiene "oye open..." (con o sin puntuacion), extrae el comando
- El texto se escribe en la terminal activa via PowerShell SendKeys
- El agente confirma con un TTS breve
- OpenCode escribe la respuesta en
~/.opencode/voice-output.txt - El file watcher detecta el cambio
- edge-tts genera audio MP3, indicador cambia a rojo
- ffmpeg convierte a WAV
- winsound reproduce el audio, indicador vuelve a verde
# Ver todas las voces en espanol
edge-tts --list-voices | findstr es-
# Recomendadas:
es-MX-JorgeNeural # Masculino mexicano (default)
es-MX-DaliaNeural # Femenino mexicano
es-ES-AlvaroNeural # Masculino espanol
es-ES-ElviraNeural # Femenino espanolEdita las constantes al inicio de voice-agent.pyw:
ENERGY_THRESHOLD = 0.02 # Sensibilidad del microfono
SILENCE_SECONDS = 1.5 # Silencio para finalizar frase
MAX_RECORD_SECONDS = 15 # Duracion maxima de grabacion
WAKE_WORDS = ["oye open", "oye abre", "escucha open"]
CLOSE_WORDS = ["plan", "build", "terminamos", "fin", "listo", "adelante"]
TTS_VOICE = "es-MX-JorgeNeural"opencode-voice-cli/
voice-cli.py # CLI principal
voice-agent.pyw # Agente de fondo (pythonw)
voice.ps1 # Wrapper PowerShell
install-agent.ps1 # Instalador startup
requirements.txt # Dependencias Python
.env # API keys (no se sube)
.env.template # Template para .env
README.md # Este archivo
MIT