Aeneas es una biblioteca de Python/C y un conjunto de herramientas para sincronizar automágicamente audio y texto (también conocido como alineación forzada).
Eneas genera automáticamente un mapa de sincronización entre una lista de fragmentos de texto y un archivo de audio que contiene la narración del texto. En informática, esta tarea se conoce como (calculadora automáticamente A) alineación forzada .
Por ejemplo, dado este archivo de texto y este archivo de audio, Aeneas determina, para cada fragmento, el intervalo de tiempo correspondiente en el archivo de audio:
1 => [00:00:00.000, 00:00:02.640]
From fairest creatures we desire increase, => [00:00:02.640, 00:00:05.880]
That thereby beauty's rose might never die, => [00:00:05.880, 00:00:09.240]
But as the riper should by time decease, => [00:00:09.240, 00:00:11.920]
His tender heir might bear his memory: => [00:00:11.920, 00:00:15.280]
But thou contracted to thine own bright eyes, => [00:00:15.280, 00:00:18.800]
Feed'st thy light's flame with self-substantial fuel, => [00:00:18.800, 00:00:22.760]
Making a famine where abundance lies, => [00:00:22.760, 00:00:25.680]
Thy self thy foe, to thy sweet self too cruel: => [00:00:25.680, 00:00:31.240]
Thou that art now the world's fresh ornament, => [00:00:31.240, 00:00:34.400]
And only herald to the gaudy spring, => [00:00:34.400, 00:00:36.920]
Within thine own bud buriest thy content, => [00:00:36.920, 00:00:40.640]
And tender churl mak'st waste in niggarding: => [00:00:40.640, 00:00:43.640]
Pity the world, or else this glutton be, => [00:00:43.640, 00:00:48.080]
To eat the world's due, by the grave and thee. => [00:00:48.080, 00:00:53.240]

