Communitygithub.com

音声&効果音ジェネレーター

テキスト読み上げ(TTS)、ナレーション配置/同期、カスタム効果音(SFX)を生成します。既存の動画にナレーションを追加/置換/同期したり、タイムライン編集後もナレーションを追従させたい場合に使用します。

音声&効果音ジェネレーター とは?

このスキルは、テキスト読み上げ(TTS)によるナレーション/ボイスオーバーの生成、既存の動画タイムラインへのナレーションの追加・置換・同期、そしてカスタム効果音の生成を支援します。ユーザーがテキストから音声を生成したい場合や、既存のナレーションを視覚的な編集(トリミング、速度変更など)後も同期させたい場合に特に有用です。対応プラットフォームはDoubao、ElevenLabs、MiniMax、Inworld、Fish Audio、Speechify、OpenAI、Gemini、Mistral、Cartesiaで、各プロバイダー固有の音声IDと設定が必要です。音声試聴機能(カスタムウィジェット)を提供し、ユーザーが最適な音声を選べるようにします。効果音については、まず内蔵ライブラリを検索し、該当がない場合のみテキスト説明から生成します。プロバイダーごとの細かな制御パラメータ(速度、感情表現、アクセントなど)にも対応しており、ElevenLabs v3ではインラインのオーディオタグによる感情やペースの微調整も可能です。

対応~Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/0xsline/openchatcut/tree/HEAD/src/agent/skills/voice

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

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

ドキュメント

音声&効果音ジェネレーター は何をしますか?

ボイスオーバー(TTS)と効果音を生成します。TTSの場合は、submit_voice を呼び出す前に具体的なプロバイダーと音声を選択してください。

使用タイミング

  • テキストからナレーション/ボイスオーバーを生成する
  • 動画用のテキスト読み上げ音声を作成する
  • 既存の動画、タイムライン、スクリーンレコーディング、スライドアニメーション、製品デモ、Bロール編集、MG解説、またはその他のビジュアルシーケンスにナレーション/ボイスオーバーを追加、置換、またはやり直す
  • ビジュアルをトリミング、高速化、低速化、移動、並べ替え、または置換した後も、既存のナレーション/ボイスオーバーを揃えたままにする
  • ユーザーが具体的な音声を選択していない場合に、TTS音声の選択肢を提供し試聴させる
  • 効果音ライブラリを最初に確認した後、テキスト説明からカスタム効果音を生成する

TTS(テキスト読み上げ)

現在のリクエストに既存のビジュアルターゲットがあり、ユーザーがそのターゲットに対してナレーション、ボイスオーバー、吹き替え、または置換音声を希望する場合、新しいナレーションを作成する前に、既存のナレーションテキストを使用してTTSを生成したり、オーディオを配置したりする前に、references/video-sync.md を読んでください。これは、ユーザーが明示的に「同期」や「ビジュアルに合わせる」と言わなかった場合でも行ってください。ビジュアルターゲットが存在するということは、ナレーションのタイミングと意味が画面上のコンテンツに従う必要がある可能性があることを意味します。ビジュアルターゲットがない場合、またはユーザーがテキストから単にオーディオアセットを必要としている場合にのみ、通常のスタンドアロンTTSパスを使用してください。

また、タイムラインにすでにナレーション/ボイスオーバーがあり、ユーザーがそのボイスオーバーを揃えたままビジュアルを変更するよう要求した場合は、references/video-sync.md を読んでください。これは、新しいTTSが必要ない場合でも、同期を維持するタスクです。

