Communitygithub.com

clean-voice-sidon

使用 Modal 雲端 GPU 上的 Sidon 語音修復模型清理影片(手機或談話頭錄製)的人聲軌道,然後進行響度正規化並重新封裝回影片中。適用於「清理音訊」、「增強我的聲音」、「為此影片降噪」、「修復手機麥克風音訊」等場景。

clean-voice-sidon 是什麼?

這個技能利用 Sarulab Speech 的 Sidon v0.1 模型(基於 Hugging Face)進行語音修復,這是一個音訊到音訊的模型,可以將語音重新合成為 48 kHz。由於需要 GPU,模型會部署在 Modal 雲端服務上,其餘處理(如音訊擷取、響度正規化、重新封裝)則在本機透過 ffmpeg 完成。影片串流不會被重新編碼。 使用者可以透過設定 preferences.json 來控制 Modal 命令、響度目標(預設 -14 LUFS)和真峰上限。流程包含先擷取音訊為 FLAC,對 30 秒片段進行測試,獲得使用者批准後再處理完整音軌,最後進行兩段式 loudnorm 響度正規化並與原始影片重新封裝。 該技能支援 Cursor、Claude Code 等使用 SKILL.md 的開發環境,並能整合使用者自訂的腳本庫。成本方面,Sidon 模型在 L4 等級 GPU 上處理 11 分鐘檔案僅需幾美分,且權重從 Hugging Face 公開下載,無需 token。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

使用 Modal 上的 Sidon 清除影片中的雜音

Sidon v0.1(Hugging Face 上的 sarulab-speech/sidon-v0.1)是一個音訊到音訊的語音修復模型,能以 48 kHz 重新合成語音。它需要 GPU,因此模型運行在 Modal 上;其餘處理(擷取、響度、重新封裝)則在本機使用 ffmpeg 完成。影片串流絕不會被重新編碼。

Modal 任務是本外掛中的 scripts/sidon_enhance.py(${CLAUDE_PLUGIN_ROOT}/scripts/sidon_enhance.py)。

模型選擇(為何選用 Sidon)

模型結論
Sidon v0.1預設。輕量;一份 11 分鐘的檔案在 L4 等級 GPU 上只需一個任務,花費幾美分。輸出乾淨、全頻段、48 kHz。
NVIDIA RE-USE保留較多說話者自身的頻譜細節,但長時間檔案會耗盡 GPU 記憶體(在 11 分鐘檔案的第二個 30 秒區塊失敗)。僅適用於短片。
DeepFilterNet排除:人聲出現可聽失真。

Sidon 會重建 8 kHz 以上的所有內容,因此結果是沒有任何空間或背景雜音的人聲。音軌中的音樂和其他非語音聲音會遺失。如果影片有背景音樂,請先清理人聲再加入音樂。

偏好設定

讀取第一個存在的資料根目錄下的 remote-video-editing/preferences.json:$CLAUDE_USER_DATA、~/.claude-user-data、${XDG_DATA_HOME:-~/.local/share}/claude-plugins。鍵值說明:

鍵預設值說明
modal_commandmodal執行 Modal 應用程式的命令(可為用來選擇設定檔或工作空間的包裝命令)
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. 擷取音訊為單聲道 48 kHz 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 秒區塊列印一行。第一次執行會建構映像檔(需幾分鐘);後續執行則重複使用。
  4. 測量響度(兩階段 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"
    
    若為 HEVC 來源且需在 Apple 播放器上播放,請加上 -tag:v hvc1。
  6. 驗證: 使用 ffprobe 比對來源影片的時長(應在一個影格內相符),並在同一偏移處剪出一組 30 秒的前後對照片段(-vn -c:a copy)供使用者比較。

腳本庫

如果使用者有腳本庫(find-script、save-script),請在修改 Modal 任務前檢查,並在修改後儲存任何變更版本。

成本與限制

  • 腳本中的 GPU 列表:L4、A10G、L40S(Modal 有空的皆可)。逾時 1 小時。
  • 整個檔案以位元組形式傳送給函式。對於長達一到兩小時的單聲道 FLAC 音軌沒問題;更長的素材請分割音訊、分別執行各部分,再使用 ffmpeg concat 合併。
  • 權重每次冷啟動時從 Hugging Face 下載(公開,無需 token)。

相關資源

若需本機編輯、渲染和音訊處理(Kdenlive、melt、ffmpeg 預設值、靜音剪輯),請參閱此外掛中的 complementary-plugins 技能。

Individual skills in this repo

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

相關技能