面向视频的AI配音API支持135种以上语言

上传视频,选择目标语言,即可获取配音视频。一次AI配音API请求即可处理转录、翻译、发言人识别、语音克隆和语音合成,保留原发言人的声音特征,并返回配音视频、独立的WAV音轨和字幕文件。
声音克隆
内置口型同步
REST + Python SDK
three requests, start to finish
OAuth 2.0
# 1. exchange client credentials for a token (valid 1 hour)
curl -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d "grant_type=client_credentials"# 2. upload by link - YouTube, Drive, S3, Vimeo or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"link": "https://youtu.be/...", "name": "Q3 launch"}'# 3. create the dubbing project - this starts the dub
curl -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "video_id": "b8f7835d-e8c9-4ff4-8e34-5c336d818319",
    "dst_lang": "es-mx",
    "name":     "Q3 launch"
  }'
GET /v2/projects/{project_id}
polling, 10s
# Poll the project until status is merging_done.while :; do
  curl -s https://api.rask.ai/v2/projects/$ID \
    -H "Authorization: Bearer $TOKEN" | jq .status
  sleep 10done
被全球团队广泛使用
功能特性

只需一次调用,即可实现配音API的所有功能

通过一个API自动转录、翻译和配音您的视频。通过声音选择、词汇表和脚本编辑微调结果。可添加单独计费的唇形同步功能。

配音支持135种以上语言

单个请求背后的完整流程:转录、翻译、合成、混音。您只需发送视频和目标语言即可。

说话人识别与专属声音

系统会自动将说话人与源音频分离,并为每个人在目标语言中匹配专属声音。您可以随时更改分配,或者在已知人数时直接传入参数。

跨语言声音克隆

在配音中保留原发言人的声音特征,让演讲者在说西班牙语、印地语、日语或韩语时听起来依然是本人。

对口型

使嘴唇动作与配音保持一致,作为任意配音项目的独立任务。系统会先进行人脸检测,确保只在可行的地方收费。

保留背景音频

音乐、环境音和音效与语音分离,并在配音下方重新混合。其结果是生成一条完全本地化的音轨,在新声音下方保留原有的音乐、环境音和音效。

.srt和.vtt格式字幕

每个完成的项目都包含这两种格式,时间轴与配音完美同步,可直接在您的播放器中使用。

使用术语库进行术语控制

品牌名称、产品名称和技术术语每次都能保持相同的翻译方式,或者刻意保持不翻译。支持版本控制,让每个完成的项目都保留配音时使用的词汇表。

片段级脚本编辑

获取文字记录、修正一行文本、调整时间戳、添加或删除片段,然后重新生成。您的语言专家可以直接纠正脚本,配音将根据他们的修改重新生成。

无限扩展

一次性发送您的完整目录,并以任意数量并行配音为所有目标语言。
查看实际效果

AI配音API实际返回的内容

同一个剪辑,通过您刚了解的API调用进行配音。源视频保留原始声音,法语、德语、葡萄牙语和西班牙语使用克隆声音,背景音频保持不变。
EN 标志
En
FR 标志
周五
DE 标志
De
PT旗帜
Pt
ES 标志
Es
工作流程

从源文件到配音视频只需三个步骤

创建项目即开始配音。编辑项目后,稍后可使用 /generate 重新配音。
1

上传视频

以多部分表单数据发送文件,或发布链接。支持的链接来源有YouTube、Google Drive、S3、Vimeo以及任何直接下载网址。在您花费任何费用之前,系统会返回媒体ID和完整的技术元数据。

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

创建项目

将媒体ID作为video_id传入,并指定目标语言。可选择附加您自己的文稿或词汇表。配音立即开始。

POST /v2/projects
3

获取输出

读取status直到显示merging_done,然后下载配音视频、音频轨道和字幕文件。

GET /v2/projects/{project_id}
处理时间因项目而异。通过API跟踪进度并在配音完成时下载您的文件。
以您为中心

不在列表中?我们来打造。

新语言、自定义声音、您自己的分发方式、更高的吞吐量:当配音集成需要公共目录之外的功能时,我们的团队将与您共同评估并构建。

语言和声音

需要公开目录之外的语言或声音?请将您的需求和可用选项告诉我们的团队。

交付与集成

网络钩子(Webhooks)、推送到您自己的队列、直接交付到您的S3、自定义端点。告诉我们您的流水线需要什么样的数据输入方式。

数据量与吞吐量

批处理大小、每个操作的目标语言和处理优先级都在您的合同中进行设置,以匹配您的工作流程。

安全与托管