submit_voice を使用してTTSオーディオアセットを作成します。現在のMCPツールの契約は次のとおりです:

  • provider は必須です。設定可能な選択肢は doubao、elevenlabs、minimax、inworld、fishaudio、speechify、openai、gemini、mistral、または cartesia です。すべてのプロバイダーはオプトイン制です。機能プロンプトで設定済みとして表示されているプロバイダーのみを使用してください。
  • voiceId は必須で、具体的であり、プロバイダー固有です。唯一の例外は、意図的なMiniMax timbreWeights ミキシングの場合で、その場合は voiceId を空にする必要があります。カタログを混在させないでください。
  • references/voices.md のキュレーションカタログは、Doubao、ElevenLabs、およびMiniMaxのみをカバーしています。他のプロバイダーには、OpenChatCutにバンドルされたプリセットやサンプルカタログはありません。ユーザーまたはそのプロバイダーアカウントから具体的な音声IDを要求してください。プリセットや /voice-samples/... URLを決して発明しないでください。
  • AI SDK バックエンドのフィールドはプロバイダー固有です:OpenAI は modelId、speed、outputFormat、および instructions をサポートしています。Gemini は modelId、outputFormat、および instructions をサポートしています。Mistral は modelId および outputFormat をサポートしています。Cartesia は modelId、speed、languageCode、および outputFormat をサポートしています。サポートされていない、または要求されていないフィールドは省略してください。
  • Inworld、Fish Audio、および Speechify は、voiceId とオプションの modelId のみを受け入れます。これらのプロバイダーに表現力、速度、言語、または出力制御を渡さないでください。
  • submit_voice はオーディオアセットのみを作成します。タイムラインへの配置、置換、トリミング、およびアライメントは、後でタイムラインツールを使用して行われます。
  • 長いナレーションの場合、複数の submit_voice 呼び出しが役立つことがあります。ワークフローが個別にタイミング調整または配置された音声クリップの恩恵を受ける場合、自然なポーズ、文グループ、またはスクリプトのビート境界で分割してください。
  • Doubao は speedRatio、loudnessRatio、pitch、emotion、emotionScale、performancePrompt、および explicitDialect をサポートしていますが、すべての音声がすべての表現力制御をサポートしているわけではありません。使用する前に references/voices.md を確認してください。
  • ElevenLabs は、公式の音声設定、言語、シード、出力、正規化、発音辞書、継続性、ロギング、およびレイテンシ制御を保持します。MiniMax は、references/minimax-tts.md に文書化された専用の制御を保持します。

現在のキュレーション音声に対するDoubao制御のサポート:

  • vivi、xiaohe、yunzhou、xiaotian、naiqimengwa、yingtaowanzi、wenroumama、zhixingnv、dayi、jitangnv、liuchang、ruyayichen、morgan、qingcang、huiben、popo、yuanboxiaoshu、baqiqingshu、および tangseng は、明示的な emotion / emotionScale、performancePrompt、およびASMRスタイルのプロンプト指示をサポートしています。
  • shuanglangshaonian は performancePrompt およびCOT/QAスタイルの指示追従をサポートしていますが、明示的な emotion / emotionScale またはASMRスタイルの制御はサポートしていません。
  • explicitDialect は vivi のみでサポートされており、dongbei、shaanxi、または sichuan を指定できます。

現在のキュレーション音声に対するElevenLabs制御のサポート:

  • amelia、brittney、hope、jessica、arabella、jane、maria、mark、frederick、peter、james、jon、sully、david、および alex はすべて同じリクエストレベルの制御をサポートしています。モデル固有のサポートは引き続きElevenLabsによって検証されます。
  • これらの制御は、特定の演技スタイルの音声ごとの保証ではありません。プリセットタグ/サンプルを使用して自然に適した音声を選択し、制御を適度な配信変更に使用してください。
  • ElevenLabs eleven_v3 の場合、ユーザーが感情、トーン、非言語的手がかり、アクセントのヒント、またはローカルペーシングなどの表現力豊かな配信を要求した場合、インラインオーディオタグが利用可能です。公式の例は、これらの有用なTTSカテゴリに適合します:[happy]、[sad]、[angry]、[excited]、[curious]、[sarcastic]、[crying]、[annoyed]、[appalled]、[thoughtful]、[surprised]、および [mischievously] などの感情/トーンタグ。[whispers]、[laughs]、[sighs]、[exhales]、[inhales deeply]、[clears throat]、[snorts]、[swallows]、[wheezing]、および [coughs] などの発声と非言語的手がかりタグ。[slowly]、[pause]、[short pause]、[long pause]、[rushed]、および [drawn out] などのペーシング/ポーズ/ローカル速度タグ。そして [strong X accent](例:[strong French accent])に加えて、[sings]、[singing]、[woo]、および [pirate voice] などのアクセント/特別パフォーマンスタグ。公式の例は網羅的ではありません。ユーザーがその配信を明示的に要求し、タグが音声の聞こえ方を説明しており、視覚的なアクションではない場合、同様の聴覚タグを試すことができます。タグは直接 text に、影響を与える短いフレーズの近くに記述してください。タグを段落全体の制御ではなく、ローカルなガイダンスとして扱ってください。
  • eleven_v3 のポーズとペーシングについては、必要に応じて句読点、テキスト構造、より短い生成セグメント、または [short pause] や [slowly] などのローカルオーディオタグを使用してください。
