ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenMontage HyperFrames TTS→Captions 实战:从无录音旁白到词级字幕时序的两条通路

OpenMontage HyperFrames TTS→Captions 实战:从无录音旁白到词级字幕时序的两条通路 OpenMontage HyperFrames TTS→Captions 实战从无录音旁白到词级字幕时序的两条通路【免费下载链接】OpenMontageWorlds first open-source, agentic video production system. 12 production pipelines, 100 tools, 700 agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMontage当成品视频没有预先录制的真人旁白voiceover时字幕captions的逐词时间轴必须由管线自动生成。本文基于 OpenMontage 仓库中hyperframes-mediaSkill 的实操文档系统讲解先用 TTS 合成旁白、再拿到与语音严丝合缝的词级字幕时序的完整方法论一条是 HeyGen 一次调用直出原生词级时间戳无需转写另一条是 ElevenLabs/Kokoro 合成后回接 Whisper 转写提取词边界。读完你既能按命令直接落地两种流程也能理解其背后的 provider 选择、语言规则与字幕消费契约。问题的起点字幕需要什么时间数据OpenMontage 的 HyperFrames 字幕渲染链路消费的是扁平词对象数组而不是整句粗粒度时间轴[ { id: w0, text: Hello, start: 0.0, end: 0.5 }, { id: w1, text: world., start: 0.6, end: 1.2 } ]字段约定参见 transcribe.md → Output Shapeidw0、w1…在归一化阶段按顺序生成供字幕层做**逐词覆写per-word overrides**的稳定引用为兼容手写 transcript 的历史数据该字段是可选的。start/end单位是秒end - start代表该词在音频中的真实时长。只有拿到词级时间戳字幕作者指南中的逐词动画、karaoke 高亮、重点词强调品牌词放大、数字加粗、CTA 高亮才可能实现SRT/VTT 这类短语级phrase-level字幕只能整体进出场做不了逐词效果。因此核心问题只有一个在没有真人旁白的前提下如何又快又准地把文本变成每个词的进出时间文档给出的答案是一条双通路决策视所选 TTS provider 是否原生返回词级时间戳而定——有则一次调用结束没有则补一次 Whisper 转写。两条通路的总体决策维度Path A — HeyGenPath B — ElevenLabs / Kokoro词级时间戳来源TTS 响应原生返回word_timestamps[]不返回 → 用 Whisper 对合成音频转写提取额外转写步骤无需要一次transcribe语音质量 / 适用场景最佳音质 一次拿齐时间戳云端大词库 / 完全离线、免 API Key 快速迭代凭据要求$HEYGEN_API_KEY或~/.heygenOAuthElevenLabs 需 keyKokoro 无需任何 key这也是 SKILL.md 中 TTS provider 链路的本质优先可用者胜出——HeyGen → ElevenLabs → Kokoro引擎会自动在 HeyGen 之外的两家后串联一次转写补上词数据。动手前Preflight 与凭据解析hyperframes-media的纪律是没有 HeyGen 凭据不等于可以直接静默走本地引擎。生成任何旁白/BGM 前应运行共享 preflight 并把输出原样转达给用户npx hyperframes auth status已登录打印账号继续。未登录exit 1是正常状态先推荐npx hyperframes auth login浏览器 OAuth同时注册账号已有 HeyGen API Key 则用npx hyperframes auth login --api-key凭据统一落盘到共享的~/.heygen不写per-repo.env。凭据解析优先级首源命中即用见 tts.md 与lib/heygen.mjs实现$HEYGEN_API_KEY→$HYPERFRAMES_API_KEY→ 项目.env自动向上查找 ≤5 层目录→~/.heygen/credentials。OAuth 登录以Authorization: Bearer发送API Key 以X-Api-Key发送若唯一凭据是过期的 OAuth token会停止并提示执行npx hyperframes auth refresh。Path A — HeyGen单次调用直出词级时间戳若决定走 HeyGenStarfish 语音引擎音频与词时间戳在同一次响应中返回传--words即可无需任何 Whisper 转写npx hyperframes tts script.txt --provider heygen --output narration.wav --words narration.words.json关键点narration.words.json落盘时已是字幕管线可直接消费的[{ id, text, start, end }]扁平结构——无需单独转写环节。文本较长时间写在.txt里传路径约 5 分钟以上语音可考虑切段。--voice id必须是starfishvoice_id--list或GET /v3/voices?enginestarfish查询传 v2 目录的 id 会被 HTTP 400 拒绝不传时英文默认固定为Marcia05f19352e8f74b0392a8f411eba40de1固定默认值是为了结果确定性。输出扩展名决定行为.wav→ 经 ffmpeg 转码为 44.1kHz 单声道下游ffprobe与 Whisper 都期望的格式.mp3→ 原样字节流无需 ffmpeg。源码侧的证据时间戳如何被净化在 OpenMontage 仓库中这条路径的实现集中在两块独立单发 CLI scripts/heygen-tts.mjs——直接调 HeyGen v3 REST绕开公开发布的hyperframes tts常是纯 Kokoro 本地构建、即使设置了$HEYGEN_API_KEY也可能静默回落 Kokoro的陷阱node .agents/skills/hyperframes-media/scripts/heygen-tts.mjs \ Welcome to HyperFrames. -o narration.wav --words narration.words.json共享引擎代码 scripts/lib/tts.mjs 的synthesizeHeygen()解析inner.word_timestamps时做了两层过滤——丢弃start/end之类的边界哨兵 token!/^.*$/.test(w.word)丢弃缺字段或非法的时间戳条目再由withWordIds()重排连续的idw0、w1…。这也是为什么最终 JSON 与transcribe输出形状完全同构、可无差别喂给字幕层。Path B — ElevenLabs / KokoroTTS 后再走 WhisperElevenLabs 与本地 Kokoro 都不返回词数据流程拆成两步先合成音频再对音频转写。# 1) 合成旁白voice af_heart 为美式英语见下方前缀表 npx hyperframes tts script.txt --voice af_heart --output narration.wav # 2) 对合成音频转写提取精确词边界af_heart 是美式英语 → small.en npx hyperframes transcribe narration.wav --model small.en文档强调这样做的收益Whisper 从生成的音频里提取词边界字幕时序与真实发声严格一致无需手工调校。转写输出transcript.json按 captions/ 下的字幕 references 消费即可。--model必须与语音语言匹配Path B 最关键的一条铁律是转写模型与 TTS 语音语言对齐使用a/b前缀的 Kokoro 声音美音/英音→--model small.en其余语言 →--model small --language code。原因见 transcribe.md 的Language Rule不可妥协.en系列模型tiny.en/base.en/small.en/medium.en会把非英语音频翻译成英语静默摧毁原语言。而 CLI 的默认值恰好是small.en——所以文档反复强调永远显式传--model绝不依赖默认值。Kokoro 声音 ID 的首字母决定其音素化phonemizer语言这正是看前缀选模型的根据前缀语言前缀语言a美式英语h印地语b英式英语i意大利语e西班牙语j日语f法语p巴西葡语z普通话模型档位与内容类型模型体积速度适用tiny75 MB最快快速预览、冒烟测试base142 MB快短视频、清晰人声small466 MB中多数多语言内容的默认medium1.5 GB慢带人声的音乐、嘈杂音频large-v33.1 GB最慢生产级质量按内容选档建议纯人声/轻背景 →small.en音乐上的语音或带唱 → 从medium.en起试成品音乐完整配器人声→medium.en起步、很可能仍需人工歌词或外部 API见 transcript-handling.md多语言 →medium/large-v3无.en后缀搭配--language。非英语音素化还需要系统级espeak-ngbrew install espeak-ng/apt-get install espeak-ng。引擎里的自动串联在完整工作流里你甚至不用手敲第二步共享音频引擎scripts/audio.mjs对 ElevenLabs/Kokoro 会自动调用transcribeWav()见 lib/tts.mjs——语言为英文用small/small.en非英文自动补--language并写入一次性的--dir防止并发场景下transcript.json冲突。从词数组到字幕质检、清洗与风格化无论走哪条通路拿到词数组后到真正渲染字幕前文档要求强制执行三步详见 transcript-handling.md 与 authoring.md质检强制检查是否有♪/等音乐记号 token、乱码词、超短词跨度end - start 0.05。若超过 20% 条目是音乐 token 或明显无意义 → 用medium.en重试仍失败则建议外部 Whisper APIOpenAI/Groq或人工提供 SRT/VTT 歌词。清洗过滤音乐记号与单个非单词字符条目只让真词进入字幕合成文档附有可直接使用的 JS 过滤片段用♪类正则与huh|uh|um|ah|oh填充词规则剔除噪声。风格化读取全文判断基调Corporate 清新、Hype 高能、Tutorial 精确、Storytelling 优雅、Social 活泼按 authoring.md 的脚本→风格映射表决定字体气质、动画性格、配色与字号档位再按能量高低做词组划分高能 2–3 词、会话 3–5 词、舒缓 4–6 词在句边界或 150ms 停顿处断组。Karaoke 逐词高亮与音频响度联动的进阶动效见 motion.md。常见坑与实战清单把 SKILL.md 的硬性规则与文档要点汇成自检清单先跑 Preflightnpx hyperframes auth status之后 STOP等用户决定登录或离线不要静默降级。HeyGen 可用 可解析的凭据不是 CLI 本身。公开发布的hyperframes tts可能只支持 Kokoro需要 HeyGen 时用引擎或heygen-tts.mjs直接 REST一次拿齐词时间戳。Voice ID 是 provider 专属的am_michael只在 KokoroHeyGen 的 starfish UUID 在 Kokoro 不可用。传了--voice就同时钉住--provider防止用户环境变化造成 provider 漂移。永远显式传--model转写默认small.en会静默翻译非英语内容Path B 中把模型匹配到语音语言a/b前缀 →small.en。HeyGen 有原生词时间戳ElevenLabs/Kokoro 没有——引擎对后者自动串联 transcribe独立使用时 HeyGen 传--words、其余跑一次transcribe。字幕消费扁平词数组{id,text,start,end}组必须硬性在group.end处tl.set隐藏见 authoring.md 的Caption Exit Guarantee。.wav输出依赖 ffmpeg云端两家返回 mp3转.wav需要 ffmpeg 在 PATH否则直接-o file.mp3。长文本写.txt传路径旁白建议先给表演计划performance_intent、pacing_profile、energy_curve、停顿策略等见 tts.md → Expressive narration contract别依赖读自然一点这类模糊指令。小结与延伸阅读两条通路共享同一终点——形状统一的扁平词数组让下游字幕渲染完全无感于旁白来自哪家 TTS。选型口诀要最佳音质且想省一次转写 → HeyGen--words直出要云端大词库 → ElevenLabs补一次 Whisper要离线免 Key 快速迭代 → Kokoro同样补一次 Whisper。语言对齐与显式--model是两路都不能省的细节。延伸阅读仓库内相对路径Skill 总览与音频引擎说明provider 链、preflight、不可妥协规则TTS referencesprovider 表、voice 选择、HeyGen 词时间戳形态Transcribe references模型档位、Language Rule、输出形状字幕作者指南 与 Transcript 指南实现源码heygen-tts.mjs、lib/tts.mjs、lib/heygen.mjs【免费下载链接】OpenMontageWorlds first open-source, agentic video production system. 12 production pipelines, 100 tools, 700 agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMontage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表