Subtítulos en directo

Utilice la API de subtítulos en directo para transcribir secuencias de audio y generar subtítulos en tiempo real para su aplicación.

La API de subtítulos en vivo de Vonage Video te permite mostrar subtítulos en vivo a los usuarios finales en una sesión de Vonage Video, usando un servicio de transcripción. Estamos utilizando AWS Transcribe como proveedor de transcripción. Dado que Live Captions captura el audio del enrutador de medios, también puede proporcionar los subtítulos para el audio de los participantes de marcado SIP.

Live Captions está activado por defecto para todos los proyectos, y es un producto basado en el uso. El uso de Live Captions se cobra en función del número de secuencias de audio de los participantes (o ID de secuencia) que se envían al servicio de transcripción. Para más información, consulte Normas de tarificación de la API Live Captions.

La función Live Captions sólo es compatible con sesiones enrutadas (sesiones que utilizan la función Router multimedia). Puedes enviar hasta 50 transmisiones de audio de una sola sesión de Vonage a la vez al servicio de transcripción para subtítulos.

Live caption illustration

Pasos para activar los subtítulos en directo

Utilice el método del Client SDK para publicar audio en el servicio de subtítulos. Consulte Subtítulos en directo

En los clientes suscriptores, llame al método Client SDK correspondiente para que un suscriptor se suscriba a los subtítulos de un flujo.

Al iniciar el subtitulado en directo, transmite el audio de forma segura a un servicio de transcripción de audio de terceros, como Amazon Transcribe.

Utilice la API de subtítulos de los SDK cliente para activar o desactivar la recepción de subtítulos en directo en su aplicación:

Iniciar o detener la recepción de subtítulos en directo en un cliente web no afecta a los subtítulos recibidos por otros clientes conectados a la sesión.

Idiomas admitidos

Live Captions es compatible con varios idiomas. Introduzca el idioma deseado como languageCode al activar los subtítulos en directo con API REST:

  • "af-ZA" - Afrikaans
  • "ar-AE" - Árabe, Golfo
  • "ar-SA" - Árabe moderno estándar
  • "eu-ES" - Euskera
  • "ca-ES" - catalán
  • "zh-HK" - Chino simplificado
  • "zh-CN" - Chino, cantonés
  • "zh-TW" - Chino tradicional
  • "hr-HR" - Croata
  • "cs-CZ" - Checa
  • "da-DK" - Danés
  • "nl-NL" - Holandés
  • "en-AU" - Inglés, australiano
  • "en-GB" - Inglés, británico
  • "en-IN" - Inglés, indio
  • "en-IE" - Inglés, irlandés
  • "en-NZ" - Inglés, Nueva Zelanda
  • "en-AB" - Inglés, escocés
  • "en-ZA" - Inglés, sudafricano
  • "en-US" - Inglés, US
  • "en-WL" - Inglés, galés
  • "fa-IR" - persa
  • "fi-FI" - Finlandés
  • "fr-FR" - Francés
  • "fr-CA" - Francés, canadiense
  • "gl-ES" - Gallego
  • "de-DE" - Alemán
  • "de-CH" - Alemán, suizo
  • "el-GR" - Griego
  • "he-IL" - Hebreo
  • "hi-IN" - Hindi, indio
  • "id-ID" - Indonesio
  • "it-IT" - Italiano
  • "ja-JP" - Japonés
  • "ko-KR" - Coreano
  • "lv-LV" - Letón
  • "ms-MY" - Malayo
  • "no-NO" - Noruego Bokmål
  • "pl-PL" - Polaco
  • "pt-PT" - Portugués
  • "pt-BR" - Portugués, brasileño
  • "ro-RO" - Rumano
  • "ru-RU" - Ruso
  • "sr-RS" - Serbio
  • "sk-SK" - Eslovaco
  • "so-SO" - Somalí
  • "es-ES" - Español
  • "es-US" - Español, US
  • "sv-SE" - Sueco
  • "tl-PH" - Tagalo/Filipino
  • "th-TH" - Tailandia
  • "uk-UA" - Ucrania
  • "vi-VN" - Vietnamita
  • "zu-ZA" - Zulú

Casos prácticos

Los subtítulos en directo pueden mejorar la experiencia y la participación de los usuarios de una aplicación. Los subtítulos mejoran la puntuación de accesibilidad de su aplicación, lo que a menudo se traduce en la participación de personas con discapacidad auditiva. Algunas leyes de todo el mundo exigen que las aplicaciones ofrezcan subtítulos.

Los subtítulos pueden aumentar la comprensión del hablante en entornos no controlados, mejorando así el compromiso del usuario.

Los subtítulos en directo sólo están disponibles para las sesiones enrutadas (sesiones que utilizan la función Router multimedia).

Al activar la función Live Captions:

  • Utilice la API de subtitulación de audio del cliente para iniciar la subtitulación de audio de cada secuencia publicada.
  • El flujo de audio se envía a un servicio de transcripción de audio de terceros (AWS Transcribe).
  • Utilice la API de subtitulado de audio del cliente para suscribirse a los subtítulos en directo de cada secuencia publicada.
  • La elección de no recibir los subtítulos por parte de un abonado individual no afecta a la recepción de subtítulos por parte de otros abonados en otros clientes conectados a la sesión.
  • Cuando finaliza la sesión (cuando todos los clientes han dejado de publicar secuencias en la sesión), puede detener explícitamente el subtitulado mediante la API Detener subtítulos. De lo contrario, los subtítulos de audio se detienen automáticamente después de la duración máxima (especificada al llamar a la API Iniciar API de subtítulos) ha expirado.
  • Los subtítulos en directo de una sesión finalizan durante la rotación del servidor. Puede reiniciar los subtítulos en directo en respuesta a eventos de notificación de rotación del servidor. Véase Rotación de servidores y migración de sesiones.
  • Los subtítulos en directo se detienen automáticamente tras una duración máxima de 4 horas, pero puede configurar una duración máxima diferente llamando al botón Iniciar API de subtítulos. Al expirar, el subtitulado de audio se detendrá sin ningún efecto sobre la sesión en curso.
  • Los subtítulos en directo finalizarán 60 segundos después de que el último cliente se desconecte de la sesión.

Actualizaciones del estado de los subtítulos en directo

Puedes configurar un webhook para recibir eventos cuando los subtítulos en directo se inicien, se detengan y fallen en una sesión.

  1. Vaya a su Cuenta Video API y seleccione el proyecto en la lista de proyectos del menú de la izquierda.
  2. En Configuración del proyectoencuentra Control de subtítulos en directo y haga clic en Configure.
  3. Envía la URL a la que se enviarán las llamadas de retorno.

Devoluciones de llamada seguras: Establecer un Secreto de firma para utilizar solicitudes de devolución de llamada de webhook seguras con devoluciones de llamada firmadas, utilizando el secreto de la firma. Consulte Devoluciones de llamada seguras.

Cuando cambia el estado de los subtítulos en directo, se envía un HTTP POST a las URL de devolución de llamada. Si no se configura ninguna URL de devolución de llamada, no se envía ninguna actualización de estado. Los datos brutos de la solicitud HTTP son un mensaje codificado en JSON de la siguiente forma:

{
  "captionId": "<captionsId>",
  "applicationId": "<applicationId>",
  "sessionId": "<sessionId>",
  "status": "stopped",
  "createdAt": 1651253477,
  "updatedAt": 1651253837,
  "duration": 360,
  "stream": {
    "streamId": "<streamId>",
    "streamStatus": "stopped"
  },
  "languageCode": "en-US",
  "reason": "Maximum duration exceeds.",
  "provider": "aws-transcribe",
  "status": "stopped",
  "group": "captions"
}

