mcpField
S
short-translate

short-translate

github.com/melvynx创意与媒体64364 次安装1 周前更新
代码仓库

关于 short-translate

Short Translate 是面向创作者的视频配音技能,可用从原片段克隆的创作者声音制作其他语言版本。它保留原始画面但不做口型同步,再将配音片段交给 short-editing 添加字幕并剪辑。

主要功能

  1. 01将片段配成其他语言
  2. 02从片段克隆声音
  3. 03保留原始视频画面
  4. 04处理已剪辑或原始片段
  5. 05准备译文字幕和剪辑

适用场景

  1. 01制作短片段的其他语言版本
  2. 02先裁剪片段以减少计费时长
  3. 03为译制片段添加字幕并剪辑

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/melvynx/video-agent-skills --skill short-translate

安装后在 Claude Code 中输入/short-translate确认已加载。

详细介绍

短视频翻译

输入一条原始录制,输出一条相同录制的另一种语言版本,并保留创作者本人的声音(ElevenLabs 会根据录制本身克隆声音)。画面保持原样:不做口型同步。然后,/short-editing 会像处理其他录制一样编辑翻译后的录制,并添加新语言的字幕。

用对方的语言与其沟通。<slug>:录制的 slug;<lang>:目标语言代码(en、es、fr、de、pt、it、ja 等);<from>:源语言代码。

1. ElevenLabs 密钥(仅需设置一次)

密钥保存在 video-agent/.env 中,绝不能出现在聊天消息、脚本或提交记录里:

grep -c ELEVENLABS_API_KEY video-agent/.env 2>/dev/null

如果为 0 或文件不存在:

  1. 让对方在 elevenlabs.io/app/settings/api-keys 创建密钥(需要 ElevenLabs 账户;配音会消耗其套餐额度,免费套餐会添加水印)。
  2. 让对方自行将密钥粘贴到 video-agent/.env 中,单独占一行:ELEVENLABS_API_KEY=sk_...。可以提出代为创建空文件并打开。绝不要让对方在聊天中粘贴密钥;如果对方还是这么做了,就将密钥写入文件,并告知对方可以重新生成密钥。
  3. video-agent/.env 必须包含在项目的 .gitignore 中(如果没有,就添加一行 video-agent/.env)。

下面的每条命令都会通过 set -a; . video-agent/.env; set +a 加载密钥,且不会打印密钥。

2. 要翻译的内容

翻译录制内容,而不是已完成的视频:已完成的视频字幕已烧录成旧语言。之后,short-editing 会根据新语音剪辑、添加字幕并调整时间。

  • 已剪辑的录制(video-agent/edits/short-<slug>/source/spec.js 存在):只发送保留的片段,避免为静音、口吃或重录内容付费。使用 short-editing 的引擎以正常速度制作纯剪辑:为这条命令在 spec 中添加 speed: 1,然后
    node <skill>/engine/short.mjs rough video-agent/edits/short-<slug>
    
    (<skill> = short-editing 技能文件夹),之后删除 speed: 1。源文件是 video-agent/edits/short-<slug>/output/short-<slug>-rough.mp4。
  • 原始录制:建议先运行 /short-editing,直到完成剪辑列表(步骤 1 到 4),理由相同。赶时间时,直接发送原始录制。

3. 估算,然后发送

ffprobe -v error -show_entries format=duration -of csv=p=0 "<source>"

显示一行并等待对方确认:Dub <slug> fr → en · 0:52 of video · billed on your ElevenLabs credits for about 1 minute (check your plan's dubbing price on elevenlabs.io/pricing) · no lip-sync。

然后发送(每分钟上传时间约为 10 秒):

mkdir -p video-agent/.tmp
set -a; . video-agent/.env; set +a
curl -sS --fail-with-body -X POST https://api.elevenlabs.io/v1/dubbing \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -F "file=@<source>" -F "target_lang=<lang>" -F "source_lang=<from or auto>" \
  -F "num_speakers=1" -F "watermark=false" -F "name=<slug>-<lang>" \
  > video-agent/.tmp/<slug>-<lang>.job.json
cat video-agent/.tmp/<slug>-<lang>.job.json

会返回 {"dubbing_id": "...", "expected_duration_sec": ...}。保留该 ID:如果中途停止,使用它再次轮询无需付费。401 表示密钥错误;402 或 "quota" 表示套餐额度不足;如果返回 watermark refused,则不带该字段重新发送。

4. 等待,然后下载

每 15 秒轮询一次,直到 status 为 dubbed(如果为 failed:显示错误并停止)。短视频通常需要 1 到 5 分钟;请在后台运行:

set -a; . video-agent/.env; set +a
curl -sS --fail-with-body -H "xi-api-key: $ELEVENLABS_API_KEY" https://api.elevenlabs.io/v1/dubbing/<dubbing_id>

然后获取配音文件:

set -a; . video-agent/.env; set +a
curl -sS --fail-with-body -H "xi-api-key: $ELEVENLABS_API_KEY" -o video-agent/.tmp/<slug>-<lang>.dub https://api.elevenlabs.io/v1/dubbing/<dubbing_id>/audio/<lang>
ffprobe -v error -show_entries stream=codec_type -of csv=p=0 video-agent/.tmp/<slug>-<lang>.dub
  • 如果包含 video 流:这已经是配音后的视频,将其移动到 video-agent/takes/<slug>-<lang>.mp4。
  • 如果只有音频:将其重新叠加到原始画面上:
    ffmpeg -y -i "<source>" -i video-agent/.tmp/<slug>-<lang>.dub -map 0:v -map 1:a -c:v copy -c:a aac -b:a 192k -shortest video-agent/takes/<slug>-<lang>.mp4
    

检查时长:与源文件相同(误差在 1 秒以内)。然后请对方在编辑前听一下前 10 秒(检查声音、口音和错词)。

5. 编辑翻译后的拍摄内容

/short-editing <slug>-<lang>,并告诉它:

  • 语言已更改:在 video-agent/studio/whisper-config.mjs 中,将 WHISPER_LANG 设为 <lang>,用于此次转录(英语:使用 WHISPER_MODEL = "medium.en" 效果最佳;其他语言:使用 "medium"),完成后恢复原值。钩子、分镜和 post.md 都要用 <lang> 撰写。
  • 与原版采用相同的剪辑(如果有原版):使用相同的钩子和分镜(翻译后的),并将它们放在新转录内容中对应的词句处。
  • 使用 <lang> 撰写行动号召(CTA):只需问他们一次是否能提供翻译,或翻译 voice.md 中的行动号召并展示出来。

所有内容都命名为 <slug>-<lang>,让两个版本并排存放。然后在对应语言的账号上运行 /publish <slug>-<lang>。

最后删除 video-agent/.tmp/<slug>-*,但如果他们之后可能还想下载配音,则保留作业文件。

诚实说明限制

  • 不支持口型同步:嘴唇仍会按照原语言说话。如果画面中动作较多、脸部较小或剪辑较快,影响不大;长时间特写时会很明显。
  • 语音克隆基于原始拍摄内容:原始内容有噪声或人声下有音乐,都会降低克隆效果。
  • 机器翻译可能会误译姓名、术语和笑话。发布前,请让他们(或母语者)检查配音版本的转录内容。
  • 配音按分钟消耗 ElevenLabs 点数,价格取决于他们的套餐。先裁剪拍摄内容是最省钱的做法。

评论

支持 Markdown