@youka/sdk e @youka/cli versione 0.2.0 o successiva per questi esempi. I progetti creati tramite l’API restano disponibili nella tua libreria Youka.
Scegli un workflow e un modello
kind seleziona il workflow del progetto. karaoke separa le tracce (stems). lyric-video usa l’audio originale e non addebita costi per la separazione. Se kind viene omesso, mantiene il comportamento karaoke esistente. L’elaborazione dei testi è una scelta separata tra allineamento, trascrizione o nessuna elaborazione.
Scopri i modelli e l’idoneità dell’account prima di scegliere un modello.
suppliedTextHandling distingue tra allineamento, keyterm del provider e correzione dopo la trascrizione. L’idoneità riflette l’account autenticato. La discovery descrive il supporto configurato, non una garanzia di disponibilità del provider. La validazione delle richieste e i preventivi di prezzo restano l’autorità.
I modelli che richiedono voci isolate non possono elaborare un lyric video senza separazione. Usali in un workflow karaoke con un modello di separazione che produca le voci. Wav2Vec2 è un modello di allineamento. ElevenLabs Scribe è un modello di trascrizione. Il testo di trascrizione fornito è una guida, non una garanzia di output testuale identico.
Crea e quota i progetti
--kind oppure passa --kind karaoke e scegli --split-model. Usa --mode none per creare senza elaborazione dei testi. Le richieste lyric-video rifiutano le opzioni di separazione.
Quota la stessa sorgente, lo stesso workflow e le stesse opzioni di elaborazione prima della creazione.
Correggi le tempistiche senza job di elaborazione
Leggi gli allineamenti tramiteGET /projects/{projectId}/alignments, quindi ottieni la risorsa scelta tramite GET /projects/{projectId}/alignments/{alignmentId}. L’elenco contiene alignments, selectedAlignmentId e selectionRevision. Ogni risorsa include il payload delle tempistiche, revision, selected e selectionRevision.
Gli aggiornamenti sostituiscono l’oggetto alignment completo. Non eseguono la sincronizzazione né creano un blocco crediti di elaborazione. Mantieni ID, testo, indici di riga/parola/sottoparola, informazioni del cantante e traduzioni durante la modifica. I tempi sono secondi decimali assoluti. Applica qualsiasi correzione desiderata una sola volta nei valori inviati. Non aggiungere di nuovo la stessa correzione come offset di esportazione.
select: true per salvare e selezionare in modo atomico. Per selezionare tempistiche esistenti senza sostituirle, chiama client.projects.alignments.select(projectId, alignmentId, { expectedRevision, expectedSelectionRevision }).
La revisione dell’allineamento protegge i contenuti delle tempistiche. La revisione di selezione protegge quale allineamento è attivo. Un token obsoleto produce HTTP 409. Recupera la risorsa più recente, confronta le modifiche e invia una sostituzione deliberata. Non aggiornare automaticamente il token e sovrascrivere le modifiche di un altro editor.
La CLI accetta un file JSON o lo standard input. Un file di import contiene { "alignment": { "items": [...] }, "expectedRevision": "..." }. Includi select ed expectedSelectionRevision quando selezioni in modo atomico. Le risorse esportate contengono anche metadati di risposta, quindi estrai i campi della richiesta prima di importare.
Esporta una versione scelta
versionId è facoltativo nelle richieste di esportazione e negli aggiornamenti delle impostazioni, e nella query GET delle impostazioni. Se omesso, mantiene il comportamento della versione primaria. L’allineamento selezionato appartiene al progetto, mentre stile e impostazioni appartengono alla versione scelta.
versionId, alignmentId e alignmentRevision. Questi campi identificano lo snapshot delle tempistiche usato per quell’esportazione o per il payload preparato. Ogni preparazione legge lo stato corrente, quindi una successiva esportazione separata può osservare modifiche più recenti. Salva il payload restituito quando un renderer esterno deve renderizzare esattamente quello snapshot preparato e aggiornalo quando scadono gli URL firmati dei media.
L’output locale trasparente usa ProRes 4444 in un container MOV. --mute-all mappa tutte le tracce del progetto a volume zero. Il silenzio e l’assenza di una traccia audio sono proprietà di output diverse; ispeziona il file renderizzato se uno strumento a valle ne richiede una in particolare. Il rendering locale non consuma crediti di export cloud e resta soggetto all’idoneità delle funzionalità esistenti.
Le tempistiche delle parole, gli offset audio globali e l’anticipazione dei testi sono impostazioni separate. I layout esistenti controllano la visibilità delle righe. Questa release non promette un intervallo di rivelazione fisso per ogni riga né aggiunge un’API separata per l’allegato di backing track.
Gestisci un catalogo in modo sicuro
Mantieni un manifest con un ID elemento stabile, impronta della sorgente, impostazioni dell’operazione, chiave di idempotenza, ID progetto/task e l’ultimo risultato terminale. Riutilizza una chiave solo per i retry della stessa richiesta. Persistere i risultati della creazione prima di attendere il completamento, così un riavvio può riprendere il polling. Gli upload e la preparazione dei file locali hanno un proprio ciclo di vita; una chiave di idempotenza di creazione non deduplica ogni upload. L’eseguibile catalogue example accetta ID di file di input pre-caricati e persiste un checkpoint per elemento. Un manifest appare così.catalogue.ts. Installa le sue dipendenze e imposta YOUKA_API_KEY. Usa un progetto Node.js con "type": "module" nel suo package.json.
.lock obsoleto solo dopo aver confermato che il PID memorizzato al suo interno non è più in esecuzione.
Inizia con un solo elemento in-flight. Aumenta un numero di worker limitato solo dopo aver misurato la latenza di elaborazione e le risposte di rate-limit per il tuo account. Ritenta gli errori di trasporto e i rate limit con backoff, rispettando Retry-After. Non ritentare alla cieca errori di validazione, conflitti di tempistiche o fallimenti terminali di elaborazione. Gli errori di autenticazione richiedono credenziali valide; non significano che un job di elaborazione sia fallito.
Mantieni il polling esistente dei task cloud e la gestione dei crediti in caso di fallimento. Qui non viene introdotto alcun endpoint batch, promessa di webhook, cambiamento di prezzo, cambiamento di licenza o policy di retention.