El objeto JSON incluye las siguientes propiedades:

  • captionsId El ID único para la sesión de subtitulado de audio.
  • applicationId Su identificador único de solicitud de vídeo.
  • sessionId Sesión de OpenTok para la que se han iniciado los subtítulos de audio.
  • status Estado actual de los subtítulos en directo.
    • "started" La plataforma Video API de Vonage ha asignado correctamente los recursos necesarios para enviar secuencias de audio para subtítulos.
    • "transcribing" El servicio de transcripción ha comenzado (y el subtitulado está en curso).
    • "stopped" Se han detenido los subtítulos y se han eliminado todos los recursos.
    • "failed" El subtitulado no ha asignado los recursos necesarios o no ha enviado secuencias para el subtitulado.
  • createdAt La marca de tiempo Unix (Epoch) en la que se ha iniciado el subtitulado de audio.
  • updatedAt La marca de tiempo Unix (Epoch) en la que se han actualizado los subtítulos de audio. Si el status es "stopped", el updatedAt indica la hora a la que se ha detenido el subtitulado.
  • stream Un objeto que contiene el ID del flujo y el estado del flujo subtitulado.
  • languageCode El código de idioma BCP-47 utilizado.
  • reason Información de error adicional sobre el cambio de estado.
  • providerEl proveedor de servicios externo utilizado para el subtitulado de audio:
    • "aws-transcribe" Amazon Transcribe.
  • group El tipo de evento, que siempre se establece en "subtítulos" para los eventos de la API de subtítulos de audio.

Subtítulos en directo

Utiliza el API de subtítulos en directo para permitir el subtitulado de audio en tiempo real de los editores y abonados conectados a una sesión.

Los subtítulos en directo deben activarse a nivel de sesión a través de la opción API REST.

Los subtítulos en directo sólo se admiten en sesión enrutada.

Publishing live captions

To enable live captions, initialize the `OTPublisher` component with the optional boolean `publishCaptions` property of the `properties` prop set to true:
<OTPublisher
  style={{width: 400, height: 300}}
  properties={{
    publishCaptions: true,
    // ... other properties
  }}
/>

Este ajuste es false por defecto.

Puede cambiar dinámicamente esta propiedad (basándose en un cambio de estado de React) para activar o desactivar los subtítulos de la secuencia publicada.

Subscribing to live captions

To start receiving captions, set the `subscribeToCaptions` property of the `properties` prop of the `OTSubscriber` component:
<OTSubscriber
  style={{width: 200, height: 200}}
  properties={{
    subscribeToCaptions: true,
    // ... other properties
  }}
  eventHandlers={{
    captionReceived: event => {
      console.log('Caption received:', event.text);
      console.log('Caption final:', event.isFinal);
    },
  }}
/>

Puede ajustar el subscribeToCaptions propiedad a true independientemente de si el cliente que publica el flujo está publicando actualmente subtítulos en directo. El suscriptor comenzará a recibir datos de subtítulos una vez que el editor comience a publicar subtítulos.

Los abonados reciben los subtítulos a través de captionReceived (mostrado arriba).

El objeto de evento captionReceived tiene dos properties:

  • texto - El texto del pie de foto (una cadena)
  • isFinal - Si el texto del pie de foto es final para una frase (true) o parcial (false). El SDK de React Native no muestra el texto de los eventos captions. Puedes crear tu propio elemento UI para renderizar el texto de los subtítulos basado en eventos de subtítulos.

Recibir sus propios subtítulos en directo

El Vonage Client SDK no admite que un editor reciba eventos para sus propios subtítulos. Para renderizar subtítulos para un flujo publicado por el cliente local, crea un suscriptor oculto (al flujo del editor local) para escuchar los eventos de subtítulos. Establezca la propiedad subscribeToSelf de la propiedad OTSubscriber a true. No debe renderizar el vídeo de este abonado (configurando su width y height a 0) y no debe suscribirse al audio (para evitar el eco, configurando subscribeToAudio a falso).

Puede añadir los subtítulos a la interfaz de usuario, como haría con los subtítulos de otros flujos. Consulte Representación personalizada de los abonados.

Problemas conocidos

  • Cuando un participante se silencia durante más de 15 segundos, se desconecta la conexión con el proveedor externo de transcripciones, para ahorrar costes de facturación. Los subtítulos pueden tardar entre 2 y 5 segundos en volver a conectarse.

Más información

Véase este artículo de soporte de API de Vonage para más especificaciones técnicas y preguntas frecuentes.

Véase este artículo de soporte de API de Vonage para obtener información sobre los precios de la API Live Captions.