Communitygithub.com

OmniVoice 日本語版

OmniVoice Studio MCP サーバーを使ったローカルTTS、音声クローン、音声デザイン、ビデオ吹き替え。オープンソースの ElevenLabs 代替であり、データがマシン外に出ず、MPS/CUDA/CPU で動作。

OmniVoice 日本語版 とは?

OmniVoice スキルは、OmniVoice Studio MCP サーバーを介してローカルで高品質な音声合成を実現する AI エージェント用スキルです。テキストから音声を生成するだけでなく、たった 3 秒の参照音声クリップから声をクローンしたり、性別・年齢・アクセント・ピッチ・スタイルを指定して理想の声をデザインすることも可能です。646 の言語に対応しており、ビデオ吹き替え機能も備えています。API キーを必要とせず、すべての処理がローカルマシン内で完結するため、プライバシー、コスト、オフライン環境が重要なシーンで非常に有用です。特に非英語のナレーションや、Edge TTS や kokoro では性能が不足する場面での代替案として最適です。このスキルは Claude Code、Cursor、Codex などの MCP クライアントと互換性があり、ユーザーは自然言語のトリガー(「omnivoice」「voice clone」「tts」「narrate」「dub video」「local tts」など)を使って簡単に音声生成処理を呼び出すことができます。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

OmniVoice

概要

ローカルで音声を生成する OmniVoice Studio MCP サーバーを利用します。ツール: generate_speech, list_voices, list_personalities, list_languages, check_health。リソース: voice://{id}, history://recent。

前提条件 — バックエンドが稼働している必要があります

