mcpField
C
claude-video-audio

claude-video-audio

github.com/agricidanielその他3141 回インストール30 週間前に更新
リポジトリ

claude-video-audio について

claude-video-audio は、FFmpeg などのコマンドラインツールを使う音声処理ワークフロー向けのスキルです。ラウドネス調整からノイズ処理、トラックのミキシング、形式変換まで扱います。

主な機能

  1. 01EBU R128 の二段階ラウドネス正規化
  2. 02FFT と非局所平均によるノイズ低減
  3. 03無音の検出と除去
  4. 04音声の抽出、置換、ミキシング
  5. 05エフェクト、チャンネル、形式の変換
  6. 06音声に応じた音楽のダッキング

活用シーン

  1. 01プラットフォームの目標ラウドネスへの調整
  2. 02録音のバックグラウンドノイズ低減
  3. 03動画からの音声抽出や置換
  4. 04ナレーション中の音楽音量の自動低下

インストール

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

$npx skills add https://github.com/agricidaniel/claude-video --skill claude-video-audio

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

詳細

claude-video-audio — オーディオ処理

事前確認

  1. bash scripts/preflight.sh "$INPUT" "$OUTPUT" を実行します
  2. オーディオストリームを分析します:ffprobe -v error -select_streams a -show_entries stream=codec_name,channels,sample_rate,bit_rate -of json "$INPUT"

ラウドネスの正規化(EBU R128)

正確に正規化するための2パスのワークフローです:

# Pass 1: Measure current loudness
ffmpeg -i "$INPUT" -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null - 2>&1 | tail -12

JSON 出力から measured_I、measured_TP、measured_LRA、measured_thresh、offset を抽出します。

# Pass 2: Apply normalization with measured values
ffmpeg -n -i "$INPUT" -af "loudnorm=I=-14:TP=-1.5:LRA=11:\
measured_I=MEASURED_I:measured_TP=MEASURED_TP:measured_LRA=MEASURED_LRA:\
measured_thresh=MEASURED_THRESH:offset=MEASURED_OFFSET:linear=true" \
  -c:v copy "$OUTPUT"
プラットフォーム別の目標ラウドネス
プラットフォーム目標 LUFSトゥルーピーク備考
YouTube-14 LUFS-1.0 dBTPYouTube は音量を下げて正規化しますが、上げることはありません
Spotify-14 LUFS-1.0 dBTP「Loud」モードは -11 LUFS です
Apple Music-16 LUFS-1.0 dBTPサウンドチェック
ポッドキャスト-16 LUFS-1.5 dBTP会話の明瞭さ
放送(EBU R128)-23 LUFS-1.0 dBTP欧州標準
TikTok/Reels-14 LUFS-1.0 dBTPYouTube に合わせます

ノイズ除去

FFT ベース(安定したバックグラウンドノイズに適しています):

ffmpeg -n -i "$INPUT" -af "afftdn=nf=-25:nt=w" -c:v copy "$OUTPUT"

nf = dB 単位のノイズフロア(値が低いほど強く除去します)。nt=w = ホワイトノイズモデルです。

非局所平均(品質が高く、処理は遅めです):

ffmpeg -n -i "$INPUT" -af "anlmdn=s=7:p=0.002:r=0.002" -c:v copy "$OUTPUT"

ハイパス/ローパスで低周波のうなりとヒスノイズを除去します:

ffmpeg -n -i "$INPUT" -af "highpass=f=80,lowpass=f=12000" -c:v copy "$OUTPUT"

無音の検出と削除

無音を検出します:

ffmpeg -i "$INPUT" -af "silencedetect=noise=-30dB:d=0.5" -f null - 2>&1 | grep silence

silence_start と silence_end のタイムスタンプが返されます。

無音を削除します(Auto-Editor を使用すると、はるかに簡単です):

auto-editor "$INPUT" --margin 0.3s -o "$OUTPUT"

FFmpeg を使った手動での無音削除:

ffmpeg -n -i "$INPUT" -af "silenceremove=start_periods=1:start_silence=0.5:start_threshold=-30dB:detection=rms" -c:v copy "$OUTPUT"

オーディオの抽出

# Extract as WAV (lossless)
ffmpeg -n -i "$INPUT" -vn -c:a pcm_s16le audio.wav

# Extract as AAC
ffmpeg -n -i "$INPUT" -vn -c:a aac -b:a 256k audio.m4a

# Extract as MP3
ffmpeg -n -i "$INPUT" -vn -c:a libmp3lame -b:a 320k audio.mp3

# Extract as Opus (most efficient)
ffmpeg -n -i "$INPUT" -vn -c:a libopus -b:a 128k audio.ogg

# Stream copy (fastest, keeps original codec)
ffmpeg -n -i "$INPUT" -vn -c:a copy audio.m4a

オーディオの置き換え

# Replace audio track entirely
ffmpeg -n -i video.mp4 -i new_audio.wav -c:v copy -c:a aac -b:a 192k \
  -map 0:v:0 -map 1:a:0 "$OUTPUT"

