Communitygithub.com

broomva/skills

TTS local, clonación de voz, diseño de voz y doblaje de videos mediante el servidor MCP OmniVoice Studio (alternativa open-source a ElevenLabs; nada sale del equipo, funciona en MPS/CUDA/CPU).

¿Qué es skills?

Este skill expone un servidor MCP llamado OmniVoice Studio que permite generar audio de forma local, sin depender de APIs externas ni enviar datos fuera del equipo. Soporta síntesis de voz a partir de texto en 646 idiomas, clonación de voz con solo 3 segundos de referencia, diseño de voz por género/edad/acento/tono/estilo y doblaje de videos (el doblaje solo está disponible en la interfaz web). Es especialmente útil cuando se necesita privacidad, bajo costo, o no se dispone de claves de API. Funciona en Apple Silicon (MPS), CUDA y CPU, y el modelo se descarga automáticamente (~2.4 GB) en la primera llamada. Las herramientas incluyen `generate_speech`, `list_voices`, `list_personalities`, `list_languages` y `check_health`. El skill está diseñado para agentes como Claude Code, Cursor o Codex, y detalla flujos completos como narración one-shot, clonación paso a paso con scripts auxiliares y diseño de voz sin clip de referencia.

Compatible con~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/broomva/skills/tree/HEAD/skills/audio/omnivoice

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

OmniVoice

Descripción general

Genera audio localmente a través del servidor MCP OmniVoice Studio. Herramientas: generate_speech, list_voices, list_personalities, list_languages, check_health. Recursos: voice://{id}, history://recent.

Requisitos previos: el backend debe estar ejecutándose

