Communitygithub.com

ZJU-REAL/Easel

자동 자막 / 음성을 자막으로 변환: 오디오나 비디오에서 음성을 인식하여 자막 파일(SRT/ASS/TXT/JSON)로 변환하고, 선택적으로 비디오에 자막을 하드코딩합니다. 사용자가 자동 자막, 음성→자막, 비디오에 자막 추가, 자막 생성, 녹취, 받아쓰기, 자막 파일, 자막 생성, 자막 하드코딩 등을 요청할 때 사용합니다.

Easel란 무엇인가요?

Easel은 오디오 또는 비디오 파일에서 음성을 인식하여 SRT, ASS, TXT, JSON 형식의 자막 파일을 생성하고 선택적으로 비디오에 자막을 하드코딩하는 전문 기술입니다. 공유 스크립트 `skills/shared/scripts/asr.py`(faster-whisper 기반)를 사용하여 중국어 친화적인 문장 분할을 지원하며, 매개변수 결정적 실행이 가능하여 재현성을 보장합니다. `skills/shared/scripts/video_ops.py`와 ffmpeg 자막 필터를 통해 하드코딩도 지원합니다. 다양한 오디오(mp3, wav, m4a, aac, flac) 및 비디오(mp4, mkv, mov, webm) 포맷을 지원하며, 모델 크기(tiny/base/small/medium/large-v3)와 언어(자동 감지 포함)를 선택할 수 있습니다. ASS 자막의 경우 비디오 해상도에 따라 글꼴 크기와 여백을 자동으로 조정하여 가로/세로 화면에 최적화됩니다. 이 기술은 Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, 별도의 사용자 프로필이나 계정 설정이 필요하지 않습니다.

지원 대상~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/ZJU-REAL/Easel/tree/HEAD/skills/openclaw/auto-subtitle

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

자동 자막 (음성→자막)

오디오/비디오에서 사람의 음성을 인식하여 자막을 생성합니다. 공유 스크립트 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)
  • 보고: 인식된 언어, 자막 수, 사용 모델, 출력 경로

사전 조건

  • 첫 실행 시 HuggingFace에서 모델을 다운로드하므로, 외부 프록시가 필요합니다. 스크립트는 EASEL_PROXY 또는 http(s)_proxy 환경 변수를 프록시로 사용합니다; 둘 다 설정되지 않으면 직접 연결합니다. export https_proxy=... http_proxy=... 로 미리 지정할 수도 있습니다.
  • CPU 환경에서는 기본 --device cpu --compute-type int8을 사용하면 됩니다.

실행 단계

스크립트 경로 (프로젝트 루트 기준): skills/shared/scripts/asr.py, skills/shared/scripts/video_ops.py.

1. 자막 파일 생성

# 비디오 → 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
  • ASS 스타일은 대상 비디오의 너비/높이에 자동 적응: 글꼴 크기는 짧은 변(min(w,h)*0.05, 세로/가로 화면 모두 적절, 가로 화면에서 너무 크지 않음), 하단 여백은 높이 기준, 좌우 여백은 너비 기준, PlayRes=실제 너비/높이. 비디오 입력은 자동 감지; 순수 오디오는 --res 너비x높이로 지정. 스타일이 있는 하드 자막에는 이 ASS 파일 우선 사용 (다음 절 참조), 원시 SRT + 수동 force_style보다 편리하고 자동 적응됨.
  • 중국어 기본값은 행당 ~18자, 초과 시 자동 줄바꿈/분할; --max-line-chars로 조정 가능.
  • -o를 지정하지 않으면 입력 파일 이름으로 프로젝트 디렉토리를 생성, 예: talk.mp4는 outputs/talk/talk.srt로 출력; 기존 프로젝트가 있으면 명시적으로 -o outputs/주제명/<파일명>.<포맷> 지정.
  • 사용 가능한 모델/언어 확인: python skills/shared/scripts/asr.py info.

2. (선택) 자막을 비디오에 하드코딩

사용자가 "하드 자막/비디오에 자막 넣기"를 요청하면, 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.

3. 산출물 및 보고

  • 자막 파일, 하드코딩된 비디오는 모두 outputs/주제명/에 저장됩니다.
  • 사용자에게 보고: 인식된 언어, 자막 수, 모델, 파일 경로; --model/--max-line-chars를 변경하여 재실행 가능함을 알림.

규칙

  1. 비디오는 먼저 오디오 트랙을 추출 — 스크립트가 자동으로 ffmpeg를 사용하여 16kHz 모노 wav 추출, 원본 비디오는 변경하지 않음.
  2. 중국어 친화적 문장 분할 — 구두점/길이에 따라 줄바꿈, 한 줄이 너무 길지 않도록 함.
  3. 원본 파일 절대 삭제하지 않음 — 새 파일만 outputs/에 생성.
  4. 모델 선택 — 속도 우선은 base, 정확도 우선은 small/medium; CPU는 int8 사용.
  5. 하드코딩에는 비디오 입력 필요 — 순수 오디오는 하드코딩 불가, 자막 파일만 출력.
  6. 프로필 의존성 없음 — 전사에 계정 프로필이 필요하지 않음.

