Communitygithub.com

clean-voice-sidon

使用 Modal 云 GPU 上的 Sidon 语音修复模型清理视频音轨(手机或对话录制),然后进行响度标准化并重新混入视频。适用于“清理音频”、“增强我的声音”、“给视频降噪”、“修复手机麦克风音频”等场景。

clean-voice-sidon 是什么?

该技能利用 Hugging Face 上的 Sidon v0.1 模型(`sarulab-speech/sidon-v0.1`),在 Modal 云 GPU 上执行语音修复,将语音以 48 kHz 重新合成,从而去除房间回声和背景噪音。音频提取、响度标准化(两遍 loudnorm)和重新混流(视频流直接复制)均通过本地 ffmpeg 完成,无需重新编码视频。支持 L4、A10G、L40S 等 GPU,超时 1 小时;建议先对 30 秒片段进行测试,用户确认后再处理完整音轨。适用于 Claude Code、Cursor 等 AI 代理平台,需要预先配置 Modal CLI 并登录。

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

在视频中使用 Sidon on Modal 清理语音

使用 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=<video>, 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"
    
    对于需要在 Apple 播放器中播放的 HEVC 源,添加 -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.

相关技能