Communitygithub.com

OmniVoice

Síntese de voz local, clonagem de voz, design de voz e dublagem de vídeo via o servidor MCP OmniVoice Studio (alternativa open-source ao ElevenLabs; nada sai da máquina, roda em MPS/CUDA/CPU).

O que é OmniVoice?

O OmniVoice é uma skill poderosa para agentes de IA que fornece síntese de voz totalmente local, clonagem de voz a partir de clipes de referência curtos (3 a 10 segundos), design de voz baseado em descrições textuais (gênero, idade, sotaque, tom, estilo) e dublagem de vídeo (via interface web). Suporta 646 idiomas e funciona em hardware Apple Silicon (MPS), NVIDIA (CUDA) ou CPU. A skill interage com o servidor MCP OmniVoice Studio, que oferece ferramentas como `generate_speech`, `list_voices` e `list_personalities`. É particularmente útil em cenários onde privacidade, custo ou a ausência de chaves de API são prioridades, ou para narração em idiomas não-inglês onde soluções como Edge TTS ou kokoro são insuficientes. O modelo (~2,4 GB) é baixado sob demanda na primeira execução. A skill também orienta na criação de perfis de voz via requisições HTTP diretamente ao backend, com dicas detalhadas para maximizar a qualidade da clonagem.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que OmniVoice faz?

Visão Geral

Gere áudio localmente através do servidor MCP OmniVoice Studio. Ferramentas: generate_speech, list_voices, list_personalities, list_languages, check_health. Recursos: voice://{id}, history://recent.

Pré-requisitos — O Backend Deve Estar em Execução

As ferramentas MCP acessam $OMNIVOICE_API_URL (padrão http://localhost:3900). Se o backend estiver desligado, todas as ferramentas retornam um erro de conexão. Instale e inicie:

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]'

Depois:

scripts/check-health.sh        # exit 0 se estiver funcionando
scripts/start-backend.sh       # inicia em segundo plano (MPS/CUDA detectados automaticamente)

A primeira chamada de síntese baixa o modelo k2-fsa/OmniVoice (~2,4 GB) do HuggingFace — armazenado em cache nas execuções seguintes.

Índice de Tarefas — Escolha a Ferramenta Correta

