# 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เพื่อให้การแก้ไขภายหลังไม่ไปกระทบงานที่เสร็จสมบูรณ์แล้วโดยไม่รู้ตัวAPI สำหรับปรับแต่งวิดีโอจะช่วยเปลี่ยนวิดีโอต้นฉบับให้เป็นเวอร์ชันต่างๆ สำหรับตลาดอื่นโดยอัตโนมัติผ่านโค้ดของคุณเอง ซึ่งรวมถึงเสียงพูดที่แปลและพากย์แล้ว คำบรรยาย คำศัพท์ที่สอดคล้องกัน และการซิงค์ริมฝีปากที่เป็นตัวเลือกเสริม ด้วย Rask แต่ละเวอร์ชันสำหรับตลาดเป้าหมายคือโปรเจกต์ที่คุณสามารถสร้าง ตรวจสอบ และดาวน์โหลดได้ผ่าน REST API เพียงตัวเดียว
การแปลคือการเปลี่ยนคำพูด ส่วนการปรับแต่งวิดีโอคือการเตรียมวิดีโอให้เหมาะกับตลาดเฉพาะกลุ่ม เช่น การใช้ภาษาท้องถิ่น คำศัพท์เฉพาะของแบรนด์ที่คงที่ เสียงของผู้พูด คำบรรยาย และขั้นตอนการตรวจสอบก่อนเผยแพร่ ซึ่ง Rask API รองรับกระบวนการเหล่านี้ทั้งหมดในขั้นตอนเดียว
ได้ สร้างโปรเจกต์สำหรับแต่ละพื้นที่เป้าหมาย เช่น es-mx สำหรับเม็กซิโกและ es-es สำหรับสเปน และใช้คำศัพท์ของแบรนด์ชุดเดียวกันซ้ำเพื่อให้คำศัพท์มีความสอดคล้องกัน ตรวจสอบข้อความของแต่ละตลาด เมื่อสำเนียงท้องถิ่นเป็นสิ่งสำคัญ ให้เลือกเสียง AI ที่มีให้เลือกสำหรับพื้นที่นั้นๆ การโคลนเสียงจะใช้โมเดลภาษาหลักและไม่ได้รับประกันสำเนียงเฉพาะถิ่นนั้นๆ
สร้างคลังคำศัพท์สำหรับแต่ละคู่ภาษาและแนบมาเมื่อคุณสร้างโปรเจกต์ แต่ละโปรเจกต์จะบันทึกเวอร์ชันของคลังคำศัพท์ที่ใช้ ดังนั้นการแก้ไขคลังคำศัพท์ทีหลังจะไม่ส่งผลกระทบกับงานที่เสร็จไปแล้ว และไม่สามารถเพิ่มคลังคำศัพท์ลงในโปรเจกต์หลังจากที่สร้างเสร็จแล้วได้
ได้ ในแพ็กเกจที่รองรับการอัปโหลดไฟล์ SRT ให้นำเข้าไฟล์ SRT ภาษาเป้าหมายที่คุณอนุมัติแล้วตอนสร้างโปรเจกต์ ส่วนไฟล์ SRT ภาษาต้นฉบับนั้นเป็นทางเลือกเสริม คุณยังสามารถส่งไฟล์ทั้งสองแบบได้เมื่อมี Rask จะใช้คำแปลที่คุณอนุมัติแล้วสำหรับการพากย์เสียง
ความเหมาะสมทางวัฒนธรรมต้องอาศัยการตัดสินใจของมนุษย์ API จะช่วยให้ผู้ตรวจสอบเห็นทุกส่วนเพื่อปรับเปลี่ยนสำนวน คำพูด และตัวอย่างให้เข้ากับตลาดก่อนเผยแพร่ และ Rask สามารถเพิ่มทีมงานตรวจสอบคุณภาพเข้ามาในกระบวนการได้ เมื่อทีมของคุณไม่สามารถตรวจสอบวิดีโอทุกรายการได้
ปลายทาง API ที่มีเอกสารระบุไว้จะจัดการแปลเสียงและคำบรรยาย ส่วนข้อความที่เป็นส่วนหนึ่งของภาพ เช่น ชื่อเรื่องในวิดีโอ จะคงไว้ตามต้นฉบับ หากข้อความบนหน้าจอเป็นส่วนสำคัญในงานของคุณ สามารถพูดคุยกับทีมงานของเราได้
แปลเป็นหลายภาษาจากตัวเลือกภาษาและภูมิภาคมากกว่า 135 แบบ รวมถึงภาษาสเปนแบบเม็กซิโกและยุโรป ภาษาโปรตุเกสแบบบราซิลและยุโรป และภาษาฝรั่งเศสแบบแคนาดา แต่ละโปรเจกต์จะใช้พื้นที่เป้าหมายเดียว รายชื่อทั้งหมดอยู่ในเอกสารประกอบ API และทีมงานของเรายินดีพูดคุยเกี่ยวกับตัวเลือกอื่นๆ นอกเหนือจากนี้
ได้ ในภาษาที่รองรับการโคลนเสียง ใช้การโคลนเสียงแบบทันทีเพื่อคงเอกลักษณ์ของผู้พูด หรือใช้การโคลนเสียงแบบกำหนดเองที่บันทึกไว้สำหรับผู้ดำเนินรายการประจำ การโคลนจะใช้โมเดลภาษาหลัก ดังนั้นการเลือกภาษาถิ่นจึงไม่รับประกันสำเนียงของภูมินั้นๆ ให้เลือกเสียง AI ที่มีให้เลือกหากสำเนียงท้องถิ่นคือสิ่งสำคัญ
การซิงค์ริมฝีปากเป็นขั้นตอนเสริมสำหรับวิดีโอที่มีคนจริงๆ พูดอยู่หน้ากล้อง ให้รันขั้นตอนนี้ในเวอร์ชันที่แปลแล้วหลังจากการตรวจสอบ การสร้างการซิงค์ริมฝีปากสำหรับวิดีโอเต็มรูปแบบจะคิดค่าบริการแยกต่างหากจากการพากย์ รวมถึงการสร้างซ้ำหลังจากมีการแก้ไขภายหลัง
การใช้งาน API จะคิดตามนาทีของวิดีโอสำหรับแต่ละเวอร์ชันของตลาด โดยหักจากโควตานาทีเดียวกับแอป Rask นาทีเพิ่มเติมมีค่าใช้จ่าย $3 ต่อนาที สำหรับแพ็กเกจมาตรฐานที่ร่วมรายการ สำหรับลูกค้าระดับองค์กร ราคาจะปรับตามข้อตกลงของคุณ การพากย์เสียงซ้ำหลังการตรวจสอบจะคิดตามความยาวรวมของส่วนที่มีการเปลี่ยนแปลง โดยมีขั้นต่ำหนึ่งนาทีต่อการรัน และการซิงค์ริมฝีปากจะคิดค่าบริการแยกต่างหาก ลองใช้งานการแปลวิดีโอในแอป Rask ได้ฟรีโดยไม่ต้องใช้บัตรเครดิต หากต้องการประเมินการใช้งาน API สามารถนัดหมายรับชมการสาธิตกับทีมงานของเราได้
ได้ค่ะ สำหรับงานที่มีจำนวนมากและทำเป็นประจำ ทีมงานของเราสามารถช่วยวางแผนกระบวนการปัจจุบันของคุณ กำหนดขั้นตอนการตรวจสอบและการอนุมัติ ตั้งค่าคำศัพท์และเสียงพากย์ เชื่อมต่อ Rask เข้ากับระบบ CMS หรือ LMS ของคุณ และเพิ่มการตรวจสอบโดยมนุษย์ในจุดที่จำเป็นได้
การเข้าถึง API มีให้บริการในแพ็กเกจ Creator Pro, Business และ Enterprise โดยความสามารถจะขึ้นอยู่กับแพ็กเกจของคุณ คุณสามารถสร้างรหัสลูกค้าและรหัสลับได้ในแอปและเริ่มใช้งานได้ทันที สำหรับเงื่อนไขระดับองค์กร ราคาส่ง และการรองรับภาษาเฉพาะ โปรดติดต่อทีมงานของเรา