Skip to main content
Glama

VoiceCard

Klonen Sie Ihre Stimme und verwandeln Sie sie in ein teilbares Wellenform-Video – alles gesteuert über MCP. Keine GUI. Nur Apple Silicon.

Stimmklonen ist inzwischen Massenware. Der Unterschied liegt in der Zustellung: Ein kurzes MP4 mit einer schönen audio-reaktiven Wellenform wird inline in WhatsApp, iMessage, Signal und Slack abgespielt, während rohe Audiodateien hängen bleiben, nicht automatisch abspielen oder nicht zwischen iOS/Android funktionieren. Jeder Clip, den Sie senden, ist auch eine Werbung für das Tool. Das ist die ganze Idee.

Das Frontend ist das MCP. Sie sprechen damit über Claude Code, Cursor oder einen anderen MCP-fähigen Agenten:

„Klonen Sie meine Stimme aus ~/Desktop/me.mov (hier ist das Transkript) und erstellen Sie dann einen 15-Sekunden-Clip im Miami-Palette-Stil, der ‚Happy Birthday‘ sagt, mit meinem Foto in der Mitte.“

So funktioniert es

Vollständig eigenständig. Sprache wird lokal von mlx-audio (Qwen3-TTS über MLX) erzeugt, das Wellenform-Video wird mit MLX / Pillow gerendert und mit ffmpeg gemuxt. Keine Cloud, kein Voicebox, keine Desktop-App.

Klonen ist Zero-Shot-In-Context-Learning: Es trimmt Ihre Referenz auf ~12 Sekunden und konditioniert darauf. Es gibt keinen Trainingsschritt und kein separates Modell pro Stimme.

Related MCP server: Rheo MCP Server

Voraussetzungen

  • Apple-Silicon-Mac (arm64). Wird beim Start erzwungen.

  • Sonst nichts manuell zu installieren. ffmpeg ist gebündelt enthalten (statisches Binary über imageio-ffmpeg); ein System-ffmpeg im PATH wird automatisch verwendet, falls vorhanden.

Der erste Lauf ist der langsame

Die Installation selbst ist schnell, aber sie lädt nicht die KI-Modelle herunter. Beim ersten clone_voice / make_clip lädt VoiceCard träge in den gemeinsamen Hugging-Face-Cache (~/.cache/huggingface/hub/):

  • Qwen3-TTS-Gewichte (~einige GB) — Sprachsynthese.

  • Whisper (large-v3-turbo, ~1,5 GB) — wird verwendet, um Referenzen automatisch zu transkribieren und Untertitel zu timen.

Beide werden gecacht, das passiert also nur einmal. Planen Sie ein paar Minuten, etwas Bandbreite und ~mehrere GB Speicherplatz für diesen ersten Aufruf ein.

Kein Hugging-Face-Konto oder -Token erforderlich — beide Modelle sind öffentlich und werden anonym heruntergeladen. Hugging Face wird nur als Download-Host verwendet. Anonyme Downloads sind jedoch ratenbegrenzt; wenn der erste Download langsam oder gedrosselt ist, setzen Sie ein kostenloses Token für schnellere/höhere Download-Raten (völlig optional):

export HF_TOKEN=hf_xxx      # optional — only speeds up / de-throttles the first download

Installation

Benötigt uv (brew install uv oder den Einzeiler-Installer von dieser Seite). Sonst nichts — ffmpeg ist gebündelt, die Modelle laden sich selbst herunter.

Einzeiler, direkt von GitHub:

uv tool install git+https://github.com/JasonMakes801/voicecard-mcp

Dann registrieren Sie es bei Claude Code (der Befehl voicecard ist jetzt in Ihrem PATH):

claude mcp add -s user voicecard -- voicecard

Das war's. Bitten Sie Ihren Agenten, clone_voice und make_clip auszuführen.

git clone https://github.com/JasonMakes801/voicecard-mcp
cd voicecard-mcp
uv tool install .                      # or: uv run voicecard

# register the in-place checkout
claude mcp add -s user voicecard -- uv --directory "$PWD" run voicecard

Werkzeuge

Werkzeug

Was es tut

list_voices()

Listet gespeicherte Stimmen auf, jeweils mit ref_text, ref_audio und zugehörigem avatar (oder null).

palettes()

Listet verfügbare Paletten (Name + Farben) und rendert ein visuelles Farbfeld-Blatt (gibt {palettes, swatch} zurück); zeigen Sie das Farbfeld, damit der Benutzer nach Sicht wählt.

clone_voice(name, source, transcript?, photo?)

Klont aus einer Audio- oder Videodatei. Trimmt die Referenz auf ~12s und speichert ein Profil. transcript ist optional — lassen Sie es weg und VoiceCard transkribiert die Referenz automatisch (Whisper). photo ist ein optionaler Begleit-Avatar, der kopiert wird, damit Stimme und Gesicht zusammen reisen.