Este mapa de sincronización se puede emitir para archivar en varios formatos, dependiendo de su aplicación:
BeautifulSoup4 , lxml y numpyEneas ha sido desarrollada y probada en Debian 64bit , con Python 2.7 y Python 3.5 , que son las únicas plataformas compatibles en este momento. Sin embargo, se ha confirmado que Eneas funciona en otras distribuciones de Linux, Mac OS X y Windows. Consulte el archivo de plataformas para más detalles.
Si la instalación de Eneas de forma nativa en su sistema operativo es difícil, se le recomienda encarecidamente que use Aeneas-Vagrant, que proporciona Eneas dentro de una imagen de Debian virtualizada que se ejecuta en Virtualbox y Vagrant, que se puede instalar en cualquier sistema operativo moderno (Linux, Mac OS X, Windows).
Los instaladores todo en uno están disponibles para Mac OS X y Windows, y en este repositorio se proporciona un script de bash para distribuciones de Linux basadas en DEB (Debian, Ubuntu). También es posible descargar una máquina virtual VirtualBox+Vagrant. Consulte el archivo de instalación para obtener procedimientos de instalación detallados y paso a paso para diferentes sistemas operativos.
El procedimiento genérico independiente del sistema operativo es simple:
Instale Python (2.7.x preferido), ffmpeg y espeak
Asegúrese de que se puedan llamar a los siguientes ejecutables desde su shell : espeak , ffmpeg , ffprobe , pip y python
Primero instale numpy con pip y luego aeneas (este pedido es importante):
pip install numpy
pip install aeneasPara verificar si instaló a Areas correctamente, ejecute:
python -m aeneas.diagnosticsEjecute sin argumentos para obtener el mensaje de uso :
python -m aeneas.tools.execute_task
python -m aeneas.tools.execute_jobTambién puede obtener una lista de ejemplos en vivo que puede ejecutar inmediatamente en su máquina gracias a los archivos incluidos:
python -m aeneas.tools.execute_task --examples
python -m aeneas.tools.execute_task --examples-all Para calcular un mapa de sincronización map.json para un par ( audio.mp3 , text.txt en formato de texto plano), puede ejecutar:
python -m aeneas.tools.execute_task
audio.mp3
text.txt
" task_language=eng|os_task_file_format=json|is_text_type=plain "
map.json (El comando se ha dividido en líneas con para claridad visual; en la producción puede tener todo el comando en una sola línea y/o puede usar variables de shell).
Para calcular un mapa de sincronización map.smil para un par ( audio.mp3 , page.xhtml que contiene fragmentos marcados por atributos id como f001 ), puede ejecutar:
python -m aeneas.tools.execute_task
audio.mp3
page.xhtml
" task_language=eng|os_task_file_format=smil|os_task_file_smil_audio_ref=audio.mp3|os_task_file_smil_page_ref=page.xhtml|is_text_type=unparsed|is_text_unparsed_id_regex=f[0-9]+|is_text_unparsed_id_sort=numeric "
map.smilComo puede ver, el tercer argumento (la cadena de configuración ) especifica los parámetros que controlan los formatos de E/S y las opciones de procesamiento para la tarea. Consulte la documentación para obtener más detalles.
Si tiene varias tareas para procesar, puede crear un contenedor de trabajo para procesarlas por lotes:
python -m aeneas.tools.execute_job job.zip output_directory Archivo job.zip debe contener un archivo de configuración config.txt o config.xml , proporcionando a Aeas con toda la información necesaria para analizar los activos de entrada y formatear los archivos de mapa de sincronización de salida. Consulte la documentación para obtener más detalles.
La documentación contiene un tutorial muy sugerido que explica cómo usar las herramientas de línea de comandos incorporadas.
parsed , plain , subtitles o unparsed (XML)mplain y munparsed (XML)id y classffmpegfinetuneas )Un número significativo de usuarios ejecuta Eneas para alinear el audio y el texto a nivel de palabra (es decir, cada fragmento es una palabra). Aunque Eneas no fue diseñado con la alineación de nivel de palabra en mente y los resultados pueden ser inferiores a los alineadores forzados basados en ASR para idiomas con buenos modelos ASR, Eneas ofrece algunas opciones para mejorar la calidad de la alineación a nivel de palabra:
Si usa la herramienta de línea de comandos aeneas.tools.execute_task , puede agregar --presets-word para habilitar el enmascaramiento de no paces MFCC, por ejemplo:
$ python -m aeneas.tools.execute_task --example-words --presets-word
$ python -m aeneas.tools.execute_task --example-words-multilevel --presets-word Si usa aeneas como biblioteca, simplemente establezca los parámetros apropiados RuntimeConfiguration . Consulte el tutorial de la línea de comando para más detalles.
Aeneas se publica bajo los términos del GNU Affero General Public License Versión 3. Consulte el archivo de licencia para obtener más detalles.
Las licencias para el código de terceros y los archivos incluidos en Aeneas se pueden encontrar en el directorio de licencias.
No se dañaron los derechos de copia en la realización de este proyecto.
Julio de 2015 : Michele Gianella apoyó generosamente el desarrollo del código de ajuste de límites (v1.0.4)
Agosto de 2015 : Michele Gianella patrocinó parcialmente el puerto del código MFCC/DTW a C (V1.1.0)
Septiembre de 2015 : Amigos en África occidental patrocinaron parcialmente el desarrollo del código de detección de cabeza/cola (V1.2.0)
Octubre de 2015 : una donación anónima patrocinó el desarrollo de la opción "Descargador de YouTube" (V1.3.0)
Abril de 2016 : La Fundación Fruch patrocinó amablemente el desarrollo y la documentación de V1.5.0
Diciembre de 2016 : El Centro Internalional del Libro Parlato "Adriano Sernagiotto" (Feltre, Italia) patrocinó parcialmente el desarrollo de la serie V1.7
¿Le gustaría apoyar el desarrollo de Eneas ?
Acepto patrocinios para
Siéntase libre de ponerse en contacto.
Si cree que encontró un error o tiene una solicitud de función, utilice el rastreador de problemas de GitHub para enviarlo.
Si desea hacer una pregunta sobre el uso de Eneas , su mejor opción consiste en enviar un correo electrónico a la lista de correo.
Finalmente, ¡las contribuciones del código son bienvenidas! Consulte la Guía de contribución del código para obtener detalles sobre las políticas de rama y el estilo de código a seguir.
Muchas gracias a Nicola Montecchio , quien sugirió usar MFCC y DTW, y desarrolló codesarriendo el primer código experimental para alinear el audio y el texto.
Paolo Bertasi , quien desarrolló las API y la aplicación web para ReadBeyond Sync, ayudó a dar forma a la estructura de este paquete para su uso asincrónico.
Chris Hubbard preparó los archivos para empaquetar Eneas como Debian/Ubuntu .deb .
Daniel Bair preparó la fórmula brew para instalar Eneas y sus dependencias en Mac OS X.
Daniel Bair , Chris Hubbard y Richard Margetts empaquetaron los instaladores para Mac OS X y Windows.
Firat Ozdemir contribuyó con el código finetuneas HTML/JS para los mapas de sincronización de ajuste fino en el navegador.
Willem van der Walt contribuyó con el fragmento de código a producir un mapa de sincronización en formato TextGrid.
Chris Vaughn contribuyó con el envoltorio MacOS TTS.
Todos los poderosos contribuyentes de GitHub y los miembros del Grupo de Google.