Voicebox: Estudio de voz IA open source local-first

Publicado por


Open Source AI Voice Studio

Voicebox: Estudio de voz IA open source local-first

Clona voces, genera habla, dicta en cualquier app y da voz a agentes IA — todo ejecutándose localmente en tu máquina

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Voicebox: Estudio de voz IA open source local-first en el canal GENBYTE:

¿Qué es Voicebox: Estudio de voz IA open source local-first?

Voicebox es un estudio de voz IA local-first, gratuito y de código abierto, alternativa a ElevenLabs y WisprFlow en una sola aplicación. Permite clonar voces a partir de pocos segundos de audio, generar habla en 23 idiomas mediante 8 motores TTS, dictar en cualquier campo de texto con una tecla global y dar a cualquier agente compatible con MCP una voz propia. La privacidad es completa: modelos, datos de voz y capturas nunca salen de la máquina. Está construido con Tauri (Rust) para rendimiento nativo, no Electron, y funciona en macOS (MLX/Metal), Windows (CUDA), Linux, AMD ROCm, Intel Arc y Docker.

Voicebox unifica entrada y salida de voz en una sola app local: clonación zero-shot, 8 motores TTS, dictado global con Whisper, personalidades de voz con LLM local y servidor MCP integrado para que agentes como Claude Code o Cursor hablen con voces clonadas.

Características principales

Clonación multi-motor

Ocho motores TTS intercambiables por generación: Qwen3-TTS (0.6B/1.7B, 10 idiomas, instrucciones de entonación), Qwen CustomVoice (9 voces predefinidas con control en lenguaje natural), Qwen VoiceDesign (crea voz desde descripción textual), LuxTTS (ligero ~1GB VRAM, 48kHz, 150x realtime en CPU), Chatterbox Multilingual (23 idiomas), Chatterbox Turbo (350M, etiquetas paralingüísticas), HumeAI TADA (1B/3B, 700s+ coherentes), Kokoro (50 voces predefinidas, 82M, CPU rápido).

Etiquetas paralingüísticas y emociones

Chatterbox Turbo interpreta etiquetas como [laugh], [sigh], [gasp], [cough], [groan], [sniff], [shush], [clear throat] y de entonación: [angry], [crying], [dramatic], [fear], [happy], [narration], [sarcastic], [surprised], [whispering], [advertisement]. Se insertan con '/' en el cuadro de texto. Los demás motores las leen como texto literal.

Post-procesado de audio

8 efectos con pedalboard de Spotify: Pitch Shift (±12 semitonos), Reverb (tamaño sala, amortiguación, mix), Delay (tiempo, feedback, mix), Chorus/Flanger, Compresor, Gain (-40 a +40 dB), Filtro pasa-alto, Filtro pasa-bajo. 4 presets incluidos (Robotic, Radio, Echo Chamber, Deep Voice) y presets personalizados. Asignables por perfil como default.

Generación de longitud ilimitada

Auto-chunking en fronteras de oración con crossfade configurable (0-200ms). Límite de chunk 100-5000 caracteres. Longitud máxima 50.000 caracteres. Respeta abreviaturas, puntuación CJK y etiquetas.

Versiones de generación con linaje

Cada generación guarda Original (TTS limpio), versiones con efectos, takes (regeneración con nueva seed), seguimiento de procedencia y favoritos.

Cola asíncrona no bloqueante

Ejecución serial para evitar contención GPU, streaming SSE en tiempo real, reintento de fallos, recuperación automática de generaciones obsoletas al iniciar.

Gestión de perfiles de voz

Creación desde archivo o grabación in-app, import/export, multi-muestra para mayor calidad, cadenas de efectos por defecto por perfil, organización con descripciones y etiquetas de idioma.

Editor Stories multi-pista

Línea de tiempo multi-voz para conversaciones, podcasts y narrativas: composición drag-and-drop, recorte y división inline, reproducción sincronizada, pinning de versión por clip.

Dictado global y entrada de voz

Hotkey global configurable (hold-to-speak y tap-to-toggle), paste accesible verificado en macOS con guardado/restauración atómico del portapapeles, botón mic en cada campo de texto, refinamiento opcional con LLM local, píldora flotante con estados recording/transcribing/refining/speaking.

Speech-to-Text con Whisper

