mcpField
A
audio-ducking

audio-ducking

github.com/sonilo-aiクリエイティブ・メディア1171.2k 回インストール1 日前に更新
リポジトリ

audio-ducking について

音声のある間は音楽の音量を下げ、無音部分では戻すSoniloの音声処理スキルです。音声または動画を声の入力にでき、動画の場合はミックス音声を再多重化したMP4を出力します。

主な機能

  1. 01音声に合わせた音楽音量の自動調整
  2. 02ローカルファイルまたはHTTPS入力
  3. 03音声・動画を声の入力に指定
  4. 04WAVまたは再多重化MP4を出力

活用シーン

  1. 01インタビュー動画に既存のBGMを追加
  2. 02ナレーションとBGMの聞き分けを調整

MCP 対応

SoniloのMCPツール `audio_ducking` は、音声と音楽のファイルまたはURLを受け取り、ミックス結果を返します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sonilo-ai/skills --skill audio-ducking

インストール後、Claude Code で/audio-duckingを入力して読み込まれたか確認します。

詳細

Sonilo オーディオダッキング

音声トラックの下で音楽の音量を自動調整します。Sonilo は、音声が話している箇所では音楽の音量を下げ、無音の間は元に戻して、ミックスした結果を返します。音声入力には動画も指定できます。その場合、動画の音声トラックが音声として使われ、ダッキングしたミックスが新しい動画に多重化されます。

セットアップ: setup-api-key スキルを参照してください。

⚠️ 料金: 料金が発生する可能性のある API 呼び出しを行います。明示的に依頼された場合にのみ呼び出してください。

トランスポート:MCP または CLI

セッション開始時にどちらかを選び、最後までその方法を使ってください。1 つのジョブ内で両方を混在させないでください。また、選択した方法を伝える必要はありません。

  1. このセッションで Sonilo MCP ツール(audio_ducking など)が利用できる場合 — それらを使ってください。これが推奨される方法です。シェルが不要で、非常に長い生成でも唯一利用できる方法です。入力に問題があるのではなく認証に失敗した場合、このセッションではこのトランスポートを利用できません。再試行せず、2 に進んでください。
  2. 利用できる Sonilo MCP ツールはないが、sonilo account が終了コード 0 を返す場合 — 以下の CLI コマンドを使ってください。API、アカウント、認証情報ファイルは同じです。確認には sonilo whoami ではなく sonilo account を使ってください。サインアウト中でも whoami は終了コード 0 を返すため、2 つの状態を区別できません。
  3. どちらも該当しない場合 — 停止して、setup-api-key スキルを実行してください。回避策として curl で api.sonilo.com を呼び出さないでください。どちらのトランスポートも、単独のリクエストでは処理できないアップロード、ポーリング、再試行に対応しています。

クイックスタート

MCP ツールの呼び出し(推奨)
audio_ducking(
    voice_path="~/Desktop/interview.mp4",
    music_path="~/Desktop/background-track.wav"
)
Python(pip install "sonilo>=0.13")
from sonilo import Sonilo

client = Sonilo()  # reads SONILO_API_KEY

result = client.audio_ducking.generate(
    voice="interview.mp4",  # audio or video; also voice_url=
    music="background-track.wav",  # audio only; also music_url=
)
result.save("ducked.mp4" if result.output_type == "video" else "ducked.wav")
JavaScript / TypeScript(npm install sonilo@>=0.14)
import { SoniloClient, download } from "sonilo";
import { writeFile } from "node:fs/promises";

const client = new SoniloClient(); // reads SONILO_API_KEY

const result = await client.audioDucking.generate({
  voice: "./interview.mp4", // audio or video; also voiceUrl
  musicUrl: "https://example.com/background-track.wav", // audio only; also music
});
await writeFile(
  result.output_type === "video" ? "ducked.mp4" : "ducked.wav",
  await download(result.output_url!),
);
CLI(npm install -g sonilo-cli または pip install sonilo-cli)
sonilo audio-ducking --voice interview.mp4 --music-url https://example.com/background-track.wav

