用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/wlzh/skills --skill audiocut-keyword命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | audiocut-keyword |
| description | 音频关键字过滤工具 - 根据关键字配置自动识别并删除音频中的指定内容 |
| version | 1.1.0 |
| author | M. |
基于 FunASR 语音识别和 FFmpeg 剪辑的音频关键字过滤 Skill
python3 ~/.claude/skills/audiocut-keyword/scripts/audiocut_keyword.py <音频文件>
python3 ~/.claude/skills/audiocut-keyword/scripts/audiocut_keyword.py \
input.mp3 \
-o output.mp3
python3 ~/.claude/skills/audiocut-keyword/scripts/audiocut_keyword.py \
input.mp3 \
-k my_keywords.json
python3 ~/.claude/skills/audiocut-keyword/scripts/audiocut_keyword.py \
input.mp3 \
--buffer-before 1.0 \
--buffer-after 1.0
1. 音频转录(FunASR 30s 分段)
↓
2. 加载关键字配置
↓
3. 查找关键字位置(字符级时间戳)
↓
4. 生成删除计划(合并重叠片段)
↓
5. FFmpeg 剪辑并合成
↓
6. 输出处理后的音频
配置文件位于: ~/.claude/skills/audiocut-keyword/config/keywords.json
{
"keywords": [
"广告",
"赞助",
"推广",
"关注",
"订阅",
"点赞",
"转发",
"分享",
"评论区",
"链接在简介",
"微信公众号",
"小程序"
],
"buffer_before": 0.5,
"buffer_after": 0.5,
"description": "关键字配置文件"
}
keywords: 关键字列表,支持中文和英文buffer_before: 删除前缓冲时间(秒),避免删除不完整buffer_after: 删除后缓冲时间(秒),避免删除不完整使用 FunASR Paraformer 模型进行 30s 分段转录:
paraformer-zh (中文语音识别)使用 FFmpeg filter_complex 进行无损剪辑:
ffmpeg -i input.mp3 \
-filter_complex "[0:a]atrim=start=0:end=10,asetpts=PTS-STARTPTS[a0];
[0:a]atrim=start=15:end=30,asetpts=PTS-STARTPTS[a1];
[a0][a1]concat=n=2:v=0:a=1[outa]" \
-map "[outa]" output.mp3
处理完成后会生成以下文件:
<原文件名>_filtered.mp3 - 处理后的音频<原文件名>_delete_plan.json - 删除计划(包含匹配信息)<原文件名>_transcript.json - 转录文件(可选保留)usage: audiocut_keyword.py [-h] [-o OUTPUT] [-k KEYWORDS]
[--buffer-before BUFFER_BEFORE]
[--buffer-after BUFFER_AFTER]
[--keep-transcript]
input_audio
positional arguments:
input_audio 输入音频文件
optional arguments:
-h, --help 显示帮助信息
-o OUTPUT, --output OUTPUT
输出音频文件(默认:输入文件名_filtered.mp3)
-k KEYWORDS, --keywords KEYWORDS
关键字配置文件(默认:config/keywords.json)
--buffer-before BUFFER_BEFORE
删除前缓冲时间(秒,默认:0.5)
--buffer-after BUFFER_AFTER
删除后缓冲时间(秒,默认:0.5)
--keep-transcript 保留转录文件
使用预配置的 Python 3.10 环境:
# FunASR 环境已预安装在 skill 目录
~/.claude/skills/audiocut-keyword/funasr_env_310/
包含:
pip install funasr modelscope
首次运行会自动下载 FunASR 模型(约 2GB)到 ~/.cache/modelscope/
| 指标 | 值 |
|---|---|
| 转录速度 | ~0.16x 实时(1分钟音频约10秒处理) |
| 剪辑速度 | 几乎瞬时完成 |
| 15分钟音频 | 总处理时间约 2-3 分钟 |
测试环境:M1 Mac,CPU 推理
在 youtube-to-xiaoyuzhou 工作流中使用:
# 下载 YouTube 音频后
audio_file = "downloaded_audio.mp3"
# 过滤关键字
filtered_audio = audiocut_keyword(audio_file)
# 上传到小宇宙
upload_to_xiaoyuzhou(filtered_audio)
原因: 背景噪音大、口音重、音质差
解决:
原因: 转录错误或关键字配置不准确
解决:
*_transcript.json 中的文本原因: 关键字过于宽泛或缓冲时间过长
解决:
*_delete_plan.json原因: FFmpeg 未安装或版本过旧
解决:
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt-get install ffmpeg
# 检查版本
ffmpeg -version
# 下载 YouTube 音频
yt-dlp -x --audio-format mp3 https://youtu.be/xxxxx -o input.mp3
# 过滤关键字
python3 ~/.claude/skills/audiocut-keyword/scripts/audiocut_keyword.py input.mp3
# 输出: input_filtered.mp3
创建 my_keywords.json:
{
"keywords": ["广告", "赞助商", "推广链接"],
"buffer_before": 1.0,
"buffer_after": 1.0
}
运行:
python3 ~/.claude/skills/audiocut-keyword/scripts/audiocut_keyword.py \
input.mp3 \
-k my_keywords.json
for file in *.mp3; do
python3 ~/.claude/skills/audiocut-keyword/scripts/audiocut_keyword.py "$file"
done
MIT