Rask AI API 用于视频配音、翻译和转写

一个 API 搞定整个视频本土化工作流:语音转写、翻译、使用人工智能声音或语音克隆配音、添加唇形同步并下载字幕。只需上传一次,为每种目标语言创建一个项目,即可收集视频、音轨、字幕和转写文稿。
声音克隆
唇形同步与字幕
REST + 5 个 SDK
three requests, start to finish
API key
# 1. import the video - a YouTube, Google Drive or Vimeo link
JOB=$(curl -s -X POST https://api.rask.ai/v3/media/import \
  -H "Authorization: Bearer $RASK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"url": "https://youtu.be/..."}' | jq -r .id)

MEDIA=$(curl -s "https://api.rask.ai/v3/jobs/$JOB?wait_seconds=20" \
  -H "Authorization: Bearer $RASK_API_KEY" | jq -r .result.media_id)

# 2. check the price - free, and nothing is charged
CAP=$(curl -s -X POST https://api.rask.ai/v3/projects/estimate \
  -H "Authorization: Bearer $RASK_API_KEY" -H "Content-Type: application/json" \
  -d "{\"media_id\":\"$MEDIA\",\"target_language\":\"es-mx\"}" | jq -r .total_minutes)

# 3. create the project - dubbing starts, and costs no more than $CAP
curl -X POST https://api.rask.ai/v3/projects \
  -H "Authorization: Bearer $RASK_API_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d "{\"media_id\":\"$MEDIA\",\"target_language\":\"es-mx\",\"expected_cost_minutes\":$CAP}"
GET /v3/jobs/{job_id}
one request, 20s
# One request waits for the next change in the job
curl -s "https://api.rask.ai/v3/jobs/$JOB_ID?wait_seconds=20" \
  -H "Authorization: Bearer $RASK_API_KEY" \
  | jq '{status, stage, progress, expected_remaining_seconds}'
受到全球团队的信赖
功能特性

Rask AI API 的所有功能

一个 API 涵盖整个视频工作流。所有功能都在同一个项目、同一种身份验证和统一按分钟计费的模式下运行,每个功能都有专属的详情和代码页面。

人工智能配音

转写、翻译、配音和混音尽在一个项目中。发送视频和目标区域设置,即可获取配音后的视频。

视频翻译

只需上传一次,即可将视频翻译成 135 种以上的语言和地区选项,每种语言的翻译文本均可供检查。

声音克隆

在支持语音克隆的语言中,通过“即时语音克隆”保留每位说话者自己的声音,或复用已保存的“自定义语音克隆”。

对口型

作为配音项目中的独立任务,使口型匹配配音,并先进行面部检查。每个完整视频的生成单独计费。

语音转文字与视频转写

支持 75 种源语言的转写文稿(包含说话者标签和分段时间戳),并可自动检测语言。

.srt 和 .vtt 格式字幕

每个完成的项目都包含目标语言的这两种格式,供您的播放器、应用程序或剪辑软件使用。

视频本土化

提供区域语言选项以及品牌术语和批准翻译的词汇表,确保每个市场都有专属版本。

视频文字转语音

发送带有时间戳的您自己的脚本,即可获取与画面完美同步、使用人工智能声音或语音克隆的旁白。

先确认价格,再处理

每项付费请求都提供免费预估。将该预估值设为上限,费用绝不会超出。若价格发生变化,请求将失败且不产生任何费用。
查看实际效果

Rask AI API 返回的内容

一个源剪辑通过 API 配音成英语、法语、德语、葡萄牙语和西班牙语,采用说话者的克隆声音并保留原始背景音频。
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
工作流程

从上传到完成视频只需三个请求

每个 Rask AI API 工作流都遵循相同的模式,创建项目即会启动整个运行流程。在编辑文稿或声音后,可使用 \/projects\/{id}\/dub 端点重新生成。
1

上传视频

通过 YouTube、Google Drive 或 Vimeo 链接导入文件,或使用预签名 URL 直接上传至存储。在产生任何费用之前,您将收到媒体 ID 和技术元数据。

POST /api/library/v1/media/link
2

创建项目

传入媒体 ID 和目标语言,并将您接受的价格设为 expected_cost_minutes。处理将立即开始,项目会以此数值作为费用上限。

POST /v3/projects
3

获取输出

等待任务完成,然后查看项目输出:配音视频、音频轨道、字幕文件和转写文稿,每个文件都带有下载链接。

GET /v3/projects/{project_id}/outputs
处理时间取决于视频长度、说话人数和目标语言。跟踪任务进度并在成功后获取文件。
为您量身打造

需要目录之外的服务?请联系我们的团队。

如果公开目录中尚未涵盖某种语言、声音、交付方式或处理量:我们的团队将与您一起评估您的需求和可行选项。

语言与声音

需要公开目录之外的语言或声音?请与我们的团队讨论您的需求和可行选项。

交付与集成

将内容交付至您的存储、自定义端点,并连接到团队现有的系统。描述您的管道接收文件的方式,我们的团队将与您共同评估方案。

批量与处理量

批量大小、每个操作的目标语言以及处理优先级均为合同条款,而非固定的产品限制。

安全与托管

数据驻留、SSO 和 SAML、保留规则以及安全审查支持均作为企业入驻流程的一部分进行处理。
用例

谁在使用 Rask AI API 进行开发

内置视频的平台

学习管理系统与客户教育平台、创作者与视频平台、网络研讨会与虚拟活动工具、视频托管与工作流SaaS、数字采用平台、直播购物。为您的产品添加多语言配音、字幕和转写功能。

本地化和制作机构

将Rask连接到您现有的交付流程:为客户视频提供配音、声音克隆、字幕和对口型,并由您的审核人员在交付前编辑转写内容。

企业内部持续视频制作

国际零售与电商、全球连锁品牌、媒体出版商、企业大学。通过单一集成,为各个市场本土化培训、产品和营销视频。
客户案例

真正的团队,可衡量的成果

用数据了解各大公司如何通过Rask进行视频本土化。
箭头
箭头
代码

Rask AI API 代码示例

每种语言的完整往返流程:身份验证、上传、创建项目、等待、收集文件。每个功能页面都为其自身的工作流提供示例。
# pip install rask-sdk
from rask_sdk import Rask

rask = Rask()                                   # reads RASK_API_KEY

# one call uploads the file and answers with the import job
import_job = rask.uploads.upload_file("launch.mp4")
media_id = rask.jobs.wait(import_job.id).result.media_id

# the price you accept becomes the ceiling of the work
estimate = rask.projects.estimate_project(media_id=media_id, target_language="es-mx")
print(f"The dub costs {estimate.total_minutes} minutes")

created = rask.projects.create_project(
    media_id=media_id,
    target_language="es-mx",
    expected_cost_minutes=estimate.total_minutes,
)
processed = rask.jobs.wait(created.id)
rask.jobs.wait(processed.result.auto_dub.dub_job_id)

outputs = rask.exports.list_project_outputs(processed.result.project_id).data
print(next(o.url for o in outputs if o.kind == "dubbed_video"))
pypi.org/project/rask-sdk
Python 3.11+
// npm install @braskai/api
import { Rask } from '@braskai/api';

const rask = new Rask();                        // reads RASK_API_KEY

const { data: importJob } = await rask.uploads.uploadFile('launch.mp4');
const { data: imported } = await rask.jobs.wait(importJob.id);
const order = { media_id: imported.result.media_id, target_language: 'es-mx' };

const { data: estimate } = await rask.projects.estimateProject({ body: order });
console.log(`The dub costs ${estimate.total_minutes} minutes`);

const { data: created } = await rask.projects.createProject({
  body: { ...order, expected_cost_minutes: estimate.total_minutes },
});
const { data: processed } = await rask.jobs.wait(created.id);
await rask.jobs.wait(processed.result.auto_dub.dub_job_id);

const { data: outputs } = await rask.exports.listProjectOutputs(processed.result.project_id);
console.log(outputs.data.find((o) => o.kind === 'dubbed_video')?.url);
httpx, no SDK
no SDK required
import os, httpx

API = "https://api.rask.ai/v3"
h = {"Authorization": f"Bearer {os.environ['RASK_API_KEY']}"}
c = httpx.Client(base_url=API, headers=h, timeout=30)

job = c.post("/media/import", json={"url": "https://youtu.be/..."},
             headers={"Idempotency-Key": os.urandom(16).hex()}).json()
media = c.get(f"/jobs/{job['id']}", params={"wait_seconds": 20}).json()["result"]["media_id"]

order = {"media_id": media, "target_language": "es-mx"}
cap = c.post("/projects/estimate", json=order).json()["total_minutes"]

created = c.post("/projects", json={**order, "expected_cost_minutes": cap},
                 headers={"Idempotency-Key": os.urandom(16).hex()}).json()

outputs = c.get(f"/projects/{created['project_id']}/outputs").json()["data"]
print(next(o["url"] for o in outputs if o["kind"] == "dubbed_video"))
Node 22+, Bun, Deno
plain HTTP
API=https://api.rask.ai/v3
AUTH="Authorization: Bearer $RASK_API_KEY"

JOB=$(curl -s -X POST $API/media/import -H "$AUTH" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" -d '{"url":"https://youtu.be/..."}' | jq -r .id)
MEDIA=$(curl -s "$API/jobs/$JOB?wait_seconds=20" -H "$AUTH" | jq -r .result.media_id)

ORDER="{\"media_id\":\"$MEDIA\",\"target_language\":\"es-mx\"}"
CAP=$(curl -s -X POST $API/projects/estimate -H "$AUTH" -H "Content-Type: application/json" \
  -d "$ORDER" | jq -r .total_minutes)

PROJECT=$(curl -s -X POST $API/projects -H "$AUTH" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d "$(jq -c --argjson cap "$CAP" '. + {expected_cost_minutes:$cap}' <<<"$ORDER")" | jq -r .project_id)

curl -s $API/projects/$PROJECT/outputs -H "$AUTH" \
  | jq -r '.data[] | select(.available) | "\(.kind)\t\(.url)"'
shell script
token to download
<?php
// composer require "braskai/rask-sdk:^3.0@alpha"
use Rask\Rask;

$rask = new Rask();                       // reads RASK_API_KEY

$importJob = $rask->uploads->uploadFile('launch.mp4');
$mediaId   = $rask->jobs->wait($importJob->id)->result->mediaId;

$estimate = $rask->projects->estimateProject(
    mediaId: $mediaId, targetLanguage: 'es-mx'
);
echo "The dub costs {$estimate->totalMinutes} minutes\n";

$created = $rask->projects->createProject(
    mediaId: $mediaId, targetLanguage: 'es-mx',
    expectedCostMinutes: $estimate->totalMinutes
);
$processed = $rask->jobs->wait($created->id);

foreach ($rask->exports->listProjectOutputs($processed->result->projectId)->data as $o) {
    if ($o->kind === 'dubbed_video') { echo $o->url, "\n"; }
}
Guzzle 7
plain HTTP
提供适用于 TypeScript、Python、Go、Java 和 PHP 的官方 SDK。代码示例直接通过纯 HTTP 调用相同的端点。
进度

Rask AI API 项目如何报告进度

耗时较长的任务将以作业(Job)形式返回结果。单个请求最多可等待二十秒以获取最新变更,并返回状态、阶段和进度,让您的界面通过单个开放请求即可跟踪进度。

成功,在此停止

succeeded
作业保存了其运行结果:项目 ID、媒体 ID 或生成的文件。列出项目输出即可获取下载链接。

进行中,继续轮询

created
uploading
queued
running
transcription
translation
voiceover
merging
加上匹配的 Each job also reports progress from 0 to 100 and the seconds it expects to still need, which map cleanly onto a staged progress bar. 状态。这些状态可完美映射到分阶段的进度界面上。

失败,停止并报告

failed
failed
canceled
insufficient_balance
cost_changed
media_too_long
no_speech_detected
source_unavailable
source_url_not_allowed
no_speech_detected, source_unavailable 和 source_url_not_allowed 具体明确,可直接向您的用户展示。每个错误还会返回一个机器可读的标识符。
One job, followed from queued to succeeded
GET /v3/jobs/{job_id}
# the request stays open until the job changes, then returns at once
{
  "status": "running",
  "stage": "translation",
  "progress": 46,
  "expected_remaining_seconds": 78
}

# ask again; the next answer is the finished job
{
  "status": "succeeded",
  "result": { "project_id": "c7d2a9e4-3b1f-4a6c-8d5e-9f0b2e7c1a63" },
  "links": { "outputs": "/v3/projects/c7d2a9e4.../outputs" }
}

单个开放请求,无需轮询循环

使用 wait_seconds 请求作业,请求将保持开放直到状态改变,然后立即返回。您的队列无需定时器和重复调用即可对每次更改做出反应。
阅读文档
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
输出

单个项目即可获取视频、音频、字幕和文字记录

完成的项目包含配音视频、两个音轨、两个字幕文件以及文字记录。在符合条件的套餐中,翻译后的声音将以独立WAV文件形式提供,并附带保留原背景音的完整混音。
字段
格式
说明
translated_video
MP4
配音视频,可直接发布
voiceover
WAV
仅限翻译后的语音(适用于符合条件的套餐),方便您自行混音
translated_audio
WAV
翻译后的语音与原始背景音频的混合音
translation_srt_path
.srt
目标语言字幕
translation_vtt_path
.vtt
适用于网页播放器的同款WebVTT字幕
/v3/projects/{id}/transcript
JSON
每个片段的原文、译文、说话人标签和时间戳
控制

编辑文字记录,仅重新生成修改的部分

自动化完成大部分工作,最终决定权交由您的团队。只需修正一行文字、一个时间戳或一个声音,然后重新生成,并按更改的片段付费(每次运行最低一分钟)。

片段级编辑

片段级编辑
每个项目都以可寻址片段的形式公开其文字记录,因此进行修正只需发送一个补丁请求,而无需重新创建一个项目。
获取文字记录及其片段
修改源文本,我们将重新翻译
直接修改翻译后的文本以保留您自己的措辞
调整时间戳、添加片段、删除片段
重新指定分配给任何发言者的声音

术语词汇表

术语词汇表
添加词汇表后,品牌名称、产品名称和专业术语在每个项目中都能以相同的方式翻译,或者刻意保留原语言。

一个词汇表涵盖一对语言,并适用于该目标语言的所有区域变体,因此一个西班牙语词汇表即可服务于 es-mx 和 es-es 类似项目。项目记录 glossary_version,因此后续的修改绝不会悄悄改变已完成的工作。
输入

支持的文件格式

支持七种视频格式和四种音频格式,以及来自YouTube、Google Drive、S3、Vimeo和直接网址的链接。不支持的文件会在扣除任何时长之前被拒绝。

视频

7种格式
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

音频

4种格式
.mp3
.wav
.flac
.m4a

消费前查看元数据

媒体端点返回时长、文件大小、视频编码、帧率、分辨率、音频编码、采样率和声道布局。验证文件并提前估算费用,因为项目是按分钟计费的。
安全与合规

随时准备接受采购和安全审查

Brask Inc 拥有 SOC 2 Type II 认证,在 GDPR 下运营,并在其信任中心发布实时控制状态供您的安全团队查看。

认证

SOC 2 Type II
GDPR
CAI 和 C2PA 成员

加密

传输中使用 TLS 1.2
静态使用 AES-256
SSE-S3 托管密钥
密钥至少每 12 个月轮换一次

您的内容

封闭的人工智能环境
绝不用于训练通用模型
支持完整导出,绝不绑定

访问

单点登录(SSO)与 SAML
基于角色的访问控制
带权限范围和消费上限的 API 密钥

企业

数据驻留选项
自定义SLA
专属客户经理

声音权益

拥有使用权的合成声音
基于授权的声音克隆
人工智能安全控制,人工参与把关
对比

Rask AI API与拼凑而成的供应商方案

转写、翻译、声音、对口型和字幕通常来自不同的供应商。以下是两种不同的视频工作流组合方式。
您需要什么
Rask API
从零散部件拼凑
带有说话人标签的转写
包含
语音转文本API
翻译成135种以上语言和地区选项
包含
翻译API
人工智能声音与声音克隆
包含
文字转语音供应商和声音克隆供应商
新语音下方的背景音频
自动混合
音源分离加您自己的混音
对口型
同一项目中的独立任务
对口型供应商
.srt 和 .vtt 格式字幕
包含
您自己的文件编写器
修改单行内容
重新生成更改的片段
重新运行该文件的处理流程
术语控制
词汇表
自定义后处理
账单
按视频分钟数计费,一个资源池
按字符、小时和各供应商的请求次数计费
先看成本,再付款
先出报价,费用封顶
工作完成后按供应商计费
请填写此表单,Rask AI 团队将尽快与您联系!
常见问题解答

Rask AI API:常见问题

找不到您要找的内容?请联系销售部门。

什么是Rask AI API?

Rask AI API包含哪些API?

如何获取Rask AI API的使用权限?

身份验证是如何工作的?

是否有SDK?

API支持哪些语言?

Rask AI API是如何收费的?

API v3 有哪些新功能?

如何跟踪耗时较长的任务?

我可以上传哪些文件格式?

我可以使用自己的字幕或翻译吗?

API 是实时的吗?

Rask AI API 安全吗?

在一个下午内开始配音

今天就发出您的第一个请求,如果您需要大批量合作条款或其他人没有的语言,请与我们联系。