API di sincronizzazione labial per video doppiati

Sincronizza i movimenti della bocca con il parlato doppiato in oltre 135 lingue e opzioni regionali. Doppia il tuo video tramite l'API, applica la sincronizzazione labiale al risultato e scarica un video in cui il soggetto sullo schermo pronuncia le nuove parole. Prima viene eseguito un controllo del viso. La sincronizzazione labiale viene fatturata separatamente rispetto al doppiaggio per ogni generazione di video completa, comprese le rigenerazioni dopo le modifiche.
Minuto di anteprima gratuito
Più volti sullo schermo
REST + SDK Python
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
Utilizzato da team in tutto il mondo
Funzionalità

Tutto ciò che fa l'API di sincronizzazione labiale

Aggiungi la sincronizzazione labiale ai tuoi video doppiati. Verifica la presenza di un volto visibile, utilizza il minuto di anteprima gratuito del tuo account, se disponibile, e segui i progressi tramite l'API. La sincronizzazione labiale dell'intero video viene fatturata separatamente dal doppiaggio ogni volta che la generi.

Sincronizzazione labiale su video tradotto

Sincronizza i movimenti della bocca con il parlato doppiato in un video tradotto dal tuo progetto, scegliendo tra oltre 135 lingue e opzioni regionali supportate.

Controllo automatico del viso

Prima della sincronizzazione labiale, un controllo verifica che il video contenga almeno un volto. Viene eseguito una volta per progetto, di solito autonomamente, così puoi conoscere il risultato prima di consumare minuti.

Diversi volti sullo schermo

Imposta is_multiple_speakers su true per interviste, tavole rotonde e dialoghi con più interlocutori. Quando è presente un solo volto alla volta sullo schermo, impostalo su false per velocizzare l'elaborazione.

Un minuto di anteprima gratuito

Ogni account riceve un minuto gratuito di sincronizzazione labiale. Esegui il test con is_free_lipsync sui tuoi filmati e verifica il risultato prima di sincronizzare l'intero video.

Fatturazione separata per ogni generazione

Ogni generazione di sincronizzazione labiale per l'intero video viene addebitata separatamente rispetto al doppiaggio. Dopo aver modificato il testo o la voce, ridoppia il progetto e genera una nuova versione sincronizzata con un nuovo addebito.

Posizione in coda e avanzamento

L'endpoint delle informazioni sulla sincronizzazione labiale restituisce il numero di attività precedenti alla tua e l'avanzamento da 0 a 100, in modo che i tuoi utenti possano vedere i progressi reali.

Voci adatte al volto

La sincronizzazione labiale si applica alla voce utilizzata dal progetto per ciascun oratore: la voce clonata o una voce AI predefinita.

Modifica, ridoppia, risincronizza

Modifica testo, tempistiche o voci, ridoppia il progetto e applica nuovamente la sincronizzazione labiale sulla nuova versione. Non è necessario eseguire di nuovo il controllo del viso.

Cresci senza limiti

Nessun limite di frequenza, nessuna quota di concorrenza, nessuna limitazione per chiave. Invia attività di sincronizzazione labiale per l'intero catalogo e la posizione in coda ti indicherà lo stato di ciascuna.
Guardalo in azione

Dal discorso doppiato al movimento coordinato delle labbra

La stessa clip doppiata in francese, tedesco, portoghese e spagnolo. In un progetto di doppiaggio come questo, la sincronizzazione labiale adatta la posizione delle labbra alla nuova voce.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Flusso di lavoro

Tre passaggi dal video doppiato al video con sincronizzazione labiale

La sincronizzazione labiale viene applicata a un progetto già doppiato. Usa l'endpoint /generate per rifare il doppiaggio dopo le modifiche, quindi sincronizza di nuovo le labbra.
1

Doppia il video

Carica il video o invia un URL pubblico, crea un progetto con una lingua di arrivo e attendi il completamento dell'unione. La sincronizzazione labiale richiede il video tradotto di questo progetto.

