Traducción de subtítulos en directo (Beta privada)

Utiliza la función «Traducción de subtítulos en directo» para traducir los subtítulos en tiempo real a diferentes idiomas para los participantes en una sesión de Vonage Video.

Beta privada

Nota: La traducción de subtítulos en directo se ofrece como beta privada Función. Ponte en contacto con nosotros para activar la traducción de subtítulos en directo en tu proyecto.

La beta privada está disponible para que una selección de clientes pueda probar y evaluar la función, así como aportar sus comentarios. Con el fin de incorporar dichos comentarios y adaptar el producto a las necesidades de los clientes, puede ser necesario realizar cambios que afecten a las API y al código de los clientes. Tenga en cuenta que puede ser necesario modificar el código escrito durante la fase de beta privada una vez que el producto esté disponible para el público en general.

Esta página incluye las siguientes secciones:

Visión general

La traducción de subtítulos en directo amplía el Subtítulos en directo añadiendo la traducción en tiempo real de los subtítulos. Con Live Captions, el audio se transcribe en el idioma hablado. Con Live Captions Translation, esos subtítulos pueden traducirse automáticamente a otro idioma para los participantes.

Antes de utilizar la traducción con subtítulos en directo, asegúrese de que está familiarizado con la función Subtítulos en directo incluyendo cómo iniciar subtítulos mediante la API REST y cómo suscribirse a los subtítulos en los SDK de cliente.

La traducción se puede activar en dos niveles:

  1. Traducción a nivel de sesión — Establecer un idioma de traducción para todos los participantes al activar los subtítulos a través de la API del lado del servidor.
  2. Traducción a nivel de abonado — Los suscriptores individuales eligen su propio idioma de traducción mediante los SDK del cliente, independientemente de la configuración a nivel de sesión.

Estos dos niveles pueden utilizarse juntos o de forma independiente.

Traducción a nivel de sesión

Al llamar al Iniciar la API REST de subtítulos (POST /v2/project/<apiKey>/captions), puede incluir un targetLanguageCode en el cuerpo de la solicitud:

{
  "sessionId": "<session-id>",
  "token": "A valid OpenTok token with the role set to moderator",
  "languageCode": "en-US",
  "targetLanguageCode": "es-ES",
  "maxDuration": 1800,
  "partialCaptions": true
}
  • targetLanguageCode (Cadena) — (Opcional) El código de idioma BCP-47 del idioma de destino de la traducción (véase el lista de idiomas admitidos). Cuando se establece, todos los participantes en la sesión recibirán subtítulos traducidos en el idioma especificado en lugar del idioma original transcrito.

Comportamiento:

  • Si targetLanguageCode es no fijado (o se omiten), los subtítulos funcionan con normalidad: los participantes reciben subtítulos en la lengua hablada original definida por languageCode.
  • Si targetLanguageCode está establecido, todos los participantes en la sesión reciben, por defecto, subtítulos traducidos al idioma especificado.
  • Un abonado que establece su propio idioma de traducción (véase Traducción a nivel de abonado) recibirán subtítulos en el idioma que elijan, lo que anulará la configuración a nivel de sesión targetLanguageCode.

Idioma de entrada a nivel de editor

Los presentadores pueden especificar el idioma en el que hablan mediante los SDK de cliente, lo que permite que el servicio de subtitulado interprete correctamente el audio. Esto resulta útil en sesiones multilingües en las que los distintos presentadores pueden hablar idiomas diferentes. El idioma de entrada a nivel de presentador se puede cambiar en cualquier momento durante una sesión.

Puedes configurar el idioma de entrada del emisor utilizando cualquiera de los SDK de cliente de la Video API de Vonage, entre los que se incluyen Web (OpenTok.js), iOS, Android, Windowsy Linux. A continuación se muestran ejemplos de referencia para cada plataforma.

Configuración del idioma de entrada (Web)

Por defecto, el idioma de introducción de los subtítulos no está configurado (null), lo que permite que el servidor utilice el languageCode definido al iniciar los subtítulos. Para cambiar el idioma de entrada de un editor concreto, llama a setCaptionsInputLanguage con un código de idioma BCP-47 válido. Pase null para volver a la configuración predeterminada.

// Example BCP-47 language code for captions input language
const captionsLanguageCode = 'fr-FR'

// Set the publisher's captions input language
try {
    await publisher.setCaptionsInputLanguage(captionsLanguageCode)
} catch (err) {
    console.error(`Failed to set captions input language: ${err.message}`)
}

// Pass null to revert to the default language
try {
    await publisher.setCaptionsInputLanguage(null)
} catch (err) {
    console.error(`Failed to revert captions input language: ${err.message}`)
}

Obtener el idioma de entrada actual (Web)