speak(text, voice)

Erzeugt Sprache in einer geklonten Stimme; gibt einen WAV-Pfad zurück.

make_clip(text, voice, palette?, photo?, label?, aspect?, layout?, arc?, captions?)

Erzeugt Sprache und rendert das teilbare Wellenform-MP4. Untertitel (Pop-up-Blasen, die auf die Auslieferung getimt sind) sind standardmäßig aktiviert; der Avatar fällt auf das gespeicherte photo der Stimme zurück. Gibt den MP4-Pfad zurück.

Paletten: Noir (Standard), 70s Gold, Miami, Aurora, Sunset, Mint, Blueprint Seitenverhältnis: square (1080², Standard), portrait (9:16) Layout: linear (Standard — kreisförmiges Foto + kompakte Gradient-Wellenform darunter, Dynamic-Island-Stil) · circle (zentrierter audio-reaktiver Spektrum-Ring) Bogen (nur Kreis-Layout): full (Standard, gespiegelter Ring) · top (Spikes über der oberen Hälfte)

Konfiguration (Umgebungsvariablen)

Variable

Standard

VOICECARD_OUT

~/VoiceCard (Profile + gerenderte Clips)

VOICECARD_MODEL

mlx-community/Qwen3-TTS-12Hz-1.7B-Base-bf16

VOICECARD_WHISPER

mlx-community/whisper-large-v3-turbo

VOICECARD_FFMPEG

überschreibt das ffmpeg-Binary (sonst System-PATH, sonst gebündelt)

VOICECARD_URL

QR-Ziel, das auf jedem Clip gedruckt wird

VOICECARD_TAGLINE

Tagline, die auf jedem Clip gedruckt wird

Testen

uv pip install -e ".[test]"

pytest tests/test_fast.py tests/test_mcp.py -q      # fast: no model, no network (~1s)
VOICECARD_RUN_MODEL_TESTS=1 pytest tests/test_integration.py -q   # real Qwen+Whisper (downloads GBs)
bash scripts/virgin_install_test.sh                 # fresh-venv install + smoke, from scratch
  • Schnell (test_fast.py, test_mcp.py): Paletten-Integrität, Untertitel-Ausrichtung (Eingabewörter, STT-Timings), Argumentvalidierung und die MCP-Protokolloberfläche.

  • Integration (test_integration.py, gated): Klonen → Sprechen → make_clip Ende-zu-Ende, wobei geprüft wird, dass das MP4 Audio+Video und eine Dauer ungleich null hat.

  • Jungferninstallation (scripts/virgin_install_test.sh): installiert in eine Wegwerf-venv und verifiziert Importe, den gebündelten-ffmpeg-Fallback (ohne brew), das Konsolenskript und die Modell-freien Suiten gegen das installierte Paket.

Hinweise

  • Die Ausgabe ist Stereo, +faststart, H.264 High Profile — abgestimmt auf Inline-Autoplay in Messengern.

  • Die Wellenform ist so gestaltet, dass sie immer lebendig aussieht, nicht wie ein Diagnose-Spektrumanalysator.

  • Core ML / ANE-Auslagerung des autoregressiven Decoders ist nicht geplant (dynamische Formen + KV-Cache + sequentielle Dekodierung passen schlecht zu ANE). Eine zukünftige Core-ML-Vocoder-Auslagerung ist das einzige Stück, das es wert ist, erkundet zu werden.

Roadmap

  • Untertitel ohne Whisper (Qwens eigene Ausrichtung ernten). Qwen3-TTS läuft mit 12 Hz und kennt das Wort-Timing intern bereits über seine Cross-Attention (ein monotoner Text-Token → Audio-Frame-Grat). Heute gewinnen wir das Timing zurück, indem wir Whisper auf der Ausgabe laufen lassen — robust, aber ein ganzes zweites Modell. Stattdessen den Decode von mlx-audio patchen, um die Cross-Attention für die Ziel-Region sichtbar zu machen (die ICL-Referenz vorn abschneiden), eine monotone Ausrichtung extrahieren und Text-Tokens → Wörter abbilden. Das würde Whisper vom Pro-Clip-Hot-Path entfernen: In Kombination mit der Übergabe von transcript beim Klonen würde Whisper für einen normalen Benutzer nie laufen (oder herunterladen). Risiko: Der interne Decode von mlx-audio ist keine stabile API, also Version pinnen und einen Drift-Test hinzufügen (Qwen-abgeleitete Timings vs. Whisper auf einer Fixture; fehlschlagen, wenn sie abweichen). Hinweis: Es gibt keine Phoneme zum Ausrichten — nur BPE-Text-Tokens → Audio-Frames.

Lizenz

MIT. Sie sind dafür verantwortlich, nur Stimmen zu klonen, die Sie besitzen oder zu deren Verwendung Sie autorisiert sind.

Related MCP Connectors

Related MCP Servers