将字幕翻译
接入你的工作流。
让 Premiere Pro 插件和自定义工具调用与网站相同的 Basic 和 Plus 翻译服务。
快速开始
创建密钥后,下载 Node.js 示例。它会估算费用、提交任务、轮询状态并保存翻译后的 SRT。需要 Node.js 20 或更高版本,无需安装其他依赖。
export AST_BASE_URL='https://your-website-origin'
export AST_API_KEY='ast_YOUR_API_KEY'
node translate-subtitle.mjs input.srt zh plus translated.srt my-job-001
# 在最后添加 true 参数可下载双语字幕:
node translate-subtitle.mjs input.srt zh plus bilingual.srt my-job-001 true将基础 URL 替换为本站地址,并将下载的脚本放在 SRT 文件旁。必须明确选择 basic 或 plus。网络故障后重试时,沿用相同的任务键、输入和选项。使用相同任务键再次下载会复用已有翻译;请选择尚不存在的输出文件名。
身份验证
打开控制台 → 安全设置 → API 密钥。为密钥命名并创建,之后可随时重新查看和复制完整密钥,也可在同一页面撤销。
Authorization: Bearer ast_YOUR_API_KEY以本站地址作为基础 URL。全部 6 个接口都需要有效密钥。每个账户最多可有 5 个有效密钥。API 密钥可访问该账户通过 API 创建的翻译任务及积分余额。
请使用你自己账户的密钥,妥善保管,不要将共享密钥打包进发布的插件。接口不接受 Cookie 身份验证,也不接受 URL 查询参数中的密钥。
六个接口
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/v1/capabilities | 语言、模型档位和限制 |
| GET | /api/v1/credits | 积分余额 |
| POST | /api/v1/translations/estimate | 估算费用 |
| POST | /api/v1/translations | 创建任务 |
| GET | /api/v1/translations/{taskId} | 任务状态和进度 |
| GET | /api/v1/translations/{taskId}/result | 下载 SRT |
JSON 成功响应将结果放在 { "data": ... } 中。成功下载翻译结果时,响应始终为 SRT。
估算与提交
两个 POST 接口接受相同的 JSON 请求体。请发送 Content-Type: application/json。
{
"fileName": "interview.srt",
"subtitle": "1\n00:00:01,000 --> 00:00:03,000\nHello!\n",
"targetLanguage": "zh",
"modelTier": "plus"
}subtitle、targetLanguage 和 modelTier 为必填项。必须明确选择 basic 或 plus;省略 modelTier 会返回 400 INVALID_REQUEST。源语言会自动识别。目标语言代码可从 /api/v1/capabilities 获取。
可选的 glossary 条目包含 source 和 target。可选的 characters 条目还可包含 gender(male 或 female)及 aliases(别名列表)。准确的数据结构请参阅 OpenAPI 规范。未知字段会被拒绝。
先向 /api/v1/translations/estimate 发送 POST 请求。响应包含 creditCost、availableCredits、sufficientCredits 和字幕条目数量。估算不会创建任务或预留积分。
创建任务
curl "$AST_BASE_URL/api/v1/translations" \
-H "Authorization: Bearer $AST_API_KEY" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: premiere-sequence-123-zh-v1' \
--data-binary @request.json将 JSON 请求体保存为 request.json。把两个环境变量分别设为本站地址和你的 API 密钥。
新任务返回 202 Accepted,包含 data.id、data.creditCost、data.statusUrl 和 data.resultUrl。Location 响应头指向任务状态接口。
{
"data": {
"id": "6f476119-c02f-49a9-b61f-2b3327bd318c",
"status": "pending",
"fileName": "interview.srt",
"modelTier": "plus",
"targetLanguage": "zh",
"creditCost": "1.00",
"statusUrl": "/api/v1/translations/6f476119-c02f-49a9-b61f-2b3327bd318c",
"resultUrl": "/api/v1/translations/6f476119-c02f-49a9-b61f-2b3327bd318c/result"
}
}每次计划执行的新翻译都应生成一个 Idempotency-Key,重试时保持不变。相同请求返回同一个任务,HTTP 状态码为 200。使用同一键发送不同请求体会返回 409。幂等键属于账户,更换 API 密钥后仍然有效。
该请求头允许 1–128 个字母、数字、点、下划线、冒号或连字符。重复请求对应的任务若已过期或删除,会返回 410。只有在确实要创建另一个计费任务时,才使用新键。
进度与结果
每隔5 秒轮询一次状态 URL。状态为 pending、processing、completed 或 failed。progress 为百分比,无法获取时为 null;errorCode 说明任务失败原因。
curl --fail "$AST_BASE_URL/api/v1/translations/$TASK_ID" \
-H "Authorization: Bearer $AST_API_KEY"将 TASK_ID 设为提交响应中的 data.id。进度响应包含上述任务字段,以及 progress 和 errorCode,这两项均可能为 null。状态为 failed 时应停止轮询并显示错误。只有明确要重新翻译时,才使用新任务键。
完成后,向结果 URL 发送 GET 请求,将响应文本保存为 SRT 文件。响应类型为 application/x-subrip; charset=utf-8。省略 includeOriginal 或将其设为 false 时只返回译文。添加 ?includeOriginal=true 可获取双语字幕,每条字幕先显示原文,再显示译文。
curl --fail "$AST_BASE_URL/api/v1/translations/$TASK_ID/result?includeOriginal=true" \
-H "Authorization: Bearer $AST_API_KEY" \
--output translated-bilingual.srt不支持 format 参数,传入会返回 400 INVALID_REQUEST。错误响应为 JSON。过早请求结果会返回 409 TRANSLATION_NOT_READY,并附带 Retry-After: 5。翻译失败时返回 409 TRANSLATION_FAILED。
请及时下载已完成的结果。网站的删除和保留规则也适用于 API 任务。任务不存在或无权访问时返回 404。API 任务也会显示在你的字幕历史记录中。
积分与限制
API 翻译使用账户现有积分,并遵循网站的模型档位定价和最低扣费规则,没有额外的 API 附加费。请为每个文件调用估算接口;估算不会锁定价格。任务被接受后的 creditCost 即为预留积分数量。
任务等待或处理中会预留积分,成功完成后只计费一次。即使排队期间超过积分原有效期,已预留积分仍可用于该任务。任务失败或删除后会释放预留:未过期积分恢复为可用余额,已过期积分不会恢复有效。失败任务不收取翻译费用。余额接口以十进制字符串返回 availableCredits、reservedCredits 和 totalCredits(可用积分加预留积分)。
{ "data": { "availableCredits": "9.00", "reservedCredits": "1.00", "totalCredits": "10.00" } }- 每个账户每 60 秒窗口最多 60 次请求,所有密钥共享配额。
- 每个窗口最多 10 次 POST 请求,估算和提交共享配额。
- 最多同时有 3 个等待或处理中的 API 任务。
- 每个任务只能提交一个文件和一种目标语言。
- UTF-8 字幕文本最大 1 MiB;JSON 请求体最大 2 MiB;最多 5,000 条字幕。
- 单条字幕的文本长度遵循网站设置,默认最多 500 个字符。
- 最多 200 个术语条目、100 个角色,每个角色最多 20 个别名。术语和名称最多 200 个字符。
从 /api/v1/capabilities 获取当前限制。响应包含 X-RateLimit-Limit、X-RateLimit-Remaining 和 X-RateLimit-Reset(Unix 秒时间戳)。收到 429 响应时,请遵循 Retry-After。翻译完成时间取决于队列和输入内容。
错误与重试
{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Your account does not have enough available credits."
},
"requestId": "..."
}400:输入无效。401:密钥无效或已撤销。402:积分不足。404:任务不存在或无权访问。409:幂等键冲突、翻译未完成或失败。410:重复请求对应的任务已过期。413:输入过大。415:需要 JSON。422:字幕被拒绝。429:超过请求次数或活动任务限制。502:结果不完整。503:服务、模型或队列不可用。
遇到网络错误或临时服务器故障时,请使用相同的 Idempotency-Key 和请求体重试。若响应包含 Retry-After,请等待指定时长。翻译任务进入最终失败状态后,如需重新翻译,应使用新键。联系支持时请提供 X-Request-Id 和任务 ID。
Premiere Pro 工作流
- 选择或导出 SRT 文件。
- 估算费用,并使用选定的目标语言提交任务。
- 显示任务进度,然后保存翻译后的 SRT。
- 将文件导入 Premiere,并放到字幕轨道上。
在 UXP 清单的网络权限中声明本站地址,并为 SRT 读写申请文件访问权限。公开接口支持使用 Bearer 身份验证的 CORS 请求,无需 Cookie。
使用带编号的 SRT 字幕条目,时间戳格式为 HH:MM:SS,mmm,文本不能为空,条目之间用空行分隔。现有字幕清理规则仍然适用:会删除格式标签、重新编号,并可能过滤重叠的次要叠加文本。保留条目的时间戳不会改变。SRT 不携带 Premiere 的样式。
自动访问已有字幕轨道的能力需要针对你的 Premiere 版本单独验证。API 接受字幕文本;提交音频内容前,请先将其转录为字幕。