// ElevenLabs経由の英語/多言語
submit_voice({
  provider: "elevenlabs",
  text: "Hello world",
  voiceId: "peter",
});

// Doubao経由の中国語
submit_voice({
  provider: "doubao",
  text: "你好世界",
  voiceId: "liuchang",
});

// 速度調整あり(Doubaoのみ)
submit_voice({
  provider: "doubao",
  text: "这是一段稍快的中文旁白。",
  voiceId: "liuchang",
  speedRatio: 1.5,
});

// 表現力豊かなDoubao制御あり
submit_voice({
  provider: "doubao",
  text: "这次事故提醒我们,安全永远不能侥幸。",
  voiceId: "liuchang",
  emotion: "sad",
  emotionScale: 3,
  performancePrompt: "痛心但克制,语速稍慢,像新闻专题旁白",
  pitch: -1,
  speedRatio: 0.92,
});

// ElevenLabs配信制御あり
submit_voice({
  provider: "elevenlabs",
  text: "The launch changed how teams plan their daily work.",
  voiceId: "peter",
  speed: 0.95,
  stability: 0.4,
  similarityBoost: 0.8,
  outputFormat: "wav_44100",
});

// MiniMax TTS(設定されている場合)— references/minimax-tts.md を参照
submit_voice({
  provider: "minimax",
  text: "欢迎使用视频编辑助手。",
  voiceId: "female-yujie",
  speed: 1,
  name: "VO · welcome",
});

// Cartesia はユーザーが正確なアカウント音声IDを確認した後の形式。
// confirmedCartesiaVoiceId はその指定された値を表し、プリセットではありません。
submit_voice({
  provider: "cartesia",
  text: "A concise product introduction.",
  voiceId: confirmedCartesiaVoiceId,
  modelId: "sonic-3",
  speed: 1,
  languageCode: "en",
  outputFormat: "mp3",
});

生成前の音声試聴

ユーザーがTTSを必要としており、まだ具体的な音声を選択していない場合、まずキュレーションされたOpenChatCutの選択肢があるプロバイダーと、アカウント固有の音声IDが必要なプロバイダーを分けてください。

Doubao、ElevenLabs、またはMiniMaxの場合、オプションを推奨、レンダリング、または送信する前に references/voices.md をお読みください。これを、キュレーションされたプリセットID、プロバイダー選択、表示ラベル、タグ、およびバンドルされたサンプルURLの唯一のソースとして使用してください。記憶、翻訳された名前、または大まかなユーザー記述から音声オプションを作成しないでください。

Inworld、Fish Audio、Speechify、OpenAI、Gemini、Mistral、またはCartesiaの場合、発明された試聴リストやサンプルURLを提供しないでください。その設定されたプロバイダーから具体的な音声IDをユーザーに尋ねてください。「温かい女性」のような大まかな説明は有効な voiceId ではありません。

まず、2つの異なる言語を特定します:

  • ユーザー会話言語:ユーザーがあなたと話すために使用した言語。これを使用して、応答、form-visual label、visual-option name、および summary を記述します。
  • ターゲットナレーション言語:合成されるテキストの言語。これはプロバイダーと音声カタログを選択するためだけに使用します。

