关于 transcribe-video
使用 AWS Transcribe 转录音频或视频文件的技能,会在源文件旁生成 SRT、VTT 和纯文本结果,并清理临时 AWS 资源。
主要功能
- 01使用 ffmpeg 提取音频
- 02通过 AWS Transcribe 转录
- 03生成 SRT 和 VTT 字幕
- 04生成纯文本转录稿
- 05清理临时 AWS 资源
适用场景
- 01为视频文件制作字幕
- 02生成音频转录稿
- 03制作适用于网页的 VTT 字幕
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rameerez/ claude-code-startup-skills --skill transcribe-video安装后在 Claude Code 中输入/transcribe-video确认已加载。
详细介绍
视频转录技能
使用 AWS Transcribe 从 $ARGUMENTS(视频或音频文件路径,可选地在后面附加语言代码,如 en-US 或 es-ES)生成字幕和转录文本。
在源文件旁生成 .srt、.vtt 和 .txt 文件。
流程
- 验证先决条件 - 检查是否已安装并配置
ffmpeg和awsCLI - 提取音频,使用 ffmpeg 将视频转换为 MP3
- 创建临时 S3 存储桶,并上传音频
- 使用 SRT 和 VTT 字幕输出运行 AWS Transcribe 任务
- 下载结果并生成纯文本转录
- 清理所有 AWS 资源 - 删除 S3 存储桶、Transcribe 任务和临时文件。不会产生持续费用。
先决条件
- 已安装
ffmpeg(brew install ffmpeg) - 已安装并配置
awsCLI,且凭证有效(brew install awscli && aws configure) - AWS 凭证需要具备以下权限:
s3:*(创建/删除存储桶)、transcribe:*(启动/删除任务)
分步操作
第 1 步:提取音频
ffmpeg -i "input.mp4" -vn -acodec mp3 -q:a 2 "/tmp/transcribe-audio.mp3" -y
第 2 步:创建临时 S3 存储桶并上传
BUCKET="tmp-transcribe-$(date +%s)"
aws s3 mb "s3://$BUCKET" --region us-east-1
aws s3 cp "/tmp/transcribe-audio.mp3" "s3://$BUCKET/audio.mp3"
第 3 步:启动转录任务
JOB_NAME="tmp-job-$(date +%s)"
aws transcribe start-transcription-job \
--transcription-job-name "$JOB_NAME" \
--language-code en-US \
--media-format mp3 \
--media "MediaFileUri=s3://$BUCKET/audio.mp3" \
--subtitles "Formats=srt,vtt" \
--output-bucket-name "$BUCKET" \
--region us-east-1
语言代码: en-US、es-ES、fr-FR、de-DE、pt-BR、ja-JP、zh-CN、it-IT、ko-KR 等。如果未指定,默认使用 en-US。
第 4 步:轮询直到任务完成
while true; do
STATUS=$(aws transcribe get-transcription-job \
--transcription-job-name "$JOB_NAME" \
--region us-east-1 \
--query 'TranscriptionJob.TranscriptionJobStatus' \
--output text)
if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ]; then break; fi
sleep 5
done
第 5 步:下载字幕文件
将 .srt 和 .vtt 文件保存在原始文件旁:
aws s3 cp "s3://$BUCKET/$JOB_NAME.srt" "/path/to/input.srt"
aws s3 cp "s3://$BUCKET/$JOB_NAME.vtt" "/path/to/input.vtt"
第 6 步:生成纯文本转录
下载 JSON 结果并提取完整的转录文本:
aws s3 cp "s3://$BUCKET/$JOB_NAME.json" "/tmp/transcribe-result.json"
然后使用工具从 JSON 中提取 .results.transcripts[0].transcript 字段,并将其保存为原始文件旁的 .txt 文件。
第 7 步:清理所有资源
重要: 务必进行清理,以避免产生持续的 S3 存储费用。
# Delete S3 bucket and all contents
aws s3 rb "s3://$BUCKET" --force --region us-east-1
# Delete the transcription job
aws transcribe delete-transcription-job --transcription-job-name "$JOB_NAME" --region us-east-1
# Delete temp audio file
rm -f "/tmp/transcribe-audio.mp3" "/tmp/transcribe-result.json"
实际结果(参考)
以下为实际转录任务的结果:
| 视频 | 时长 | 音频大小 | Transcribe 耗时 | 字幕片段数 |
|---|---|---|---|---|
| X/Twitter 短片 | 2:40 | 2.5 MB | ~20 秒 | 83 |
| 屏幕录制 | 18:45 | 11.4 MB | ~60 秒 | 500+ |
关键见解
- AWS Transcribe 速度很快 - 即使是 19 分钟的视频,也能在大约一分钟内完成
- 短内容(推文、短视频)几乎可以瞬间转录完成
- 成本可以忽略不计 - AWS Transcribe 的费用约为 ~$0.024/分钟,因此一段 19 分钟的视频约需 ~$0.46
- 清理至关重要 - 务必删除 S3 存储桶,以避免存储费用
- SRT 兼容性最高 - 适用于大多数视频播放器和编辑器;VTT 更适用于网页
输出文件
original-video.mp4
original-video.srt # Subtitles with timestamps (most compatible)
original-video.vtt # Web-optimized subtitles (for HTML5 <track>)
original-video.txt # Plain text transcript (no timestamps)
转录后
- 确认所有输出文件均已生成:
ls -lh /path/to/original-video.{srt,vtt,txt} - 报告字幕片段数和总时长
- 确认所有 AWS 资源均已清理(不存在 S3 存储桶,也没有剩余的 Transcribe 任务)
评论
支持 Markdown