# 1. one Spanish glossary - it applies to every Spanish regional variant
curl -X POST https://api.rask.ai/v2/glossaries \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name": "Brand terms", "src_lang": "en", "dst_lang": "es",
"entries": {"Rask Studio": "Rask Studio", "onboarding": "incorporación"}}'
# 2. a localized version per market, both with the same glossary
for lang in es-mx es-es; do
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\": \"$lang\", \"glossary_id\": \"$GLOSSARY_ID\"}"
done# Review: source and translated text, segment by segment
curl -s https://api.rask.ai/v2/projects/$ID/transcription \
-H "Authorization: Bearer $TOKEN" \
| jq '.segments[] | {speaker, src: .src.text, dst: .dst.text}'



أنشئ مسرداً لكل زوج من اللغات، واحفظ الأصوات المخصصة للمقدمين المتكررين، واختر اللهجة الإقليمية لكل سوق تنشر فيه.
قم برفع الفيديو الأصلي مرة واحدة، ثم أنشئ مشروعاً لكل سوق مستهدف باستخدام مسرد المصطلحات الخاص بك، أو باستخدام ترجمة معتمدة مستوردة من ملف SRT.
اقرأ النص المترجم جنباً إلى جنب، وقم بتعديل ما يحدده المراجعون، وأعد دبلجة المقاطع المعدلة، ثم قم بتنزيل الفيديو المترجم والترجمات النصية.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas
MARKETS = ["es-mx", "es-es"]
async def localize(client, video_id, locale, glossary_id):
job = await client.create_project(data=schemas.ProjectCreate(
video_id=video_id, dst_lang=locale, glossary_id=glossary_id))
while job.status is not enums.ProjectStatus.MERGING_DONE:
await asyncio.sleep(10)
job = await client.get_project(project_id=job.id)
return job
async def main():
client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
glossary = await client.create_glossary(data=schemas.GlossaryCreate(
name="Brand terms", src_lang="en", dst_lang="es",
entries={"Rask Studio": "Rask Studio", "onboarding": "incorporación"}))
jobs = await asyncio.gather(*(localize(client, VIDEO_ID, m, glossary.id) for m in MARKETS))
for job in jobs: # review before publishing
script = await client.get_project_transcription(project_id=job.id)
for seg in script.segments[:3]:
print(job.dst_lang, seg.speaker, seg.src.text, "->", seg.dst.text)
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}"}
glossary = requests.post(f"{API}/v2/glossaries", headers=h, json={
"name": "Brand terms", "src_lang": "en", "dst_lang": "es",
"entries": {"Rask Studio": "Rask Studio", "onboarding": "incorporación"}}).json()
ids = [requests.post(f"{API}/v2/projects", headers=h, json={
"video_id": VIDEO_ID, "dst_lang": locale, "glossary_id": glossary["id"]}).json()["id"]
for locale in ["es-mx", "es-es"]]
for pid in ids:
while requests.get(f"{API}/v2/projects/{pid}", headers=h).json()["status"] != "merging_done":
time.sleep(10)
script = requests.get(f"{API}/v2/projects/{pid}/transcription", headers=h).json()
for seg in script["segments"][:3]:
print(seg["src"]["text"], "->", seg["dst"]["text"])// 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());
const glossary = await call('POST', '/v2/glossaries', {
name: 'Brand terms', src_lang: 'en', dst_lang: 'es',
entries: { 'Rask Studio': 'Rask Studio', onboarding: 'incorporación' },
});
for (const dst_lang of ['es-mx', 'es-es']) {
let p = await call('POST', '/v2/projects', { video_id: VIDEO_ID, dst_lang, glossary_id: glossary.id });
while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }
const { segments } = await call('GET', `/v2/projects/${p.id}/transcription`);
segments.slice(0, 3).forEach((s) => console.log(dst_lang, s.src.text, '->', s.dst.text));
}# 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. import the translation your reviewers approved (source and translated .srt)
TRANSCRIPT_ID=$(curl -s -X POST "https://api.rask.ai/v2/transcriptions/srt?src_lang=en&dst_lang=es-mx" \
-H "Authorization: Bearer $TOKEN" \
-F "src=@source_en.srt" -F "dst=@approved_es-mx.srt" | jq -r .id)
# 3. create the localized version from it - Rask voices the approved script
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\": \"es-mx\", \"transcript_id\": \"$TRANSCRIPT_ID\"}"<?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']];
$glossary = $json($http->post('/v2/glossaries', ['headers' => $h, 'json' => [
'name' => 'Brand terms', 'src_lang' => 'en', 'dst_lang' => 'es',
'entries' => ['Rask Studio' => 'Rask Studio', 'onboarding' => 'incorporación'],
]]));
foreach (['es-mx', 'es-es'] as $locale) {
$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
'video_id' => $videoId, 'dst_lang' => $locale, 'glossary_id' => $glossary['id']]]));
while ($p['status'] !== 'merging_done') {
sleep(10);
$p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}
$script = $json($http->get("/v2/projects/{$p['id']}/transcription", ['headers' => $h]));
echo $locale, ': ', $script['segments'][0]['dst']['text'], 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، تصبح كل نسخة سوقية عبارة عن مشروع تقوم بإنشائه ومراجعته وتنزيله عبر واجهة برمجة تطبيقات REST واحدة.
تغير الترجمة الكلمات فقط، بينما يجهز التوطين الفيديو نفسه لأسواق محددة، ويشمل ذلك اللهجة الإقليمية، ومصطلحات العلامة التجارية الثابتة، وأصوات المتحدثين، والنصوص الظاهرة، وخطوة مراجعة قبل النشر. تدعم واجهة برمجة تطبيقات Rask كل هذه العناصر في سير عمل واحد.
نعم. أنشئ مشروعاً لكل منطقة مستهدفة، مثل الإكسيكية لإس إم إكس والإسبانية لإس إسبانيا، وأعد استخدام مسرد إسباني واحد للحفاظ على ثبات مصطلحات العلامة التجارية. راجع الصياغة لكل سوق. وعندما تكون اللهجة الإقليمية مهمة، اختر صوتاً جاهزاً بالذكاء الاصطناعي مخصصاً لتلك المنطقة؛ إذ تستخدم ميزة استنساخ الصوت نموذج اللغة الأساسي ولا تضمن بالضرورة الحصول على لهجة إقليمية مميزة.
أنشئ مسرداً لكل زوج لغوي وأرفقه عند إنشاء المشروع. يسجل كل مشروع إصدار المسرد الذي استخدمه، لذا فإن تعديل المسرد لاحقاً لن يؤثر أبداً على الأعمال المكتملة. لا يمكن إضافة المسرد إلى المشروع بعد إنشائه.
نعم، في الخطط التي تدعم رفع ملفات SRT. استورد ملف SRT باللغة المستهدفة والمعتمد لديك عند إنشاء المشروع، بينما يعد ملف SRT باللغة الأصلية اختيارياً. يمكنك أيضاً توفير الملفين معاً عندما يكونان متاحين. تستخدم Rask ترجمتك المعتمدة لأغراض الدبلجة.
تتطلب الملائمة الثقافية تدخلاً وتقييماً بشرياً. تمنح واجهة برمجة التطبيقات المراجعين كل مقطع لتعديل الإشارات والتعبيرات المجازية والأمثلة لتناسب السوق قبل النشر، ويمكن لـ Rask إضافة ميزة مراجعة الجودة البشرية إلى سير العمل عندما يتعذر على فريقك مراجعة كل فيديو.
نقاط نهاية واجهة برمجة التطبيقات الموثقة تقوم بتوطين الكلام والنصوص الظاهرة فقط. أما النصوص المدمجة في الصورة، مثل العناوين في اللقطات المصورة، فتظل كما هي دون تغيير. تواصل مع فريقنا إذا كانت النصوص الظاهرة على الشاشة جزءاً من سير عمل التوطين لديك.
قم بتوطين المحتوى إلى لغات متعددة من بين أكثر من 135 خياراً للغات والمناطق، بما في ذلك الإسبانية المكسيكية والأوروبية، والبرتغالية البرازيلية والأوروبية، والفرنسية الكندية. يتطلب كل مشروع منطقة مستهدفة واحدة. تجد القائمة الكاملة في وثائق واجهة برمجة التطبيقات، ويمكن لفريقنا مناقشة خيارات أخرى خارجها.
نعم، في لغات استنساخ الصوت المدعومة. استخدم ميزة الاستنساخ الفوري للصوت للحفاظ على هوية المتحدث، أو استنساخ الصوت المخصص والمحفوظ لمقدم برامج متكرر الظهور. تستخدم عملية الاستنساخ نموذج اللغة الأساسي، لذا فإن اختيار منطقة جغرافية معينة لا يضمن الحصول على لهجة تلك المنطقة بالضرورة. اختر صوتاً جاهزاً بالذكاء الاصطناعي عندما تكون اللهجة الإقليمية هي أولويتك.
مزامنة الشفاه هي خطوة اختيارية للمشاهد التي يظهر فيها شخص حقيقي يتحدث أمام الكاميرا. قم بتشغيلها على النسخة الموطنة بعد مراجعتها. يتم محاسبة كل عملية توليد لمزامنة الشفاه للفيديو بالكامل بشكل منفصل عن الدبلجة، ويشمل ذلك العمليات التي تُجرى بعد التعديلات اللاحقة.
يتم محاسبة استخدام واجهة برمجة التطبيقات (API) بناءً على دقيقة الفيديو لكل لغة، من نفس رصيد الدقائق في تطبيق Rask. تكلفة الدقائق الإضافية هي 3 دولارات لكل دقيقة في الباقات القياسية المؤهلة. يتم تحديد أسعار باقات الشركات حسب اتفاقك الخاص. إعادة الدبلجة بعد المراجعة تُحسب بناءً على المدة الإجمالية للأجزاء المعدلة، بحد أدنى دقيقة واحدة لكل عملية، بينما تُحسب ميزة مزامنة الشفاه بشكل منفصل. يمكنك تجربة توطين الفيديوهات في تطبيق Rask مجاناً ودون الحاجة لبطاقة ائتمان. لتقييم واجهة برمجة التطبيقات، يمكنك حجز عرض توضيحي مع فريقنا.
نعم. بالنسبة للأحجام الكبيرة والمتكررة، يمكن لفريقنا مساعدتك في رسم خطة لعملك الحالي، وتحديد مراحل المراجعة والاعتماد، وإعداد المصطلحات والأصوات، وربط Rask بنظام إدارة المحتوى (CMS) أو نظام إدارة التعلم (LMS) لديك، مع إضافة مراجعة بشرية للجودة عند الحاجة.
يتوفر الوصول إلى واجهة برمجة التطبيقات (API) في خطط Creator Pro، وBusiness، وEnterprise، وتتحدد الميزات بناءً على خطتك. يمكنك إنشاء معرف العميل (client id) وكلمة المرور السرية (secret) داخل التطبيق والبدء في الاستخدام فوراً. أما بالنسبة لشروط الشركات، والأسعار حسب حجم الاستخدام، وتغطية اللغات المخصصة، فيمكنك التنسيق مع فريقنا بشأنها.