Uso getCaptionsInputLanguage para comprobar el idioma de entrada configurado actualmente en el editor. Devuelve el código de idioma BCP-47 seleccionado, o null si no se ha configurado ningún idioma de entrada.

const captionsLanguage = publisher.getCaptionsInputLanguage()
if (captionsLanguage) {
    console.log(`Captions input language is set to: ${captionsLanguage}`)
} else {
    console.log('No input language set; using the session default.')
}

Configuración del idioma de entrada (Android)

Utiliza el setCaptionsInputLanguage() método del objeto PublisherKit para establecer el idioma de entrada. Pasar null para volver al idioma por defecto.

// Set the publisher's captions input language
publisher.setCaptionsInputLanguage("fr-FR");

// Revert to the default language
publisher.setCaptionsInputLanguage(null);

Obtener el idioma de entrada actual (Android)

Utiliza el getCaptionsInputLanguage() método para comprobar el idioma de entrada configurado actualmente en el editor. Devuelve el código de idioma BCP-47 seleccionado, o null si no se ha configurado ningún idioma de entrada.

String captionsLanguage = publisher.getCaptionsInputLanguage();
if (captionsLanguage != null) {
    Log.d(TAG, "Captions input language is set to: " + captionsLanguage);
} else {
    Log.d(TAG, "No input language set; using the session default.");
}

Configuración del idioma de entrada (iOS)

Fije el captionsInputLanguage propiedad del objeto OTPublisherKit al código de idioma BCP-47 deseado. Establece su valor en nil para volver al idioma por defecto.

// Set the publisher's captions input language
publisher.captionsInputLanguage = @"fr-FR";

// Revert to the default language
publisher.captionsInputLanguage = nil;

Obtener el idioma de entrada actual (iOS)

Lee el captionsInputLanguage propiedad para comprobar el idioma de entrada actualmente configurado en el editor. Devuelve el código de idioma BCP-47 seleccionado, o nil si no se ha configurado ningún idioma de entrada.

NSString *captionsLanguage = publisher.captionsInputLanguage;
if (captionsLanguage) {
    NSLog(@"Captions input language is set to: %@", captionsLanguage);
} else {
    NSLog(@"No input language set; using the session default.");
}

Configuración del idioma de entrada (Windows)

Fije el CaptionsInputLanguage propiedad del objeto Publisher al código de idioma BCP-47 deseado. Establece su valor en null para volver al idioma por defecto.

// Set the publisher's captions input language
publisher.CaptionsInputLanguage = "fr-FR";

// Revert to the default language
publisher.CaptionsInputLanguage = null;

Obtener el idioma de entrada actual (Windows)

Lee el CaptionsInputLanguage propiedad para comprobar el idioma de entrada actualmente configurado en el editor. Devuelve el código de idioma BCP-47 seleccionado, o null si no se ha configurado ningún idioma de entrada.

string captionsLanguage = publisher.CaptionsInputLanguage;
if (captionsLanguage != null)
{
    Console.WriteLine($"Captions input language is set to: {captionsLanguage}");
}
else
{
    Console.WriteLine("No input language set; using the session default.");
}

Configuración del idioma de entrada (Linux)

Utiliza el otc_publisher_set_captions_input_language función para configurar el idioma de entrada del editor. Pasa NULL para volver al idioma por defecto.

// Set the publisher's captions input language
otc_publisher_set_captions_input_language(publisher, "fr-FR");

// Revert to the default language
otc_publisher_set_captions_input_language(publisher, NULL);

Obtener el idioma de entrada actual (Linux)

Uso otc_publisher_get_captions_input_language para comprobar el idioma de entrada configurado actualmente en el editor. Devuelve el código de idioma BCP-47 seleccionado, o NULL si no se ha configurado ningún idioma de entrada.

const char* captionsLanguage = otc_publisher_get_captions_input_language(publisher);
if (captionsLanguage != NULL) {
    printf("Captions input language is set to: %s\n", captionsLanguage);
} else {
    printf("No input language set; using the session default.\n");
}

Traducción a nivel de abonado

Los suscriptores pueden elegir el idioma de traducción que deseen mediante los SDK de cliente y pueden cambiarlo en cualquier momento durante una sesión. Esto funciona independientemente de la configuración a nivel de sesión targetLanguageCode.

Puedes configurar la traducción a nivel de suscriptor utilizando cualquiera de los SDK de cliente de la Video API de Vonage, entre los que se incluyen Web (OpenTok.js), iOS, Android, Windowsy Linux. A continuación se muestran ejemplos de referencia para cada plataforma.

Configuración del idioma de traducción (Web)

El idioma predeterminado de los subtítulos viene determinado por el languageCode (o targetLanguageCode) establecido en la API de Start Captions. Para cambiar el idioma de traducción de un suscriptor concreto, llama a setCaptionsTranslationLanguage con un código de idioma BCP-47 válido. Pase null para volver al idioma por defecto.