試聴ウィジェットの送信ボタンは、このビルドのデフォルトラベルに固定されています(submitLabel は受け入れられますがレンダリングされません)。質問ラベルとオプションラベルは、ターゲットナレーション言語ではなく、ユーザー会話言語で保持してください。例:英語ユーザーには submit_label="Submit"、中国語ユーザーには submit_label="提交"、スペイン語ユーザーには submit_label="Enviar"。

「help me generate ... voice over in Chinese」は、中国語のナレーションを要求する英語の会話であるため、試聴ウィジェットのコピーは英語のまま、音声候補はDoubaoから提供されます。

キュレーションプロバイダーの場合:

  1. references/voices.md をターゲットナレーション言語/プロバイダーおよび性別、年齢層、トーン、使用例などの明示的な要件でフィルタリングします。
  2. すべての明示的な要件に一致するプリセットがない場合、正確な一致はないと伝え、明確な注意事項とともに最も近いサポートされているプリセットを提供します。
  3. 一致するキュレーションプリセットを2〜4つ選択します。
  4. widget-forms をロードし、音声オプションと実際のバンドルオーディオサンプルを使用して ask_followup_questions を呼び出します。
  5. ユーザーが選択するのを待ちます。
  6. 選択されたプリセットIDを voiceId として submit_voice を呼び出します。

キュレーションされたOpenChatCutカタログがないプロバイダーの場合は、代わりにフリーテキストの具体的なプロバイダー音声IDを要求します。media を追加したり、/voice-samples/... パスを合成したりしないでください。submit_voice を呼び出す前に、ユーザーが正確なIDを提供/確認するのを待ちます。

各キュレーション試聴オプションについて、value、表示ラベル、media、および summary を references/voices.md の同じプリセット行に結び付けてください。そこに記録されたサンプルURLのみを使用してください。value をプリセットID、media をその一致するサンプルURLとして保持します。name と summary はユーザーの会話言語で記述してください。ターゲットナレーション言語はプロバイダー/音声カタログのみを決定します。送信後、同じ候補リストから表示名をプリセットIDにマッピングし直します。

中国語ナレーションの英語リクエスト:

<widget submit_label="Submit">
  <form-visual
    id="voiceId"
    label="For Chinese voiceover, I recommend a few voices to try:"
    required="true"
  >
    <visual-option
      value="vivi"
      name="Vivi"
      media="/voice-samples/doubao-vivi.mp3"
      aspect-ratio="16:5"
      summary="Female / young / friendly, general"
    />
    <visual-option
      value="xiaohe"
      name="Xiaohe"
      media="/voice-samples/doubao-xiaohe.mp3"
      aspect-ratio="16:5"
      summary="Female / young / soft, clear"
    />
    <visual-option
      value="yunzhou"
      name="Yunzhou"
      media="/voice-samples/doubao-yunzhou.mp3"
      aspect-ratio="16:5"
      summary="Male / young / neutral, business"
    />
  </form-visual>
</widget>

中国語ナレーションの中国語リクエスト:

<widget submit_label="提交">
  <form-visual
    id="voiceId"
    label="我推荐这几个中文旁白音色,先试听一下:"
    required="true"
  >
    <visual-option
      value="morgan"
      name="Morgan"
      media="/voice-samples/doubao-morgan.mp3"
      aspect-ratio="16:5"
      summary="男 / 中年 / 低沉知识解说"
    />
    <visual-option
      value="zhixingnv"
      name="知性女声"
      media="/voice-samples/doubao-zhixingnv.mp3"
      aspect-ratio="16:5"
      summary="女 / 中年 / 冷静知识讲解"
    />
    <visual-option
      value="vivi"
      name="Vivi"
      media="/voice-samples/doubao-vivi.mp3"
      aspect-ratio="16:5"
      summary="女 / 年轻 / 亲切通用口播"
    />
  </form-visual>
</widget>

効果音

通常の編集効果音(SFX)の場合は、最初に生成しないでください。生成する前に、組み込みの効果音ライブラリを使用してください:

  1. browse_library を category:"sound-effects" と "whoosh"、"camera shutter"、"notification"、"censor beep"、または "record scratch" などのクエリで呼び出します。
  2. 返された library:sound:<id> を検査します。
  3. edit_item を使用し、fromFrame をサウンドのアンカー/編集モーメントフレームとして配置します:
