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