关于 subtitle-generation
subtitle-generation 是通过 each::sense 制作和调整视频字幕的技能,面向视频制作、社交媒体和无障碍场景。它支持转录、翻译、说话人标注、定时字幕及多种导出格式。
主要功能
- 01带时间戳的语音转录
- 02多语言字幕生成
- 03说话人识别与标注
- 04动画字幕与卡拉 OK 字幕
- 05导出 SRT、VTT 等格式
- 06字幕翻译与时间调整
适用场景
- 01为视频生成带时间戳的字幕
- 02制作多种语言的字幕
- 03为播客字幕标注说话人
- 04为短视频添加动画字幕
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ eachlabs/ skills --skill subtitle-generation安装后在 Claude Code 中输入/subtitle-generation确认已加载。
附带文件references/SSE-EVENTS.md
详细介绍
字幕生成
使用 each::sense 为视频生成专业的字幕和说明文字。此技能可生成准确的转录文本、多语言字幕、动态字幕,以及适用于社交媒体、视频制作和无障碍场景的多种导出格式。
功能
- 自动生成字幕:自动将语音转录为文本,并提供准确的时间戳
- 多语言生成:根据音频生成多种语言的字幕
- 动态字幕:TikTok/Instagram 风格的逐词动态字幕
- SRT/VTT 导出:适用于编辑和分发的标准字幕格式
- 说话人分离:识别并标记对话中的不同说话人
- 字幕翻译:将现有字幕翻译成其他语言
- 硬字幕:将字幕直接渲染到视频中(硬编码)
- 卡拉 OK 风格:为音乐和歌词视频提供逐词高亮效果
- 时间调整:微调字幕时间和同步效果
- 批量处理:一次为多个视频生成字幕
快速开始
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate subtitles for this video with accurate timestamps"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/my-video.mp4"]
}'
字幕格式和输出
| 格式 | 扩展名 | 使用场景 |
|---|---|---|
| SRT | .srt | 通用格式,适用于大多数视频播放器和编辑器 |
| VTT | .vtt | Web 视频、HTML5 播放器、YouTube |
| 硬字幕 | .mp4 | 社交媒体,无需播放器支持 |
| JSON | .json | 自定义应用程序、编程访问 |
| ASS/SSA | .ass | 高级样式、动漫字幕 |
使用场景示例
1. 从视频自动生成字幕
自动转录视频文件中的语音,并生成准确的逐词时间戳。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Transcribe this video and generate subtitles with accurate timestamps. Output as SRT format. The video contains English speech."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/interview-video.mp4"]
}'
2. 生成多语言字幕
直接根据音频生成多种语言的字幕。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate subtitles for this video in English, Spanish, and French. Provide separate SRT files for each language. The original audio is in English."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/product-demo.mp4"]
}'
3. 动态/样式化字幕(TikTok 风格)
创建醒目的动态字幕,并逐词高亮,这种样式在 TikTok 和 Instagram Reels 上很受欢迎。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Add TikTok-style animated captions to this video. Use bold white text with black outline, word-by-word pop animation, centered at the bottom third of the screen. Make it trendy and engaging."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/short-form-content.mp4"]
}'
4. 导出 SRT/VTT
生成规范的标准格式字幕文件,供视频编辑器或流媒体平台使用。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Transcribe this video and export subtitles in both SRT and VTT formats. Ensure proper line breaks (max 42 characters per line, 2 lines max). Include timestamps accurate to milliseconds."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/documentary.mp4"]
}'
5. 说话人分离(识别说话人)
生成能够识别并标记不同说话人的字幕,适用于对话、采访或播客。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate subtitles for this podcast with speaker diarization. There are 2 speakers - identify them as Speaker 1 and Speaker 2 (or Host and Guest if you can determine roles). Format each line with the speaker label."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/podcast-episode.mp4"]
}'
6. 字幕翻译
将现有字幕从一种语言翻译成另一种语言,同时保留时间信息。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Translate these English subtitles to Japanese. Preserve the original timing and format. Ensure natural Japanese phrasing rather than literal translation."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/original-subtitles.srt"]
}'
7. 硬字幕
将字幕直接渲染到视频文件中(硬编码/嵌入),无需播放器支持即可显示。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate subtitles for this video and burn them directly into the video. Use white text with black background box, Arial font, positioned at bottom center. Output a new video file with embedded subtitles."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/social-media-clip.mp4"]
}'
8. 逐词卡拉 OK 风格字幕
创建带有逐词高亮效果的卡拉 OK 风格字幕,非常适合音乐视频和歌词内容。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Create karaoke-style subtitles for this music video. Display lyrics with word-by-word highlighting as they are sung. Use a gradient color change effect (from white to yellow) for the currently sung word. Center the text on screen."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": ["https://example.com/music-video.mp4"]
}'
9. 调整字幕时间
微调字幕时间,使其与音频更好地同步。
# First, upload video and generate initial subtitles
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate subtitles for this video"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"session_id": "subtitle-timing-project",
"file_urls": ["https://example.com/video-with-delay.mp4"]
}'
# Then adjust timing in the same session
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "The subtitles are appearing 500 milliseconds too early. Shift all subtitle timings forward by 500ms and regenerate the SRT file."}],
"model": "eachsense/beta",
"stream": true,
"session_id": "subtitle-timing-project"
}'
10. 批量生成字幕
在单个工作流中为多个视频生成字幕。
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate English subtitles for all these videos. Output SRT files for each. Use consistent formatting across all videos: max 2 lines, 42 characters per line, minimum 1 second display time per subtitle."}],
"model": "eachsense/beta",
"stream": true,
"mode": "max",
"file_urls": [
"https://example.com/episode-01.mp4",
"https://example.com/episode-02.mp4",
"https://example.com/episode-03.mp4"
]
}'
最佳实践
转录质量
- 清晰的音频:语音清晰且背景噪声较少时效果最佳
- 语言提示:指定源语言以提高准确性
- 说话人数:提供说话人数,以便更准确地进行说话人分离
- 上下文:提供内容背景(术语、姓名),以提高准确性
字幕格式
- 行长:每行不超过 42 个字符,便于阅读
- 显示时长:每条字幕应显示 1-7 秒
- 每条字幕的行数:每个字幕块最多 2 行
- 阅读速度:建议每分钟 150-180 个词,以便舒适阅读
动态字幕
- 字体选择:对于短视频内容,粗体无衬线字体效果最佳
- 对比度:使用描边或阴影,确保字幕在任何背景下都清晰可见
- 位置:避开平台 UI 元素,留出安全区域
- 动画:轻微动画比夸张效果更易阅读
翻译
- 文化适配:要求进行本地化,而不只是翻译
- 时间灵活性:有些语言需要更多阅读时间
- 字符限制:中日韩(CJK)语言每行通常可以使用更少的字符
字幕生成提示词建议
请求生成字幕时,请在提示词中包含以下详细信息:
- 源语言:视频中说的是什么语言?
- 目标格式:SRT、VTT、内嵌字幕还是动画字幕?
- 样式要求:字体、颜色、位置、动画
- 说话者信息:说话者人数;如已知,请注明角色
- 特殊术语:专业词汇、名称、品牌
- 输出语言:单一语言还是多种译文
提示词结构示例
"Generate [format] subtitles for this video.
Source language: [language].
[Number] speakers: [roles if known].
Style: [font, color, position requirements].
Special terms to recognize: [names, technical words].
Additional requirements: [line length, timing, etc.]"
模式选择
生成前先询问用户:
“您想要快速且经济,还是追求高质量?”
| 模式 | 适用场景 | 速度 | 质量 |
|---|---|---|---|
max | 最终字幕、专业内容、对准确性要求极高的内容 | 较慢 | 最高 |
eco | 快速草稿、审阅稿、批量处理 | 较快 | 良好 |
多轮字幕优化
使用 session_id 迭代优化字幕生成:
# Initial subtitle generation
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate subtitles for this video with speaker identification"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "subtitle-project-001",
"file_urls": ["https://example.com/interview.mp4"]
}'
# Refine based on feedback
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Change Speaker 1 label to John and Speaker 2 to Sarah. Also fix the spelling of TensorFlow wherever it appears."}],
"model": "eachsense/beta",
"stream": true,
"session_id": "subtitle-project-001"
}'
# Add styling and export
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Now create a burned-in version with the corrected subtitles. Use yellow text for John and cyan for Sarah."}],
"model": "eachsense/beta",
"stream": true,
"session_id": "subtitle-project-001"
}'
语言支持
each::sense 支持生成 50 多种语言的字幕,包括:
| 语言 | 代码 | 备注 |
|---|---|---|
| 英语 | en | 美国、英国、澳大利亚变体 |
| 西班牙语 | es | 拉丁美洲和欧洲变体 |
| 法语 | fr | 法国和加拿大变体 |
| 德语 | de | |
| 日语 | ja | |
| 韩语 | ko | |
| 中文 | zh | 简体和繁体 |
| 阿拉伯语 | ar | 支持 RTL |
| 印地语 | hi | |
| 葡萄牙语 | pt | 巴西和欧洲变体 |
错误处理
| 错误 | 原因 | 解决方案 |
|---|---|---|
Failed to create prediction: HTTP 422 | 余额不足 | 在 eachlabs.ai 充值 |
| 转录质量低 | 音频质量差 | 提供更清晰的音频源 |
| 语言检测失败 | 混合语言或语音不清晰 | 明确指定源语言 |
| 超时 | 视频较长或处理复杂 | 将客户端超时设置为至少 10 分钟 |
客户端配置
重要:较长视频的字幕生成可能需要较长时间。
- 最短超时时间:10 分钟(600 秒)
- 建议:根据视频长度设置超时时间(每分钟视频时长设置 2–3 分钟)
- 流式传输:使用 SSE 事件处理来显示进度
相关技能
each-sense- 核心 API 文档video-generation- 生成带内置字幕的视频voice-audio- 音频处理和语音合成video-edit- 视频编辑和后期制作
评论
支持 Markdown