SuperAPI AI 工具集

screenkite-audio-dub

办公与效率

查看项目

更新于 10-16 05:35

技能介绍

用途

screenkite-audio-dub 用于把 ScreenKite 录屏中的口播音频替换为另一种语言的时间匹配配音。原始停顿会被保留,对齐按每个 cue 单独处理,而不是把整段音频拉伸成一个文件。

主要能力

  • 词级转写:优先使用 ScreenKite 的 export-words(沿用 GUI 的 ElevenLabs Scribe 配置,返回剪切后的时间线秒数),失败时回退到 screenkite-transcription-cut 的 transcribe_mic.py。
  • 打包 cue:pack_cues.py 将词级 JSON 转为 cues.json 与 source.srt,--silence-threshold 默认 0.45,可调高合并更多语音、调低实现近乎逐句配音。
  • 翻译填写:复制 cues.json 并为每个 dub_text 填入目标语言文本,保持每个原始窗口一个 cue,不合并或拆分。
  • 时间匹配混音:gen_dub.py 对每个 cue 以 speed 1.0 生成 TTS;若时长偏差超过 8%,用 prosody.speed(Fish 0.5–2.0)或 ElevenLabs voice_settings.speed 重新生成;仍过长则用 ffmpeg atempo;再长则硬裁剪(报告为 clipped);过短则在窗口内补静音。最终混到与时间线等长的静音底上。
  • 应用配音:apply_dub.py 将原麦克风轨设为 mute: true,并新增 type=audio 且带 createTrack: {name, language} 的音轨,使 ScreenKite 的语言分组音频导出把配音视为独立语言。
  • 可选字幕:可从配音 SRT 通过 fx captions import 导入字幕。

使用方式

前置条件:screenkite CLI(/usr/local/bin/screenkite),每次调用尽量带 --project;PATH 中有 ffmpeg 与 ffprobe;Python 3.10+ 与 requests(建议 uv run --with requests)。默认 TTS 为 Fish Audio,需要 FISH_API_KEY(可在 bundle 向上查找的 .env、~/.config/env/*.env 或环境变量中),语音 id 通过 --voice 或 FISH_VOICE_ID 指定,密钥获取地址为 https://fish.audio/app/api-keys。ElevenLabs 回退需要 ELEVEN_LABS_API_KEY(带下划线),可选 ELEVEN_VOICE_ID(默认 George JBFqnCBsd6RMkjVDRZzb)。若缺少 Fish 密钥,应先向用户索取;仅在用户同意或 Fish 不可用时切换到 ElevenLabs。

流程分七个阶段:

  1. 盘点:用 stat(scope summary)、ls-assets、transcribe-ready 获取 project.duration、麦克风 trackId(通常含 mic)与 projectRevision。
  2. 转写:export-words 输出 transcript.json;失败则回退。转写可能短、嘈杂或错误,翻译前应向用户展示源文本。
  3. 打包 cue:运行 pack_cues.py 生成 cues.json 与 source.srt,展示 cue 表,未填 dub_text 前不生成音频。
  4. 翻译(必须复核):填写 dub_text,匹配含义而非词数,保留产品名与代码标识符,不改 start/end,展示前后对照表并等待用户确认。
  5. 生成时间匹配混音:gen_dub.py 支持 --provider fish 或 elevenlabs,--list-voices 可列出 Fish 语音,--dry-run 只打印计划不调用 TTS。真实运行后检查 report.json 中的 clipped_cue_ids 与 max_abs_drift_s,若有裁剪需改写并重新生成。
  6. dry-run 应用(必须):确认静音目标是麦克风而非系统音频,用户确认前不应用。
  7. 应用:执行 apply_dub.py。撤销可用 edit-timeline action=undo(每次变更一次,先 mute 后 add),也可将麦克风轨 props mute 设为 false 或静音新配音轨来恢复原声。

适用场景

需要为 ScreenKite 录屏制作多语言配音、且希望保留原始停顿与逐句时间对齐的场景。4 秒测试录音也可作为冒烟测试:打包 → 一两个 cue → 生成 → 应用。

限制与注意事项

  • 不要把整段脚本作为单个文件做 TTS,否则停顿塌陷、cue 漂移。
  • 不要跳过翻译复核,错误 ASR 会进入配音。
  • 除非用户要求,不要静音系统音频,只静音麦克风轨。
  • 不要跳过 dry-run 直接应用。
  • 不要依赖过期的默认项目,每次调用都传 --project。
  • 不要忽略被裁剪的 cue,硬裁剪会吃掉句尾,应缩短 dub_text 并重新生成该 cue。
  • 多语言配音不要用 fx voiceover/replace,那会替换主口播音频且没有语言标签;优先用 add + createTrack。仅当用户想要原地替换且不新增音轨时才用 voiceover/replace。
  • 若 export-words 返回几乎没有语音,应停止并询问是否强制重新转写或换项目。
  • 官方文档未提供收费、价格、平台支持范围等信息。