自动字幕 / 语音转字幕:把音频或视频里的语音识别成字幕文件(SRT/ASS/TXT/JSON),可选把字幕烧录进视频。当用户说自动字幕、语音转字幕、视频加字幕、上字幕、转录、听写、字幕文件、生成字幕、烧字幕时使用。
npx skills add https://github.com/ZJU-REAL/Easel --skill auto-subtitle
把音频/视频里的人声识别成字幕。基于共享脚本 skills/shared/scripts/asr.py(faster-whisper 封装),
参数确定、可复现,做中文友好断句。可选把字幕烧录进视频(复用 skills/shared/scripts/video_ops.py / ffmpeg subtitles 滤镜)。
> 只做"语音 → 字幕文件 (+ 可选烧录)"。通用视频剪辑见 video-editing;纯降噪见 audio-denoise;长视频智能切片+烧字幕见 clipify。
| 字段 | 必填 | 说明 |
|------|------|------|
| input_file | 是 | 音频或视频文件路径(视频自动提取音轨) |
| format | 否 | srt(默认)/ ass / txt / json |
| language | 否 | auto(默认)或 zh/en 等 ISO 639-1 码 |
| model | 否 | tiny/base(默认)/small/medium/large-v3,越大越准越慢 |
| burn | 否 | 是否把字幕烧录进视频(需视频输入) |
支持:mp3/wav/m4a/aac/flac 等音频;mp4/mkv/mov/webm 等视频。
outputs/主题名/(SRT/ASS/TXT/JSON)*-sub.mp4)EASEL_PROXY 或 http(s)_proxy 环境变量作代理;都未设则直连。也可先 export https_proxy=... http_proxy=... 指定。
--device cpu --compute-type int8 即可。脚本路径(相对项目根):skills/shared/scripts/asr.py、skills/shared/scripts/video_ops.py。
# 视频 → SRT(自动提取音轨 + 自动检测语言)
python skills/shared/scripts/asr.py transcribe \
-i input.mp4 -o outputs/主题名/input.srt --language zh
# 视频 → ASS(带样式,**字号/边距按视频横竖屏自适应**):视频输入自动探测宽高
python skills/shared/scripts/asr.py transcribe \
-i input.mp4 -o outputs/主题名/input.ass --format ass --model small
# 纯音频 → ASS:无法探测尺寸,默认竖屏 1080x1920;横屏加 --res 1920x1080
python skills/shared/scripts/asr.py transcribe \
-i voice.mp3 -o outputs/主题名/voice.ass --format ass --res 1920x1080
底边距按高、左右边距按宽,PlayRes=真实宽高。视频输入自动探测;纯音频用 --res 宽x高 指定。
要带样式的硬字幕优先烧这份 ASS(下节),比裸 SRT + 手填 force_style 更省心、且自适应。
--max-line-chars 可调。-o 时按输入文件名建项目目录,例如 talk.mp4 输出到 outputs/talk/talk.srt;已有项目应显式 -o outputs/主题名/<文件名>.<format>。python skills/shared/scripts/asr.py info。用户要"硬字幕/烧进视频"时,用 ffmpeg 的 subtitles(SRT)或 ass(ASS)滤镜:
# 烧 SRT(可定制样式)
ffmpeg -y -i input.mp4 \
-vf "subtitles=outputs/主题名/input.srt:force_style='FontName=Noto Sans CJK SC,FontSize=20,PrimaryColour=&H00FFFFFF,OutlineColour=&H80000000,BorderStyle=1,Outline=2'" \
-c:a copy outputs/主题名/input-sub.mp4
# 烧 ASS(样式已在 ass 文件里,保真)
ffmpeg -y -i input.mp4 \
-vf "ass=outputs/主题名/input.ass" \
-c:a copy outputs/主题名/input-sub.mp4
subtitles= 的值用单引号包裹并转义冒号。ffmpeg -i in.mp4 -i sub.srt -c copy -c:s mov_text out.mp4。outputs/主题名/。--model/--max-line-chars 重跑。outputs/。base,求准用 small/medium;CPU 用 int8。subtitles / ass 滤镜(字幕烧录)Take zju-real/auto-subtitle from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.