TarefaFerramentaNotas
Verificar se o backend está ativocheck_healthRetorna `{"status":"ok","device":"mps
Texto → áudio com uma voz salvagenerate_speech(text, profile_id)Retorna WAV em base64. profile_id="demo0001" é a voz de demonstração incluída
Texto → áudio sem clonagem (design de voz)generate_speech(text, instruct="…")Omita profile_id; passe um instruct como "narrador feminina meia-idade, ritmo calmo"
Narração multilínguegenerate_speech(text, language="pt")Qualquer código ISO 639 ou "Auto"
Listar vozes existenteslist_voicesRetorna id, nome, tipo, personalidade
Listar predefinições de personalidadelist_personalitiesRetorna narrador / casual / âncora de notícias / etc. com suas strings de instruct
Listar idiomas suportadoslist_languages646 no total; retorna 20 populares + a contagem total

Para decisões não triviais (qual mecanismo usar, quando escolher OmniVoice em vez de kokoro / Edge TTS / ElevenLabs), consulte references/engines-comparison.md.

Para detalhes de configuração MCP, ciclo de vida do backend, solução de problemas e uma desinstalação limpa, consulte references/mcp-setup.md.

Fluxos de Trabalho Comuns

1. Narração única com a voz de demonstração

# Chamado através do cliente MCP (seu agente fará isso por você):
resultado = generate_speech(
    text="Olá — isto é o OmniVoice gerando fala localmente.",
    profile_id="demo0001",
    language="Português",
    steps=16,                   # 8 = rápido/rascunho · 16 = equilibrado · 32 = qualidade
)
# resultado é JSON com audio_id, generation_time_s, audio_duration_s, format, wav_base64

Benchmark: 4,2 s de áudio em ~24 s no lado do servidor em Apple Silicon MPS com 16 passos de difusão.

2. Salvar o WAV em disco e reproduzir

A ferramenta retorna WAV PCM em base64 (16 bits, mono, 24 kHz). Decodifique e escreva:

import base64, json
payload = json.loads(texto_resultado)            # analisa o JSON retornado pela ferramenta
open("out.wav","wb").write(base64.b64decode(payload["wav_base64"]))

No macOS: afplay out.wav. Converta para MP3 com ffmpeg -i out.wav -codec:a libmp3lame -b:a 128k out.mp3.

3. Clonagem de voz — receita completa

A clonagem precisa de um clipe de referência de 3 a 10 segundos que o modelo usará como incorporação (embedding) do falante. O servidor MCP NÃO expõe a criação de perfis — ele apenas lê perfis existentes. Dois caminhos para criar um:

Caminho A — script auxiliar (macOS, recomendado para novas clonagens):

scripts/record-reference.sh ~/Downloads/minha-ref.wav 12 1
# args: output_path raw_duration_sec mic_index
# mic_index padrão=1 (MacBook embutido); liste dispositivos via:
#   ffmpeg -f avfoundation -list_devices true -i ""

O script dá uma contagem regressiva audível e sinais de início/parada via say do macOS + /System/Library/Sounds/Ping.aiff para que o usuário saiba quando falar (a saída do terminal é armazenada em buffer — prompts de texto "fale agora" chegam tarde demais). Ele grava uma janela bruta maior, depois apara para ~10 segundos de fala via silenceremove + atrim, reproduz para verificação e imprime o comando curl da próxima etapa.

Caminho B — manual:

# 1. Gravar (mono, 24 kHz nativo — corresponde à taxa interna do modelo)
ffmpeg -f avfoundation -i ":1" -t 12 -ac 1 -ar 24000 raw.wav

# 2. Aparar silêncio inicial + pegar os primeiros 10 seg de fala
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   # máximo deve ser > -20 dB
afplay ref.wav

POST para /profiles (multipart/form-data — campos obrigatórios: name, ref_audio):

curl -X POST http://127.0.0.1:3900/profiles \
  -F "name=clone-do-carlos" \
  -F "[email protected]" \
  -F "ref_text=O texto exato falado no clipe" \
  -F "language=Português" \
  | python3 -m json.tool
# retorna { "id": "abc12345", "name": "clone-do-carlos" }

Uma vez criado, passe profile_id para generate_speech (via MCP) ou diretamente via POST /generate. Os perfis persistem em SQLite + arquivos de áudio de referência em ~/Library/Application Support/OmniVoice/voices/<id>.<ext> (o backend preserva a extensão enviada — .wav se você enviou um WAV, .mp3 se MP3, etc.). O estado persiste entre reinicializações do backend.

Dicas para o clipe de referência que afetam materialmente a qualidade:

FatorPor que é importante
Único falanteFalantes mistos borram a incorporação (embedding)
Fala limpa, sem música/ruídoO modelo também incorpora o ruído
Prosódia natural (evite frases artificialmente longas)As amostras de difusão replicam a prosódia, não apenas o timbre
3-10 s é o ponto ideal< 3 s falta informação; > 10 s adiciona computação sem ganho de qualidade
Combine ref_text com o que é faladoMelhora o alinhamento, especialmente em referências ruidosas
language corretoIdioma errado → artefatos de transferência multilíngue
Pico de volume ≥ -15 dBReferências baixas funcionam, mas normalizam mal

4. Design de voz (sem clipe de referência)

Pule profile_id; forneça uma string instruct descrevendo a voz desejada:

generate_speech(
    text="Bem-vindo ao futuro dos sistemas de agentes.",
    instruct="narradora feminina de meia idade, tom calmo e autoritário, estilo documentário",
)

Obtenha instruções prontas via list_personalities e copie a que corresponde à descrição (narrador, casual, âncora de notícias, etc.).

5. Dublagem de vídeo (apenas interface web)

O servidor MCP não expõe o endpoint de dublagem. O pipeline completo de transcrição → tradução → revozeamento → multiplexação fica na interface de desktop (bun run desktop em $OMNIVOICE_HOME) e nas rotas REST /dub/*. Quando o usuário pedir para dublar um vídeo, direcione-o para a interface; use esta skill apenas para os primitivos de síntese acima.

Quando NÃO usar o OmniVoice

  • Narração rápida apenas em inglês em hardware fraco → kokoro-tts é ~10× menor e 2× tempo real na CPU (veja references/engines-comparison.md)
  • TTS avulso de menor atrito → Edge TTS não precisa de instalação ou backend
  • Maior qualidade possível independentemente do custo → ElevenLabs ainda vence no polimento de narração em inglês; OmniVoice empata ou vence em multilíngue + clonagem
  • Dictação em tempo real em streaming → use o widget de desktop do OmniVoice (⌘+⇧+Space), não o servidor MCP

Recursos

Swagger / OpenAPI do Backend: http://127.0.0.1:3900/docs (quando o backend estiver ativo).

Upstream: github.com/debpalash/OmniVoice-Studio — FSL-1.1-ALv2 (gratuito para uso pessoal/interno/não comercial; converte automaticamente para Apache-2.0 dois anos após cada lançamento).

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'.

Habilidades Relacionadas