참고 자료

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

ZJU-REAL/Easel

AI 视频生成:文生视频 / 图生视频 / 数字人首帧驱动。通过可插拔 provider(通义万相 Wan / 火山 Seedance / 快手可灵 / OpenAI 兼容)异步生成视频,用户自备 API key。当用户说 AI 视频生成、文生视频、图生视频、AI 生成视频、AI 短视频、让图片动起来、数字人视频、生成一段视频 时使用。与 video-strategy(选型/策略)、video-editing(剪辑处理)、clipify(切片)区别:本 SKILL 是从 0 用 AI 生成新视频。

ZJU-REAL/Easel

通用音频处理:音频剪辑/裁剪、格式转码(mp3/wav/m4a/aac)、音量归一化、从视频提取音轨、多段拼接、淡入淡出、变速(保音高)。当用户说“剪音频”“裁一段”“转成 mp3”“调音量/响度”“提取音轨/扒音频”“拼接音频”“淡入淡出”“加速/减速音频”“变速不变调”时使用。与 audio-denoise 的区别:audio-denoise 专做降噪,audio-editing 做除降噪外的通用音频操作(也内置 denoise 作为兜底)。

ZJU-REAL/Easel

一句话主题 → 成品短视频:自动串联 文案→配图/AI视频→配音→字幕→BGM→合成,把 Easel 制作层零件编排成一条'一键出片'流水线。**单条视频、口播/资讯向,画面默认逐句配图 + Ken Burns 缓动,需要动态时才逐段图生视频**。当用户说 一键生成视频、自动做短视频、主题生成视频、帮我做条视频、口播视频一条龙、自动出片、短视频一键生成 时使用。**有剧情/角色/对白/反转/多集的短剧改用 short-drama(每镜强制图生视频、不用静态图冒充);只写脚本用 video-script;只生成单个片段用 ai-video-gen。**

ZJU-REAL/Easel

音乐卡点视频 / 踩点视频:检测背景音乐的节拍,让图片或片段在节拍点上切换,配推进/白闪特效,做出燃系'卡点'短视频。当用户说 卡点视频、踩点视频、音乐卡点、节奏卡点、按音乐切换、鼓点视频、踩节奏、beat 卡点、图片卡点、卡点混剪 时使用。基于 shared/scripts/beatsync.py(librosa 节拍检测)。与 slideshow-video 区别:slideshow 每图固定时长、柔和转场,本 SKILL 切换点由音乐节拍决定、硬切踩点带特效。

ZJU-REAL/Easel

Easel clipify: long English talk → punchline cuts → optional 16:9→9:16 face-pan/split → opus word-by-word ASS burn. Ships scripts + assets/preview.png. Part of 1.6k★ Easel suite.

ZJU-REAL/Easel

>- 通用图像处理加工:改尺寸/缩放、裁剪、补边适配平台尺寸、格式转换(png/jpg/webp)、 压缩到目标大小、加文字或图片水印、圆角、多图拼接、生成缩略图、读图片信息。 基于 image_ops.py 确定性处理。 使用时机:用户说"改尺寸"、"缩放图片"、"裁剪"、"压缩图片"、"加水印"、"转格式"、 "圆角"、"拼图/多图联排"、"缩略图"、"适配小红书/朋友圈尺寸"、"把图 pad 成 1:1"。 和 card-*(卡片类)的区别:card-* 是"HTML 设计→渲染出图", image-editing 只加工已有图片,不负责视觉设计。

ZJU-REAL/Easel

多角色对话配音:按 cast 和逐行对白为不同角色分配音色与情绪,合成多声线音轨和带角色名字幕。 当用户说“多角色/双人/剧本/对话配音、多人对白、不同角色不同声音、有声剧配音”时使用。 单一公共音色用 tts-voiceover;克隆本人音色用 voice-clone;整部短剧制作由 short-drama 编排。

ZJU-REAL/Easel

Easel video-highlights: CN/livestream highlight extract + stable static vertical reframe (sibling to clipify).

ZJU-REAL/Easel

>- 视频制作策略与工具选型:AI 视频生成模型对比、视频脚本结构设计、制作流程规划,覆盖产品演示/解说/社媒短视频场景。 当用户说"视频怎么做""视频选型""用什么工具做视频""视频制作流程""视频策略""视频系列规划"时使用。 和 video-script 的区别:video-strategy 做内容规划与工具选型,video-script 写具体某条视频的脚本。

관련 스킬