Communitygithub.com

broomva/skills

TTS local, clonage vocal, conception vocale et doublage vidéo via le serveur MCP OmniVoice Studio (alternative open-source à ElevenLabs ; rien ne quitte la machine, fonctionne sur MPS/CUDA/CPU).

Qu'est-ce que skills ?

Cette compétence exploite le serveur MCP OmniVoice Studio pour générer de l'audio localement, sans dépendre de services cloud ni de clés API. Elle offre une alternative open-source à ElevenLabs, avec un fonctionnement en local (MPS, CUDA, CPU) garantissant la confidentialité et l'absence de coûts récurrents. Les fonctionnalités incluent la synthèse vocale à partir de texte dans 646 langues, le clonage de voix à partir d'un extrait de 3 à 10 secondes, la conception de voix par description (âge, genre, accent, style), et le doublage vidéo via l'interface utilisateur de bureau. La compétence expose des outils MCP tels que `generate_speech`, `list_voices`, `list_personalities`, `list_languages` et `check_health`, et s'intègre avec les plateformes supportant MCP (Claude Code, Cursor, etc.). Elle est particulièrement utile pour la production de narrations multilingues, la création de contenu audio pour blogs ou pipelines de contenu, et les cas où la confidentialité, le coût ou l'absence de clés API sont des contraintes. Le backend doit être préalablement installé et démarré ; la première synthèse télécharge automatiquement le modèle (~2,4 Go) depuis HuggingFace.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

OmniVoice

Aperçu

Générez de l'audio localement via le serveur MCP OmniVoice Studio. Outils : generate_speech, list_voices, list_personalities, list_languages, check_health. Ressources : voice://{id}, history://recent.

Prérequis — Le backend doit être en cours d'exécution

