API pro titulky pro přeložené soubory SRT a VTT

Nahrávejte video jednou a získejte soubory titulků ve formátu SRT a WebVTT pro každý cílový jazyk, přesně načasované podle mluveného obsahu. Opravte libovolný řádek přes API a stáhněte si aktualizované soubory pro váš přehrávač, aplikaci nebo software pro úpravu videí.
SRT a WebVTT
Více než 135 jazyků a regionálních variant
REST + Python SDK
upload, create, download
OAuth 2.0
# 1. upload the video once - YouTube, Drive, S3, Vimeo or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"link": "https://example.com/onboarding.mp4", "name": "onboarding"}'

# 2. one project per subtitle language
for lang in es-mx fr-fr ja-jp; 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\"}"
done
GET /v2/projects/{project_id}
.srt + .vtt
# When status is merging_done, download both subtitle files
P=$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN")
curl -s -o onboarding.es-mx.srt "$(echo $P | jq -r .translation_srt_path)"
curl -s -o onboarding.es-mx.vtt "$(echo $P | jq -r .translation_vtt_path)"
Používáno týmy po celém světě
Funkce

Vše, co API pro titulky vrací

Vytvářejte přeložené soubory SRT a WebVTT z video nebo audio nahrávek, včetně podcastů a rozhovorů. Zvolte cílový jazyk pro každý projekt a získejte soubory titulků spolu s přenosem, překladem a dabovaným obsahem.

Soubory SRT a WebVTT

Každý dokončený projekt vrací soubor .srt a .vtt v cílovém jazyce: SRT pro software na střih videí a většinu platforem, WebVTT pro přehrávání videa na webu.

Titulky v jiném jazyce

Odstraňte jazykové bariéry pro diváky na každém trhu: vytvořte jeden projekt pro každý cílový jazyk, jako je es-mx, pt-br nebo fr-ca, z jednoho nahrání. Zdrojový jazyk se detekuje automaticky.

Načasováno podle mluveného obsahu

Každý titulkový řádek odpovídá části přepisu s počátečním a koncovým časem, takže se na obrazovce objeví přesně v okamžiku, kdy je vysloven.

Titulky v původním jazyce

Přepis obsahuje zdrojový text každého úseku s časovými značkami. Převeďte ho na soubor SRT nebo VTT pro titulky ve stejném jazyce pomocí několika řádků kódu.

Označení mluvčích pro dialogy

Každý úsek přepisu obsahuje jméno mluvčího, takže můžete k titulkům u rozhovorů, panelových diskusí a dialogů přidat identifikaci osob.

Úprava řádku před zveřejněním

Opravte text nebo časování libovolného úseku pomocí API a vygenerujte ho znovu. Nejasná slova, jména a přízvuky se opraví jednou provždy ve všech formátech.

Konzistentní termíny v každém jazyce

Slovník zajišťuje, že názvy produktů a odborné termíny zůstanou ve všech jazycích titulků stejné, případně záměrně v původním jazyce.

Titulky a dabovaná verze

Stejný projekt vrací také přeložené video a zvukové stopy, takže titulky i dabovanou verzi získáte z jediného nahrání.

Růst bez omezení

Žádné limity rychlosti, žádné kvóty pro souběžné zpracování. Vytvořte titulky pro celou svou videotéku ve všech cílových jazycích najednou.
Podívejte se na to v akci

Jedno video, pět jazykových verzí

Stejný klip v angličtině, francouzštině, němčině, portugalštině a španělštině. Ke každé jazykové verzi získáte vlastní soubory s titulky ve formátu SRT a VTT.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Pracovní postup

Tři kroky od nahrání videa až po soubor s titulky

Vytvoření projektu spustí přepis, překlad a dabovanou verzi najednou. Po úpravě titulků použijte koncový bod /generate.
1

Nahrajte své video

Ošlete video jako soubor nebo vložte odkaz z YouTube, Google Drive, S3, Vimeo či jakoukoli přímou URL. Jedno nahrání stačí pro všechny jazyky titulků.

POST /api/library/v1/media/link
2

Vytvořte projekt

Předejte ID média jako video_id a zvolte jeden cílový jazyk pro každý projekt. Projekty pro různé jazyky běží současně.

POST /v2/projects
3

Stáhněte soubory s titulky

Kontrolujte stav, dokud se nezmění na merging_done, poté stáhněte soubory .srt a .vtt a uložte si je k sobě.

