关于 transcribe-video
transcribe-video 用于提取本地视频中的文字稿。它优先使用内嵌字幕;没有字幕时则通过 API 进行语音识别,并将整理后的文字稿保存到视频旁。
主要功能
- 01检测内嵌字幕轨道
- 02提取字幕并清理文字稿
- 03必要时通过 API 转录音频
- 04将文字稿保存到视频旁
适用场景
- 01提取带字幕视频的文字
- 02转录没有内嵌字幕的视频
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ feiskyer/ video-skills --skill transcribe-video安装后在 Claude Code 中输入/transcribe-video确认已加载。
附带文件scripts/transcribe.py
详细介绍
转录视频
从本地视频文件中提取转录文本。该技能会先检查是否含有内嵌字幕(速度更快、准确度更高),仅在未找到字幕时才使用基于 API 的语音识别。
步骤 1:确定视频文件
与用户确认视频文件路径。支持的格式:mp4、mkv、mov、avi、webm,以及 ffmpeg 能处理的任何格式。
步骤 2:检查内嵌字幕
ffprobe -v quiet -select_streams s -show_entries stream=index,codec_name:stream_tags=language,title -of json "<video_path>"
- 如果存在字幕流 → 转到步骤 3a(提取内嵌字幕)
- 如果不存在字幕流 → 转到步骤 3b(API 转录)
步骤 3a:提取内嵌字幕
如果存在多个字幕轨道,优先选择与视频主要语言匹配的轨道,或询问用户要使用哪个轨道。
# Extract as SRT (stream index 0 for first subtitle track; adjust if needed)
ffmpeg -i "<video_path>" -map 0:s:0 -c:s srt "<output_path>.srt" -y
提取后,将 SRT 转换为纯净文本:
- 移除序号
- 移除时间戳行(匹配
\d{2}:\d{2}:\d{2}的行) - 移除类似 HTML 的标签(
<i>、</i>等) - 合并剩余的非空行
将纯净转录文本保存到视频文件同目录下的 <video_name>.txt。完成 — 跳过步骤 3b。
步骤 3b:基于 API 的转录
使用捆绑的转录脚本。该脚本从 ~/.transcribe_video.env 读取凭据。
前置条件检查
-
确认环境文件存在:
test -f ~/.transcribe_video.env && echo "OK" || echo "MISSING" -
如果文件不存在,告知用户创建
~/.transcribe_video.env,内容如下:OPENAI_API_KEY=your-key-here # Optional Base URL: # OPENAI_API_BASE=https://<base-url>/v1/ # Optional Model Name: # TRANSCRIBE_MODEL=gpt-4o-transcribe等待用户确认后再继续。
-
确认依赖项:
python3 -c "from openai import OpenAI; from dotenv import load_dotenv; print('OK')" 2>&1如果缺少依赖项:
pip install openai python-dotenv
运行转录
python3 <skill_directory>/scripts/transcribe.py "<video_path>"
该脚本提取音频(WAV、16kHz 单声道),将其发送到 API,并将转录文本保存到视频文件同目录下的 <video_name>.txt。
步骤 4:报告结果
告知用户:
- 转录文件的保存位置
- 行数 / 大致字数
- 内容来自内嵌字幕还是 API 转录
- 显示前几行作为预览
评论
支持 Markdown