browse_library({
  category: "sound-effects",
  query: "short whoosh transition",
});

edit_item({
  adds: [
    {
      type: "audio",
      assetId: "library:sound:whoosh-short",
      fromFrame: 120,
      trackId: "A1",
    },
  ],
});

以下の場合にのみ、テキスト説明から submit_sound を使用して効果音を生成します:

  • ユーザーが生成された/オリジナル/カスタムサウンドを明示的に要求した場合。
  • 要求されたサウンドが既存の効果音ライブラリに対して具体的すぎる場合。
  • browse_library({ category:"sound-effects", query }) が適切な一致を返さなかった場合。
// ライブラリに適切な一致がない場合のカスタム/生成効果音
submit_sound({ prompt: "A dog barking in the distance" });

// カスタム長さ(0.5〜22秒)
submit_sound({
  prompt: "Thunder and heavy rain",
  durationSeconds: 15,
});

// 高いプロンプト順守
submit_sound({
  prompt: "Sci-fi laser gun firing",
  promptInfluence: 0.8,
});

より良い結果を得るためのヒント:

  • 具体的に:「A dog barking loudly」と「A dog barking loudly」

…

[truncated for translation]

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

0xsline/openchatcut

Connect an MCP-capable coding agent to OpenChatCut and edit local video projects. Use when the user asks to install, connect, or set up OpenChatCut; inspect or edit an OpenChatCut project; work with its timeline, transcript, captions, media, generation, motion graphics, audio, color, or export tools; or recover from an OpenChatCut MCP error.

0xsline/openchatcut

Use when acquiring or importing media into a OpenChatCut project asset library for video editing or creation, including local/attached videos, user-provided paths, public media URLs, web video/audio/image assets, upload fallback decisions, and deciding between import_media, download_media, or manual user action.

0xsline/openchatcut

Use when a OpenChatCut video editing or creation workflow needs export, render, download, share, final delivery, subtitle-file export, render choice, local-only asset handling, or export fallback explanation.

0xsline/openchatcut

AI image generation via Fal.ai, gpt-image-2, nano-banana, MiniMax image-01, and xAI Grok Imagine. Use when the user wants to generate or create an image / picture / still.

0xsline/openchatcut

Use when a OpenChatCut tool call fails or returns an unexpected shape.

0xsline/openchatcut

Music generation via Mureka, MiniMax, Atlas Cloud, and Sonilo. Use for instrumentals, songs, soundtracks, track/stem generation, covers, or video-conditioned scoring of the finished cut through `submit_music`.

0xsline/openchatcut

OpenChatCut product knowledge — UI layout, editor features, and how generation providers are configured. Use when the user asks about the product interface, how to use a feature, where to find something, or needs GUI guidance for something the agent cannot do directly. Also use as fallback when a task fails and the user needs to complete it manually in the UI. NOT for live project-state queries ("where are my folders?", "what's on my timeline?", "where is clip X?") — those are answered by `read_project`, not by this skill.

0xsline/openchatcut

AI shader generator for WebGL video effects, transitions, masks, and color grading (LUT / 调色 / 电影感 / film look). Use when the user wants a video effect (滤镜 / 特效), a transition (转场 / crossfade / wipe / cube / 3d), a mask (蒙版 / 遮罩 / reveal), a zoom / push-in (推近 / 推镜头), or a color grade — try the built-in effects (zoom, builtin LUTs) before generating a new shader.

0xsline/openchatcut

Use when checking whether agent edits are reflected in the OpenChatCut project and editor.

0xsline/openchatcut

AI video generation via Fal.ai, Seedance 2.0, Kling, MiniMax Hailuo, xAI Grok Imagine, and OFox. Use when the user wants to generate a video clip — text-to-video, image-to-video, first/last-frame transitions, reference-guided generation, multi-shot, or generatively editing / extending an existing clip.

0xsline/openchatcut

Use when the agent should ask the user for structured input with an in-chat form, including single-select, multi-select, text fields, style pickers, or voice audition choices.

関連スキル