# 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}'



أرسل ملف فيديو أو صوت كبيانات نموذج، أو انشر رابطاً من يوتيوب، أو جوجل درايف، أو إس 3، أو فيميو، أو أي رابط مباشر. ستحصل على معرف وسائط وبيانات الملف التعريفية قبل أن تنفق أي شيء.
مرر معرف الوسائط بصفته معرف الفيديو واللغة المستهدفة. يمكنك اختيارياً إرفاق نصك الخاص أو مسرد مصطلحات. تبدأ المعالجة فوراً.
اقرأ الحالة حتى تصل إلى اكتمال الدمج، ثم قم بتنزيل الفيديو المدبلج، والمسارات الصوتية، وملفات الترجمة، والنص.
# 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 هي أداة رقمية مخصصة لترجمة الفيديوهات وتوطينها. تقوم بتفريغ الكلام في الفيديو، ترجمته، ودبلجته بأصوات الذكاء الاصطناعي أو استنساخ الأصوات، مع إضافة مزامنة الشفاه الاختيارية، وتقديم الترجمة النصية والملفات الصوتية في مشروع واحد.
الدبلجة بالذكاء الاصطناعي، ترجمة وتوطين الفيديوهات، استنساخ الأصوات، مزامنة الشفاه، تحويل النص إلى كلام، تحويل الكلام إلى نص، تفريغ الفيديوهات، والترجمة النصية. تتشارك جميعها في مصادقة واحدة، وكيان مشروع واحد، ورصيد دقائق مشترك، ولكل منها صفحتها الخاصة التي تتضمن التفاصيل والأكواد البرمجية.
تتوفر إمكانية الوصول ضمن خطط Creator Pro، وBusiness، وEnterprise، وتتحدد الميزات بناءً على خطتك. يمكنك إنشاء معرف العميل والرمز السري الخاص بك في التطبيق والبدء في الاستخدام فوراً. أما بالنسبة لشروط خطة Enterprise، وأسعار الكميات الكبيرة، ودعم اللغات المخصصة، فيمكنك التواصل مع فريقنا.
تستخدم واجهة برمجة التطبيقات بيانات اعتماد عميل OAuth 2.0. قم باستبدال معرف العميل والرمز السري برمز وصول من نقطة النهاية، ثم أرسله كرمز Bearer مع كل طلب. صلاحية الرمز تستمر لمدة ساعة واحدة؛ لذا قم بحفظه في الذاكرة المؤقتة واطلب رمزاً جديداً عند انتهاء صلاحيته.
نعم. تتوفر حزمة تطوير البرامج (SDK) الرسمية الخاصة بلغة بايثون على موقع GitHub على الرابط braskai/rask-sdk، وهي تتولى إدارة الرموز نيابة عنك. تعمل واجهة برمجة التطبيقات مع أي لغة برمجة، وتحتوي هذه الصفحة على أمثلة كاملة بلغات بايثون، وNode، وcURL، وPHP.
الصوت الأصلي بـ 75 لغة مع ميزة التعرف التلقائي على اللغات، وأكثر من 135 خياراً للغات واللهجات المحلية كلغات مستهدفة، مثل الإسبانية المكسيكية أو البرتغالية البرازيلية. يتوفر استنساخ الأصوات في اللغات المدعومة، بينما تغطي أصوات الذكاء الاصطناعي الجاهزة باقي اللغات.
تتم محاسبة الاستخدام بناءً على دقائق الفيديو، بحيث يتم تقريبها إلى الدقيقة الكاملة التالية، وتُخصم من نفس رصيد الدقائق في تطبيق Rask. تكلفة الدقائق الإضافية هي 3 دولارات لكل دقيقة في خطط القياسية المؤهلة، بينما يتم تحديد أسعار خطط Enterprise بناءً على اتفاقك معنا. تُحسب إعادة إنشاء المحتوى بناءً على الأجزاء المعدلة مع حد أدنى قدره دقيقة واحدة لكل عملية، بينما تُحسب تكلفة مزامنة الشفاه بشكل منفصل لكل فيديو يتم إنشاؤه بالكامل.
لا. لا توجد حدود لعدد الطلبات، ولا قيود على الاستخدام المتزامن، ولا قيود لكل مفتاح، مما يتيح لك معالجة كتالوج كامل وجميع اللغات المستهدفة في نفس الوقت.
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، أو عبر رابط من يوتيوب، أو Google Drive، أو S3، أو Vimeo، أو رابط مباشر.
نعم. يمكنك رفع ملفات الترجمة الأصلية والمترجمة، أو إرسال أجزاء النص، ثم استخدام معرف النص عند إنشاء المشروع. لتقوم المنصة بعد ذلك بتحويل النص الذي اعتمدته إلى صوت.
لا. يعالج الـ API ملفات الفيديو والصوت المسجلة ويسلم النتائج على شكل ملفات. أما بالنسبة للمساعدين الصوتيين المباشرين أو الترجمة الفورية، فإن واجهة برمجة تطبيقات البث المباشر تكون هي الخيار الأنسب.
تحصل شركة Brask Inc على شهادة SOC 2 Type II وتعمل وفقاً للائحتي حماية البيانات (GDPR)، مع توفر حالة التحكم المباشر في مركز الأمان الخاص بها. يتم إنشاء النسخ الصوتية المخصصة بموافقة المتحدث نفسه.