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



Odešlete video nebo audio soubor jako formulářová data, nebo vložte odkaz z YouTube, Google Drive, S3, Vimeo či jakoukoliv přímou URL. Ještě než cokoliv utratíte, získáte ID média a informace o souboru.
Zadejte ID média jako video_id a vyberte cílový jazyk. Můžete také přiložit vlastní přepis nebo slovník. Zpracování začne okamžitě.
Sledujte stav, dokud se nezmění na merging_done, a poté si stáhněte dabované video, zvukové stopové soubory, titulky a přepis.
# 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 a es-es stejně tak. Záznamy projektu glossary_version, takže pozdější úpravy nikdy nepozorovaně nezmění již hotovou práci.API Rask AI je REST API pro lokalizaci videí. Převede mluvené slovo ve videu na text, přeloží ho, nadabuje pomocí AI hlasů nebo klonů hlasu, přidá volitelnou synchronizaci rtů a vrátí titulky, zvukové stopy i přepis – to vše v rámci jednoho projektu.
AI dabing, překlad videí, lokalizace videí, klonování hlasu, synchronizace rtů, převod textu na řeč pro videa, převod řeči na text, přepis videí a titulky. Sdílejí jedno ověření, jeden objekt projektu a jeden společný balíček minut. Každé z nich má vlastní stránku s podrobnostmi a ukázkami kódu.
Přístup k API je k dispozici v tarifech Creator Pro, Business a Enterprise a jeho možnosti závisí na vašem předplatném. V aplikaci si vygenerujete přihlašovací údaje a můžete hned začít. Podmínky pro firemní zákazníky, velkoobchodní ceny a vlastní jazyky s vámi rádi probereme.
API využívá přihlašovací údaje klienta OAuth 2.0. Vyměňte své ID klienta a tajný klíč za přístupový token na koncovém bodě pro tokeny a poté jej odešlete jako token Bearer s každým požadavkem. Token platí jednu hodinu – uložte si ho do mezipaměti a po vypršení platnosti si vyžádejte nový.
Ano. Oficiální Python SDK najdete na GitHubu na adrese braskai/rask-sdk, kde se postará o správu tokenů za vás. REST API funguje v libovolném jazyce a tato stránka obsahuje kompletní příklady v jazycích Python, Node, cURL a PHP.
Zdrojový zvuk v 75 jazycích s automatickou detekcí jazyka a více než 135 jazykových a regionálních možností pro cílový jazyk, jako je es-mx nebo pt-br. Klonování hlasu je k dispozici v podporovaných jazycích pro klonování hlasu; pro ostatní jsou k dispozici předvolby AI hlasů.
Využití se účtuje po minutách videa zaokrouhlených nahoru na celé minuty ze stejného balíčku minut jako aplikace Rask. Další minuty stojí 3 $ za minutu u vybraných standardních tarifů a ceny pro firemní zákazníky (Enterprise) jsou přizpůsobeny vaší smlouvě. Opětovné vygenerování se účtuje za změněné segmenty s minimem jedné minuty na spuštění a synchronizace rtů se účtuje zvlášť pro každé vygenerování celého videa.
Ne. Neexistují žádné limity rychlosti, kvóty souběžnosti ani omezení na klíč, takže můžete spustit celý katalog a všechny cílové jazyky paralelně.
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.
Video ve formátech MP4, MOV, MKV, AVI, WebM, M4V a 3GP, zvuk ve formátech MP3, WAV, FLAC a M4A nebo odkaz z YouTube, Google Drive, S3, Vimeo či přímou URL adresu.
Ano. Nahrajte zdrojové a přeložené soubory SRT nebo odešlete textové segmenty a při vytváření projektu předejte parametr transcript_id. Rask pak vašemu schválenému textu dodá hlas.
Ne. API zpracovává již nahrané video a audio soubory a výsledek dodává ve formě souborů. Pro živé hlasové agenty nebo titulky v reálném čase je vhodnější streamovací řešení.
Společnost Brask Inc. splňuje certifikaci SOC 2 Type II a řídí se pravidly GDPR. Stav zabezpečení můžete sledovat v Centru důvěryhodnosti. Vlastní hlasové klony vznikají vždy se souhlasem mluvčího.