Communitygithub.com

clean-voice-sidon

音声トラックを、ModalクラウドGPU上のSidon音声復元モデルでクリーンアップし、ラウドネスノーマライズして動画に再多重化します。「音声を清掃」「声を強調」「動画のノイズ除去」「電話マイク音声の修正」に使用します。

clean-voice-sidon とは?

このスキルは、Hugging FaceのSidon v0.1モデルを使用して、電話録音やトーキングヘッド動画の音声トラックを高品質にクリーンアップします。Sidonは音声を48kHzで再合成する音声-to-音声モデルで、GPUが必要なためModalクラウドで実行され、その他の処理(音声抽出、ラウドネス調整、多重化)はローカルのffmpegで行います。動画ストリームは一切再エンコードされません。ユーザーはまず30秒のテストクリップで音質を確認し、承認後に全長の音声を処理することで、納得のいく結果が得られます。ラウドネスはYouTube基準の-14 LUFSに自動調整され、AAC 192kbpsで再エンコードされます。コストはL4クラスGPUで数セント程度と低く、最大1時間の音声トラックを効率的に処理できます。このスキルはClaude Code、Cursor、CodexなどのAIエージェントで使用することを想定しており、`modal`コマンドと`ffmpeg`がインストールされた環境が必要です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/danielrosehill/Remote-Video-Editing/tree/HEAD/skills/clean-voice-sidon

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

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

ドキュメント

動画内の音声をSidon on Modalでクリーンアップする

Sidon v0.1(Hugging Faceのsarulab-speech/sidon-v0.1)による音声復元。48kHzで音声を再合成する音声-to-音声モデルです。GPUが必要なためモデルはModal上で実行され、それ以外の処理(抽出、ラウドネス、多重化)はローカルマシンの通常のffmpegで行います。動画ストリームは一切再エンコードされません。

Modalジョブはこのプラグインのscripts/sidon_enhance.py(${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py)です。

モデルの選択(なぜSidonか)

モデル結論
Sidon v0.1デフォルト。軽量で、11分のファイルがL4クラスGPUで1ジョブ、数セントで完了。出力はクリーンでフルバンド、48kHz。
NVIDIA RE-USE話者自身のスペクトル詳細をより保持するが、長いファイルではGPUメモリ不足で失敗(11分ファイルの2つ目の30秒チャンクで失敗)。短いクリップにのみ使用。
DeepFilterNet除外:音声に可聴な歪みが発生。

Sidonは8kHz以上のすべてを再生成するため、結果として部屋の残響や背景音がまったく残らない音声になります。トラック内の音楽や非発話音は失われます。動画にBGMがある場合は、BGMを追加する前に音声をクリーンアップしてください。

設定

最初に存在するデータルートの下にあるremote-video-editing/preferences.jsonを読み取ります:$CLAUDE_USER_DATA、次に~/.claude-user-data、次に${XDG_DATA_HOME:-~/.local/share}/claude-plugins。キー:

キーデフォルト意味
modal_commandmodalModalアプリを実行するコマンド(プロファイルやワークスペースを選択するラッパーでも可)
run_notesなしModalを実行する場所(認証情報を持つ別のホストなど)や、ファイルがそこに届く方法についての自由形式の指示。これに従うこと。
loudness_lufs-14統合ラウドネス目標値(YouTube方式)
true_peak_db-1.5トゥルーピーク上限

ファイルが存在せず、modal tokenが設定されていない場合(modal profile currentが失敗する場合)、停止してユーザーにmodal setupを実行するよう伝えてください。

手順

ソース動画と同じフォルダで作業します。IN=<動画>、MODAL=<modal_command, デフォルト modal>。

  1. 音声をモノラル48kHz FLACとして抽出:
    ffmpeg -v error -y -i "$IN" -vn -ac 1 -ar 48000 -c:a flac -sample_fmt s16 audio.flac
    
  2. まず30秒でテスト。 最初の数秒ではなく、発話がある部分からクリップを切り出します:
    ffmpeg -v error -y -ss 60 -t 30 -i audio.flac -c:a flac test30.flac
    $MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src test30.flac --out test30_sidon.flac
    
    両方のファイルをユーザーに渡して聞いてもらいます。音を承認されるまで、フルファイルは実行しないでください。
  3. フルトラックを実行:
    $MODAL run "${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py" --src audio.flac --out audio_sidon.flac
    
    ジョブは96秒ごとのチャンクごとに1行出力します。初回実行はイメージをビルドします(数分);以降の実行はそれを再利用します。
  4. ラウドネスを測定(2パスloudnormの最初のパス):
    ffmpeg -hide_banner -nostats -i audio_sidon.flac \
      -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null - 2>&1 | grep -A12 '^{'
    
  5. 測定値で再多重化。 動画はストリームコピーされます:
    ffmpeg -v error -y -i "$IN" -i audio_sidon.flac -map 0:v -map 1:a -c:v copy \
      -af "loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:offset=<target_offset>:linear=true,aresample=48000" \
      -c:a aac -b:a 192k -movflags +faststart "<name>_clean.mp4"
    
    Appleプレーヤーで再生する必要があるHEVCソースの場合は、-tag:v hvc1を追加します。
  6. 確認: ffprobeでソースとの長さを比較(1フレーム以内で一致するはず)、同じオフセットで30秒の前後ペア(-vn -c:a copy)を切り出してユーザーに比較してもらいます。

スクリプトライブラリ

ユーザーがスクリプトライブラリ(find-script、save-script)を持っている場合は、Modalジョブを変更する前にそれをチェックし、変更後は保存してください。

コストと制限

  • スクリプト内のGPUリスト:L4、A10G、L40S(Modalに空きがあるもの)。タイムアウト1時間。
  • ファイル全体がバイト列として関数に送信されます。1〜2時間のモノラルFLACまでの音声トラックで問題ありません。それ以上の長さの素材の場合は、音声を分割し、パーツを実行し、ffmpegのconcatで結合してください。
  • 重みはコールドスタートのたびにHugging Faceからダウンロードされます(公開、トークン不要)。

関連

ローカルでの編集、レンダリング、音声作業(Kdenlive、melt、ffmpegプリセット、無音カット)については、このプラグインのcomplementary-pluginsスキルを参照してください。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル