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



Bir dosya veya desteklenen bir medya URL'si kullanarak seslendirmenizin ait olduğu video veya ses kaydını yükleyin. Zaman çizelgesi, metniniz için zamanlamayı sağlar.
Zaman damgalarına ve konuşmacılara sahip metin segmentlerinden ya da bir SRT dosyasından bir transkript oluşturun, ardından projeyi transcript_id ve hedef dille birlikte oluşturun.
Sesleri listeleyin, her konuşmacıya bir ön ayar veya klon atayın, gerekirse yeniden oluşturun, ardından seslendirmeyi, videoyu ve altyazı dosyalarını indirin.
# 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 ve es-es benzer şekilde hizmet eder. Proje kayıtları sözlük_sürümü, böylece daha sonra yapılan düzenlemeler tamamlanan çalışmayı habersiz değiştirmez.Evet, video seslendirmeleri için var. Metninizi zaman ayarlı metin segmentleri veya bir SRT dosyası olarak bir videoyla birlikte gönderin; API, aynı projede altyazılar ve ses parçalarıyla birlikte, yapay zeka sesleri veya ses klonlarıyla görüntüye zamanlanmış, doğal seslenen bir konuşma üretir.
Rask, tam projeler için konuşma üretir ve dosyaları teslim eder; bu da yayınlanmış video, eğitim ve pazarlama içeriği için uygundur. Ses asistanları, çağrı merkezleri ve saniyeler içinde sese ihtiyaç duyan diğer düşük gecikmeli uygulamalar için akış özellikli bir metinden sese API'si daha uygundur.
Konuşma, proje için üretim tamamlandığında teslim edilir: uygun planlarda WAV olarak seslendirme, mikslenmiş ses ve video. API, üretim sırasında ses parçalarını veya ses baytlarını akış olarak iletmez.
Her birinde bir konuşmacı, HH:MM:SS,mmm formatında bir başlangıç ve bitiş zamanı ile metin bulunan segmentlerden POST /v2/transcriptions kullanarak bir transkript oluşturun. Ayrıca POST /v2/transcriptions/srt adresine bir SRT dosyası yükleyebilirsiniz. Ardından projeyi oluştururken transcript_id'yi iletin.
Her hedef bölgenin, ses kütüphanesinde belirli bir cinsiyete sahip yapay zeka ses ön ayarları vardır. GET /v2/projects/{id}/voices ile bir proje için seçenekleri alın ve ses kimliğine (voice ID) göre konuşmacı başına bir ses atayın. Desteklenen ses klonlama dillerinde ses klonlarını da kullanabilirsiniz.
Evet. Rask uygulamasında konuşmacının izniyle bir kez Özel Ses Klonu oluşturun, ardından desteklenen ses klonlama dillerinde API aracılığıyla ses kimliğini herhangi bir konuşmacıya atayın. Tutarlı bir marka sesi olarak iyi çalışır.
135'ten fazla dil ve bölge seçeneği arasından seçim yapın. Metni tek bir dilde yazın ve Rask onu çevirsin ya da metni halihazırda hedef dilde gönderin. Yapay zeka sesleri her hedef konum için mevcuttur.
API, segment başına düz metin alır. Telaffuza rehberlik etmek için betik metnindeki heceleyişi ayarlayın. Sözlükler terimlerin nasıl telaffuz edildiğini değil, nasıl çevrildiğini kontrol eder.
Aktarım, seçilen sesi ve noktalama işaretleri dahil olmak üzere metninizi takip eder. Gerçek bir performansla eşleşen bir duygusal aralık için, orijinal konuşmacının ses klonu, ses kimliğinin daha fazlasını korur.
Video veya ses kaydı kullanabilirsiniz. Zaman çizelgesine uygun bir seslendirme oluşturmak için kaynak medyayı yükleyin ve zaman ayarlı bir metin sağlayın. Yüklenmiş bir medya dosyası gereklidir.
Hayır. Kullanım, Rask uygulamasındaki dakika havuzundan düşülerek ve bir sonraki tam dakikaya yuvarlanarak video dakikası üzerinden ücretlendirilir. Uygun standart planlarda ek dakikalar dakikası 3$ olarak ücretlendirilir. Kurumsal fiyatlandırma anlaşmanıza göre belirlenir. Yeniden dublaj, ücretlendirilen işlem başına en az bir dakika olmak üzere yalnızca değiştirilen bölümler üzerinden ücretlendirilir.
Kendi videonuzdaki sesleri dinlemek için Rask uygulamasında kart gerektirmeyen ücretsiz deneme sürümüyle başlayın. API erişimi Creator Pro, Business ve Enterprise planlarında sunulur ve özellikler planınıza göre belirlenir.
API erişimi Creator Pro, Business ve Enterprise planlarında sunulur ve özellikler planınıza göre belirlenir. Uygulama üzerinden istemci kimliğinizi ve gizli anahtarınızı oluşturarak hemen kullanmaya başlayabilirsiniz. Kurumsal şartlar, hacim bazlı fiyatlandırma ve özel dil seçenekleri için ekibimizle iletişime geçebilirsiniz.