# 1. exchange your client id and secret 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 the video - file, or a YouTube, Drive, S3, Vimeo or direct link
curl -X POST https://api.rask.ai/api/library/v1/media/link \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"link": "https://youtu.be/...", "name": "Q3 launch"}'
# 3. create the project - transcription, translation and dubbing start
curl -X POST https://api.rask.ai/v2/projects \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"es-mx\"}"# Poll until merging_done, then collect the files
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
| jq '{status, translated_video, voiceover, translation_srt_path}'



ส่งไฟล์วิดีโอหรือเสียงในรูปแบบ multipart form data หรือโพสต์ลิงก์จาก YouTube, Google Drive, S3, Vimeo หรือ URL ใดก็ได้ คุณจะได้รับรหัสมีเดียและข้อมูลของไฟล์ก่อนที่จะเริ่มเสียค่าใช้จ่ายใดๆ
ระบุรหัสมีเดียเป็น video_id และภาษาที่ต้องการ คุณสามารถแนบไฟล์บทพูดหรือคำศัพท์เฉพาะของคุณเองได้ ระบบจะเริ่มดำเนินการทันที
ตรวจสอบสถานะจนกระทั่งขึ้นว่า merging_done จากนั้นดาวน์โหลดวิดีโอที่มีการพากย์เสียงแล้ว ไฟล์เสียง ไฟล์คำบรรยาย และบทพูดได้เลย
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas
async def main():
# the client exchanges your credentials for tokens and refreshes them
client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
media = await client.create_media_link(data=schemas.MediaCreateLink(link="https://youtu.be/..."))
while media.status is enums.MediaStatus.PROCESSING:
await asyncio.sleep(5)
media = await client.get_media(media_id=media.id)
job = await client.create_project(data=schemas.ProjectCreate(video_id=media.id, dst_lang="es-mx"))
while job.status is not enums.ProjectStatus.MERGING_DONE:
await asyncio.sleep(10)
job = await client.get_project(project_id=job.id)
print(job.translated_video, job.translation_srt_path, job.translation_vtt_path)
asyncio.run(main())import 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}"}
with open("launch.mp4", "rb") as f:
media = requests.post(f"{API}/api/library/v1/media", headers=h,
params={"kind": "video"}, files={"data": f}).json()
while media["status"] == "processing":
time.sleep(5)
media = requests.get(f"{API}/api/library/v1/media/{media['id']}", headers=h).json()
pid = requests.post(f"{API}/v2/projects", headers=h,
json={"video_id": media["id"], "dst_lang": "de-de"}).json()["id"]
while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
time.sleep(10)
for field in ("translated_video", "translated_audio", "translation_srt_path"):
print(field, p[field]) # presigned links, valid for one hour// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
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 call = (method, path, body) => fetch(API + path, { method, headers: h, body: body && JSON.stringify(body) }).then((r) => r.json());
let media = await call('POST', '/api/library/v1/media/link', { link: 'https://youtu.be/...' });
while (media.status === 'processing') { await sleep(5000); media = await call('GET', `/api/library/v1/media/${media.id}`); }
let p = await call('POST', '/v2/projects', { video_id: media.id, dst_lang: 'ja-jp' });
while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }
const { translated_video, voiceover, translation_vtt_path } = p;
console.log({ translated_video, voiceover, translation_vtt_path });# 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" -H "Content-Type: application/json" \
-d '{"link": "https://youtu.be/..."}' | jq -r .id)
# 3. create the project once the media status is ready
ID=$(curl -s -X POST https://api.rask.ai/v2/projects \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"pt-br\"}" | jq -r .id)
# 4. wait for merging_done, then read the links
until [ "$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq -r .status)" = merging_done ]; do
sleep 10
done
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
| jq '{translated_video, translated_audio, translation_srt_path}'<?php
use GuzzleHttp\Client;
$http = new Client(['base_uri' => 'https://api.rask.ai']);
$json = fn($r) => json_decode($r->getBody(), true);
$auth = $json((new Client)->post('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
['auth' => [$clientId, $clientSecret], 'form_params' => ['grant_type' => 'client_credentials']]));
$h = ['Authorization' => 'Bearer ' . $auth['access_token']];
$media = $json($http->post('/api/library/v1/media/link', ['headers' => $h, 'json' => [
'link' => 'https://youtu.be/...']]));
while ($media['status'] === 'processing') {
sleep(5);
$media = $json($http->get("/api/library/v1/media/{$media['id']}", ['headers' => $h]));
}
$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
'video_id' => $media['id'], 'dst_lang' => 'fr-fr']]));
while ($p['status'] !== 'merging_done') {
sleep(10);
$p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}
echo $p['translated_video'], PHP_EOL, $p['translation_srt_path'], PHP_EOL; 0s created
11s transcription_started
87s translation_started
99s voiceover_started
154s merging_started
165s merging_done