MCP ツールはすべて $OMNIVOICE_API_URL(デフォルトは http://localhost:3900)にアクセスします。バックエンドがダウンしていると、すべてのツールが接続エラーを返します。インストールと起動:

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

その後:

scripts/check-health.sh        # 起動していれば exit 0
scripts/start-backend.sh       # バックグラウンドで起動 (MPS/CUDA 自動検出)

初回の合成呼び出しで k2-fsa/OmniVoice モデル (~2.4 GB) を HuggingFace から遅延ダウンロードします。キャッシュされるため、2回目以降の起動は高速です。

タスク一覧 — 適切なツールを選択

タスクツール備考
バックエンドが起動しているか確認check_health`{"status":"ok","device":"mps
保存された音声でテキスト→音声generate_speech(text, profile_id)base64 WAV を返す。 profile_id="demo0001" はバンドルされたデモ音声
クローンなしでテキスト→音声 (音声デザイン)generate_speech(text, instruct="…")profile_id を省略し、instruct に例: "優しい中年女性ナレーター、落ち着いた口調" を指定
多言語ナレーションgenerate_speech(text, language="es")ISO 639 コードまたは "Auto" が使用可能
既存の音声一覧表示list_voicesid、名前、タイプ、パーソナリティを返す
パーソナリティプリセット一覧表示list_personalitiesナレーター / カジュアル / ニュースアンカーなどとその instruct 文字列を返す
サポート言語一覧表示list_languages合計 646 言語。人気20言語 + 総数を返す

重要な判断(どのエンジンを使うか、OmniVoice を kokoro / Edge TTS / ElevenLabs の代わりに選ぶタイミング)については、references/engines-comparison.md を参照してください。

MCP の配線詳細、バックエンドのライフサイクル、トラブルシューティング、クリーンな停止方法については、references/mcp-setup.md を参照してください。

一般的なワークフロー

1. デモ音声を使ったワンショットナレーション

# MCP クライアント経由で呼び出されます(エージェントが自動実行します):
result = generate_speech(
    text="こんにちは — これは OmniVoice がローカルで音声を生成しているテストです。",
    profile_id="demo0001",
    language="Japanese",
    steps=16,                   # 8 = 高速/下書き · 16 = バランス · 32 = 高品質
)
# result は JSON で、audio_id、generation_time_s、audio_duration_s、format、wav_base64 を含みます

ベンチマーク: Apple Silicon MPS 上、16 拡散ステップで約 4.2 秒の音声をサーバー側約 24 秒で生成。

2. WAV をディスクに保存して再生

ツールは base64 エンコードされた PCM WAV(16ビット、モノラル、24 kHz)を返します。デコードして書き込み:

import base64, json
payload = json.loads(result_text)            # ツールが返す JSON をパース
open("out.wav","wb").write(base64.b64decode(payload["wav_base64"]))

macOS の場合: afplay out.wav。MP3 変換: ffmpeg -i out.wav -codec:a libmp3lame -b:a 128k out.mp3。

3. 音声クローン — エンドツーエンドのレシピ

クローンには、モデルが話者埋め込みとして使用する 3~10 秒の参照クリップが必要です。MCP サーバーはプロファイル作成機能を公開していません — 既存のプロファイルを読み取るのみです。プロファイルを作成するには 2 つの方法があります:

方法 A — バンドルヘルパー (macOS、新規クローンに推奨):

scripts/record-reference.sh ~/Downloads/my-ref.wav 12 1
# 引数: 出力パス 録音時間(秒) マイクインデックス
# デフォルトの mic_index=1 (MacBook 内蔵); デバイス一覧表示:
#   ffmpeg -f avfoundation -list_devices true -i ""

このスクリプトは、macOS の say コマンドと /System/Library/Sounds/Ping.aiff を使用して聴覚可能なカウントダウンと開始/終了合図を提供するため、ユーザーは発話タイミングを正確に把握できます(ターミナルの stdout はバッファリングされるため、テキスト「speak now」プロンプトは遅れて届きます)。より長い生の録音ウィンドウを取得した後、silenceremove + atrim で約 10 秒の音声にトリミングし、再生確認を行い、次のステップの curl コマンドを表示します。

方法 B — 手動:

# 1. 録音 (モノラル、24 kHz ネイティブ — モデルの内部レートに一致)
ffmpeg -f avfoundation -i ":1" -t 12 -ac 1 -ar 24000 raw.wav

# 2. 先頭の無音を除去し、最初の 10 秒の音声を抽出
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. 確認
ffmpeg -i ref.wav -af volumedetect -f null - 2>&1 | grep volume   # 最大値は -20 dB より大きいこと
afplay ref.wav

/profiles に POST (multipart/form-data — 必須フィールド: name, ref_audio):

curl -X POST http://127.0.0.1:3900/profiles \
  -F "name=carlos-clone" \
  -F "[email protected]" \
  -F "ref_text=クリップ内で話されている正確なテキスト" \
  -F "language=Japanese" \
  | python3 -m json.tool
# 返り値: { "id": "abc12345", "name": "carlos-clone" }

作成後、profile_id を generate_speech(MCP 経由)または直接 POST /generate で使用します。プロファイルは SQLite と参照音声ファイル(~/Library/Application Support/OmniVoice/voices/<id>.<ext>)に保存されます。バックエンドはアップロードされた拡張子を保持します(WAV の場合は .wav、MP3 の場合は .mp3 など)。状態はバックエンドの再起動後も維持されます。

品質に大きく影響する参照クリップのヒント:

要因なぜ重要か
単一話者複数話者が混ざると埋め込みがぼやける
クリーンな音声、音楽やノイズなしモデルはノイズも埋め込んでしまう
自然なプロソディ(パングラムを避ける)拡散サンプルは音色だけでなくプロソディも再現する
3~10 秒が最適3 秒未満は情報不足、10 秒超は品質向上なく計算量が増加
ref_text を実際の発話に合わせる特にノイズの多い参照でアライメントが向上
language が正しい言語が間違っていると、言語横断的な転移アーティファクトが発生
ラウドネスのピーク ≥ -15 dB静かな参照でも動作するが、正規化が不十分

4. 音声デザイン(参照クリップ不要)

profile_id を省略し、希望する音声を説明する instruct 文字列を提供:

generate_speech(
    text="エージェントシステムの未来へようこそ。",
    instruct="温かみのある中年女性ナレーター、落ち着いた権威ある口調、ドキュメンタリースタイル",
)

list_personalities で既製の instruct を取得し、目的に合ったもの(ナレーター、カジュアル、ニュースアンカーなど)をコピーしてください。

5. ビデオ吹き替え(ウェブ UI のみ)

MCP サーバーは吹き替えエンドポイントを公開していません。文字起こし→翻訳→再音声→マルチプレックスの完全なパイプラインは、デスクトップ UI($OMNIVOICE_HOME で bun run desktop)と /dub/* REST ルートの背後にあります。ユーザーがビデオ吹き替えを依頼した場合は、UI を案内し、このスキルは上記の合成プリミティブにのみ使用してください。

OmniVoice を使用すべきでない場合

  • 低スペックハードウェアでの高速英語ナレーションのみ → kokoro-tts は約 10 分の 1 のサイズで、CPU 上でリアルタイムの 2 倍の速度(references/engines-comparison.md 参照)
  • 最も低い摩擦で一度だけ TTS を使いたい場合 → Edge TTS はインストールもバックエンドも不要
  • コストを気にせず最高品質を求める場合 → ElevenLabs は依然として英語ナレーションの洗練度で優位。OmniVoice は多言語とクローンで同等かそれ以上
  • リアルタイムストリーミングディクテーション → OmniVoice デスクトップウィジェット(⌘+⇧+Space)を使用し、MCP サーバーは使用しない

リソース

バックエンド Swagger / OpenAPI: http://127.0.0.1:3900/docs(バックエンド起動時)

アップストリーム: github.com/debpalash/OmniVoice-Studio — FSL-1.1-ALv2(個人/内部/非商用利用は無料。各リリースから 2 年後に自動的に 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'.

関連スキル