mcpField
S
subtitle-generation

subtitle-generation

github.com/eachlabs创意与媒体44795 次安装今天更新
代码仓库

关于 subtitle-generation

subtitle-generation 是通过 each::sense 制作和调整视频字幕的技能,面向视频制作、社交媒体和无障碍场景。它支持转录、翻译、说话人标注、定时字幕及多种导出格式。

主要功能

  1. 01带时间戳的语音转录
  2. 02多语言字幕生成
  3. 03说话人识别与标注
  4. 04动画字幕与卡拉 OK 字幕
  5. 05导出 SRT、VTT 等格式
  6. 06字幕翻译与时间调整

适用场景

  1. 01为视频生成带时间戳的字幕
  2. 02制作多种语言的字幕
  3. 03为播客字幕标注说话人
  4. 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.vttWeb 视频、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)语言每行通常可以使用更少的字符

字幕生成提示词建议

请求生成字幕时,请在提示词中包含以下详细信息:

  1. 源语言:视频中说的是什么语言?
  2. 目标格式:SRT、VTT、内嵌字幕还是动画字幕?
  3. 样式要求:字体、颜色、位置、动画
  4. 说话者信息:说话者人数;如已知,请注明角色
  5. 特殊术语:专业词汇、名称、品牌
  6. 输出语言:单一语言还是多种译文
提示词结构示例
"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