Communitygithub.com

Easel: 自動字幕(音声→字幕)

音声や動画から音声認識を行い、SRT/ASS/TXT/JSON形式の字幕ファイルを生成します。オプションで字幕を動画に焼き込むことも可能です。

Easel: 自動字幕(音声→字幕) とは?

Easel は、オーディオまたはビデオファイル内の音声を認識し、字幕ファイル(SRT、ASS、TXT、JSON)に変換する AI エージェントスキルです。faster-whisper ベースの共有スクリプト `skills/shared/scripts/asr.py` を利用し、パラメータが明確で再現性が高く、中国語に適した文区切り処理を行います。このスキルは、Claude Code、Cursor、Codex などの主要な AI エージェントプラットフォームで使用でき、入力ファイルの形式(オーディオまたはビデオ)を自動検出し、言語検出も自動で行います。また、ffmpeg の字幕フィルターを使用して字幕を動画に焼き込む機能もオプションで提供します。出力は指定されたフォーマットで `outputs/<トピック名>/` ディレクトリに保存され、認識言語、字幕数、使用モデル、出力パスを含むレポートが生成されます。このスキルは、インタビュー、講義、会議、動画コンテンツの文字起こしや字幕作成で特に役立ちます。

対応~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 よりも手間がかからず、適応性があります。
  • 中国語はデフォルトで1行あたり約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. 中国語に適した文区切り処理 — 句読点と長さに基づいて行を分割し、1行が長くなりすぎないようにします。
  3. 元のファイルは絶対に削除しない — outputs/ に新しいファイルのみを作成します。
  4. モデル選択 — 速度重視なら base、精度重視なら small/medium;CPU では int8 を使用します。
  5. 焼き込みにはビデオ入力が必要 — オーディオのみの場合は焼き込み不可、字幕ファイルのみ出力されます。
  6. プロファイル依存なし — 文字起こしにアカウントプロファイルは必要ありません。

参考資料

  • SYSTRAN/faster-whisper — CTranslate2 で高速化された Whisper 推論
  • openai/whisper — 元の Whisper モデルと ASR 手法
  • FFmpeg subtitles / ass フィルター(字幕焼き込み)

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 写具体某条视频的脚本。

関連スキル