es-mx และ es-es เช่นเดียวกัน บันทึกของโปรเจกต์ glossary_versionเพื่อให้การแก้ไขภายหลังไม่ไปกระทบงานที่เสร็จสมบูรณ์แล้วโดยไม่รู้ตัวRask AI API คือ REST API สำหรับการแปลภาษาและปรับเนื้อหาให้เข้ากับท้องถิ่น โดยระบบจะถอดเสียงในวิดีโอ แปลภาษา พากย์เสียงด้วยเสียง AI หรือเสียงโคลน เพิ่มการซิงค์ริมฝีปาก (ทางเลือก) และส่งคืนซับไตเติล แทร็กเสียง รวมถึงบทถอดเสียง ทั้งหมดนี้ทำได้ในโปรเจกต์เดียว
การพากย์เสียงด้วย AI, การแปลวิดีโอ, การปรับวิดีโอให้เข้ากับท้องถิ่น, การโคลนเสียง, การซิงค์ริมฝีปาก, การแปลงข้อความ เป็นเสียงสำหรับวิดีโอ, การแปลงเสียง เป็นข้อความ, การถอดเสียงวิดีโอ และซับไตเติล ทั้งหมดนี้ใช้การยืนยันตัวตนร่วมกัน, ใช้โครงสร้างโปรเจกต์เดียวกัน และใช้โควตานาทีร่วมกัน โดยแต่ละรายการจะมีหน้าเว็บเฉพาะพร้อมรายละเอียดและโค้ด
การเข้าถึง API มีให้บริการในแพ็กเกจ Creator Pro, Business และ Enterprise โดยความสามารถจะขึ้นอยู่กับแพ็กเกจของคุณ คุณสามารถสร้างรหัสลูกค้าและรหัสลับได้ในแอปและเริ่มใช้งานได้ทันที สำหรับเงื่อนไขระดับองค์กร ราคาส่ง และการรองรับภาษาเฉพาะ โปรดติดต่อทีมงานของเรา
API นี้ใช้ข้อมูลประจำตัวลูกค้าแบบ OAuth 2.0 แลกเปลี่ยนรหัสลูกค้าและรหัสลับของคุณเพื่อรับโทเค็นการเข้าถึงที่จุดสิ้นสุดโทเค็น จากนั้นส่งเป็น Bearer token กับทุกคำขอ โทเค็นมีอายุการใช้งานหนึ่ง小时; แคชไว้และขอใหม่เมื่อหมดอายุ
ใช่ Python SDK อย่างเป็นทางการอยู่บน GitHub ที่ braskai/rask-sdk และจัดการโทเค็นให้คุณ REST API สามารถใช้งานได้จากทุกภาษา หน้านี้มีตัวอย่างที่สมบูรณ์ใน Python, Node, cURL และ PHP
เสียงต้นฉบับใน 75 ภาษา พร้อมระบบตรวจจับภาษาอัตโนมัติ และภาษาและตัวเลือกภูมิภาคมากกว่า 135 ภาษาเป็นเป้าหมาย เช่น es-mx หรือ pt-br การโคลนเสียงมีให้บริการในภาษาที่รองรับการโคลนเสียง; ค่าที่ตั้งไว้ล่วงหน้าของเสียง AI ครอบคลุมส่วนที่เหลือ
การใช้งานจะเรียกเก็บเงินตามนาทีของวิดีโอ ปัดเศษขึ้นเป็นนาทีเต็มถัดไป จากกลุ่มนาทีเดียวกันกับแอป Rask นาทีเพิ่มเติมมีค่าใช้จ่าย $3/นาที สำหรับแผนมาตรฐานที่มีสิทธิ์ และราคาระดับองค์กรจะปรับแต่งตามข้อตกลงของคุณ การสร้างใหม่จะเรียกเก็บเงินตามส่วนที่เปลี่ยนแปลงโดยมีขั้นต่ำหนึ่งนาทีต่อการรัน และการซิงค์ริมฝีปากจะเรียกเก็บเงินแยกต่างหากสำหรับการสร้างวิดีโอเต็มรูปแบบแต่ละรายการ
ไม่มี ไม่มีขีดจำกัดอัตรา ไม่มีโควต้าการใช้งานพร้อมกัน และไม่มีการจำกัดต่อคีย์ คุณจึงสามารถเรียกใช้แคตตาล็อกทั้งหมดและทุกภาษาเป้าหมายพร้อมกันได้
Poll GET /v2/projects/{id} for the status of each project; the statuses are documented, so you can show real progress. Webhook delivery is part of enterprise onboarding.
วิดีโอในรูปแบบ MP4, MOV, MKV, AVI, WebM, M4V และ 3GP, เสียงในรูปแบบ MP3, WAV, FLAC และ M4A หรือลิงก์จาก YouTube, Google Drive, S3, Vimeo หรือ URL โดยตรง
ใช่ อัปโหลดไฟล์ SRT ต้นฉบับและที่แปลแล้ว หรือส่งส่วนข้อความ และส่งผ่าน transcript_id เมื่อคุณสร้างโปรเจ็กต์ จากนั้น Rask จะสร้างเสียงสำหรับข้อความที่คุณอนุมัติ
ไม่ใช่ API จะประมวลผลไฟล์วิดีโอและเสียงที่บันทึกไว้และส่งมอบผลลัพธ์เป็นไฟล์ สำหรับตัวแทนเสียงสดหรือคำบรรยายแบบเรียลไทม์ API การพูดแบบสตรีมมิ่งจะเหมาะสมกว่า
Brask Inc ถือใบรับรอง SOC 2 Type II และดำเนินการภายใต้ GDPR พร้อมสถานะการควบคุมแบบสดใน Trust Center โคลนเสียงแบบกำหนดเองสร้างขึ้นด้วยความยินยอมของผู้พูด