Communitygithub.com

OmniVoice

Lokale TTS, Stimmklonung, Stimmdesign und Videosynchronisation über den OmniVoice Studio MCP-Server (Open-Source-Alternative zu ElevenLabs; nichts verlässt den Rechner, läuft auf MPS/CUDA/CPU).

Was ist OmniVoice?

OmniVoice ist eine leistungsstarke, lokale Audio-Suite, die über einen MCP-Server (Model Context Protocol) bereitgestellt wird. Es ermöglicht die Text-zu-Sprache-Synthese in 646 Sprachen, die Klonung einer Stimme anhand einer 3-sekündigen Referenzaufnahme und das Design individueller Stimmen mit Parametern wie Geschlecht, Alter oder Stil. Zudem unterstützt es die Videosynchronisation (Dubbing) über eine Web-Oberfläche, wobei sensible Audiodaten niemals den lokalen Rechner verlassen. Entwickler und KI-Agenten können über Werkzeuge wie `generate_speech`, `list_voices` oder `list_personalities` direkt auf die Funktionen zugreifen. Das System ist ideal für datenschutzsensible Anwendungen, Offline-Szenarien und mehrsprachige Inhalte, bei denen Cloud-Dienste wie ElevenLabs oder Edge TTS nicht geeignet sind. Es läuft auf Apple Silicon (MPS), NVIDIA-GPUs (CUDA) und CPU und erfordert, dass der Backend-Server unter `http://localhost:3900` aktiv ist. Die Modell-Downloads (ca. 2,4 GB) erfolgen beim ersten Start und werden dann gecacht.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht OmniVoice?

Übersicht

Generiere Audio lokal über den OmniVoice Studio MCP-Server. Werkzeuge: generate_speech, list_voices, list_personalities, list_languages, check_health. Ressourcen: voice://{id}, history://recent.

Voraussetzungen – Backend muss laufen

