Guía de segmentos
Resumen
Los segmentos te permiten sincronizar diferentes clips de audio con distintos rangos de tiempo dentro de un solo video en una sola llamada API. Esto habilita lip sync de múltiples hablantes al permitirte asignar diferentes entradas de audio a diferentes partes de tu video. Con segments, puedes:
- Aplicar lip sync de diferentes clips de audio a distintas partes de tu video
- Usar una porción específica de una entrada de audio para hacer lipsync de un segmento con timing preciso
- Usar tanto entradas de audio como de texto a voz para hacer lipsync de múltiples segmentos con distintos tipos de entrada en una sola generación
Conceptos básicos
Para usar la funcionalidad de segments, debes proporcionar un arreglo de nivel superior segments, con cada ítem definiendo un rango/segmento de tiempo de video, cada uno con su propia configuración de audio.
Segment
Cada ítem de segmento acepta las siguientes propiedades:
Tiempo de inicio del segmento en segundos
Tiempo de fin del segmento en segundos
Configuración de audio con refId y recorte opcional
Sobrescribe las opciones de generación para este segmento específico
audioInput
Cada segmento requiere exactamente un audioInput. audioInput acepta las siguientes propiedades:
ID de referencia de la entrada de audio/texto a voz que se usará para este segmento
Tiempo de inicio opcional (en segundos) para recortar el audio referenciado. Cuando se especifica, también debe proporcionarse endTime
Tiempo de fin opcional (en segundos) para recortar el audio referenciado. Cuando se especifica, también debe proporcionarse startTime
El audioInput especificado se usará para hacer lipsync del segmento de video entre startTime y endTime.
optionsOverride
Cada segmento puede sobrescribir opcionalmente las opciones de generación de nivel superior. Esto te permite aplicar distintos ajustes por segmento, incluyendo apuntar a diferentes hablantes.
Para videos de múltiples hablantes, usa active_speaker_detection para apuntar a una persona diferente en cada segmento. Consulta selección de hablante — API para ver todos los detalles sobre opciones de selección de hablante.
Sobrescribe el modo de sincronización para este segmento
Sobrescribe la expresividad (0-1) para este segmento
Sobrescribe la detección de oclusión para este segmento
Sobrescribe active speaker detection para este segmento. Útil cuando diferentes segmentos tienen diferentes hablantes. Acepta las mismas opciones que active_speaker_detection de nivel superior:
auto_detect: detecta automáticamente y apunta al hablante activov3: usa ASD v3frame_number+coordinates: especifica manualmente el hablante por frame y puntobounding_boxes: proporciona bounding boxes por frame si tienes datos de detecciónbounding_boxes_url: apunta a un archivo JSON externo que contiene bounding boxes (recomendado para videos largos para evitar payloads grandes)
Cómo funciona el timing y la duración de segmentos
Cuando el audio de un segmento y su ventana de video (endTime − startTime) tienen longitudes distintas, sync_mode decide cómo se resuelve el desajuste, y el modo que elijas cambia la duración efectiva de ese segmento en la salida:
En resumen, la longitud efectiva de un segmento es cut_off → min(audio, ventana), silence → max(audio, ventana), y loop / bounce / remap → longitud del audio.
Las mismas reglas aplican a una generación de segmento único (sin segments), donde la “ventana” es todo el video. Un audio de 30 s en un video de 15 s con sync_mode: cut_off produce una salida de 15 s (recortada al video); silence / loop / bounce / remap producen una salida de ~30 s.
La salida puede ser más larga que tu video fuente
Cada segmento coloca su toma de audio en su propia ventana en la línea de tiempo, y cada ventana se expande para ajustarse a su audio (según el sync_mode anterior). Cuando hay huecos entre segmentos, esas ventanas expandidas desplazan el resto de la línea de tiempo, por lo que la salida puede ser más larga que el video fuente. Por ejemplo, dos segmentos [1s-3s] y [5s-8s] en un video de 10 s pueden producir una salida de ~16.8 s: cada ventana se estira para ajustarse a su toma de audio completa. Este comportamiento es esperado, no es un bug.
Para mantener la salida con la misma longitud que el video fuente, recorta cada toma de audio a su ventana con audioInput.startTime/endTime, de forma que la toma tenga exactamente la misma duración que la ventana y la ventana no se expanda:
Aquí, el corte de audio de 2 segundos llena exactamente la ventana de 2 segundos, por lo que la línea de tiempo, y la duración de salida, se mantiene alineada con la fuente.
Ejemplos de uso de API
Un segmento con un audio
Múltiples segmentos con un audio
Múltiples segmentos con una sola entrada de audio
Múltiples segmentos con múltiples audios
Múltiples segmentos con múltiples audios
Segments con options override
Segmentos con opciones por segmento
Usa optionsOverride para aplicar distintos ajustes de generación a cada segmento.
Segments multi-hablante con active speaker detection
Apunta a distintos hablantes por segmento
Usa active_speaker_detection en optionsOverride para apuntar a distintos hablantes en cada segmento. Esto es útil cuando un video tiene varias personas y diferentes segmentos deben hacer lipsync con diferentes hablantes.
Consulta selección de hablante — API para detalles sobre opciones de active_speaker_detection.
Mejores prácticas
Planifica tus segmentos
- Mapea tu timeline: identifica segmentos de video y necesidades de audio correspondientes
- Prepara archivos de audio: garantiza calidad de audio y duración apropiada
- Prueba límites de segmento: verifica transiciones suaves entre segmentos
Preparación de audio
- Usa calidad de audio consistente en todos los segmentos y en el audio del video.
- Para mejores resultados, asegúrate de alinear correctamente el timing con los segmentos de video. Si la duración del segmento y la duración del audio correspondiente no coinciden, usa sync_mode para decidir cómo manejar el desajuste.
Solución de problemas
Errores comunes
"Multiple audio inputs are only allowed when using multi-segments"
Proporciona un arreglo segments de nivel superior cuando uses múltiples entradas de audio o texto.
"Unable to resolve audio input URL"
Asegúrate de que todas las entradas de audio tengan valores url o assetId válidos y de que los valores refId referenciados existan en tus entradas de audio o texto.
"Segment at index X is missing a valid audioInput.refId"
Este error ocurre cuando al audio_input de un segmento le falta refId o refId está vacío. Cada segmento debe referenciar una entrada de audio o texto válida mediante su refId.
"Segment at index X references unknown refId"
Este error ocurre cuando un segmento referencia un refId que no existe en tus entradas de audio o texto. Asegúrate de que todos los valores refId referenciados coincidan exactamente con los definidos en tus entradas.
"Invalid segment time range: startTime must be <= endTime"
El startTime de cada segmento debe ser menor o igual que su endTime. Se permiten segmentos de duración cero (cuando startTime es igual a endTime) para casos de uso como puntos de recorte de duración cero.
"Invalid segment frame range: startFrame must be < endFrame"
Cuando especificas límites de segmento usando frames en lugar de segundos, startFrame debe ser estrictamente menor que endFrame. A diferencia de los segmentos basados en tiempo, que permiten tiempos de inicio y fin iguales, los segmentos basados en frames requieren al menos un frame de diferencia.
"Invalid audioInput crop range"
Cuando recortas audio dentro de un segmento, deben proporcionarse tanto startTime como endTime, y startTime debe ser menor o igual que endTime.
"When using multi-segments, please provide at least one audio or text input"
Asegúrate de tener al menos una entrada de audio o texto con un refId válido al usar segments.
Recursos relacionados
- Lipmodo de sincronizaciónl — conoce los modelos compatibles para generaciones de segmento único y multi-segmento
- guía de API para doblaje de video — usa segments con flujos de doblaje para doblaje de video de múltiples hablantes

