# 1. send your script as timed segments - one speaker per line
curl -X POST https://api.rask.ai/v2/transcriptions \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"segments": [
{"speaker": "SPEAKER_00", "start": "00:00:00,500", "end": "00:00:04,800",
"src": {"text": "Welcome to the new dashboard.", "lang": "en"},
"dst": {"text": "Bienvenido al nuevo panel.", "lang": "es-mx"}}
]}'
# 2. voice the script over your video
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\", \"transcript_id\": \"$TRANSCRIPT_ID\"}"# When status is merging_done, read the voiceover links
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
| jq '{status, voiceover, translated_audio, translated_video}'



ارفع الفيديو أو التسجيل الصوتي المراد إضافة التعليق الصوتي إليه، باستخدام ملف أو رابط وسائط مدعوم. يحدد الجدول الزمني توقيت النص الخاص بك.
أنشئ نصاً توضيحياً من أجزاء النص مع الطوابع الزمنية والمتحدثين، أو من ملف SRT، ثم أنشئ المشروع باستخدام معرف النص (transcript_id) واللغة المستهدفة.
استعرض الأصوات، وعيّن صوتاً جاهزاً أو مستنسخاً لكل متحدث، وأعد التوليد عند الحاجة، ثم قم بتحميل التعليق الصوتي، وفيديو، وملفات الترجمة.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas
async def wait(client, job):
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)
script = await client.create_transcription(data=schemas.TranscriptionCreate(segments=[
schemas.SegmentCreate(speaker="SPEAKER_00", start="00:00:00,500", end="00:00:04,800",
src=schemas.SegmentTextCreatePatch(text="Welcome to the new dashboard.", lang="en"),
dst=schemas.SegmentTextCreatePatch(text="Bienvenido al nuevo panel.", lang="es-mx")),
]))
job = await wait(client, await client.create_project(data=schemas.ProjectCreate(
video_id=VIDEO_ID, dst_lang="es-mx", transcript_id=script.id)))
# pick a female AI voice preset from the library for SPEAKER_00
voices = await client.get_project_voices(project_id=job.id)
preset = next(v for v in voices if v.gender == "female")
await client.patch_project(project_id=job.id, data=schemas.ProjectPatch(voice={**job.voice, "SPEAKER_00": preset.id}))
job = await wait(client, await client.generate_project(project_id=job.id))
print(job.voiceover, job.translated_video)
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}"}
def wait(pid):
while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
time.sleep(10)
return p
script = requests.post(f"{API}/v2/transcriptions", headers=h, json={"segments": [
{"speaker": "SPEAKER_00", "start": "00:00:00,500", "end": "00:00:04,800",
"src": {"text": "Welcome to the new dashboard.", "lang": "en"},
"dst": {"text": "Bienvenido al nuevo panel.", "lang": "es-mx"}},
]}).json()
pid = requests.post(f"{API}/v2/projects", headers=h, json={
"video_id": VIDEO_ID, "dst_lang": "es-mx", "transcript_id": script["id"]}).json()["id"]
project = wait(pid)
voices = requests.get(f"{API}/v2/projects/{pid}/voices", headers=h).json()
preset = next(v for v in voices if v["gender"] == "female")
requests.patch(f"{API}/v2/projects/{pid}", headers=h,
json={"voice": {**project["voice"], "SPEAKER_00": preset["id"]}})
requests.post(f"{API}/v2/projects/{pid}/generate", headers=h)
print(wait(pid)["voiceover"])// 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 wait = async (id) => { let p; while ((p = await call('GET', `/v2/projects/${id}`)).status !== 'merging_done') await sleep(10000); return p; };
const script = await call('POST', '/v2/transcriptions', { segments: [
{ speaker: 'SPEAKER_00', start: '00:00:00,500', end: '00:00:04,800',
src: { text: 'Welcome to the new dashboard.', lang: 'en' },
dst: { text: 'Bienvenido al nuevo panel.', lang: 'es-mx' } },
] });
const { id } = await call('POST', '/v2/projects', { video_id: VIDEO_ID, dst_lang: 'es-mx', transcript_id: script.id });
const project = await wait(id);
const voices = await call('GET', `/v2/projects/${id}/voices`);
const preset = voices.find((v) => v.gender === 'female');
await call('PATCH', `/v2/projects/${id}`, { voice: { ...project.voice, SPEAKER_00: preset.id } });
await call('POST', `/v2/projects/${id}/generate`);
console.log((await wait(id)).voiceover);# 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. your script as an SRT file in the target language
TRANSCRIPT_ID=$(curl -s -X POST "https://api.rask.ai/v2/transcriptions/srt?dst_lang=es-mx" \
-H "Authorization: Bearer $TOKEN" -F "dst=@script_es-mx.srt" | jq -r .id)
# 3. voice it over the video
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\": \"es-mx\", \"transcript_id\": \"$TRANSCRIPT_ID\"}" | jq -r .id)
# 4. when status is merging_done, read the voiceover links
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
| jq '{status, voiceover, translated_video}'<?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']];
$script = $json($http->post('/v2/transcriptions', ['headers' => $h, 'json' => ['segments' => [[
'speaker' => 'SPEAKER_00', 'start' => '00:00:00,500', 'end' => '00:00:04,800',
'src' => ['text' => 'Welcome to the new dashboard.', 'lang' => 'en'],
'dst' => ['text' => 'Bienvenido al nuevo panel.', 'lang' => 'es-mx'],
]]]]));
$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
'video_id' => $videoId, 'dst_lang' => 'es-mx', 'transcript_id' => $script['id']]]));
while ($p['status'] !== 'merging_done') {
sleep(10);
$p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}
echo $p['voiceover'];{"label": "Renata", "gender": "female", "sample_src": "https://..."} AI voice preset
{"label": "Gerardo", "gender": "male", "sample_src": "https://..."} AI voice preset
{"label": "Maria Lopez", "gender": "auto", "sample_src": "https://..."} custom voice clone
{"label": "Voice Clone", "gender": "auto", "sample_src": null} instant voice clone

