Sincronización de audio con texto sin puntuación entre frases

(Este articulo es una nota para documentar un proceso que descubrimos durante un taller reciente)

SAB y RAB pueden ser configuradas para la sincronización de texto con divisiones definidas por conjunciones que introducen nuevas frases en vez de por signos de puntuación tradicionales (p.ej. . ? ! : ; ,). Para configurar SAB o RAB para este tipo de sincronización, el desarrollador necesita

  • Identificar las conjunciones,
  • Configurar cambios consistentes para insertar “espacios de ancho zero” (\u200b) antes de cada ocurrencia de esas conjunciones, y
  • Definir el carácter de espacio de ancho zero como “carácter de finalización de frase” en la configuración de la herramienta Aeneas.

1. Identificar conjunciones

El primer paso es hacer una lista de las conjunciones cuya presencia siempre indica un cambio de cláusula o frase. Este paso se debe hacer por alguien con conocimiento de la gramática del idioma al nivel del discurso para decidir cuales conjunciones indicarán divisiones de frases que deben ser indicadas en el app. Ejemplos de conjunciones en español que pueden ser incluidas en la lista según el nivel de división de frases deseada serían: y (e), o (u), pero, porque, entonces, aunque, sino, por eso, etc.

2. Cambios consistentes para insertar “espacios de ancho zero”

La herramienta Aeneas depende de una lista de carácteres que indican la finalización de una frase para reconocer dónde el texto debe ser dividido para sincronización. Así que el segundo paso es configurar RAB o SAB para insertar un carácter único en el texto antes de cada ocurrencia de las conjunciones identificadas en el primer paso.

Se recomienda usar el carácter de código unicode \u200b (“zero‑width space”, o “espacio de ancho zero”). Usamos este carácter porque es un carácter que no es mostrada en forma visual en el app y normalmente no tiene otra función en la ortografía popular.

El lugar donde definimos este cambio en RAB o SAB está en el área llamada “Cambios” en el árbol de funciones del app. Al hacer clic en esa función por primera vez, se presentará un espacio blanco en la ventana de la mano derecha. Haga clic en el botón “Añadir cambio…” en la parte superior de la ventana.

  1. En el cuadro que aparece, escriba la descripción del cambio a la primera conjunción en la primera línea (Nombre/Descripción).

Por ejemplo, si una conjunción que indica cambio de frases es la palabra “chi”, dele al cambio un nombre como “Dividir frases antes de ‘chi’.

  1. La segunda línea (con título Buscar) es donde indicamos la palabra que queremos cambiar usando un tipo de búsqueda conocido como “regular expressions” (expresiones regulares). No es necesario saber mucho del sintaxis de esta convención de búsqueda para realizar los cambios que vamos a hacer. Las dos prácticas que sí son importantes en nuestras búsquedas son:
  • Indicar que solo queremos encontrar palabras completas y no ocurrencias de esas secuencias de letras dentro de otras palabras, y
  • Señalar que el programa debe recordar cada ocurrencia encontrada para poder reemplazarla con el espacio de ancho zero antes de lo encontrado.

Para realizar la primera instrucción (de encontrar palabras completas) vamos a incluir el código \b antes y después de la palabra que buscamos para indicar que lo que estamos buscando es la ocurrencia de las letras indicadas entre ‘límites de palabra’.

Para instruir el programa que recuerde cada ocurrencia, escribimos todos las letras y códigos de nuestra búsqueda entre paréntesis.

Así que, para indicar, por ejemplo, que queremos encontrar cada ocurrencia de la palabra “chi”, tenemos que escribir la secuencia de caracteres (\bchi\b) en la segunda línea.

  1. La tercera línea (etiquetada Reemplazar) es donde podemos definir el texto que queremos que aparezca en lugar del texto encontrado. Allí podemos indicar caracteres con su código unicode si usamos el marcador \u antes de su número. Así que, para insertar el espacio de ancho zero, podemos escribir \u200b en esta línea. Luego, como instruimos al programa que recordara la palabra encontrada arriba, podemos escribir el código \1 después del código de espacio de ancho zero para que el programa inserte la palabra guardada inmediatamente después del espacio de ancho zero.

En nuestro ejemplo de la palabra “chi”, la tercera línea tendrá el texto \u200b\1 para insertar el espacio de ancho zero antes de la palabra encontrada (chi).

Las tres líneas de nuestro ejemplo quedarán como las lineas abajo:

Después de rellenar estas tres líneas, haga clic en el botón “OK” para aceptar la definición de este cambio. Vuelva a hacer clic en el botón “Añadir cambio…” en la parte superior de la ventana y repita estos pasos las veces necesarias para definir una regla de cambio para cada conjunción.

3. Definir el espacio de ancho zero como “carácter de finalización de frases”

Ahora que el programa está configurado para insertar el espacio de ancho zero antes de cada conjunción en la lista, podemos ejecutar la herramienta Aeneas de forma normal, incluyendo el espacio de ancho zero en la lista de “caracteres de finalización de frases” usados para dividir el texto en niveles de frases de audio para la sincronización.

Al hacer clic en la opción de “Sincronizar usando Aeneas…”, podemos seguir el asistente de forma normal hasta llegar a la página titulada “Frases” (casi hasta la última página). En este espacio, donde el asistente nos pregunta “¿Cuáles signos de puntuación indican el fin de las frases?”, debemos incluir el espacio de ancho zero. Lo incluimos en la lista de signos de puntuación con el mismo código que usamos en el segundo paso: \u200b. Con el código de este carácter, esta página del asistente se verá como la imagen abajo:

Al aplicar esta configuración y terminar la sincronización, la definición de “caracteres de finalización de frases” mostrados en la pestaña de “Sincronización de audio” del libro mostrará que el espacio de ancho zero (\u200b) está incluido:

|573x351.63371488033283

Use la función de “Exportar a HTML” para confirmar la sincronización, o la función “Afinar la sincronización” para realizar ajustes si sean necesarios.