@youka/sdk y @youka/cli versión 0.2.0 o posterior para estos ejemplos. Los proyectos creados a través de la API permanecen disponibles en tu biblioteca de Youka.
Elegir un flujo de trabajo y un modelo
kind selecciona el flujo de trabajo del proyecto. karaoke separa stems. lyric-video usa el audio original y no cobra por la separación. Si se omite kind, se conserva el comportamiento existente de karaoke. El procesamiento de letras es una elección independiente entre alineación, transcripción o sin procesamiento.
Descubre los modelos y la elegibilidad de la cuenta antes de elegir un modelo.
suppliedTextHandling distingue la alineación, los términos clave del proveedor y la corrección después de la transcripción. La elegibilidad refleja la cuenta autenticada. El descubrimiento describe la compatibilidad configurada, no una garantía de disponibilidad del proveedor. La validación de la solicitud y las cotizaciones de precio siguen siendo la referencia.
Los modelos que requieren voces aisladas no pueden procesar un lyric video sin separación. Úsalos en un flujo de trabajo de karaoke con un modelo de separación que produzca voces. Wav2Vec2 es un modelo de alineación. ElevenLabs Scribe es un modelo de transcripción. El texto de transcripción proporcionado es una guía, no una garantía de una salida de texto idéntica.
Crear y cotizar proyectos
--kind o pasa --kind karaoke y elige --split-model. Usa --mode none para crear sin procesamiento de letras. Las solicitudes de lyric-video rechazan opciones de separación.
Cotiza la misma fuente, flujo de trabajo y opciones de procesamiento antes de la creación.
Corregir tiempos sin trabajos de procesamiento
Lee alineaciones medianteGET /projects/{projectId}/alignments, y luego obtén el recurso elegido mediante GET /projects/{projectId}/alignments/{alignmentId}. La lista contiene alignments, selectedAlignmentId y selectionRevision. Cada recurso incluye la carga útil de tiempos, revision, selected y selectionRevision.
Las actualizaciones reemplazan el objeto alignment completo. No ejecutan sincronización ni crean una retención de créditos de procesamiento. Conserva los ID, el texto, los índices de línea/palabra/subpalabra, la información del cantante y las traducciones al editar. Los tiempos son segundos decimales absolutos. Aplica cualquier corrección deseada una sola vez en los valores enviados. No añadas la misma corrección de nuevo como un offset de exportación.
select: true para guardar y seleccionar de forma atómica. Para seleccionar tiempos existentes sin reemplazarlos, llama a client.projects.alignments.select(projectId, alignmentId, { expectedRevision, expectedSelectionRevision }).
La revisión de la alineación protege el contenido de los tiempos. La revisión de selección protege qué alineación está activa. Un token desactualizado produce HTTP 409. Obtén el recurso más reciente, compara las ediciones y envía un reemplazo deliberado. No actualices automáticamente el token y sobrescribas los cambios de otro editor.
El CLI acepta un archivo JSON o la entrada estándar. Un archivo de importación contiene { "alignment": { "items": [...] }, "expectedRevision": "..." }. Incluye select y expectedSelectionRevision al seleccionar de forma atómica. Los recursos exportados también contienen metadatos de respuesta, así que extrae los campos de solicitud antes de importar.
Exportar una versión elegida
versionId es opcional en las solicitudes de exportación y en las actualizaciones de configuración, y en la query del GET de configuración. Omitirlo conserva el comportamiento de versión primaria. La alineación seleccionada pertenece al proyecto, mientras que el estilo y la configuración pertenecen a la versión elegida.
versionId, alignmentId y alignmentRevision. Estos campos identifican la instantánea de tiempos usada para esa exportación o carga útil preparada. Cada preparación lee el estado actual, así que una exportación posterior separada puede observar ediciones más recientes. Guarda la carga útil devuelta cuando un renderizador externo deba renderizar exactamente esa instantánea preparada, y actualízala cuando caduquen las URL de medios firmadas.
La salida local transparente usa ProRes 4444 en un contenedor MOV. --mute-all asigna todos los stems del proyecto a volumen cero. El silencio y la ausencia de una pista de audio son propiedades de salida distintas; inspecciona el archivo renderizado si una herramienta posterior requiere una de ellas. El renderizado local no consume créditos de exportación en la nube y sigue sujeto a la elegibilidad de funciones existente.
La temporización de palabras, los offsets globales de audio y la anticipación de letras son configuraciones independientes. Los diseños existentes controlan la visibilidad de las líneas. Esta versión no promete un intervalo de revelado fijo para cada línea ni añade una API separada de adjuntos para backing-track.
Operar un catálogo de forma segura
Mantén un manifiesto con un ID de elemento estable, huella de la fuente, configuración de la operación, clave de idempotencia, ID de proyecto/tarea y el último resultado terminal. Reutiliza una clave solo para reintentos de la misma solicitud. Persiste los resultados de creación antes de esperar la finalización para que un reinicio pueda reanudar el sondeo. Las subidas y la preparación de archivos locales tienen su propio ciclo de vida; una clave de idempotencia de creación no deduplica todas las subidas. El ejecutable ejemplo de catálogo acepta ID de archivos de entrada precargados y persiste un checkpoint por elemento. Un manifiesto se ve así.catalogue.ts. Instala sus dependencias y configura YOUKA_API_KEY. Usa un proyecto de Node.js con "type": "module" en su package.json.
.lock obsoleto solo tras confirmar que el PID almacenado en él ya no está en ejecución.
Empieza con un elemento en curso. Aumenta un número de workers acotado solo después de medir la latencia de procesamiento y las respuestas de rate limit para tu cuenta. Reintenta errores de transporte y límites de tasa con backoff, respetando Retry-After. No reintentes a ciegas errores de validación, conflictos de temporización o fallos terminales de procesamiento. Los errores de autenticación requieren credenciales válidas; no significan que un trabajo de procesamiento haya fallado.
Mantén el sondeo existente de tareas en la nube y el manejo de créditos por fallo. Aquí no se introduce ningún endpoint por lotes, promesa de webhook, cambio de precios, cambio de licencias ni política de retención.