es-mx و es-es على حد سواء. يسجل المشروع glossary_version، بحيث لا تؤدي التعديلات اللاحقة إلى تغيير العمل المكتمل دون إشعار.نعم، للتعليق الصوتي للفيديوهات. أرسل النص الخاص بك على شكل مقاطع زمنية أو ملف SRT مع الفيديو، وستقوم واجهة برمجة التطبيقات بإنشاء كلام طبيعي متزامن مع الصورة، باستخدام أصوات الذكاء الاصطناعي أو استنساخ الأصوات، مع الترجمة والمسارات الصوتية في نفس المشروع.
تقوم Rask بإنشاء كلام للمشاريع الكاملة وتوفير الملفات، وهو ما يناسب الفيديوهات المنشورة ومحتوى التدريب والتسويق. أما بالنسبة لمساعدي الصوت ومراكز الاتصال التطبيقات الأخرى ذات التأخير المنخفض والتي تحتاج إلى الصوت في غضون ثوانٍ، فتعتبر واجهة برمجة التطبيقات لتحويل النص إلى كلام عبر البث خياراً أفضل.
يتم تسليم الصوت عند اكتمال الإنشاء للمشروع: التعليق الصوتي كملف WAV في الخطط المؤهلة، والصوت المدمج، والفيديو. لا تقوم واجهة برمجة التطبيقات ببث أجزاء الصوت أو البيانات الصوتية أثناء الإنشاء.
قم بإنشاء نص باستخدام POST /v2/transcriptions من مقاطع يحتوي كل منها على متحدث، ووقت البدء والانتهاء بتنسيق HH:MM:SS,mmm، والنص. يمكنك أيضاً تحميل ملف SRT إلى POST /v2/transcriptions/srt. ثم قم تمرير transcript_id عند إنشاء المشروع.
تحتوي كل لغة مستهدفة على إعدادات مسبقة لأصوات الذكاء الاصطناعي مع جنس محدد في مكتبة الأصوات. احصل على الخيارات الخاصة بالمروع باستخدام GET /v2/projects/{id}/voices وقم بتعيين صوت واحد لكل متحدث باستخدام معرف الصوت. في لغات استنساخ الصوت المدعومة، يمكنك أيضاً استخدام الأصوات المستنسخة.
نعم. قم بإنشاء استنساخ صوت مخصص مرة واحدة في تطبيق Rask بموافقة المتحدث، ثم قم بتعيين معرف الصوت الخاص به لأي متحدث من خلال واجهة برمجة التطبيقات في لغات استنساخ الصوت المدعومة. وهو يعمل بشكل جيد كصوت علامة تجارية ثابت.
اختر من بين أكثر من 135 لغة وخياراً إقليمياً. اكتب النص بلغة واحدة وستقوم Rask بترجمته، أو أرسل النص باللغة المستهدفة مباشرة. أصوات الذكاء الاصطناعي متوفرة لكل لغة مستهدفة.
تتعامل واجهة برمجة التطبيقات مع النص العادي لكل مقطع. لتوجيه النطق، قم بتعديل الهجاء في نص السكريبت. تتحكم القواميس في كيفية ترجمة المصطلحات، وليس في كيفية نطقها.
يعتمد التسليم على الصوت المحدد والنص الخاص بك، بما في ذلك علامات الترقيم. وللحصول على نطاق عاطفي يماثل الأداء الحقيقي، تحافظ ميزة استنساخ الصوت للمتحدث الأصلي على هويته الصوتية بشكل أكبر.
يمكنك استخدام مقطع فيديو أو تسجيل صوتي. قم بتحميل الوسائط الأصلية وتقديم نص زمني لإنشاء التعليق الصوتي على طول خطه الزمني. يلزم تحميل ملف وسائط.
لا. يتم احتساب الاستخدام بناءً على دقائق الفيديو، ويتم تقريبها إلى الدقيقة الكاملة التالية، من نفس رصيد الدقائق في تطبيق Rask. تكلفة الدقائق الإضافية هي 3 دولارات لكل دقيقة في خطط القياسية المؤهلة. يتم تصميم تسعير المؤسسات وفقاً لاتفاقك. ويتم احتساب إعادة الدبلجة على الأجزاء المُعدلة، بحد أدنى دقيقة واحدة لكل عملية.
ابدأ بفترة تجريبية مجانية في تطبيق Rask، دون الحاجة إلى بطاقة ائتمان، لتجربة الأصوات على فيديوهاتك الخاصة. يتوفر الوصول إلى واجهة برمجة التطبيقات (API) في خطط Creator Pro وBusiness وEnterprise، مع تحديد الميزات بناءً على خطتك.
يتوفر الوصول إلى واجهة برمجة التطبيقات (API) في خطط Creator Pro، وBusiness، وEnterprise، وتتحدد الميزات بناءً على خطتك. يمكنك إنشاء معرف العميل (client id) وكلمة المرور السرية (secret) داخل التطبيق والبدء في الاستخدام فوراً. أما بالنسبة لشروط الشركات، والأسعار حسب حجم الاستخدام، وتغطية اللغات المخصصة، فيمكنك التنسيق مع فريقنا بشأنها.