POST /v2/projects
2

Controlla il volto

Il controllo del volto verifica che ci sia almeno un volto nel video. Di solito si avvia automaticamente. Se non parte, avvialo tu una volta per il progetto.

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

Avvia la sincronizzazione labiale e scarica

Avvia l'attività di sincronizzazione labiale, segui l'avanzamento da 0 a 100, quindi scarica il video dal percorso dei risultati.

PUT /v2/projects/{id}/lipsync
Il tempo di elaborazione varia in base alla durata del video e alla coda di sincronizzazione. L'endpoint delle informazioni mostra quanti lavori ci sono prima del tuo.
Creato intorno a te

Hai bisogno della sincronizzazione labiale per un caso speciale? Parla con il nostro team

Maggiore velocità, priorità di elaborazione e metodi di consegna personalizzati: quando un'integrazione richiede qualcosa di specifico, il nostro team esamina le tue esigenze e le opzioni disponibili.

Lingue e voci

Hai bisogno di una lingua o di una voce non presenti nel catalogo pubblico? Parla con il nostro team per esporre le tue esigenze e scoprire le opzioni disponibili.

Consegna e integrazione

Webhook, invio nella tua coda, consegna diretta al tuo S3, endpoint personalizzati. Diteci come il vostro sistema si aspetta di ricevere i dati.

Volume e capacità

Le dimensioni dei lotti, le lingue di arrivo per azione e la priorità di elaborazione sono termini contrattuali, non limiti fissi del prodotto.

Sicurezza e hosting

La residenza dei dati, l'SSO e SAML, le regole di conservazione e il supporto per la revisione della sicurezza vengono gestiti durante l'attivazione per le aziende.
Casi d'uso

Chi usa un'API di sincronizzazione labiale

Piattaforme con video integrati

Piattaforme di formazione e per clienti, piattaforme video e per creator, strumenti per webinar ed eventi virtuali, hosting video e SaaS per flussi di lavoro, piattaforme di adozione digitale e live shopping. Aggiungi il doppiaggio con sincronizzazione labiale ai video dei tuoi utenti per fare in modo che i presentatori appaiano naturali e la sincronizzazione diventi una funzione esclusiva del tuo prodotto.

Agenzie di localizzazione e produzione

Offri la sincronizzazione labiale come servizio separato rispetto al doppiaggio. Usa i minuti di prova gratuiti del tuo account, se disponibili, per valutare il risultato. Includi la generazione completa e qualsiasi modifica successiva nel preventivo per il cliente.

Produzione video interna e continua

Vendite al dettaglio internazionali, e-commerce, franchising globali, editori e università aziendali. Per video di marketing, formazione ed executive in cui un volto riempie lo schermo, la sincronizzazione labiale fa in modo che il discorso corrisponda al parlato in ogni mercato.
Storie di clienti

Squadre vere, risultati tangibili

Come le aziende localizzano i video con Rask, attraverso i loro numeri.
freccia
freccia
Codice

Esempi di codice per l'API di sincronizzazione labiale

Un esempio completo per ogni lingua, su un progetto già doppiato: controlla il volto, avvia la sincronizzazione, segui l'avanzamento e scarica il risultato.
# 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
Python è l'SDK ufficiale. Le schede Node, PHP e cURL mostrano semplici esempi HTTP sugli stessi endpoint.
Avanzamento

Come viene mostrato l'avanzamento della sincronizzazione labiale

L'endpoint delle informazioni sulla sincronizzazione mostra il controllo del volto, lo stato dell'attività, la posizione in coda e l'avanzamento da 0 a 100. Devi intervenire solo su tre gruppi.

Operazione riuscita, fermati qui

lipsync_task_status: done
lipsync_task_progress: 100
La sincronizzazione labiale è completata. Il link per il download si trova nel percorso dei risultati.

In corso, continua a verificare