# Mix original audio with new audio (e.g., background music)
ffmpeg -n -i video.mp4 -i music.mp3 -filter_complex \
  "[0:a]volume=1.0[orig];[1:a]volume=0.3[music];[orig][music]amix=inputs=2:duration=first" \
  -c:v copy "$OUTPUT"

オーディオエフェクト

音量調整:

ffmpeg -n -i "$INPUT" -af "volume=1.5" -c:v copy "$OUTPUT"   # 1.5x louder
ffmpeg -n -i "$INPUT" -af "volume=-6dB" -c:v copy "$OUTPUT"   # 6dB quieter

イコライゼーション:

# Boost bass, cut muddy mids, add presence
ffmpeg -n -i "$INPUT" -af "equalizer=f=80:t=q:w=1:g=3,equalizer=f=300:t=q:w=2:g=-2,equalizer=f=4000:t=q:w=1:g=2" -c:v copy "$OUTPUT"

コンプレッション(ダイナミックレンジを縮小します):

ffmpeg -n -i "$INPUT" -af "acompressor=threshold=-20dB:ratio=4:attack=5:release=50" -c:v copy "$OUTPUT"

リミッター(クリッピングを防ぎます):

ffmpeg -n -i "$INPUT" -af "alimiter=limit=0.95:level=false" -c:v copy "$OUTPUT"

フェードイン/フェードアウト:

ffmpeg -n -i "$INPUT" -af "afade=t=in:st=0:d=2,afade=t=out:st=OFFSET:d=2" -c:v copy "$OUTPUT"

低音ブースト:-af "bass=g=5:f=100:w=0.5" 高音ブースト:-af "treble=g=3:f=4000:w=0.5"

オーディオ形式の変換

コーデックFFmpeg エンコーダー推奨ビットレート用途
AACaac128-256k動画、ストリーミング
MP3libmp3lame192-320k汎用再生
Opuslibopus96-160k最高の効率、WebM
FLACflac可逆圧縮アーカイブ、編集
WAVpcm_s16le非圧縮編集、処理
AC3ac3384-640kサラウンドサウンド

チャンネルレイアウト

# Stereo to mono
ffmpeg -n -i "$INPUT" -ac 1 -c:v copy "$OUTPUT"

# Mono to stereo (duplicate)
ffmpeg -n -i "$INPUT" -ac 2 -c:v copy "$OUTPUT"

# Extract left channel only
ffmpeg -n -i "$INPUT" -af "pan=mono|c0=FL" -c:v copy "$OUTPUT"

オーディオ同期の修正

# Delay audio by 0.5 seconds
ffmpeg -n -i "$INPUT" -itsoffset 0.5 -i "$INPUT" -map 0:v -map 1:a -c copy "$OUTPUT"

# Advance audio by 0.5 seconds
ffmpeg -n -i "$INPUT" -itsoffset -0.5 -i "$INPUT" -map 0:v -map 1:a -c copy "$OUTPUT"

オーディオダッキング(サイドチェーンコンプレッション)

音声があるときに、音楽の音量を自動的に下げます。

基本的なダッキング(音声トラックに応じて音楽トラックの音量を下げます):

ffmpeg -n -i video_with_voice.mp4 -i music.mp3 -filter_complex \
  "[0:a]aformat=fltp:44100:stereo[voice];\
   [1:a]aformat=fltp:44100:stereo[music];\
   [music][voice]sidechaincompress=threshold=0.015:ratio=6:attack=200:release=1000:level_sc=1[ducked];\
   [voice][ducked]amix=inputs=2:duration=first:weights=1 0.4[out]" \
  -map 0:v -map "[out]" -c:v copy "$OUTPUT"

パラメーターの説明:

パラメーターデフォルト目的
threshold0.015ダッキングをトリガーする音声レベル(値が低いほど感度が高くなります)
ratio6音楽をどの程度下げるか(値が高いほど大きく下がります)
attack200ms音楽の音量を下げる速さ
release1000ms音声が止まった後に音楽の音量を戻す速さ
weights1 0.4最終ミックスでの音声の音量:音楽の音量

既存のオーディオストリームを使ったダッキング(動画に音声があり、別ファイルの音楽もある場合):

ffmpeg -n -i "$INPUT" -i music.mp3 -filter_complex \
  "[1:a][0:a]sidechaincompress=threshold=0.02:ratio=8:attack=100:release=800[ducked];\
   [0:a][ducked]amix=inputs=2:duration=first:weights=1 0.3[out]" \
  -map 0:v -map "[out]" -c:v copy "$OUTPUT"

ヒント:

  • 音量の小さい音声には、threshold を下げます(例:0.01)
  • より強くダッキングするには、ratio を上げます(例:10-20)
  • 話し言葉中心のポッドキャストでは、attack を短くします(例:50ms)
  • 音楽がより滑らかに戻るようにするには、release を長くします(例:2000ms)
  • weights を調整して、音声と音楽の全体的なバランスを制御します

参考資料

EBU R128 のラウドネスの詳細、応用的なフィルターチェーン、形式ごとのオーディオ設定については、references/audio.md を読み込んでください。

コメント