Todas las herramientas MCP utilizan $OMNIVOICE_API_URL (por defecto http://localhost:3900). Si el backend no está activo, cada herramienta devolverá un error de conexión. Instalación e inicio:

git clone https://github.com/debpalash/OmniVoice-Studio.git "$OMNIVOICE_HOME"
cd "$OMNIVOICE_HOME"
uv sync
VIRTUAL_ENV="$(pwd)/.venv" uv pip install 'mcp[cli]'

Luego:

scripts/check-health.sh        # exit 0 si está activo
scripts/start-backend.sh       # inicia en segundo plano (detección automática MPS/CUDA)

La primera llamada de síntesis descargará el modelo k2-fsa/OmniVoice (~2.4 GB) de HuggingFace; quedará en caché para inicios posteriores.

Índice de tareas: selecciona la herramienta adecuada

TareaHerramientaNotas
Verificar que el backend esté activocheck_healthDevuelve `{"status":"ok","device":"mps
Texto → audio con una voz guardadagenerate_speech(text, profile_id)Devuelve WAV en base64. profile_id="demo0001" es la voz de demostración incluida
Texto → audio sin clonación (diseño de voz)generate_speech(text, instruct="…")Omitir profile_id; pasar un instruct como "voz femenina de mediana edad, cálida, ritmo pausado"
Narración multilingüegenerate_speech(text, language="es")Cualquier código ISO 639 o "Auto"
Listar voces existenteslist_voicesDevuelve id, nombre, tipo, personalidad
Listar presets de personalidadlist_personalitiesDevuelve narrador / casual / presentador-noticias / etc. con sus cadenas instruct
Listar idiomas compatibleslist_languages646 en total; devuelve 20 populares + el total

Para decisiones complejas (qué motor usar, cuándo elegir OmniVoice sobre kokoro / Edge TTS / ElevenLabs), consulta references/engines-comparison.md.

Para detalles de configuración MCP, ciclo de vida del backend, solución de problemas y limpieza, consulta references/mcp-setup.md.

Flujos de trabajo comunes

1. Narración one-shot con la voz de demostración

# Tal como se llama a través del cliente MCP (tu agente lo hará por ti):
resultado = generate_speech(
    text="Hola — esto es OmniVoice generando voz localmente.",
    profile_id="demo0001",
    language="Spanish",
    steps=16,                   # 8 = rápido/borrador · 16 = equilibrado · 32 = calidad
)
# resultado es JSON con audio_id, generation_time_s, audio_duration_s, format, wav_base64

Benchmark: 4,2 s de audio en ~24 s del lado del servidor en Apple Silicon MPS con 16 pasos de difusión.

2. Guardar el WAV en disco y reproducirlo

La herramienta devuelve WAV PCM en base64 (16 bits, mono, 24 kHz). Decodificar y escribir:

import base64, json
payload = json.loads(texto_resultado)            # parsear JSON devuelto por la herramienta
open("salida.wav","wb").write(base64.b64decode(payload["wav_base64"]))

En macOS: afplay salida.wav. Convertir a MP3 con ffmpeg -i salida.wav -codec:a libmp3lame -b:a 128k salida.mp3.

3. Clonación de voz: receta completa

La clonación necesita un clip de referencia de 3 a 10 segundos que el modelo usará como incrustación (embedding) del hablante. El servidor MCP NO expone la creación de perfiles — solo lee los existentes. Dos formas de crear uno:

Ruta A — script auxiliar incluido (macOS, recomendado para clones nuevos):

scripts/record-reference.sh ~/Downloads/mi-ref.wav 12 1
# args: ruta_salida duración_segundos_raw índice_micrófono
# mic_index=1 por defecto (MacBook integrado); lista dispositivos con:
#   ffmpeg -f avfoundation -list_devices true -i ""

El script proporciona señales audibles de cuenta regresiva + inicio/parada mediante say de macOS + /System/Library/Sounds/Ping.aiff para que el usuario sepa cuándo hablar (la salida estándar del terminal tiene búfer — los mensajes de texto "habla ahora" llegan demasiado tarde). Graba una ventana raw más larga, la recorta a ~10 segundos de voz mediante silenceremove + atrim, reproduce para verificación e imprime el comando curl del siguiente paso.

Ruta B — manual:

# 1. Grabar (mono, 24 kHz nativo — coincide con la tasa interna del modelo)
ffmpeg -f avfoundation -i ":1" -t 12 -ac 1 -ar 24000 raw.wav

# 2. Recortar silencio inicial + tomar primeros 10 segundos de voz
ffmpeg -i raw.wav \
  -af "silenceremove=start_periods=1:start_silence=0.05:start_threshold=-40dB,atrim=end=10" \
  -ac 1 -ar 24000 ref.wav

# 3. Verificar
ffmpeg -i ref.wav -af volumedetect -f null - 2>&1 | grep volume   # el máximo debe ser > -20 dB
afplay ref.wav

POST a /profiles (multipart/form-data — campos obligatorios: name, ref_audio):

curl -X POST http://127.0.0.1:3900/profiles \
  -F "name=clon-carlos" \
  -F "[email protected]" \
  -F "ref_text=El texto exacto dicho en el clip" \
  -F "language=Spanish" \
  | python3 -m json.tool
# devuelve { "id": "abc12345", "name": "clon-carlos" }

Una vez creado, pasa profile_id a generate_speech (a través del MCP) o directamente mediante POST /generate. Los perfiles persisten en SQLite + archivos de audio de referencia en ~/Library/Application Support/OmniVoice/voices/<id>.<ext> (el backend conserva la extensión subida — .wav si subiste un WAV, .mp3 si MP3, etc.). El estado persiste entre reinicios del backend.

Consejos para el clip de referencia que afectan significativamente la calidad:

FactorPor qué importa
Un solo hablanteVarios hablantes mezclan la incrustación
Voz limpia, sin música/ruidoEl modelo también incrusta el ruido
Prosodia natural (evitar trabalenguas)Las muestras de difusión replican la prosodia, no solo el timbre
3-10 segundos es el punto óptimo< 3 s carece de información; > 10 s añade cómputo sin ganancia de calidad
Coincidir ref_text con lo habladoMejora la alineación, especialmente en referencias ruidosas
language correctoIdioma incorrecto → artefactos de transferencia interlingüística
Pico de sonoridad ≥ -15 dBLas referencias silenciosas funcionan pero se normalizan mal

4. Diseño de voz (sin clip de referencia)

Omite profile_id; proporciona una cadena instruct que describa la voz deseada:

generate_speech(
    text="Bienvenido al futuro de los sistemas agentivos.",
    instruct="voz femenina de mediana edad, cálida, ritmo pausado y autoritario, estilo documental",
)

Obtén instrucciones predefinidas mediante list_personalities y copia la que coincida con el briefing (narrador, casual, presentador de noticias, etc.).

5. Doblaje de video (solo interfaz web)

El servidor MCP no expone el endpoint de doblaje. El pipeline completo de transcribir → traducir → volver a dar voz → multiplexar está detrás de la interfaz de escritorio (bun run desktop en $OMNIVOICE_HOME) y las rutas REST /dub/*. Cuando el usuario solicite doblar un video, dirígelo a la interfaz; usa este skill solo para las primitivas de síntesis anteriores.

Cuándo NO usar OmniVoice

  • Narración rápida solo en inglés en hardware modesto → kokoro-tts es ~10× más pequeño y 2× en tiempo real en CPU (consulta references/engines-comparison.md)
  • TTS puntual de mínima fricción → Edge TTS no necesita instalación ni backend
  • Máxima calidad posible sin importar el costo → ElevenLabs sigue ganando en pulcritud de narración en inglés; OmniVoice empata o gana en multilingüe + clonación
  • Dictado en tiempo real → usa el widget de escritorio de OmniVoice (⌘+⇧+Space), no el servidor MCP

Recursos

Swagger / OpenAPI del backend: http://127.0.0.1:3900/docs (cuando el backend esté activo).

Upstream: github.com/debpalash/OmniVoice-Studio — FSL-1.1-ALv2 (gratuito para uso personal/interno/no comercial; se convierte automáticamente a Apache-2.0 dos años después de cada publicación).

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

broomva/skills

>- Speak an explanation out loud while working in any project — tiered text-to-speech with a pluggable backend (ElevenLabs by default and quota-guarded, macOS `say` via `--fast` for free instant local speech, local OmniVoice as an unlimited private tier). Markdown-aware, so code fences, URLs and deep paths collapse to short spoken placeholders instead of being dictated character by character, while snake_case identifiers survive intact so the listener can still search for them. Every utterance is saved to disk for later replay. Also carries a **talk mode** toggle: turn it on and the agent speaks a full readback of every turn, for as long as that session lasts — the whole response, not a summary of it, with `brief` and `marker` levels for when you want less. Talk mode is off by default and scoped to the single session that enabled it, so parallel agents in other worktrees stay silent. Use when the user asks to hear something rather than read it — an explanation of a change, a walkthrough of what just happen...

broomva/skills

Shop Tiendas D1 (Colombia, d1.com.co) from the command line — search the catalogue, resolve your nearest physical store, price a basket against that store's real stock, and quote delivery. D1 runs VTEX IO (account `d1tiendas`), so this drives its public storefront API with no admin key at all — catalogue and cart work fully anonymously, and a one-time emailed code unlocks order history. Handles the two traps that make naive D1 automation wrong — availability is regionalized (an unregioned query reports a national catalogue nobody can actually buy from) and prices arrive in two different units (search reports whole pesos, checkout reports hundredths, a silent 100x). Builds and prices baskets; it deliberately cannot pay, handing a checkout URL to a human instead. USE WHEN the user wants to find D1 products or prices, check whether D1 delivers somewhere, build or cost a D1 grocery basket, compare D1 items, or review their D1 orders. NOT FOR other Colombian retailers (Éxito, Jumbo, Ara, Alkosto), and not for c...

broomva/skills

Stateful, local-first household toxics inventory + swap engine. Identify the items in a home that carry endocrine disruptors and persistent chemicals (BPA/BPS, phthalates, PFAS/PTFE, parabens, flame retardants, VOCs, microplastics), score each by *real* exposure (severity x presence x how it's used x condition), and track the swap to a safer alternative from "flagged" -> "sourced" -> "swapped". Ships a grounded, cited knowledge graph of ~20 hazards, ~40 item-classes, and ~40 alternatives. Hands sourcing off to the `procurer` skill. The skill's state is the source of truth — the agent is the app.

broomva/skills

Tekton — the shared architecture-intent substrate for co-designing systems with the agent. One typed graph across six tiers (system / journey / data / infra / decisions / qualities); views are queries, not separate diagrams. The canonical artifact is a diff-friendly YAML model both human and agent read and write; it renders to Mermaid (agent-legible, GitHub-native) and a self-contained tabbed HTML viewer (human-visual). Cross-tier traceability (`tekton query <from> <to>`) answers "which infra does this user-journey step touch?" as a path query. USE WHEN: designing or thinking deeply about architecture, a system, a data model, user journeys/flows, or a technical plan WITH the agent; when a Category-C HTML doc isn't enough because you need to see AND edit AND traverse the design across tiers; "let's design X", "architect this", "model the system", "draw the flow", "how does this fit together", "diagram this", "/tekton". NOT FOR: a one-off throwaway diagram (use Mermaid inline); prose-only ADRs (write the ADR...

broomva/skills

Generate a polished Remotion video and X thread showcasing the full agent skills inventory. Use when creating social media content about skills, rendering category-based skill visualizations, or producing animated showcases of agent capabilities. Triggers on "skills video", "showcase skills", "skills thread", "render skills", "social content for skills", or requests to visualize the skills inventory.

broomva/skills

OpenCaptions extension for Content Engine — adds intent-driven CWI (Caption With Intent) captions to the post-production pipeline. Hooks into the grade → caption → final stage. Generates captions that understand video intent (pitch, volume, emotion, emphasis) and style themselves accordingly with variable font weight, size, and color. Uses the OpenCaptions CLI or MCP server. Triggers on: 'add captions', 'opencaptions', 'CWI captions', 'intent captions'.

broomva/skills

Produce polished product launch videos using the Liquid Glass aesthetic — dark void backgrounds, 3D perspective floating UI panels, particle effects, spring animations, and cinematic pacing. Built on Remotion with Imagen 4.0 for frames and Veo 3.1 for B-roll. Use when: (1) creating a product demo or launch video, (2) showcasing a UI/app/tool with cinematic polish, (3) building a social-ready video from screenshots and renders, (4) applying the liquid glass floating panel style, (5) composing Remotion videos with 3D transforms and spring animations. Triggers on: 'launch video', 'product video', 'liquid glass video', 'demo video', 'showcase video', 'remotion video', 'floating panel', 'glass aesthetic'.

Skills relacionados