GET /v2/projects/{project_id}
Doba zpracování závisí na délce videa, počtu mluvčích a cílovém jazyce. V jednom testu bylo video dlouhé 3:47 hotové za 165 sekund.
Přizpůsobeno vám

Potřebujete formát nebo doručení titulků, které tu chybí? Ozvěte se našemu týmu

Jiný formát titulků, uložení na vaše vlastní úložiště, jazyk mimo naši nabídku nebo vyšší výkon: náš tým posoudí vaše požadavky na produkční workflow a nabídne vám možné varianty.

Jazyky a hlasy

Potřebujete titulky v jazyce, který není v naší veřejné nabídce? Řekněte nám své požadavky a probereme dostupné možnosti.

Doručení a integrace

Webhooky, odesílání do vlastní fronty, uložení přímo na S3 nebo vlastní koncové body. Řekněte nám, jak funguje váš systém, a my se přizpůsobíme.

Objem a rychlost

Velikost dávek, počet jazyků nebo priorita zpracování jsou součástí smlouvy, nikoliv pevně dané limity produktu.

Zabezpečení a hosting

Zabezpečení dat, přihlašování přes SSO a SAML, pravidla uchovávání a podpora bezpečnostních auditů jsou součástí nastavení pro firemní zákazníky.
Případy použití

Kdo API pro titulky využívá

Platformy pracující s videem

Vzdělávací platformy a systémy LMS, platformy pro tvůrce a videoobsah, nástroje pro webináře a virtuální akce, video hostingy, SaaS nástroje a živé nakupování. Získejte titulky v každém jazyce jako funkci pro nahrávaná videa.

Lokalizační a produkční agentury

Získejte soubory SRT a VTT pro každý jazyk uživatele z jednoho nahrání. Opravy titulků probíhají přes API a soubory se aktualizují, aniž by bylo nutné je znovu časovat.

Interní a nepřetržitá produkce videí

Mezinárodní maloobchod, e-shopy, globální značky, mediální domy a firemní univerzity. Zpřístupněte školicí i produktové videozáznamy každému trhu a divákům, kteří sledují videa bez zvuku.
Příběhy zákazníků

Skutečné týmy, měřitelné výsledky

Jak firmy lokalizují videa pomocí Rask v řeči čísel.
šipka
šipka
Kód

Příklady kódu pro API titulků

Kompletní příklad pro každý jazyk: nahrání videa, vytvoření projektu pro každý jazyk titulků, chvilka čekání a uložení souborů .srt a .vtt nebo jejich přidání do přehrávače HTML5.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio, urllib.request
from rask_sdk import clients, enums, schemas

LANGS = ["es-mx", "fr-fr", "ja-jp"]

async def subtitle(client, video_id, lang):
    job = await client.create_project(data=schemas.ProjectCreate(video_id=video_id, dst_lang=lang))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    # links are presigned for one hour - save the files right away
    urllib.request.urlretrieve(job.translation_srt_path, f"video.{lang}.srt")
    urllib.request.urlretrieve(job.translation_vtt_path, f"video.{lang}.vtt")

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
    media = await client.create_media_link(data=schemas.MediaCreateLink(link="https://example.com/onboarding.mp4"))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)
    await asyncio.gather(*(subtitle(client, media.id, l) for l in LANGS))

asyncio.run(main())
github.com/braskai/rask-sdk
async, typed models
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}"}

pid = requests.post(f"{API}/v2/projects", headers=h,
                    json={"video_id": VIDEO_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)

# translated subtitles: download the files
open("video.de-de.vtt", "wb").write(requests.get(p["translation_vtt_path"]).content)

# original-language captions: build a WebVTT file from the transcript segments
segs = requests.get(f"{API}/v2/projects/{pid}/transcription", headers=h).json()["segments"]
cues = [f"{s['start'].replace(',', '.')} --> {s['end'].replace(',', '.')}\n{s['src']['text']}" for s in segs]
open("video.en.vtt", "w").write("WEBVTT\n\n" + "\n\n".join(cues) + "\n")
requests + polling
same-language captions
// no dependencies, Node 18+ global fetch
import { writeFile } from 'node:fs/promises';
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 langs = ['es-mx', 'pt-br', 'ko-kr'];
const tracks = await Promise.all(langs.map(async (dst_lang) => {
  let p = await call('POST', '/v2/projects', { video_id: VIDEO_ID, dst_lang });
  while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }
  const file = `subs/${dst_lang}.vtt`;
  await writeFile(file, await ((await fetch(p.translation_vtt_path)).text()));
  return `<track kind="subtitles" srclang="${dst_lang}" src="/${file}">`;
}));
console.log(tracks.join('\n'));   // paste inside your <video> element
fetch, Node 18+
HTML5 track elements
# 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. create the project for one subtitle language
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\": \"it-it\"}" | jq -r .id)

# 3. wait for merging_done
until [ "$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq -r .status)" = merging_done ]; do
  sleep 10
done

# 4. save both subtitle files
P=$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN")
curl -s -o video.it-it.srt "$(echo $P | jq -r .translation_srt_path)"
curl -s -o video.it-it.vtt "$(echo $P | jq -r .translation_vtt_path)"
download .srt and .vtt
shell script
<?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']];

foreach (['es-mx', 'tr-tr'] as $lang) {
    $p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
        'video_id' => $videoId, 'dst_lang' => $lang]]));
    while ($p['status'] !== 'merging_done') {
        sleep(10);
        $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
    }
    // presigned links, valid for one hour
    file_put_contents("video.$lang.srt", file_get_contents($p['translation_srt_path']));
    file_put_contents("video.$lang.vtt", file_get_contents($p['translation_vtt_path']));
}
Guzzle 7
plain HTTP
Oficiálním SDK je Python. Záložky pro Node, PHP a cURL představují běžné příklady HTTP volání pro stejná koncová rozhraní.
Průběh

Jak projekt titulků hlásí svůj postup

Každý projekt prochází jasně popsanými stavy, takže uživatelé, kteří do vaší aplikace nahrají video, vidí průběh tvorby titulků v jednotlivých jazycích. Stačí sledovat tři hlavní stavy.

Hotovo, tady skončete

merging_done
Soubory s titulky jsou připravené. Znovu načtěte projekt a získejte nové odkazy ke stažení.

Zpracovává se, pokračujte ve zjišťování stavu

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Plus odpovídající _done Stavy. Tyto položky přesně odpovídají uživatelskému rozhraní pro sledování průběhu.

Chyba, zastavit a nahlásit

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words a forbidden_link jsou dostatečně konkrétní na to, abyste je ukázali přímo svým vlastním uživatelům.
Observed run, 3:47 source video, en → es-mx
GET /v2/projects/{project_id}
   0s  created
  11s  transcription_started
  87s  translation_started
  99s  voiceover_started
 154s  merging_started
 165s  merging_done

Nebo cyklické dotazování úplně vynechte

Stačí nám zadat koncový bod webhooku a každá změna stavu dorazí jako požadavek POST, takže vaše fronta reaguje na každou změnu ihned, jak k ní dojde. Doručování webhooků je součástí procesu zapojení podnikových zákazníků.
Přečíst dokumentaci
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Výstup

Nejprve titulky, vše ostatní hned potom

Každý dokončený projekt obsahuje oba formáty titulků, související části přepisu a nadabované médium. Odkazy ke stažení mají časovou platnost jedné hodiny, proto si soubory nezapomeňte uložit.
Pole
Formát
Co to je
translation_srt_path
.srt
Titulky v cílovém jazyce pro editační software a většinu video platforem
translation_vtt_path
.vtt
Titulky WebVTT pro přehrávání videa v HTML5 a webových přehrávačích
/transcription
JSON
Zdrojový text, překlad, označení mluvčího a časová razítka pro každý segment
translated_video
MP4
Dabované video, pokud publikujete i mluvenou verzi
translated_audio
WAV
Přeložená řeč smíchaná s původní hudbou a zvukovými efekty
original_video
MP4
Váš původní soubor pro kontrolu
Ovládání

Opravte řádek s titulky a přeregenerujte pouze tuto část

Titulky vycházejí ze segmentů přepisu. Upravte text nebo načasování jednoho řádku, spusťte opětovné vytvoření a soubory s titulky i dabovaná verze se aktualizují současně. Fakturace se vztahuje na upravené segmenty s minimem jedné minuty na spuštění.

Úpravy po jednotlivých segmentech

Úpravy po jednotlivých segmentech
Každý projekt zpřístupňuje svůj přepis jako adresovatelné segmenty, takže chybné slovo nebo zpožděné titulky vyřeší jeden požadavek typu patch.
Získání přepsaného textu a jeho segmentů
Upravte původní text a my jej znovu přeložíme
Upravte přeložený text přímo a zachovejte si vlastní slovosled
Úprava časových značek, přidání nebo odstranění segmentů
Změna hlasu přiřazeného k jednotlivým mluvčím

Slovníky pro správnou terminologii

Slovníky pro správnou terminologii
Připojte slovník a názvy značek i odborné termíny budou v titulkech každého jazyka znít stejně, případně záměrně zůstanou v původním jazyce.

Slovník pokrývá jeden jazykový pár a platí pro všechny regionální varianty daného cílového jazyka, takže jeden španělský slovník poslouží es-mx a es-es stejně tak. Projekt uchovává záznamy glossary_version, takže pozdější úpravy nikdy nepozorovaně nezmění hotovou práci.
Vstup

Podporované formáty souborů

Nahrávejte podporované video či audio záznamy nebo použijte podporovanou adresu URL média. Vytvořte projekt pro každý cílový jazyk a stáhněte si soubory SRT a WebVTT.

Video

7 formátů
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Zvuk

4 formáty
.mp3
.wav
.flac
.m4a

Metadata dříve, než cokoliv utratíte

Koncový bod média vrací délku, velikost souboru, video kodek, snímkovou frekvenci, rozlišení, audio kodek, vzorkovací frekvenci a uspořádání kanálů. Ověřte soubor a předem odhadněte cenu, protože projekty jsou účtovány po minutách videa.
Bezpečnost a dodržování předpisů

Zabezpečení a dodržování předpisů pro vaše videoobsah

Společnost Brask Inc vlastní certifikaci SOC 2 Type II, funguje v souladu s nařízením GDPR a pro vaše posouzení bezpečnosti zveřejňuje stav řízení v reálném čase ve svém Centru důvěry.

Certifikace

SOC 2 Type II
GDPR
Člen CAI a C2PA

Šifrování

TLS 1.2 při přenosu
AES-256 v klidu
Klíče spravované přes SSE-S3
Obměna klíčů minimálně každých 12 měsíců

Váš obsah

Uzavřené prostředí AI
Nikdy se nepoužívá k trénování obecných modelů
Úplný export, žádné závazky vůči jedné platformě

Přístup

SSO a SAML
Řízení přístupu na základě rolí
Pověření klienta OAuth 2.0

Podnik

Možnosti umístění dat
Vlastní smlouvy o úrovni služeb (SLA)
Vyhrazený správce účtu

Práva na hlas

Syntetické hlasy s právy k užívání
Klonování hlasu na základě souhlasu
Bezpečnostní opatření v oblasti umělé inteligence, zapojení člověka do procesu
Srovnání

Rask API v porovnání s vlastním řešením titulků

Titulky v jiném jazyce vyžadují přepis, překlad, načasování a export souboru. Zde je stejný výsledek sestavený dvěma způsoby.
Co budete potřebovat
Rask API
Sestaveno z dílů
Přepis s časovými razítky
Součástí balení
API pro převod řeči na text
Titulky v jiném jazyce
Více než 135 jazyků a regionálních variant
Překladové API a úprava načasování
Export ve formátu SRT a WebVTT
Oba formáty v každém projektu
Vlastní generátor souborů
Konzistentní terminologie
Slovníky
Vlastní dodatečné zpracování
Oprava jednoho řádku
Jeden požadavek patch a následná regenerace
Úprava každého souboru ručně
Dabovaná verze stejného videa
Zahrnuto ve stejném projektu
Poskytovatel převodu textu na řeč a vaše vlastní úpravy zvuku
Rychlostní limity
Žádné
Podle toho, co vyžadují vaši poskytovatelé
Titulky přímo ve videu
Ve webové aplikaci Rask, v rozhraní API zatím ne
Vlastní zpracování videa
Písmo, velikost a rozvržení
Nastavuje se ve vašem přehrávači
Nastavuje se ve vašem přehrávači
Často kladené otázky

API pro titulky: nejčastější dotazy

Nenašli jste, co hledáte? Obraťte se na obchodní oddělení.

Má Rask API pro titulky?

Jaké formáty titulků API vrací?

Můžu získat titulky v původním jazyce?

Jaké jazyky jsou podporovány?

Dokáže API vložit titulky přímo do videa?

Můžu změnit písmo, velikost nebo vzhled titulků?

Obsahují titulky popis hudby a zvukových efektů?

Jsou mluvčí rozlišení?

Jak mohu opravit řádek titulků?

Jak dlouho jsou odkazy ke stažení platné?

Mohu použít vlastní titulky?

Jak se účtují titulky přes API?

Jak získáte přístup k API a klíč API?

Začněte dabovat už dnes odpoledne

Zadejte svůj první požadavek ještě dnes a ozvěte se nám, jakmile budete potřebovat velký objem nebo vzácný jazyk.