// Example BCP-47 language code for captions translation
const captionsLanguageCode = 'es-ES'

// Set the subscriber's captions translation language
try {
    await subscriber.setCaptionsTranslationLanguage(captionsLanguageCode)
} catch (err) {
    console.error(`Failed to set captions translation language: ${err.message}`)
}

// Pass null to revert to the default language
try {
    await subscriber.setCaptionsTranslationLanguage(null)
} catch (err) {
    console.error(`Failed to revert captions translation language: ${err.message}`)
}

Obtener el idioma de traducción actual (Web)

Uso getCaptionsTranslationLanguage para comprobar el idioma de traducción seleccionado actualmente por el abonado. Devuelve el código de idioma BCP-47 seleccionado, o bien null si no se ha establecido ningún idioma de traducción.

const captionsLanguage = subscriber.getCaptionsTranslationLanguage()
if (captionsLanguage) {
    console.log(`Captions translation language is set to: ${captionsLanguage}`)
} else {
    console.log('No translation language set; using the session default.')
}

Configuración del idioma de traducción (Android)

Utiliza el setCaptionsTranslationLanguage() del objeto SubscriberKit para establecer el idioma de traducción. Pase null para volver al idioma por defecto.

// Set the subscriber's captions translation language
subscriber.setCaptionsTranslationLanguage("es-ES");

// Revert to the default language
subscriber.setCaptionsTranslationLanguage(null);

Obtener el idioma de traducción actual (Android)

Utiliza el getCaptionsTranslationLanguage() para comprobar el idioma de traducción seleccionado actualmente por el abonado. Devuelve el código de idioma BCP-47 seleccionado, o bien null si no se ha establecido ningún idioma de traducción.

String captionsLanguage = subscriber.getCaptionsTranslationLanguage();
if (captionsLanguage != null) {
    Log.d(TAG, "Captions translation language is set to: " + captionsLanguage);
} else {
    Log.d(TAG, "No translation language set; using the session default.");
}

Configuración del idioma de traducción (iOS)

Fije el captionsTranslationLanguage del objeto OTSubscriberKit al código de idioma BCP-47 deseado. Establézcalo en nil para volver al idioma por defecto.

// Set the subscriber's captions translation language
subscriber.captionsTranslationLanguage = @"es-ES";

// Revert to the default language
subscriber.captionsTranslationLanguage = nil;

Obtener el idioma de traducción actual (iOS)

Lee el captionsTranslationLanguage para comprobar el idioma de traducción seleccionado actualmente por el abonado. Devuelve el código de idioma BCP-47 seleccionado, o bien nil si no se ha establecido ningún idioma de traducción.

NSString *captionsLanguage = subscriber.captionsTranslationLanguage;
if (captionsLanguage) {
    NSLog(@"Captions translation language is set to: %@", captionsLanguage);
} else {
    NSLog(@"No translation language set; using the session default.");
}

Configuración del idioma de traducción (Windows)

Fije el CaptionsTranslationLanguage del objeto Suscriptor al código de idioma BCP-47 deseado. Póngalo en null para volver al idioma por defecto.

// Set the subscriber's captions translation language
subscriber.CaptionsTranslationLanguage = "es-ES";

// Revert to the default language
subscriber.CaptionsTranslationLanguage = null;

Obtener el idioma de traducción actual (Windows)

Lee el CaptionsTranslationLanguage para comprobar el idioma de traducción seleccionado actualmente por el abonado. Devuelve el código de idioma BCP-47 seleccionado, o bien null si no se ha establecido ningún idioma de traducción.

string captionsLanguage = subscriber.CaptionsTranslationLanguage;
if (captionsLanguage != null)
{
    Console.WriteLine($"Captions translation language is set to: {captionsLanguage}");
}
else
{
    Console.WriteLine("No translation language set; using the session default.");
}

Idiomas admitidos

Live Captions Translation utiliza los mismos códigos de idioma BCP-47 que Live Captions. Consulte la lista de idiomas admitidos para ver la lista completa de idiomas disponibles.

Notas

  • La traducción de subtítulos en directo requiere Subtítulos en directo para que estén activas durante la sesión. Debes iniciar los subtítulos utilizando el Iniciar API de subtítulos hasta que la traducción esté disponible.

  • Si se establece un idioma de traducción a nivel de abonado, se anula el idioma de traducción a nivel de sesión. targetLanguageCode sólo para ese abonado. Pasar null restablece el comportamiento predeterminado del suscriptor (a nivel de sesión targetLanguageCode si se ha establecido; de lo contrario, el original languageCode).

  • Si desea consultar la documentación básica sobre la función Live Captions (arquitectura, publicación de subtítulos, suscripción a subtítulos, webhooks de estado y problemas conocidos), consulte la página Guía de subtítulos en directo.