check_face_task_status: started
lipsync_task_status: started
lipsync_task_progress: 0-99
tasks_in_lipsync_queue
Quando l'avanzamento è nullo, l'attività è in coda: tasks_in_lipsync_queue mostra quanti lavori ci sono prima del tuo.

Errore, interruzione e segnalazione

lipsync_task_status: failed
check_face_task_status: failed
video_has_face: false
Un video senza un volto visibile non può essere sincronizzato. In caso di errore, contatta l'assistenza indicando 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://...

Oppure salta del tutto il controllo

Indica un endpoint webhook e ogni transizione di stato arriverà come richiesta POST, così la tua coda potrà reagire a ogni cambiamento nel momento stesso in cui si verifica. La consegna tramite webhook fa parte dell'onboarding per le aziende.
Leggi la documentazione
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Output

Video con sincronizzazione labiale, doppiaggio e sottotitoli

Scarica il video generato dal percorso del risultato della sincronizzazione labiale. Il progetto mantiene il video doppiato senza sincronizzazione labiale e i sottotitoli tradotti in formato SRT e VTT e, nei piani idonei, la voce tradotta come tracce audio separate.
Campo
Formato
Cosa contiene
lipsync_result_path
MP4
Il video con sincronizzazione labiale, pronto per la pubblicazione
voiceover
WAV
Solo il parlato tradotto, per il tuo mix personalizzato
translated_audio
WAV
Voce tradotta unita all'audio di sottofondo originale
translation_srt_path
.srt
Sottotitoli nella lingua di arrivo
translation_vtt_path
.vtt
Gli stessi sottotitoli in formato WebVTT, per lettori web
translated_video
MP4
Il video doppiato senza sincronizzazione labiale, per un confronto
Controllo

Modifica il doppiaggio, quindi genera una versione aggiornata con sincronizzazione labiale

Dopo aver modificato testo, tempistiche o voci, puoi doppiare nuovamente i segmenti modificati e generare la sincronizzazione labiale per il video aggiornato. Il nuovo doppiaggio e ogni nuova generazione di sincronizzazione labiale per l'intero video vengono fatturati separatamente.

Modifica per singoli segmenti

Modifica per singoli segmenti
Modifica i singoli segmenti della trascrizione e duplica di nuovo le righe modificate. Per aggiornare i movimenti labiali, genera una nuova sincronizzazione labiale per l'intero video; questa operazione viene fatturata separatamente.
Scarica la trascrizione e i suoi segmenti
Modifica il testo originale e noi penseremo a ritradurlo
Modifica direttamente il testo tradotto per usare le parole che preferisci
Modifica i tempi, aggiungi segmenti o cancellane altri
Cambia la voce associata a qualsiasi speaker

Glossari per la terminologia

Glossari per la terminologia
Collega un glossario in modo che i nomi dei marchi e i termini tecnici vengano pronunciati nello stesso modo in ogni doppiaggio e che la sincronizzazione labiale segua la stessa terminologia.

Un glossario copre una coppia di lingue e si applica a tutte le varianti regionali di quella lingua, così un unico glossario in spagnolo è utile per es-mx e es-es allo stesso modo. Il progetto registra glossary_version, così le modifiche successive non alterano mai inaspettatamente il lavoro completato.
Input

Formati di file supportati

Carica uno dei sette formati video supportati o invia un URL pubblico. I file solo audio non mostrano alcun volto sullo schermo, quindi la sincronizzazione labiale si applica solo ai formati video.

Video

7 formati
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Audio

4 formati
.mp3
.wav
.flac
.m4a

Tutte le informazioni prima di iniziare

L'endpoint multimediale restituisce durata, dimensione del file, codec video, frequenza dei fotogrammi, risoluzione, codec audio, frequenza di campionamento e configurazione dei canali. Valuta un file e stima il costo in anticipo, poiché il doppiaggio e la sincronizzazione labiale vengono fatturati al minuto di durata del video.
Sicurezza e conformità