Die MCP-Werkzeuge greifen alle auf $OMNIVOICE_API_URL zu (Standard: http://localhost:3900). Wenn das Backend nicht läuft, liefert jedes Werkzeug einen Verbindungsfehler. Installation + Start:

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

Dann:

scripts/check-health.sh        # exit 0 wenn verfügbar
scripts/start-backend.sh       # Start im Hintergrund (MPS/CUDA automatisch erkannt)

Der erste Synthese-Aufruf lädt das Modell k2-fsa/OmniVoice (~2,4 GB) von HuggingFace herunter – bei späteren Starts gecacht.

Aufgabenindex – Das richtige Werkzeug wählen

AufgabeWerkzeugHinweise
Backend-Verfügbarkeit prüfencheck_healthGibt `{"status":"ok","device":"mps
Text → Audio mit einer gespeicherten Stimmegenerate_speech(text, profile_id)Gibt Base64-WAV zurück. profile_id="demo0001" ist die mitgelieferte Demo-Stimme
Text → Audio ohne Klon (Stimmdesign)generate_speech(text, instruct="…")profile_id weglassen; instruct wie "warmherzige, mittelalte weibliche Erzählerin, ruhiges Tempo" übergeben
Mehrsprachige Erzählunggenerate_speech(text, language="es")Beliebiger ISO-639-Code oder "Auto"
Vorhandene Stimmen auflistenlist_voicesGibt ID, Name, Typ, Persönlichkeit zurück
Persönlichkeitsvorlagen auflistenlist_personalitiesGibt Erzähler / Lässig / Nachrichtensprecher / usw. mit ihren instruct-Zeichenketten zurück
Unterstützte Sprachen auflistenlist_languagesInsgesamt 646; gibt 20 beliebte + die Gesamtzahl zurück

Für komplexere Entscheidungen (welche Engine verwenden, wann OmniVoice gegenüber kokoro / Edge TTS / ElevenLabs wählen) siehe references/engines-comparison.md.

Für MCP-Verdrahtungsdetails, Backend-Lebenszyklus, Fehlerbehebung und eine saubere Deinstallation siehe references/mcp-setup.md.

Häufige Workflows

1. Einmalige Erzählung mit der Demo-Stimme

# Wie durch den MCP-Client aufgerufen (Ihr Agent führt dies für Sie aus):
ergebnis = generate_speech(
    text="Hallo – dies ist OmniVoice, das Sprachausgabe lokal generiert.",
    profile_id="demo0001",
    language="German",
    steps=16,                   # 8 = schnell/Entwurf · 16 = ausgewogen · 32 = Qualität
)
# Ergebnis ist JSON mit audio_id, generation_time_s, audio_duration_s, format, wav_base64

Benchmark: 4,2 s Audio in ~24 s serverseitig auf Apple Silicon MPS bei 16 Diffusionsschritten.

2. WAV auf Festplatte speichern und abspielen

Das Werkzeug gibt Base64-PCM-WAV (16 Bit, Mono, 24 kHz) zurück. Dekodieren + Schreiben:

import base64, json
payload = json.loads(ergebnis_text)              # JSON parsen, das das Werkzeug zurückgibt
open("out.wav","wb").write(base64.b64decode(payload["wav_base64"]))

Auf macOS: afplay out.wav. In MP3 konvertieren mit ffmpeg -i out.wav -codec:a libmp3lame -b:a 128k out.mp3.

3. Stimmklonung – Komplettlösung

Für die Klonung wird ein 3-10 Sekunden langes Referenzclip benötigt, das das Modell als Sprecherembedding verwendet. Der MCP-Server bietet KEINE Profilerstellung – er liest nur vorhandene Profile. Zwei Wege zur Erstellung:

Weg A – Mitgeliefertes Hilfsskript (macOS, empfohlen für neue Klone):

scripts/record-reference.sh ~/Downloads/my-ref.wav 12 1
# Argumente: Ausgabepfad raw_duration_sec mic_index
# Standard mic_index=1 (MacBook eingebaut); Geräte auflisten via:
#   ffmpeg -f avfoundation -list_devices true -i ""

Das Skript gibt hörbare Countdown + Start/Stopp-Signale über macOS say + /System/Library/Sounds/Ping.aiff aus, damit der Benutzer weiß, wann er sprechen soll (Terminal-Stdout ist gepuffert – Text-Prompts „Jetzt sprechen" kommen zu spät). Es zeichnet ein längeres Rohfenster auf, trimmt dann auf ~10 Sekunden Sprache via silenceremove + atrim, spielt es zur Überprüfung ab und gibt den nächsten curl-Befehl aus.

Weg B – Manuell:

# 1. Aufnahme (Mono, 24 kHz nativ – entspricht der internen Rate des Modells)
ffmpeg -f avfoundation -i ":1" -t 12 -ac 1 -ar 24000 raw.wav

# 2. Stille am Anfang entfernen + die ersten 10 Sekunden Sprache nehmen
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. Überprüfen
ffmpeg -i ref.wav -af volumedetect -f null - 2>&1 | grep volume   # max sollte > -20 dB

POST an /profiles (multipart/form-data – erforderliche Felder: name, ref_audio):

curl -X POST http://127.0.0.1:3900/profiles \
  -F "name=carlos-klon" \
  -F "[email protected]" \
  -F "ref_text=Der genaue Text, der im Clip gesprochen wurde" \
  -F "language=German" \
  | python3 -m json.tool
# gibt zurück { "id": "abc12345", "name": "carlos-klon" }

Nach der Erstellung profile_id an generate_speech übergeben (via MCP) oder direkt via POST /generate. Profile bleiben in SQLite + Referenz-Audiodateien erhalten unter ~/Library/Application Support/OmniVoice/voices/<id>.<ext> (das Backend behält die hochgeladene Erweiterung bei – .wav, wenn Sie eine WAV hochgeladen haben, .mp3 bei MP3 usw.). Der Zustand bleibt über Backend-Neustarts hinweg erhalten.

Tipps für Referenzclips mit spürbarem Einfluss auf die Qualität:

FaktorWarum es wichtig ist
Ein einzelner SprecherGemischte Sprecher verwischen das Embedding
Saubere Sprache, keine Musik/GeräuscheDas Modell embeddet auch das Rauschen
Natürliche Prosodie (Pangramme vermeiden)Diffusionsproben replizieren die Prosodie, nicht nur die Klangfarbe
3-10 Sekunden ist der optimale Bereich< 3 s hat zu wenig Information; > 10 s erhöht Rechenaufwand ohne Qualitätsgewinn
ref_text mit dem Gesprochenen abgleichenVerbessert die Ausrichtung, besonders bei verrauschten Referenzen
language korrektFalsche Sprache → cross-linguale Transfer-Artefakte
Lautstärkespitze ≥ -15 dBLeise Referenzen funktionieren, aber normalisieren schlecht

4. Stimmdesign (ohne Referenzclip)

profile_id weglassen; stattdessen eine instruct-Zeichenkette mit der gewünschten Stimme übergeben:

generate_speech(
    text="Willkommen in der Zukunft von agentischen Systemen.",
    instruct="warmherzige, mittelalte weibliche Erzählerin, ruhiger autoritativer Ton, Dokumentationsstil",
)

Vorgefertigte Anleitungen gibt es via list_personalities – kopieren Sie die passende zur Aufgabenstellung (Erzähler, Lässig, Nachrichtensprecher, usw.).

5. Videosynchronisation (nur Web-UI)

Der MCP-Server stellt den Synchronisationsendpunkt nicht bereit. Die vollständige Pipeline (Transkribieren → Übersetzen → Neu vertonen → Multiplexen) läuft hinter der Desktop-Oberfläche (bun run desktop in $OMNIVOICE_HOME) und den /dub/* REST-Routen. Wenn der Benutzer nach Videosynchronisation fragt, verweisen Sie ihn auf die UI; nutzen Sie dieses Skill nur für die oben genannten Synthese-Grundfunktionen.

Wann OmniVoice NICHT verwendet werden sollte

  • Schnelle englischsprachige Erzählung auf schwacher Hardware → kokoro-tts ist ~10× kleiner und 2× Echtzeit auf CPU (siehe references/engines-comparison.md)
  • Hürdenärmste einmalige TTS → Edge TTS benötigt keine Installation oder Backend
  • Höchstmögliche Qualität unabhängig von den Kosten → ElevenLabs hat bei englischer Erzählungsglätte noch die Nase vorn; OmniVoice liegt gleichauf oder übertrifft bei Mehrsprachigkeit + Klonung
  • Echtzeit-Streaming-Diktat → das OmniVoice Desktop-Widget verwenden (⌘+⇧+Space), nicht den MCP-Server

Ressourcen

Backend Swagger / OpenAPI: http://127.0.0.1:3900/docs (wenn Backend läuft).

Upstream: github.com/debpalash/OmniVoice-Studio – FSL-1.1-ALv2 (kostenlos für private/interne/nicht-kommerzielle Nutzung; konvertiert zwei Jahre nach jedem Release automatisch zu Apache-2.0).

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

Verwandte Skills