数据驻留、单点登录与SAML、保留规则以及安全审查支持均作为企业版入驻流程的一部分来处理。
用例

谁在使用AI配音API

内置视频的平台

LMS和客户教育平台、创作者和视频平台、网络研讨会和虚拟活动工具、视频托管和工作流程SaaS、数字采用平台、直播购物。教育内容、产品演示和创作者视频可以在您的产品内部进行配音,让全球观众听到他们自己的语言,从而使AI配音成为您的功能之一。

本地化和制作机构

将AI配音连接到您已经在运行的分发工作流程中,并保留人工审核步骤。AI生成第一个配音版本,您的语言专家可以编辑脚本,而不必预订录音室重新录制。

内部持续视频制作

国际零售和电子商务、全球特许经营商、媒体出版商、企业大学。将本地化构建到您的发布工作流程中,以便您的团队在源视频更改时随时重新生成语言版本。
客户案例

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

用具体数据看看各大公司如何使用Rask进行视频本地化。
箭头
箭头
代码

AI配音API代码示例

每种语言的一次完整往返:身份验证、上传、配音、等待、下载。
# pip install git+https://github.com/braskai/rask-sdk
import asyncio
from rask_sdk import RaskSDKClient

async def main():
    client = RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    media   = await client.upload_media_link(link="https://youtu.be/...")
    project = await client.create_project(video_id=media.id, dst_lang="es-mx")

    while project.status != "merging_done":
        await asyncio.sleep(10)
        project = await client.get_project(project.id)

    print(project.translated_video, project.translation_srt_path)

asyncio.run(main())
github.com/braskai/rask-sdk
Python 3.8+, async
import os, time, requests

AUTH = "https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token"
API  = "https://api.rask.ai"

token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

media = requests.post(f"{API}/api/library/v1/media/link", headers=h,
                      json={"link": "https://youtu.be/..."}).json()

project = requests.post(f"{API}/v2/projects", headers=h,
                        json={"video_id": media["id"], "dst_lang": "es-mx"}).json()

while project["status"] != "merging_done":
    time.sleep(10)
    project = requests.get(f"{API}/v2/projects/{project['id']}", headers=h).json()

print(project["translated_video"])
requests + polling
no SDK required
// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';