内部では常に非同期で処理されます。CLI が送信とポーリングを代行します。--voice/--voice-url のいずれか 1 つと、--music/--music-url のいずれか 1 つを指定してください。出力ファイル名は、返されるファイルに応じてデフォルトで決まります(output.wav、音声入力が動画の場合は output.mp4)。--output で上書きできます。ローカルの --music ファイルには音声拡張子が必要です。MCP ツールと同じ理由で、CLI は動画を指定すると最初に拒否します。

cURL(MCP ホストを介さない REST API の直接呼び出し)
curl -X POST "https://api.sonilo.com/v1/audio-ducking" \
  -H "Authorization: Bearer $SONILO_API_KEY" \
  -F "[email protected]" \
  -F "[email protected]"
# -> {"task_id": "..."}  poll GET /v1/tasks/{task_id}

ローカルファイルにはマルチパートフィールド voice_file/music_file を使います。リモートソースには代わりにフォームフィールド voice_url/music_url を使います(2 つの入力は自由に組み合わせられます)。

ツール

ツール説明
audio_ducking(voice_path? | voice_url?, music_path? | music_url?, output_directory?)voice の下で music をミックスし、音声が話している箇所では自動的に音量を下げます。

パラメーター

パラメーター型備考
voice_pathstring絶対パス、または SONILO_MCP_BASE_PATH からの相対パスです。音声または動画:.wav/.mp3/.m4a/.aac/.ogg/.flac または .mp4/.mov/.avi/.wmv/.webm/.mkv。
voice_urlstring音声または動画の HTTPS URL です。voice_path/voice_url のいずれか 1 つを指定してください。
music_pathstring絶対パス、またはベースパスからの相対パスです。音声のみ — ここで動画を指定しても特別な処理は行われず、正しく扱われません。
music_urlstring音声の HTTPS URL です。music_path/music_url のいずれか 1 つを指定してください。
output_directorystringデフォルトは SONILO_MCP_BASE_PATH です。

各入力は 360 秒(6 分) まで、かつアカウントのアップロードサイズ上限(通常 300 MB)までです。

ワークフローのヒント

  • このツールは、すでに存在する2つのトラックを使用します。音楽や効果音自体を生成するものではありません。先に音楽のベッドを生成する必要がある場合は、text-to-music または video-to-music スキル(text_to_music/video_to_music)を使用し、生成結果を music_path としてここに渡してください。
  • 音声入力には動画も使用できます。 ユーザーからトークヘッド動画やインタビュー動画と別の音楽ファイルを受け取った場合は、動画をそのまま voice_path として渡してください。Sonilo が音声トラックを抽出し、その下に音楽をダッキングしてから、ダッキング済みのミックスを新しい動画に自動で再多重化します。
  • 同じ動画用の音楽自体も生成する場合は、video-to-sound または video_to_music(ducking=true) を優先してください。 これらのツールは生成時に内部でダッキングするため、別途ダッキングを呼び出す必要はありません。音楽トラックが固定または外部のもので、ミックスだけが必要な場合は、audio_ducking を使用してください。

タイムアウトした呼び出しの再開

このツールはバックエンドで非同期タスクを送信します。呼び出しがタイムアウトした場合、エラーには task_id が含まれます。ジョブは実行を続けています(料金はすでに発生しています)。後で get_sfx_task(task_id) を呼び出してください(ホスト型サーバーでは get_generation_task(task_id))。task-recovery を参照してください。

出力ファイル

ファイルは1つです。音声入力の場合は .wav、動画入力の場合はダッキング済みのミックスを再多重化した .mp4 です。音声入力のファイル名が使われます(例:interview.mp4 → interview-ducked.mp4)。元の名前を使えない場合は、ducked-<first 8 chars of the task id> になります。

エラー処理

よくあるエラー:401 無効なキー、402 残高不足/トライアル終了、413 ファイルサイズが大きすぎる、422 パラメーターが無効、429 レート制限。account スキルを参照してください。

コメント