Volti e voci gestiti in modo sicuro

Brask Inc possiede la certificazione SOC 2 Tipo II, opera nel rispetto del GDPR e pubblica lo stato dei controlli in tempo reale nel proprio Trust Center. I video con volti e voci vengono elaborati in un ambiente IA protetto.

Certificazioni

SOC 2 Tipo II
GDPR
Membro CAI e C2PA

Crittografia

TLS 1.2 in transito
AES-256 a riposo
Chiavi gestite SSE-S3
Rotazione delle chiavi almeno ogni 12 mesi

I tuoi contenuti

Ambiente di intelligenza artificiale chiuso
Mai utilizzato per addestrare modelli generali
Esportazione completa, senza vincoli

Accesso

SSO e SAML
Controllo degli accessi basato sui ruoli
Credenziali client OAuth 2.0

Enterprise

Opzioni di localizzazione dei dati
SLA personalizzati
Account manager dedicato

Diritti sulle voci

Voci sintetiche con diritti di utilizzo
Clonazione vocale basata sul consenso
Controlli di sicurezza dell'IA, supervisione umana
Confronto

API Rask rispetto a una pipeline di sincronizzazione labiale creata autonomamente

Un'API di sincronizzazione labiale indipendente richiede una traccia audio finita nella lingua di arrivo. Rask produce la traccia doppiata e sincronizza le labbra in un unico progetto. Ecco lo stesso risultato, ottenuto in due modi diversi.
Ciò di cui hai bisogno
Rask API
Assemblato da componenti
Una traccia audio tradotta da sincronizzare
Creato dallo stesso progetto
Prima trascrizione, traduzione e fornitori di voci
Controllo del volto prima del pagamento
Automatico, una volta per progetto
La tua fase di rilevamento dei volti
Diversi volti sullo schermo
is_multiple_speakers: true
Tracciamento per singolo volto creato e ottimizzato da te
Anteprima prima dell'elaborazione completa
Un minuto gratuito per account
Paga per ogni test
Nuova sincronizzazione dopo la modifica di un copione
Una nuova generazione di sincronizzazione labiale per l'intero video, fatturata separatamente
Paga di nuovo per l'intero file
Musica di sottofondo ed effetti
Mantenuto con la nuova voce
Una fase di separazione delle tracce audio creata da te
Sottotitoli in formato .srt e .vtt
Incluso
Generato dai tuoi dati di tempistica
Visibilità della coda
Posizione in coda e progresso da 0 a 100
Qualsiasi cosa il vostro fornitore metta a disposizione
Limiti di velocità
Nessuno
Il livello di sicurezza più severo richiesto dai tuoi fornitori
Fatturazione
Per ogni generazione di sincronizzazione labiale dell'intero video
Per esecuzione, per fornitore
Domande frequenti

API di sincronizzazione labiale: domande frequenti

Non riesci a trovare quello che cerchi? Contatta l'ufficio vendite.

Esiste un'API di sincronizzazione labiale?

Posso sincronizzare le labbra di un video senza prima doppiarlo?

Posso sincronizzare le labbra con la mia traccia audio?

L'API genera avatar parlanti da un'immagine o da un testo?

Cosa serve a un video per la sincronizzazione labiale?

Come viene fatturata la sincronizzazione labiale?

È disponibile un'anteprima gratuita della sincronizzazione labiale?

La sincronizzazione labiale funziona con più persone che parlano?

Come faccio a seguire l'avanzamento della sincronizzazione labiale?

Quanto tempo richiede la sincronizzazione labiale?

Cosa succede dopo aver modificato il doppiaggio?

Cosa succede se la sincronizzazione labiale non va a buon fine?

Come posso ottenere l'accesso alle API e una chiave API?

Inizia a doppiare in un solo pomeriggio

Fai la tua prima prova oggi e contattaci se hai bisogno di tariffe per grandi volumi o di una lingua che nessun altro offre.