const auth = await fetch('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token', {
  method: 'POST',
  headers: { Authorization: 'Basic ' + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`) },
  body: new URLSearchParams({ grant_type: 'client_credentials' }),
}).then(r => r.json());

const h = { Authorization: `Bearer ${auth.access_token}`, 'Content-Type': 'application/json' };

const media = await fetch(`${API}/api/library/v1/media/link`, {
  method: 'POST', headers: h,
  body: JSON.stringify({ link: 'https://youtu.be/...' }),
}).then(r => r.json());

let project = await fetch(`${API}/v2/projects`, {
  method: 'POST', headers: h,
  body: JSON.stringify({ video_id: media.id, dst_lang: 'es-mx' }),
}).then(r => r.json());

while (project.status !== 'merging_done') {
  await new Promise(r => setTimeout(r, 10000));
  project = await fetch(`${API}/v2/projects/${project.id}`, { headers: h }).then(r => r.json());
}

console.log(project.translated_video);
fetch, Node 18+
plain HTTP
# 1. token (valid 1 hour - cache and reuse it)
TOKEN=$(curl -s -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d "grant_type=client_credentials" | jq -r .access_token)

# 2. upload by link
VIDEO_ID=$(curl -s -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"link": "https://youtu.be/..."}' | jq -r .id)

# 3. create the dubbing project
ID=$(curl -s -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" \
  -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"es-mx\"}" | jq -r .id)

# 4. poll, then download
while [ "$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq -r .status)" != "merging_done" ]; do
  sleep 10
done
POST /v2/projects
OAuth 2.0 client credentials
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);

$auth = json_decode((new Client)->post(
    'https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret],
     'form_params' => ['grant_type' => 'client_credentials']]
)->getBody(), true);

$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$media = json_decode($http->post('/api/library/v1/media/link',
    ['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']])->getBody(), true);

$project = json_decode($http->post('/v2/projects',
    ['headers' => $h, 'json' => ['video_id' => $media['id'], 'dst_lang' => 'es-mx']])->getBody(), true);

while ($project['status'] !== 'merging_done') {
    sleep(10);
    $project = json_decode($http->get("/v2/projects/{$project['id']}",
        ['headers' => $h])->getBody(), true);
}
Guzzle 7
plain HTTP
Python是官方SDK。Node、PHP和cURL选项卡展示了针对相同端点的普通HTTP示例。
进度

配音项目如何报告进度

项目通过文档化的状态机进行,因此您可以向自己的用户展示真实的、分阶段的进度条。您只需处理三组内容。

成功,在此停止

merging_done
配音完成。再次获取项目以检索可用于您的项目的下载链接。

进行中,继续轮询

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
加上匹配的 _done 状态。这些与分阶段进度界面完美对应。

失败、停止并报告

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words 和 forbidden_link 具体到足以直接向您自己的用户展示。
Typical run, 4 minute source video
GET /v2/projects/{project_id}
   0s  created
  12s  transcription_started
  70s  translation_started
  95s  voiceover_started
 150s  merging_started
 170s  merging_done

或者完全跳过轮询

将地址指向一个Webhook端点,每个状态转换都会以POST请求的形式发送,这样您的队列就能在变化发生的瞬间做出响应。Webhook交付是企业入驻服务的一部分。
阅读文档
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
输出结果

配音视频、音频和字幕

下载您配音好的视频以及SRT和VTT格式的翻译字幕。在符合条件的套餐中,您还可以单独下载翻译后的语音,或者将其与原始背景音频混合下载。
字段
格式
说明
translated_video
MP4
配音视频,可直接发布
voiceover
WAV
仅包含翻译后的语音,无背景音,可直接用于您自己的混音
translated_audio
WAV
翻译后的语音与原始背景音频混合的效果
translation_srt_path
.srt
目标语言字幕
translation_vtt_path
.vtt
与 WebVTT 相同的字幕,适用于网页播放器
original_video
MP4
您存储的原始文件,供参考
控制

编辑文案,然后仅对修改部分重新配音

自动翻译能帮你完成大部分工作。如果还不够完美,你可以逐段编辑文案并重新生成,而且系统只对你修改过的内容收费。

片段级编辑

片段级编辑
每个项目都将其转写内容公开为可寻址的分段,因此修复错误的语句只需一个修补请求即可。
获取文稿及其片段
修改源文本,我们将为您重新翻译
直接修改翻译后的文本以保留您自己的用语
调整时间戳、添加片段、删除片段
重新分配与任意发言人关联的语音

术语词汇表

术语词汇表
将词汇表应用于项目,您的品牌名称、产品名称和专业术语每次都能以相同方式翻译,或根据需要保持不翻译。

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

支持的文件格式

支持七种视频格式和四种音频格式,还可以直接通过网址导入。如果您提交了不支持的文件,API 会根据内容类型将其拒绝,不会扣除任何时长。

视频

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

音频

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

在消费前查看元数据

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

通过管理人员的安全审核

Brask Inc持有SOC 2 Type II认证,在GDPR下运营,并在其信任中心(Trust Center)公布实时控制状态。

认证

SOC 2 Type II
GDPR
CAI 及 C2PA 成员

加密

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

您的内容

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

访问

SSO 和 SAML
基于角色的访问控制
OAuth 2.0 客户端凭证

企业

数据本地化选项
自定义服务等级协议 (SLA)
专属客户经理

声音权益

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

Rask API 与自行构建

同样的声音配音功能,两种不同的实现方式。一列是合同保障,另一列是开发路线图。
您所需的功能
Rask API
拼凑而成的方案
转录、翻译、合成、混音
一次调用
三到四家供应商以及用于连接它们的中间代码
说话人识别与专属声音
包含
一个说话人分离供应商加上您自己编写的声音分配逻辑
保留背景音乐和音效
包含
需要您自行构建和调优的音源分离步骤
跨语言声音克隆
包含
一个单独的供应商和一个单独的授权流程
对口型
包含
第五家供应商
.srt和.vtt格式字幕
包含
根据您自己的时间轴数据生成
修复某一句不佳的台词
重新配音该片段,仅为该片段付费
重新运行流程,按文件付费
术语一致性
版本化术语表
您维护的前期和后期处理
频率限制
无
无论您最薄弱的供应商施加什么限制
尚无人支持的语言
我们来构建
不可用
常见问题解答

AI 配音 API:常见问题

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

如何获取 API 访问权限和 API 密钥?

如何通过 AI 配音 API 进行身份验证?

API 是同步的还是异步的?

速率限制是怎样的?

我可以配音成多少种语言?

语音克隆功能在API中是如何工作的?

AI配音需要多长时间?

支持哪些文件格式?

API 如何处理包含多位说话者的视频?

我可以提供自己的脚本或文稿吗?

除了配音视频,我还能获得字幕吗?

有 SDK 吗?

修改后重新配音需要多少费用?

在一个下午内开始配音

今天就发出您的第一个请求,如果您需要大容量优惠条款或是罕见语种,随时与我们联系。