Whisper Base/Small/Medium/Large y Turbo (~8x más rápido que Large, pérdida mínima). Ejecución MLX en Apple Silicon, PyTorch en CUDA/ROCm/DirectML/CPU. Parakeet v3 y Qwen3-ASR planificados.

Capturas persistentes

Todo dictado, grabación y archivo subido queda en pestaña Capturas con audio original y transcripción. Replay, re-transcripción con cualquier tamaño Whisper, re-refinamiento con flags LLM, edición inline, reproducción con voz clonada, promoción a muestra de perfil, almacenamiento local en directorio de datos.

Salida de voz para agentes (MCP)

Una llamada de herramienta (voicebox_speak) y cualquier agente MCP-aware (Claude Code, Cursor, Cline, Windsurf, VS Code) habla con voz clonada. Píldora bidireccional compartida con dictado, binding por agente en Settings → MCP, transporte HTTP + stdio, expuesto también como POST /speak para scripts y ACP/A2A.

Personalidades de voz

Personalidad libre por perfil (quién es, cómo habla, qué le importa). Dos acciones: Compose (genera línea in-character) y Speak in character (reescribe input antes de TTS). Agentes invocan personality:true en voicebox_speak. LLM local Qwen3 0.6B/1.7B/4B compartido con TTS/STT (MLX en Apple Silicon, PyTorch en resto).

Gestión de modelos

Descarga individual para liberar VRAM sin borrar descargas, directorio personalizable via VOICEBOX_MODELS_DIR, migración con progreso, cancelación/limpieza UI.

Soporte GPU multiplataforma

macOS Apple Silicon: MLX/Metal (4-5x vía Neural Engine). Windows NVIDIA: PyTorch CUDA (auto-descarga binario). Linux NVIDIA: PyTorch CUDA (backend Python local/remoto). Linux AMD: PyTorch ROCm (auto-configura HSA_OVERRIDE_GFX_VERSION). Windows cualquier GPU: DirectML. Intel Arc: IPEX/XPU. CPU: universal, más lento.

Requisitos del sistema

  • Docker y Docker Compose
  • Para GPU NVIDIA en Linux: controladores NVIDIA y nvidia-container-toolkit
  • Para AMD ROCm: Docker con soporte ROCm y variable ROCM_VERSION (default 6.3, 7.2 para RDNA4)
  • Mínimo 4 CPU y 8GB RAM asignados al contenedor (límites en docker-compose.yml)
  • Puerto 17600 en host mapeado a 17493 en contenedor

Instalación con Docker Compose

Clonar repositorio y preparar directorios

Clona el repositorio y crea el directorio de salida para generaciones en el host.

git clone https://github.com/jamiepine/voicebox.git
cd voicebox
mkdir -p output

Levantar contenedor CPU (default)

Construye la imagen y levanta el servicio en segundo plano. El puerto 17600 en localhost expone la API y UI web.

docker compose up –build -d

Levantar con aceleración AMD ROCm

Usa el overlay docker-compose.rocm.yml para compilar y ejecutar con soporte ROCm. Ajusta ROCM_VERSION si usas RDNA4 (7.2).

docker compose -f docker-compose.yml -f docker-compose.rocm.yml up –build -d

Ver logs y estado

Comprueba que el contenedor está sano y la API responde.

docker compose logs -f voicebox
curl -f http://127.0.0.1:17600/health

Acceder al proyecto

Interfaz web y API REST

Accede a la UI web y documentación OpenAPI en http://127.0.0.1:17600 (puerto host). La API nativa del contenedor escucha en 17493. Endpoints principales: POST /generate, POST /speak, POST /transcribe, GET /profiles, GET /docs (Swagger UI).

Servidor MCP (HTTP)

Endpoint MCP en http://127.0.0.1:17600/mcp. Requiere header X-Voicebox-Client-Id para binding por cliente. Configuración en Settings → MCP de la UI.

Servidor MCP (stdio)

Binario voicebox-mcp incluido en la app nativa. En Docker no está expuesto directamente; usa el transporte HTTP para clientes MCP.

