Subtítulos con conversión de voz en texto

En esta guía, descubrirá cómo crear subtítulos con conversión de voz en texto. El subtitulado es el proceso de convertir el contenido de audio de una emisión televisiva, difusión web, película, vídeo, evento en directo u otra producción en texto y, después, mostrar el texto en una pantalla, monitor u otro sistema de representación visual.

Entre los conceptos se incluyen la sincronización de subtítulos con el audio de entrada, la aplicación de filtros de palabras soeces, la obtención de resultados parciales, la aplicación de personalizaciones y la identificación de los idiomas hablados en escenarios multilingües. En esta guía se trata la creación de subtítulos para la voz, sin incluir la identificación del hablante ni los efectos de sonido, como las campanas que suenan.

Estos son algunos escenarios que suelen requerir subtítulos:

  • Cursos en línea y vídeos de instrucciones
  • Eventos deportivos
  • Llamadas de voz y videollamadas

Los aspectos siguientes se deben tener en cuenta al usar subtítulos:

  • Informe al público de que los subtítulos se generan mediante un servicio automatizado.
  • Centre los subtítulos horizontalmente en la pantalla y use una fuente de gran tamaño y que destaque.
  • Considere si desea usar resultados parciales, cuándo empezar a mostrar los subtítulos y cuántas palabras se van a mostrar a la vez.
  • Obtenga información sobre los protocolos de subtítulos, como SMPTE-TT.
  • Tenga en cuenta formatos de salida como SRT (texto SubRip) y WebVTT (Web Video Text Tracks). Dichos formatos se pueden cargar en la mayoría de los reproductores de vídeo, como VLC, y los subtítulos se agregan automáticamente al vídeo.

Sugerencia

Pruebe Speech Studio y elija un clip de vídeo de ejemplo para ver los resultados de subtítulos procesados en tiempo real o sin conexión.

Pruebe Video Indexer de Azure AI como demostración de cómo puede obtener subtítulos para los vídeos que cargue.

Los subtítulos pueden acompañar a una voz en tiempo real o previamente grabada. Sin importar si muestra subtítulos en tiempo real con una grabación, puede usar el SDK de voz o la CLI de voz para reconocer la voz y obtener transcripciones. También puede usar la API de transcripciones de Azure Batch para el vídeo grabado previamente.

Formato de salida de subtítulos

El servicio de voz admite formatos de salida como SRT (texto SubRip) y WebVTT (Web Video Text Tracks). Dichos formatos se pueden cargar en la mayoría de los reproductores de vídeo, como VLC, y los subtítulos se agregan automáticamente al vídeo.

Sugerencia

El servicio voz proporciona opciones de filtro de palabras soeces. Puede especificar si desea ocultar, quitar o mostrar las palabras soeces.

El formato de salida del intervalo de tiempo de SRT (SubRip Text) es hh:mm:ss,fff.

1
00:00:00,180 --> 00:00:03,230
Welcome to applied Mathematics course 201.

El formato de salida del intervalo de tiempo de WebVTT (pistas de texto de vídeo web) es hh:mm:ss.fff.

WEBVTT

00:00:00.180 --> 00:00:03.230
Welcome to applied Mathematics course 201.
{
  "ResultId": "8e89437b4b9349088a933f8db4ccc263",
  "Duration": "00:00:03.0500000"
}

Entrada de audio en el servicio de Voz

Para la creación de subtítulos en tiempo real, use un micrófono o una transmisión de entrada de audio en lugar de una entrada de archivo. Para obtener ejemplos sobre cómo reconocer la voz a través de un micrófono, consulte la documentación Inicio rápido de la conversión de voz en texto y Reconocimiento de voz. Para obtener más información sobre la transmisión, consulte Uso del flujo de entrada de audio.

Para la creación de subtítulos en una grabación previa, envíe la entrada de archivo al servicio de Voz. Para obtener más información, consulte Uso de archivos de audio comprimidos.

Sincronización de subtítulos y voz

Es posible que deba sincronizar los subtítulos con la pista de audio, ya sea en tiempo real o con una grabación previa.

El servicio de voz devuelve el desplazamiento y la duración de la voz reconocida.

  • Desplazamiento: es el desplazamiento en la secuencia de audio que se reconoce, expresado en forma de duración. El desplazamiento se mide en tics, empezando por el tic 0 (cero), que está asociado al primer byte de audio que procesa el SDK. Es decir, el desplazamiento comienza cuando se inicia el reconocimiento, ya que es cuando el SDK comienza a procesar la secuencia de audio. Un tic representa cien nanosegundos o una diezmillonésima parte de un segundo.
  • Duración: es la duración de la expresión que se reconoce. La duración en tics no incluye el silencio final ni el inicial.

Para obtener más información, consulte Obtención de resultados de reconocimiento de voz.

Obtención de resultados parciales

Considere cuándo empezar a mostrar los subtítulos y cuántas palabras se van a mostrar a la vez. Los resultados del reconocimiento de voz están sujetos a cambios mientras se está reconociendo una expresión. Los resultados parciales se devuelven con cada evento Recognizing. A medida que se procesa cada palabra, el servicio de Voz vuelve a evaluar una expresión en el nuevo contexto y devuelve de nuevo el mejor resultado. No se garantiza que el nuevo resultado sea el mismo que el anterior. La transcripción completa y final de una expresión se devuelve con el evento Recognized.

Nota

La puntuación de los resultados parciales no está disponible.

Para la creación de subtítulos a partir de voz pregrabada o siempre que la latencia no sea un problema, puede esperar a que se complete la transcripción de cada expresión antes de mostrar las palabras. Dado el desplazamiento y la duración finales de cada palabra en una expresión, sabe cuándo mostrar las palabras posteriores a la velocidad de la banda sonora.

En la generación de subtítulos en tiempo real es necesario hacer concesiones con respecto a la latencia y la precisión. Puede mostrar el texto de cada evento Recognizing lo antes posible. Pero, si puede aceptar algo de latencia, puede mejorar la precisión del subtítulo mostrando el texto del evento Recognized. También hay un punto intermedio, denominado "resultados parciales estables".

Puede solicitar que el servicio de Voz devuelva menos eventos Recognizing que sean más precisos. Para ello, establezca la propiedad SpeechServiceResponse_StablePartialResultThreshold en un valor entre 0 y 2147483647. El valor establecido es el número de veces que se debe reconocer una palabra antes de que el servicio de Voz devuelva un evento Recognizing. Por ejemplo, si establece el valor de propiedad SpeechServiceResponse_StablePartialResultThreshold en 5, el servicio de Voz confirmará el reconocimiento de una palabra al menos cinco veces antes de devolverle los resultados parciales con un evento Recognizing.

speechConfig.SetProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig->SetProperty(PropertyId::SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.SetProperty(common.SpeechServiceResponseStablePartialResultThreshold, 5)
speechConfig.setProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.setProperty(sdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
[self.speechConfig setPropertyTo:5 byId:SPXSpeechServiceResponseStablePartialResultThreshold];
self.speechConfig!.setPropertyTo(5, by: SPXPropertyId.speechServiceResponseStablePartialResultThreshold)
speech_config.set_property(property_id = speechsdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, value = 5)
spx recognize --file caption.this.mp4 --format any --property SpeechServiceResponse_StablePartialResultThreshold=5 --output vtt file - --output srt file -

La solicitud de resultados parciales más estables reducirá el texto "parpadeante" o cambiante, pero puede aumentar la latencia mientras espera resultados de mayor confianza.

Ejemplo de umbral parcial estable

En la siguiente secuencia de reconocimiento sin establecer un umbral parcial estable, "math" (mates) se reconoce como una palabra, pero el texto final es "mathematics" (matemáticas). En otro punto, se reconoce "course 2" (curso 2), pero el texto final es "course 201" (curso 201).

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied math
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZING: Text=welcome to applied mathematics course 2
RECOGNIZING: Text=welcome to applied mathematics course 201
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

En el ejemplo anterior, las transcripciones eran acumulativas y el texto no se ha retirado. Pero en otros momentos es posible que se encuentre con resultados parciales inexactos. En cualquier caso, los resultados parciales inestables se pueden percibir como "parpadeantes" cuando se muestran.

En este ejemplo, si el umbral del resultado parcial estable se establece en 5, las palabras no se modifican ni se rectifican.

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

Identificación del idioma

Si es posible que cambie el idioma del audio, use la identificación continua del idioma. La identificación del idioma se usa para identificar los idiomas que se hablan en el audio mediante la comparación con una lista de idiomas admitidos. Proporcione un máximo de 10 idiomas posibles, al menos uno de los cuales se espera que esté en el audio. El servicio de Voz devuelve el idioma más probable del audio.

Personalizaciones para mejorar la precisión

Una lista de frases es una lista de palabras o frases que se proporciona justo antes de iniciar el reconocimiento de voz. Agregar una frase a una lista de frases aumenta su importancia, lo que hace que sea más probable que se reconozca.

Entre los ejemplos de frases se incluyen:

  • Nombres
  • Ubicaciones geográficas
  • Homónimos
  • Palabras o acrónimos únicos de su sector u organización

Hay algunas situaciones en las que entrenar un modelo personalizado es probablemente la mejor opción para mejorar la precisión. Por ejemplo, si está creando subtítulos para conferencias sobre ortodoncia, es posible que desee entrenar un modelo personalizado con los datos del dominio correspondiente.

Pasos siguientes