Skip to main content
Glama

VoiceCard

あなたの声をクローンし、共有可能な波形動画に変換します。すべてMCPで駆動。GUIなし。Apple Siliconのみ対応。

音声クローンはもはやコモディティです。差別化要因は配信にあります。美しいオーディオ反応型波形を備えた短いMP4は、WhatsApp、iMessage、Signal、Slackでインライン再生されます。生の音声ファイルは、再生が止まったり、自動再生に失敗したり、iOS/Android間で互換性がなかったりします。送るすべてのクリップが、そのツールの広告にもなります。それが全体のアイデアです。

フロントエンドはMCPです。Claude Code、Cursor、またはMCP対応エージェントから操作します。

「~/Desktop/me.movから私の声をクローンして(トランスクリプトはこれ)、マイアミパレットの15秒のクリップで「ハッピーバースデー」と言って、中央に私の写真を入れて」

仕組み

完全にスタンドアロンです。音声はmlx-audio(MLX経由のQwen3-TTS)によってローカルで生成され、波形ビデオはMLX / Pillowでレンダリングされ、ffmpegでミックスされます。クラウドなし、Voiceboxなし、デスクトップアプリなし。

クローンはゼロショットのインコンテキスト学習です。参照を約12秒にトリミングして条件付けします。トレーニングステップも、声ごとの別モデルもありません。

Related MCP server: Rheo MCP Server

要件

  • Apple Silicon Mac(arm64)。起動時に強制されます。

  • 手動でインストールするものは他にありません。ffmpegはバンドルされています(imageio-ffmpegによる静的バイナリ)。PATH上のシステムffmpegがあれば自動的に使用されます。

初回実行が遅い

インストール自体は高速ですが、AIモデルはダウンロードされません。最初のclone_voice / make_clipで、VoiceCardは共有のHugging Faceキャッシュ(~/.cache/huggingface/hub/)に遅延取得します。

  • Qwen3-TTSウェイト(約数GB)— 音声合成用。

  • Whisper(large-v3-turbo、約1.5GB)— 参照の自動文字起こしとキャプションのタイミング調整に使用。

両方ともキャッシュされるため、一度だけ発生します。初回呼び出しには数分、帯域幅、約数GBのディスクを予算に入れてください。

Hugging Faceアカウントやトークンは不要です — 両モデルは公開されており、匿名でダウンロードされます。Hugging Faceはダウンロードホストとしてのみ使用されます。ただし、匿名ダウンロードはレート制限があります。最初のダウンロードが遅い、または制限されている場合は、無料トークンを設定すると、より高速/高レートのダウンロードが可能です(完全に任意)。

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

インストール

uvが必要です(brew install uv、またはそのページのワンライナーインストーラー)。他には何も必要ありません — ffmpegはバンドルされており、モデルは自動的にダウンロードされます。

GitHubからのワンライナー:

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

次に、Claude Codeに登録します(voicecardコマンドがPATHに追加されます):

claude mcp add -s user voicecard -- voicecard

これで完了です。エージェントにclone_voiceとmake_clipを依頼してください。

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

ツール

ツール

機能

list_voices()

保存された音声を一覧表示します。各音声にはref_text、ref_audio、および付随するavatar(またはnull)がペアになっています。

palettes()

利用可能なパレット(名前+色)を一覧表示し、視覚的なスウォッチシートをレンダリングします({palettes, swatch}を返します)。ユーザーが目で選べるようにスウォッチを表示します。

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

オーディオまたはビデオファイルからクローンします。参照を約12秒にトリミングし、プロファイルを保存します。transcriptはオプションです — 省略すると、VoiceCardが参照を自動文字起こしします(Whisper)。photoはオプションの付随アバターで、プロファイルにコピーされ、声と顔が一緒に移動します。

speak(text, voice)

クローンした声で音声を生成します。wavパスを返します。

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

音声を生成し、共有可能な波形mp4をレンダリングします。キャプション(発話に合わせてタイミング調整されたポップアップバブル)はデフォルトでオンです。アバターは音声の保存済みphotoにフォールバックします。mp4パスを返します。

パレット: Noir(デフォルト)、70s Gold、Miami、Aurora、Sunset、Mint、Blueprint アスペクト: square(1080²、デフォルト)、portrait(9:16) レイアウト: linear(デフォルト — 円形写真+その下にコンパクトなグラデーション波形、Dynamic-Islandスタイル)・circle(中央にオーディオ反応型スペクトラムリング) アーク(circleレイアウトのみ):full(デフォルト、ミラーリングされたリング)・top(上半分にスパイク)

設定(環境変数)

変数

デフォルト

VOICECARD_OUT

~/VoiceCard(プロファイル+レンダリングされたクリップ)

VOICECARD_MODEL

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

VOICECARD_WHISPER

mlx-community/whisper-large-v3-turbo

VOICECARD_FFMPEG

ffmpegバイナリを上書き(それ以外はシステムPATH、次にバンドル)

VOICECARD_URL

各クリップに印刷されるQRターゲット

VOICECARD_TAGLINE

各クリップに印刷されるタグライン

テスト

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
  • 高速(test_fast.py、test_mcp.py):パレットの整合性、キャプションの配置(入力単語、STTタイミング)、引数検証、MCPプロトコルサーフェス。

  • 統合(test_integration.py、ゲート付き):クローン→スピーク→make_clipのエンドツーエンドで、mp4にオーディオ+ビデオがあり、期間がゼロでないことを検証。

  • クリーンインストール(scripts/virgin_install_test.sh):使い捨てvenvにインストールし、インポート、バンドルffmpegフォールバック(brewなし)、コンソールスクリプト、およびインストール済みパッケージに対するモデルなしスイートを検証。

ノート

  • 出力はステレオ、+faststart、H.264 Highプロファイル — メッセンジャーでのインライン自動再生に最適化されています。

  • 波形は、診断用スペクトラムアナライザーではなく、常に生きているように見えるようにスタイライズされています。

  • 自己回帰デコーダーのCore ML / ANEオフロードは計画されていません(動的シェイプ+KVキャッシュ+シーケンシャルデコードはANEに不向きです)。将来のCore ML ボコーダーオフロードだけが検討に値します。

ロードマップ

  • Whisperなしのキャプション(Qwen自身のアライメントを活用)。 Qwen3-TTSは12Hzで動作し、クロスアテンション(単調なテキストトークン→オーディオフレームのリッジ)を介して単語タイミングを内部的にすでに知っています。現在は、出力に対してWhisperを実行してタイミングを復元しています — 堅牢ですが、モデル全体がもう1つ必要です。代わりに、mlx-audioのデコードにパッチを当てて、ターゲット領域(ICL参照をフロントカット)のクロスアテンションを表面化し、単調なアライメントを抽出し、テキストトークンを単語にマッピングします。これにより、Whisperをクリップごとのホットパスから外すことができます。クローン時にtranscriptを渡すことと組み合わせると、通常のユーザーはWhisperを実行(またはダウンロード)する必要がなくなります。リスク:mlx-audioの内部デコードは安定したAPIではないため、バージョンを固定し、ドリフトテストを追加します(Qwen由来のタイミングとWhisperをフィクスチャで比較し、乖離したら失敗)。注:アラインする音素はありません — BPEテキストトークン→オーディオフレームのみです。

ライセンス

MIT。あなたは、所有している、または使用を許可されている声のみをクローンする責任があります。

Related MCP Connectors

Related MCP Servers