Casos de uso

  • Bucles de desarrollo con agentes: dicta pregunta, oye respuesta en voz clonada
  • Diálogos para juegos y herramientas narrativas
  • Producción de podcasts con editor Stories multi-pista
  • Asistencia de habla para personas que no pueden usar su voz original
  • Asistentes de voz locales y privacidad total
  • Automatización de contenido: artículos, capítulos, guiones a audio
  • Integración en scripts y pipelines CI/CD vía POST /speak
  • Transcripción y refinamiento de reuniones, notas de voz, capturas

Configuración avanzada

Configurar cliente MCP (Claude Code)

Registra el servidor MCP HTTP con identificador de cliente para binding de voz por agente.

claude mcp add voicebox \
–transport http \
–url http://127.0.0.1:17600/mcp \
–header "X-Voicebox-Client-Id: claude-code"

Configurar cliente MCP (Cursor, Windsurf, VS Code)

Añade al archivo de configuración MCP del cliente (ej. ~/.cursor/mcp.json o settings.json).

{
"mcpServers": {
"voicebox": {
"url": "http://127.0.0.1:17600/mcp",
"headers": { "X-Voicebox-Client-Id": "cursor" }
}
}
}

Uso de voicebox_speak con personalidad desde agente

El agente reescribe el texto con la personalidad del perfil antes de sintetizar.

await voicebox_speak({
text: "Tests passing. Ready to merge.",
profile: "Morgan",
personality: true
});

Generar habla vía API REST

Ejemplo curl para síntesis directa especificando perfil y idioma.

curl -X POST http://127.0.0.1:17600/generate \
-H "Content-Type: application/json" \
-d '{"text": "Hola mundo", "profile_id": "abc123", "language": "es"}'

Transcribir archivo de audio vía API

Sube archivo y elige modelo Whisper (base, small, medium, large, turbo).

curl -X POST http://127.0.0.1:17600/transcribe \
-F "[email protected]" \
-F "model=whisper-turbo"

Directorio de modelos personalizado

Define VOICEBOX_MODELS_DIR en environment del contenedor para almacenar modelos fuera del volumen por defecto.

environment:
– VOICEBOX_MODELS_DIR=/ruta/personalizada/modelos

Gestión y mantenimiento

Healthcheck automático

El contenedor incluye healthcheck cada 30s (timeout 10s, 3 reintentos, start-period 60s) contra /health. Docker reinicia si falla.

HEALTHCHECK –interval=30s –timeout=10s –retries=3 –start-period=60s \
CMD curl -f http://localhost:17493/health || exit 1

Actualizar imagen y contenedor

Descarga cambios, reconstruye y recrea contenedor preservando volúmenes de datos y caché HuggingFace.

cd voicebox
git pull
docker compose up –build -d

Gestión de memoria GPU

Desde la UI: Settings → Models → unload por modelo para liberar VRAM sin borrar descargas. En Docker, reiniciar contenedor también libera memoria.

docker compose restart voicebox

Backup de perfiles, BD y generaciones

Los volúmenes voicebox-data y ./output contienen perfiles, SQLite, caché y audio generado. Copia estos directorios para backup.

docker run –rm -v voicebox_voicebox-data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/voicebox-data-$(date +%F).tar.gz -C /data .

Limpiar caché HuggingFace

El volumen huggingface-cache persiste descargas. Para limpiar, elimina el volumen y recrea.

docker compose down -v
docker volume rm voicebox_huggingface-cache
docker compose up –build -d

Stack técnico

  • Desktop App: Tauri (Rust)
  • Frontend: React, TypeScript, Tailwind CSS
  • State: Zustand, React Query
  • Backend: FastAPI (Python)
  • TTS Engines: Qwen3-TTS, Qwen CustomVoice, Qwen VoiceDesign, LuxTTS, Chatterbox, Chatterbox Turbo, HumeAI TADA, Kokoro
  • STT: Whisper / Whisper Turbo (PyTorch o MLX)
  • Local LLM: Qwen3 (0.6B / 1.7B / 4B), runtime compartido con TTS/STT
  • MCP Server: FastMCP en /mcp (Streamable HTTP) + binario stdio shim
  • Native Shim: Rust (Tauri) para hotkey global, inyección paste, introspección foco
  • Effects: Pedalboard (Spotify)
  • Inference: MLX (Apple Silicon) / PyTorch (CUDA/ROCm/XPU/CPU)
  • Database: SQLite
  • Audio: WaveSurfer.js, librosa

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *