API pro synchronizaci rtů u dabovaných videí

Slaďte pohyb úst s dabingem ve více než 135 jazycích a regionech. Nadabujte video přes API, spusťte synchronizaci rtů a stáhněte si video, kde mluvčí na obrazovce přirozeně mluví novým jazykem. Nejprve proběhne ověření obličeje. Synchronizace rtů se účtuje zvlášť od dabingu pro každé celé vygenerované video, včetně opětovného generování po úpravách.
Minuta ukázky zdarma
Více tváří na obrazovce
REST + Python SDK
check, preview, sync
OAuth 2.0
# 1. on a dubbed project: confirm the video has a face (runs once, usually automatically)
curl https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN"
#  "check_face_task_status": "done", "video_has_face": true

# 2. preview one free minute of lip-sync
curl -X PUT https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"is_multiple_speakers": true, "is_free_lipsync": true}'

# 3. lip-sync the full video - billed separately from dubbing
curl -X PUT https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"is_multiple_speakers": true, "is_free_lipsync": false}'
GET /v2/projects/{project_id}/lipsync
polling, 15s
# Poll until lipsync_task_status is done, then download lipsync_result_path
while :; do
  curl -s https://api.rask.ai/v2/projects/$ID/lipsync -H "Authorization: Bearer $TOKEN" \
    | jq '{lipsync_task_status, lipsync_task_progress, tasks_in_lipsync_queue}'
  sleep 15
done
Používáno týmy po celém světě
Funkce

Všechny funkce API pro synchronizaci rtů

Přidejte synchronizaci rtů k dabovaným videím. Zkontrolujte viditelnou tvář, využijte bezplatnou ukázkovou minutu ze svého účtu a sledujte průběh přes API. Kompletní synchronizace rtů se účtuje odděleně od dabingu při každém generování.

Synchronizace rtů u přeloženého videa

Slaďte pohyb úst s dabingem ve videu, které váš projekt přeložil, v rámci nabídky více než 135 podporovaných jazyků a regionů.

Automatická kontrola obličeje

Před spuštěním synchronizace rtů ověří systém, zda je na videu vidět alespoň jedna tvář. Tato kontrola proběhne jednou pro každý projekt, takže výsledek znáte dříve, než utratíte minuty.

Několik tváří na obrazovce

U rozhovorů, panelových diskuzí a dialogů s více mluvčími nastavte možnost is_multiple_speakers na hodnotu true. Pokud je na obrazovce vždy jen jedna tvář, nastavte hodnotu na false, čímž urychlíte zpracování.

Jedna minuta ukázky zdarma

Každý účet získá jednu minutu synchronizace rtů zdarma. Vyzkoušejte si ji na vlastních záběrech s parametrem is_free_lipsync a zkontrolujte výsledek, než spustíte synchronizaci celého videa.

Samostatné vyúčtování pro každé generování

Každé generování synchronizace rtů pro celé video se účtuje zvlášť od dabingu. Po úpravách textu nebo hlasu projekt znovu nadabujte a vytvořte novou synchronizovanou verzi s novým poplatkem.

Pozice ve frontě a průběh

Informační rozhraní pro synchronizaci rtů vrací počet úkolů před vámi a aktuální postup od 0 do 100, takže vaši uživatelé uvidí reálný pokrok.

Hlasy, které odpovídají tváři

Synchronizace rtů funguje s jakýmkoli hlasem, který projekt pro mluvčího používá: ať už jde o jeho klonovaný hlas, nebo předvolený AI hlas.

Upravit, znovu nadabovat, znovu synchronizovat

Změňte text, načasování nebo hlasy, projekt znovu nadabujte a poté opětovně spusťte synchronizaci rtů pro novou verzi. Kontrolu obličeje není nutné spouštět znovu.

Růst bez omezení

Žádné limity počtu požadavků, žádné kvóty pro souběžné zpracování ani omezení klíčů. Posílejte úkoly synchronizace rtů pro celý svůj katalog a pozice ve frontě vám ukáže stav každého z nich.
Podívejte se na to v akci

Od nadabované řeči po přirozený pohyb rtu

Stejný klip nadabovaný do francouzštiny, němčiny, portugalštiny a španělštiny. U takto nadabovaného projektu synchronizace rtů přizpůsobí pohyb úst novému znění.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Pracovní postup

Tři kroky k videu se synchronizací rtů

Synchronizace rtů probíhá u projektu, který je již nadabovaný. Pomocí koncového bodu /generate proveďte nový dabing po úpravách a poté znovu synchronizujte rty.
1

Nadabujte video

Nahrávejte vstupní video nebo odešlete veřejnou URL adresu, vytvořte projekt s cílovým jazykem a vyčkejte na dokončení sloučení (merging_done). Synchronizace rtů vyžaduje přeložené video tohoto projektu.

POST /v2/projects
2

Zkontrolujte obličej

Úkol kontroly obličeje ověří, že je ve videu alespoň jeden obličej. Obvykle se spouští automaticky. Pokud se nespustil, spusťte jej pro projekt sami.

PUT /v2/projects/{id}/check_face
3

Spusťte synchronizaci rtů a stáhněte

Spusťte úlohu synchronizace rtů, sledujte postup lipsync_task_progress od 0 do 100 a poté stáhněte video z lipsync_result_path.

PUT /v2/projects/{id}/lipsync
Doba zpracování závisí na délce videa a frontě pro synchronizaci rtů. Informační koncový bod pro synchronizaci rtů ukazuje, kolik úkolů je před vámi.
Přizpůsobeno vám

Potřebujete synchronizaci rtů pro nějaký zvláštní případ? Obraťte se na náš tým

Vyšší propustnost, priorita zpracování, vlastní způsob doručení: pokud integrace synchronizace rtů vyžaduje něco nad rámec veřejné nabídky, náš tým posoudí vaše požadavky a dostupné možnosti.

Jazyky a hlasy

Potřebujete jazyk nebo hlas, který není uveden ve veřejném katalogu? Obraťte se na náš tým a sdělte nám své požadavky a 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 používá API pro synchronizaci rtů

Platformy pracující s videem

Platformy pro správu vzdělávání a vzdělávání zákazníků, tvůrci a video platformy, nástroje pro webináře a virtuální akce, hostování videí a SaaS pro pracovní postupy, platformy pro digitální osvojení, živé nakupování. Přidejte nadabování se synchronizací rtů k videím, která vaši uživatelé a tvůrci již sdílejí, aby přeložení mluvčí vypadali na obrazovce přirozeně a synchronizace rtů se stala prémiovou funkcí vašeho produktu.

Lokalizační a produkční agentury

Nabídněte synchronizaci rtů jako samostatnou službu nad rámec dabingu. Využijte bezplatnou ukázkovou minutu svého účtu, je-li k dispozici, k vyhodnocení výsledku. Zahrňte generování synchronizace rtů pro celé video a případné další generování po kontrole do cenové nabídky pro klienta.

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

Mezinárodní maloobchod a e-commerce, globální franšízy, mediální vydavatelé, firemní univerzity. Pro marketingová, školicí a manažerská videa, kde obličej vyplňuje obrazovku, zajistí synchronizace rtů, že přeložená řeč bude na každém trhu odpovídat mluvčímu před kamerou.
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 API pro synchronizaci rtů

Jeden kompletní příklad v každém jazyce na již nadabovaném projektu: zkontrolujte obličej, spusťte synchronizaci rtů, sledujte průběh a stáhněte výsledek.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

PROJECT_ID = "..."   # a project with status merging_done

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    info = await client.get_lipsync_info(project_id=PROJECT_ID)
    if info.check_face_task_status is not enums.LipsyncStatus.DONE:
        await client.run_check_face_task(project_id=PROJECT_ID)
        while (info := await client.get_lipsync_info(project_id=PROJECT_ID)).check_face_task_status is not enums.LipsyncStatus.DONE:
            await asyncio.sleep(10)
    if not info.video_has_face:
        raise SystemExit("No face found - lip-sync is not available for this video")

    await client.run_lipsync_task(project_id=PROJECT_ID,
        data=schemas.LipsyncTaskData(is_multiple_speakers=True, is_free_lipsync=False))

    while (info := await client.get_lipsync_info(project_id=PROJECT_ID)).lipsync_task_status is not enums.LipsyncStatus.DONE:
        print(info.lipsync_task_progress, info.tasks_in_lipsync_queue)
        await asyncio.sleep(15)

    print(info.lipsync_result_path)

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"
URL  = f"https://api.rask.ai/v2/projects/{PROJECT_ID}"   # a dubbed project

token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

info = requests.get(f"{URL}/lipsync", headers=h).json()
if info["check_face_task_status"] != "done":
    requests.put(f"{URL}/check_face", headers=h)
    while (info := requests.get(f"{URL}/lipsync", headers=h).json())["check_face_task_status"] != "done":
        time.sleep(10)
assert info["video_has_face"], "No face found"

requests.put(f"{URL}/lipsync", headers=h,
             json={"is_multiple_speakers": True, "is_free_lipsync": False})

while (info := requests.get(f"{URL}/lipsync", headers=h).json())["lipsync_task_status"] not in ("done", "failed"):
    time.sleep(15)

print(info["lipsync_task_status"], info["lipsync_result_path"])
requests + polling
no SDK required
// no dependencies, Node 18+ global fetch - PROJECT_ID is a dubbed project
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 url = `https://api.rask.ai/v2/projects/${PROJECT_ID}`;
const info = () => fetch(`${url}/lipsync`, { headers: h }).then((r) => r.json());

let i = await info();
if (i.check_face_task_status !== 'done') {
  await fetch(`${url}/check_face`, { method: 'PUT', headers: h });
  while ((i = await info()).check_face_task_status !== 'done') await sleep(10000);
}
if (!i.video_has_face) throw new Error('No face found');

await fetch(`${url}/lipsync`, {
  method: 'PUT', headers: h,
  body: JSON.stringify({ is_multiple_speakers: true, is_free_lipsync: false }),
});

while (!['done', 'failed'].includes((i = await info()).lipsync_task_status)) {
  console.log(i.lipsync_task_progress, i.tasks_in_lipsync_queue);
  await sleep(15000);
}
console.log(i.lipsync_result_path);
fetch, Node 18+
plain HTTP
# 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. face check on the dubbed project - start it only if it has not run yet
curl -s https://api.rask.ai/v2/projects/$ID/lipsync -H "Authorization: Bearer $TOKEN" \
  | jq '{check_face_task_status, video_has_face}'
curl -s -X PUT https://api.rask.ai/v2/projects/$ID/check_face -H "Authorization: Bearer $TOKEN"

# 3. run lip-sync (set is_free_lipsync to true for the free preview minute)
curl -s -X PUT https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"is_multiple_speakers": true, "is_free_lipsync": false}'

# 4. follow progress, then download the result
curl -s https://api.rask.ai/v2/projects/$ID/lipsync -H "Authorization: Bearer $TOKEN" \
  | jq '{lipsync_task_status, lipsync_task_progress, lipsync_result_path}'
PUT /v2/projects/{id}/lipsync
OAuth 2.0 client credentials
<?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']];
$info = fn() => $json($http->get("/v2/projects/$projectId/lipsync", ['headers' => $h]));

$i = $info();
if ($i['check_face_task_status'] !== 'done') {
    $http->put("/v2/projects/$projectId/check_face", ['headers' => $h]);
    while (($i = $info())['check_face_task_status'] !== 'done') sleep(10);
}
if (!$i['video_has_face']) exit('No face found');

$http->put("/v2/projects/$projectId/lipsync", ['headers' => $h,
    'json' => ['is_multiple_speakers' => true, 'is_free_lipsync' => false]]);

while (!in_array(($i = $info())['lipsync_task_status'], ['done', 'failed'])) sleep(15);
echo $i['lipsync_result_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 úloha synchronizace rtů hlásí postup

Informační koncový bod pro synchronizaci rtů hlásí kontrolu obličeje, stav úkolu, pozici ve frontě a postup od 0 do 100. Reagovat stačí na tři skupiny.

Hotovo, tady skončete

lipsync_task_status: done
lipsync_task_progress: 100
Synchronizace rtů je dokončena. Odkaz ke stažení je v poli lipsync_result_path.

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

check_face_task_status: started
lipsync_task_status: started
lipsync_task_progress: 0-99
tasks_in_lipsync_queue
Zatímco je průběh prázdný (null), úkol je ve frontě: tasks_in_lipsync_queue ukazuje, kolik úkolů je před vámi.

Chyba, zastavit a nahlásit

lipsync_task_status: failed
check_face_task_status: failed
video_has_face: false
Video bez viditelného obličeje nelze synchronizovat. V případě selhání úkolu kontaktujte podporu a uveďte project_id.
Lip-sync task, as GET /lipsync reports it
GET /v2/projects/{project_id}/lipsync
check face     check_face_task_status  done     video_has_face  true
queued         lipsync_task_status     started  tasks_in_lipsync_queue  2
processing     lipsync_task_progress   0 → 50 → 100
complete       lipsync_task_status     done
               lipsync_result_path     https://...

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

Video se synchronizací rtů, dabingem a titulky

Stáhněte si vygenerované video z cesty lipsync_result_path. Projekt uchovává dabované video bez synchronizace rtů a přeložené titulky ve formátech SRT a VTT, přičemž u vybraných tarifů jsou k dispozici i přeložené hlasy jako samostatné zvukové stopy.
Pole
Formát
Co to je
lipsync_result_path
MP4
Video se synchronizací rtů, připravené ke zveřejnění
voiceover
WAV
Pouze přeložená řeč pro vlastní úpravy
translated_audio
WAV
Přeložený mluvený komentář smíchaný s původním zvukovým pozadím
translation_srt_path
.srt
Titulky v cílovém jazyce
translation_vtt_path
.vtt
Stejné titulky ve formátu WebVTT pro webové přehrávače
translated_video
MP4
Dabované video bez synchronizace rtů pro srovnání
Ovládání

Upravte dabing a poté vygenerujte aktualizovanou verzi se synchronizací rtů

Po změně textu, načasování nebo hlasů můžete změněné úseky znovu namluvit a vygenerovat synchronizaci rtů pro aktualizované video. Opakovaný dabing a každé nové generování synchronizace pro celé video se účtují zvlášť.

Úpravy po jednotlivých segmentech

Úpravy po jednotlivých segmentech
Upravte jednotlivé části přepisu a změněné řádky znovu namluvte. Chcete-li aktualizovat pohyby rtů, vygenerujte novou synchronizaci pro celé video; tato služba je zpoplatněna zvlášť.
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, aby se názvy značek a odborné termíny vyslovovaly v každém dabingu stejně a synchronizace rtů odpovídala tomuto znění.

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át můžete některý ze sedmi formátů videa nebo odeslat veřejnou URL adresu. Soubory obsahující pouze zvuk nemají na obrazovce žádnou tvář, takže synchronizace rtů se vztahuje pouze na videoformáty.

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 pro média vrací délku, velikost souboru, video kodek, snímkovou frekvenci, rozlišení, audio kodek, vzorkovací frekvenci a uspořádání kanálů. Soubor si ověřte a odhadněte náklady předem, protože dabing a synchronizace rtů se účtují za každou minutu délky videa.
Bezpečnost a dodržování předpisů

Tváře a hlasy v naprostém bezpečí

Společnost Brask Inc splňuje certifikaci SOC 2 Type II, funguje v souladu s nařízením GDPR a stav zabezpečení zveřejňuje v reálném čase ve svém Centru důvěryhodnosti. Videa obsahující tváře a hlasy jsou zpracovávána v uzavřeném prostředí umělé inteligence.

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 pro synchronizaci rtů

Samostatné API pro synchronizaci rtů vyžaduje hotovou zvukovou stopu v cílovém jazyce. Rask vytvoří dabovanou stopu a synchronizuje rty v rámci jednoho projektu. Zde vidíte stejný výsledek sestavený dvěma různými způsoby.
Co budete potřebovat
Rask API
Sestaveno z dílů
Přeložená zvuková stopa k synchronizaci
Vytvořeno v rámci stejného projektu
Nejprve přepis, překlad a dodavatelé hlasů
Kontrola tváře před zaplacením
Automaticky, jednou za projekt
Vlastní krok detekce obličeje
Několik tváří na obrazovce
is_multiple_speakers: true
Sledování jednotlivých tváří, které si sami nastavíte a doladíte
Náhled před spuštěním celého procesu
Jedna minuta zdarma pro každý účet
Platíte za každý testovací běh
Opětovná synchronizace po úpravě textu
Nová synchronizace rtů pro celé video, účtovaná zvlášť
Platit znovu za celý soubor
Hudba na pozadí a zvukové efekty
Zachováno pod novým hlasem
Krok oddělení zdrojového zvuku, který si musíte sami vytvořit
Titulky ve formátech .srt a .vtt
Součástí balení
Vytvořeno na základě vašich vlastních časových údajů
Přehled fronty
Pozice ve frontě a průběh 0–100
Cokoliv, co váš poskytovatel nabízí
Rychlostní limity
Žádné
Podle nejpřísnějších podmínek vašeho dodavatele
Fakturace
Za každé vytvoření synchronizace rtů pro celé video
Za spuštění, za poskytovatele
Často kladené otázky

API pro synchronizaci rtů: časté dotazy

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

Existuje nějaké API pro synchronizaci rtů?

Můžu synchronizovat rty ve videu bez předchozího dabingu?

Můžu synchronizovat rty se svou vlastní zvukovou stopou?

Generuje API mluvící avatary z obrázku nebo textu?

Co video potřebuje pro synchronizaci rtů?

Jak se synchronizace rtů účtuje?

Je k dispozici bezplatný náhled synchronizace rtů?

Funguje synchronizace obličeje u více mluvčích?

Jak mohu sledovat postup synchronizace obličeje?

Jak dlouho synchronizace obličeje trvá?

Co se stane, když upravím dabing?

Co když synchronizace obličeje selže?

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.