Les outils MCP utilisent tous $OMNIVOICE_API_URL (par défaut http://localhost:3900). Si le backend est arrêté, chaque outil retourne une erreur de connexion. Installation + démarrage :

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

Puis :

scripts/check-health.sh        # exit 0 si actif
scripts/start-backend.sh       # démarre en arrière-plan (détection automatique MPS/CUDA)

Le premier appel de synthèse télécharge paresseusement le modèle k2-fsa/OmniVoice (~2,4 Go) depuis HuggingFace — mis en cache lors des démarrages suivants.

Index des tâches — Choisissez le bon outil

TâcheOutilNotes
Vérifier que le backend est actifcheck_healthRetourne `{"status":"ok","device":"mps
Texte → audio avec une voix enregistréegenerate_speech(text, profile_id)Retourne WAV en base64. profile_id="demo0001" est la voix de démonstration fournie
Texte → audio sans clone (conception vocale)generate_speech(text, instruct="…")Omettez profile_id ; passez une instruct comme "narratrice chaleureuse d'âge moyen, rythme calme"
Narration multilinguegenerate_speech(text, language="es")Tout code ISO 639 ou "Auto"
Lister les voix existanteslist_voicesRetourne id, nom, type, personnalité
Lister les préréglages de personnalitélist_personalitiesRetourne narrateur / décontracté / présentateur-radio / etc. avec leurs chaînes instruct
Lister les langues supportéeslist_languages646 au total ; retourne 20 langues populaires + le nombre total

Pour les décisions importantes (quel moteur utiliser, quand choisir OmniVoice plutôt que kokoro / Edge TTS / ElevenLabs), voir references/engines-comparison.md.

Pour les détails de câblage MCP, le cycle de vie du backend, le dépannage et un nettoyage complet, voir references/mcp-setup.md.

Workflows courants

1. Narration ponctuelle avec la voix de démonstration

# Appelé via le client MCP (votre agent le fera pour vous) :
result = generate_speech(
    text="Bonjour — ici OmniVoice génère de la parole localement.",
    profile_id="demo0001",
    language="Français",
    steps=16,                   # 8 = rapide/brouillon · 16 = équilibré · 32 = qualité
)
# result est un JSON avec audio_id, generation_time_s, audio_duration_s, format, wav_base64

Benchmark : 4,2 s d'audio en ~24 s côté serveur sur Apple Silicon MPS avec 16 étapes de diffusion.

2. Sauvegarder le WAV sur le disque et le lire

L'outil retourne un WAV PCM en base64 (16 bits, mono, 24 kHz). Décoder et écrire :

import base64, json
payload = json.loads(result_text)            # analyser le JSON retourné par l'outil
open("out.wav","wb").write(base64.b64decode(payload["wav_base64"]))

Sur macOS : afplay out.wav. Convertir en MP3 avec ffmpeg -i out.wav -codec:a libmp3lame -b:a 128k out.mp3.

3. Clonage vocal — recette complète

Le clonage nécessite un extrait de référence de 3 à 10 secondes que le modèle utilisera comme plongement du locuteur. Le serveur MCP n'expose PAS la création de profil — il ne fait que lire les profils existants. Deux chemins pour en créer un :

Chemin A — script fourni (macOS, recommandé pour les nouveaux clones) :

scripts/record-reference.sh ~/Downloads/my-ref.wav 12 1
# args : chemin_sortie durée_brute_sec index_micro
# index_micro par défaut = 1 (intégré MacBook) ; lister les périphériques via :
#   ffmpeg -f avfoundation -list_devices true -i ""

Le script donne des signaux audibles de compte à rebours + début/fin via say de macOS + /System/Library/Sounds/Ping.aiff pour que l'utilisateur sache quand parler (la sortie terminal est tamponnée — les invites textuelles "parlez maintenant" arrivent trop tard). Il enregistre une fenêtre brute plus longue, puis la réduit à ~10 secondes de parole via silenceremove + atrim, la relit pour vérification et imprime la commande curl pour l'étape suivante.

Chemin B — manuel :

# 1. Enregistrer (mono, 24 kHz natif — correspond au taux interne du modèle)
ffmpeg -f avfoundation -i ":1" -t 12 -ac 1 -ar 24000 raw.wav

# 2. Supprimer le silence initial + prendre les 10 premières secondes de parole
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. Vérifier
ffmpeg -i ref.wav -af volumedetect -f null - 2>&1 | grep volume   # max doit être > -20 dB
afplay ref.wav

POST vers /profiles (multipart/form-data — champs obligatoires : name, ref_audio) :

curl -X POST http://127.0.0.1:3900/profiles \
  -F "name=clone-carlos" \
  -F "[email protected]" \
  -F "ref_text=Le texte exact prononcé dans l'extrait" \
  -F "language=Français" \
  | python3 -m json.tool
# retourne { "id": "abc12345", "name": "clone-carlos" }

Une fois créé, passez profile_id à generate_speech (via MCP) ou directement via POST /generate. Les profils persistent dans SQLite + fichiers audio de référence dans ~/Library/Application Support/OmniVoice/voices/<id>.<ext> (le backend préserve l'extension téléchargée — .wav si vous avez uploadé un WAV, .mp3 si MP3, etc.). L'état persiste entre les redémarrages du backend.

Conseils sur l'extrait de référence qui affectent matériellement la qualité :

FacteurPourquoi c'est important
Locuteur uniqueDes locuteurs mélangés brouillent le plongement
Parole claire, sans musique ni bruitLe modèle intègre aussi le bruit
Prosodie naturelle (éviter les pangrammes)Les échantillons de diffusion reproduisent la prosodie, pas seulement le timbre
3 à 10 s est la zone idéale< 3 s manque d'information ; > 10 s ajoute du calcul sans gain de qualité
Faire correspondre ref_text à ce qui est ditAméliore l'alignement, surtout sur les références bruyantes
language correctUne mauvaise langue → artefacts de transfert cross-lingue
Pic de volume ≥ -15 dBLes références silencieuses fonctionnent mais se normalisent mal

4. Conception vocale (sans extrait de référence)

Sautez profile_id ; fournissez une chaîne instruct décrivant la voix souhaitée :

generate_speech(
    text="Bienvenue dans le futur des systèmes agentiques.",
    instruct="narratrice chaleureuse d'âge moyen, rythme calme et autoritaire, style documentaire",
)

Obtenez des instructions préfabriquées via list_personalities et copiez celle correspondant au brief (narrateur, décontracté, présentateur-radio, etc.).

5. Doublage vidéo (interface web uniquement)

Le serveur MCP n'expose pas le point de terminaison de doublage. Le pipeline complet transcription → traduction → ré-voix → mixage se trouve derrière l'interface de bureau (bun run desktop dans $OMNIVOICE_HOME) et les routes REST /dub/*. Lorsque l'utilisateur demande de doubler une vidéo, orientez-le vers l'interface ; utilisez cette compétence uniquement pour les primitives de synthèse ci-dessus.

Quand NE PAS utiliser OmniVoice

  • Narration rapide en anglais uniquement sur matériel faible → kokoro-tts est ~10× plus petit et 2× temps réel sur CPU (voir references/engines-comparison.md)
  • TTS ponctuel avec le moins de friction possible → Edge TTS ne nécessite ni installation ni backend
  • Qualité la plus élevée possible quel que soit le coût → ElevenLabs reste leader pour la qualité de narration en anglais ; OmniVoice est à égalité ou meilleur pour le multilingue et le clonage
  • Dictée en streaming temps réel → utilisez le widget de bureau OmniVoice (⌘+⇧+Space), pas le serveur MCP

Ressources

Swagger / OpenAPI du backend : http://127.0.0.1:3900/docs (lorsque le backend est actif).

Amont : github.com/debpalash/OmniVoice-Studio — FSL-1.1-ALv2 (gratuit pour usage personnel/interne/non commercial ; se convertit automatiquement en Apache-2.0 deux ans après chaque publication).

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 associés