VoiceStudio (debpalash/VoiceStudio) es uno de los repos que más rápido crecen en GitHub esta semana. Junta clonación de voz, diseño de voces, doblaje de video, dictado, transcripción y narración de audiolibros en una sola app de Electron respaldada por un servidor Python local. Ese mismo servidor habla la API de audio de OpenAI y MCP, así que tus scripts y tus agentes también pueden usarlo.
El 28 de octubre de 2026 leí el README, package.json, pyproject.toml, la documentación de instalación, API y MCP, el changelog de la v0.5.7 y el registro de licencias de modelos. Quería separar lo que corre en local de lo que necesita red, y lo que cubre la AGPL de lo que permiten los pesos de los modelos. No lo instalé ni generé audio: cada comando de abajo está contrastado con el repo en la v0.5.7 y cada número está atribuido.
1. Qué Es: Stars, Licencia y Alcance
VoiceStudio se presenta como “el estudio de voz local: clonar, diseñar, doblar, dictar, transcribir y narrar en 646 idiomas”, sin cuentas y sin API keys. En la práctica son dos cosas en un mismo repo: una app de escritorio para quien produce audio y un servicio de voz headless en 127.0.0.1:3900 para cualquier cosa que pueda llamar a un endpoint HTTP. La descripción de GitHub lo vende como una alternativa open source y completamente local a ElevenLabs.
Stars en GitHub
~92.4K
API de GitHub, 28 oct 2026, con ~10.2K forks
Licencia
AGPL-3.0
Cubre solo la app. Los pesos de los modelos tienen sus propios términos
Última versión
v0.5.7
Publicada el 26 oct 2026. Suma previews para iOS y Android
Idiomas
646
Con el motor OmniVoice por defecto; otros motores cubren menos
Por qué está en trending ahora
El repo se creó el 9 de abril de 2026. La v0.5.7 salió el 26 de octubre de 2026, un mes después del release estable anterior, con apps para el teléfono, soporte para PCs sin GPU y una interfaz rediseñada. El reporte de tendencias de IA de agents-radar del 27 de octubre de 2026 lo muestra con +2,297 stars en un solo día. La cifra de 646 sale de docs/languages.md, que cuenta 581k horas de datos de entrenamiento entre esos idiomas.
VoiceStudio es la app; OmniVoice es el modelo
El proyecto arrancó como OmniVoice Studio y el nombre viejo todavía se nota: el paquete es omnivoice-studio-monorepo, cada ajuste es una variable OMNIVOICE_* y en Docker Hub está como palashdeb/omnivoice-studio. El motor por defecto, en cambio, es k2-fsa/OmniVoice, un modelo aparte con una licencia aparte. No los mezcles; importa en la sección 6.
2. La Arquitectura en 4 Pasos
Juntando electron/README.md, el main.py del backend, las guías de motores y la documentación de la API, una petición atraviesa cuatro capas.
1. Shell de Electron, armado con Bun
La app de escritorio es Electron 44 con React 19 y electron-vite, y Bun 1.4.2 es el gestor de paquetes fijado. El renderer nunca llama al backend directamente: llama a rutas /api relativas a la app que el proceso principal hace de proxy. Al arrancar, un supervisor consulta 127.0.0.1:3900, se engancha a un backend que ya esté corriendo o lanza su propio proceso de Python, y lo reinicia si se cae. La app vieja de Tauri quedó archivada en la v0.5.3.
2. Una API local en Python
El backend es FastAPI sobre uvicorn, en un entorno de Python 3.11+ que uv construye desde el uv.lock bloqueado. Por defecto escucha en 127.0.0.1, y un comentario en main.py explica por qué: el backend no trae autenticación, así que escuchar en 0.0.0.0 expondría todas las rutas a tu red. OMNIVOICE_API_KEY agrega una bearer key para los casos en que sí lo expongas.
3. Model Manager y motores
El motor TTS por defecto es k2-fsa/OmniVoice, un modelo de clonación zero-shot construido sobre Qwen3-0.6B (unos 2.3 GB de descarga). El Model Catalogue suma casi veinte más, entre ellos OmniVoice GGUF y CosyVoice 3 GGUF para GPUs con Vulkan, VoxCPM2, IndexTTS y KittenTTS. Para voz a texto, WhisperX y Faster-Whisper vienen instalados por defecto, MLX Whisper cubre Apple Silicon y whisper.cpp es un motor opcional que ponés vos. Cada fila de modelo muestra su licencia, y la app pregunta antes de descargar cualquier cosa.
4. Salidas: archivos, API y MCP
La interfaz produce tomas, video doblado, audiolibros en MP3 o M4B y texto dictado. El mismo backend sirve las rutas /v1/audio/speech y /v1/audio/transcriptions compatibles con OpenAI, un WebSocket para transcripción en vivo y un servidor MCP montado en /mcp/. El audio nuevo lleva por defecto una marca de agua invisible de AudioSeal siempre que el modelo de marca de agua esté disponible.
Qué toca la red de verdad
Local por defecto no significa totalmente offline. Los pesos de los modelos se descargan de Hugging Face cuando los instalás, las apps empaquetadas buscan actualizaciones en GitHub Releases y la analítica de producto (PostHog) solo corre si la aceptás en el aviso del primer arranque. Para doblaje, Argos y NLLB-200 traducen offline, mientras que Google, DeepL y los traductores con LLM mandan tu transcripción afuera. La diarización de varios hablantes usa modelos de pyannote que están restringidos en Hugging Face y requieren un token.
3. Quickstart: Instalador o Desde el Código
Hay tres caminos: un instalador desde la página de releases, el script oficial de una línea o un checkout del código. Los comandos salen del README, package.json, electron/README.md y docs/install/script.md en la v0.5.7. No los ejecuté, así que probalos en una máquina donde no te moleste bajar un modelo de varios gigas.
Opción A: el script de instalación oficial (leelo primero)
# The README's one-liners pipe a remote script straight into your shell:
# curl -fsSL https://voicestudio.sh/install | sh (macOS / Linux)
# irm https://voicestudio.sh/install.ps1 | iex (Windows PowerShell)
# macOS / Linux: download it, read it, then decide
curl -fsSL https://voicestudio.sh/install -o install.sh
less install.sh
sh install.sh
# Windows: save the PowerShell script and read it first
irm https://voicestudio.sh/install.ps1 -OutFile install.ps1
notepad install.ps1Pasarle un script a sh es una decisión de confianza
El script en sí se ve cuidadoso: según docs/install/script.md, resuelve el último release, descarga el DMG o el AppImage y lo valida contra el SHA256SUMS.txt de ese release, y se detiene ante cualquier diferencia. Pero curl | sh ejecuta lo que el servidor devuelva en ese momento, sin que lo leas. Descargarlo, leerlo y después correrlo te lleva un minuto. En Windows, el .exe de la página de releases es el camino más simple.
Opción B: desde el código
# Prerequisites (CONTRIBUTING.md): Git, Bun, uv, ffmpeg, Rust/Cargo.
# uv provisions Python 3.11+ for you.
git clone https://github.com/debpalash/VoiceStudio.git
cd VoiceStudio
bun install
bun run setup:api # uv sync --locked + scripts/setup.py (picks CUDA, CPU or ROCm PyTorch)
bun run dev # Electron app: attaches to or spawns the backend on 127.0.0.1:3900Sin GPU NVIDIA, o solo el backend
# No NVIDIA GPU? Force the CPU PyTorch wheels (electron/README.md)
OMNIVOICE_TORCH_VARIANT=cpu bun run setup:api
# Same thing in PowerShell
$env:OMNIVOICE_TORCH_VARIANT = "cpu"
bun run setup:api
# Backend only, no Electron window (root package.json script)
bun run dev:apiQué te pide el primer arranque
La app pregunta antes de descargar cualquier modelo, y la primera generación con OmniVoice baja unos 2.3 GB de pesos. Desde la v0.5.7, los modelos sin una licencia claramente comercial, incluido el OmniVoice por defecto, te piden aceptar su licencia una vez en Model Catalogue; hasta que lo hagas, las peticiones por API y MCP que los usan devuelven un error de licencia. Medí la velocidad a partir de la segunda generación: la guía de rendimiento aclara que los pesos se cargan recién en la primera.
En Windows
Las notas de la v0.5.7 dicen que los instaladores de Windows todavía no están firmados, así que esperá un aviso de SmartScreen. En PowerShell usá la URL .ps1: la URL /install a secas puede devolverte el script de shell. De fábrica, la aceleración por GPU de PyTorch en Windows es solo para NVIDIA; las placas AMD tienen una instalación opcional con ROCm o los motores GGUF sobre Vulkan.
Trampas de hardware
Las Mac con Intel no pueden correr el backend porque PyTorch no publica wheels para Intel Mac; tienen la interfaz y se conectan a un backend en otra máquina. El motor OmniVoice por defecto tiene un piso medido de 6 GB de VRAM, y por debajo un render puede tardar minutos. En Docker, fijá :stable, porque :latest es un build continuo de main.
4. La API Local y MCP: Cómo Conectarlo a tus Agentes
Esto es lo que hace interesante a VoiceStudio para developers, no solo para creadores. El backend implementa las rutas de audio de OpenAI, así que cualquier SDK o framework con una base URL configurable puede usar tus voces locales. Además monta un servidor MCP, para que los agentes de código puedan hablar, clonar y transcribir.
Rutas compatibles con OpenAI desde la terminal
# Loopback calls need no key. Service root: http://127.0.0.1:3900
curl http://127.0.0.1:3900/.well-known/voicestudio-speech # transport discovery
curl http://127.0.0.1:3900/v1/audio/voices # saved voices and presets
# OpenAI-compatible TTS ("model" defaults to omnivoice, "voice" to default)
curl http://127.0.0.1:3900/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model":"omnivoice","voice":"default","input":"Chapter one.","response_format":"wav"}' \
--output chapter-01.wav
# OpenAI-compatible STT with the active ASR engine, straight to subtitles
curl http://127.0.0.1:3900/v1/audio/transcriptions \
-F file=@chapter-01.wav -F model=whisper-1 -F response_format=srtSpeech acepta hasta 4,096 caracteres y devuelve MP3 por defecto, o bien opus, aac, flac, wav y pcm a 24 kHz. El campo voice acepta un id o nombre de perfil, “default”, o un nombre de voz de OpenAI como alloy, que se mapea a la voz por defecto del motor. La transcripción devuelve json, text, verbose_json, srt o vtt, pero no stream=true: el texto en vivo va por el WebSocket en /v1/audio/transcriptions/stream.
MCP: config para Codex CLI más una voz por agente
# ~/.codex/config.toml: the block the app exports under Integrations for Codex CLI
[mcp_servers.voicestudio]
url = "http://127.0.0.1:3900/mcp/"
http_headers = { "X-OmniVoice-Client-Id" = "codex-cli" }
# Bind that client id to a saved voice (loopback REST API, docs/mcp.md)
curl -X PUT localhost:3900/api/mcp/bindings \
-H 'Content-Type: application/json' \
-d '{"client_id":"codex-cli","label":"Codex CLI","profile_id":"<voice-profile-id>"}'El servidor MCP está montado sobre el backend en ejecución, así que no hay nada extra que levantar. Sus herramientas son generate_speech, clone_voice, describe_voice, design_voice, transcribe, list_voices, list_personalities, list_languages y check_health. La página Integrations de la app exporta configs listas para Claude Code (.mcp.json), Cursor y Codex, y los clientes que solo hablan stdio usan el shim incluido, python -m backend.mcp_shim, desde un checkout del código.
Agentes de voz: pipecat y LiveKit Agents
# pipecat: its OpenAI services take a base_url (docs/agentic-voice.md)
from pipecat.services.openai.tts import OpenAITTSService
from pipecat.services.openai.stt import OpenAISTTService
tts = OpenAITTSService(
base_url="http://localhost:3900/v1",
api_key="not-needed-locally", # ignored unless OMNIVOICE_API_KEY is set
voice="<your-voice-profile-id>",
model="omnivoice",
sample_rate=24000,
)
stt = OpenAISTTService(base_url="http://localhost:3900/v1", api_key="not-needed-locally")
# LiveKit Agents: the same base_url through its OpenAI plugin
from livekit.plugins import openai
tts = openai.TTS(base_url="http://localhost:3900/v1", api_key="x", voice="<profile-id>")
stt = openai.STT(base_url="http://localhost:3900/v1", api_key="x")Los dos snippets salen de docs/agentic-voice.md, y el repo fija esa forma de petición con tests de contrato que pasan cada ruta por el SDK oficial de openai. La documentación recomienda pipecat para un solo agente local y LiveKit cuando necesitás su escala con WebRTC o SIP. En los dos casos, VoiceStudio es el proveedor de voz; los turnos de conversación y el LLM quedan en tu propio código.
No lo expongas a internet
Las peticiones por loopback no necesitan credenciales, y la documentación de MCP aclara que el transporte no está autenticado. Mantené el acceso remoto en una LAN de confianza o detrás de TLS, por ejemplo con Tailscale Serve. Hay dos variables clave para agentes: OMNIVOICE_MCP_BASE_PATH es el único directorio desde el que las herramientas de archivos pueden leer o escribir, y OMNIVOICE_MCP_OUTPUT_MODE=files devuelve una ruta en lugar de un WAV en base64, así el audio no se come el contexto de tu agente.
5. Casos de Uso: Dónde Se Gana su Lugar
VoiceStudio hace muchas cosas. En estas cuatro, correr en local cambia el resultado, no solo el precio.
Doblaje de video
El pipeline de doblaje extrae el audio, separa las voces con Demucs, transcribe con WhisperX para tener tiempos por palabra, traduce, sintetiza cada segmento con la voz clonada y lo vuelve a mezclar. Argos o NLLB-200 mantienen la traducción offline, y también podés pegar tu propia traducción.
Ideal para: videos de cursos, demos de producto y entrevistas donde la voz es tuya
Audiolibros y narración larga
Las páginas Audiobook y Stories dividen un manuscrito en capítulos, aceptan marcas como [pause 0.5s] y etiquetas de voz por línea, y exportan MP3 o M4B con capítulos embebidos más una cue sheet. Un render detenido puede retomarse desde su manifiesto en el servidor.
Ideal para: borradores, audio de capacitación interna y versiones accesibles de tus propios textos
Dictado
Un atajo global graba, transcribe en local con un modelo de dictado (Whisper Tiny es el recomendado por defecto, con Sherpa-ONNX para streaming en vivo) e inserta el texto donde estaba tu cursor. Los editores y scripts pueden mandar su propio audio de micrófono al WebSocket.
Ideal para: dictar en un editor o en el prompt de un agente sin ASR en la nube
TTS local para agentes de voz
Apuntá pipecat o LiveKit Agents a /v1 y tu agente habla con una voz que controlás vos, sin factura por carácter. Con MCP, Claude Code, Codex o Cursor pueden narrar actualizaciones de estado, cada uno con su propia voz asignada.
Ideal para: prototipos, asistentes internos y despliegues con requisitos de privacidad
Qué motor para qué máquina (según las guías de motores)
| Tu hardware | Motor para empezar | Qué dice la documentación |
|---|---|---|
| GPU NVIDIA, 6 GB+ de VRAM | OmniVoice (por defecto) | El único motor con un piso de VRAM medido: 6 GB |
| GPU AMD, Intel o NVIDIA chica | OmniVoice GGUF sobre Vulkan | Elige Q8_0 (~945 MB) o Q4_K_M (~659 MB) según la VRAM disponible |
| Apple Silicon | OmniVoice sobre MPS, más los motores MLX | MLX Whisper y Parakeet MLX se encargan de voz a texto |
| Solo CPU | KittenTTS, u OmniVoice en CPU | KittenTTS pesa 25–80 MB, con 8 voces preset en inglés y sin clonación |
Todavía no hay tabla de benchmarks
docs/benchmarks.md trae un harness (scripts/bench_pipeline.py) y una tabla de resultados vacía: todavía no hay filas verificadas. Los tiempos de la guía de rendimiento salen de una M2 con 16 GB. Hasta que la comunidad complete esa tabla, medí en tu propio hardware antes de prometerle a alguien un tiempo de entrega.
6. Consentimiento, AGPL y Licencias de Modelos
Un clonador de voz local saca del medio a la plataforma que de otro modo haría cumplir las reglas, así que pasan a ser tu responsabilidad. Esto es lo que dicen de verdad el repo y las fichas de los modelos.
Consentimiento para clonar voces
El README pide clonar una voz solo con permiso de su dueño, y la ficha de OmniVoice prohíbe la clonación no autorizada y la suplantación. La app tiene un bloqueo de consentimiento: un perfil pasa a verified_own_voice cuando su dueño graba una declaración de consentimiento hablada, y la documentación de MCP recomienda un perfil verificado para cualquier agente que hable como vos. La síntesis local común no lo exige, así que ese control queda de tu lado.
Qué implica la AGPL-3.0 como servicio
Usar la app, incluso con fines comerciales, es gratis. La cláusula Affero suma una obligación: si modificás VoiceStudio y dejás que otros usen esa versión modificada por red, tenés que ofrecerles su código fuente completo bajo AGPL-3.0. voicestudio.sh aclara que la distribución de código cerrado y el hosting privado requieren otros términos; Pro, un build de código cerrado con licencia comercial, cuesta $99 al año o $299 en un solo pago.
Los pesos tienen sus propias licencias
La ficha de OmniVoice pone su código bajo Apache-2.0 y sus pesos preentrenados bajo CC-BY-NC, por datos de entrenamiento como Emilia; su tokenizador de audio suma términos de Higgs Audio 2 y Llama 3. La conversión OmniVoice GGUF es CC BY-NC 4.0. La ficha de CosyVoice 3 dice Apache-2.0, y NLLB-200 es no comercial. El propio inventario de VoiceStudio, con 63 repos de modelos, no marca ninguno como habilitado para uso comercial.
Nada de suplantación
No clones figuras públicas, colegas ni clientes sin consentimiento por escrito, y no uses un clon para engañar a nadie. Dejá activada la marca de agua invisible de AudioSeal y etiquetá el audio sintético donde lo publiques. Las notas de investigación del repo citan la ELVIS Act de Tennessee y las obligaciones de transparencia del artículo 50 de la Ley de IA de la UE; revisá las reglas de donde operás.
La trampa comercial
Para un audiolibro pago o un doblaje para un cliente, la AGPL casi nunca es el obstáculo; los pesos CC-BY-NC del motor por defecto sí. Antes de vender algo, elegí un motor cuyos pesos hayas revisado vos mismo y guardá esa revisión documentada. Las notas de licencia del Model Manager son un punto de partida, no una habilitación.
7. Cuándo NO Usarlo
Esta es la parte que un contador de stars no te cuenta.
✅ Encaja bien si...
- • Producís audio con tu propia voz, o con voces para las que tenés consentimiento por escrito, y querés que se quede en tu máquina
- • Necesitás doblaje, narración y transcripción en una sola herramienta en lugar de tres suscripciones
- • Querés un endpoint local de TTS y STT compatible con OpenAI para prototipos, bots con pipecat o agentes de código
- • Tenés una GPU NVIDIA con 6 GB+ de VRAM, Apple Silicon o una GPU a la que los motores GGUF lleguen por Vulkan
- • Tu trabajo es personal, interno o no comercial, o ya validaste la licencia de un motor para uso comercial
⚠️ Evitalo (o dejalo como experimento) si...
- • Vendés el resultado y no validaste los pesos: el motor por defecto es CC-BY-NC
- • Pensás ofrecer una versión modificada como producto hosteado sin publicar tus cambios: eso es terreno de la AGPL, o de una licencia comercial
- • Necesitás un servicio multi-tenant endurecido: no hay auth en loopback y MCP no tiene autenticación propia
- • Necesitás conversación speech-to-speech de baja latencia: es un proveedor de TTS y STT, no un modelo de voz en tiempo real, y no publica cifras de latencia
- • Estás en una Mac con Intel o con una GPU de 4 GB y esperás que el motor por defecto sea rápido
- • Tu empresa solo instala binarios firmados: los instaladores de Windows todavía no lo están
- • No podés verificar el consentimiento de cada voz que clonás
Mi postura
Instalalo desde la página de releases o desde el código, dejalo en loopback y juzgalo con un trabajo real: un doblaje corto o un capítulo con tu propia voz. Si la calidad aguanta, conectá los endpoints /v1 a tu stack de agentes y corré MCP en modo files. Para todo lo que vendas, cambiá el motor por defecto por uno cuya licencia hayas revisado, o reservá tiempo para esa conversación con el dueño del modelo.
Conclusión
La propuesta de VoiceStudio se sostiene en los papeles: una sola app local para clonar, doblar, narrar y dictar, con un backend que habla la API de audio de OpenAI y MCP, así las mismas voces sirven a tu editor, tus scripts y tus agentes. La documentación es inusualmente franca sobre los límites de seguridad, las licencias y los benchmarks que faltan.
Los costos están en los detalles: un piso de 6 GB de VRAM para el motor por defecto, pesos no comerciales detrás de la voz por defecto, obligaciones de la AGPL si hosteás una versión modificada y un consentimiento que solo vos podés verificar. Tratalo como cualquier herramienta local potente: dejalo en loopback, revisá la licencia del modelo que de verdad usás y cloná solo voces sobre las que tenés derecho.
Sello de verificación
Las stars, los forks, la fecha de creación, la licencia y los releases se chequearon contra la API de GitHub el 28 de octubre de 2026 (v0.5.7, publicada el 26 de octubre de 2026). Los comandos, puertos y endpoints salen del README, package.json, electron/README.md, la documentación de instalación, API y MCP y backend/api/routers/openai_compat.py en esa versión. Las licencias de los modelos salen de las fichas de OmniVoice y CosyVoice 3 en Hugging Face y del registro de licencias del repo. No instalé la app, no ejecuté los scripts ni generé audio.
Fuentes
- debpalash/VoiceStudio: README, LICENSE-NOTICE y repositorio (AGPL-3.0)
- Release de VoiceStudio v0.5.7 (2026-10-26)
- Plataforma de voz local: puerto, endpoints y transportes
- Agentic voice: rutas compatibles con OpenAI, pipecat y LiveKit
- Servidor MCP: herramientas, modos de salida y voces por agente
- Guías de motores: TTS y voz a texto
- Inventario de licencias de modelos
- Ficha de k2-fsa/OmniVoice (código Apache-2.0, pesos CC-BY-NC)
- Ficha de FunAudioLLM/Fun-CosyVoice3-0.5B-2512 (Apache-2.0)
- agents-radar: AI Open Source Trends, 27 oct 2026
- VoiceStudio Pro y licencia comercial



