Aeneas est une bibliothèque Python / C et un ensemble d'outils pour synchroniser automatiquement l'audio et le texte (alignement forcé).
Aeneas génère automatiquement une carte de synchronisation entre une liste de fragments de texte et un fichier audio contenant la narration du texte. En informatique, cette tâche est connue sous le nom (calcul automatiquement a) l'alignement forcé .
Par exemple, étant donné ce fichier texte et ce fichier audio, AENEAS détermine, pour chaque fragment, l'intervalle de temps correspondant dans le fichier 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]

Cette carte de synchronisation peut être sortie en fichier dans plusieurs formats, selon son application:
BeautifulSoup4 , lxml et numpyAeneas a été développé et testé sur Debian 64bit , avec Python 2.7 et Python 3.5 , qui sont les seules plateformes prises en charge pour le moment. Néanmoins, Aeneas a été confirmé pour fonctionner sur d'autres distributions Linux, Mac OS X et Windows. Voir le fichier des plates-formes pour plus de détails.
Si l'installation d'Éneas nativement sur votre système d'exploitation s'avère difficile, vous êtes fortement encouragé à utiliser Aeneas-Vagrant, qui fournit Aeneas à l'intérieur d'une image Debian virtualisée exécutée sous VirtualBox et Vagrant, qui peut être installée sur n'importe quel système d'exploitation moderne (Linux, Mac OS X, Windows).
Les installateurs tout-en-un sont disponibles pour Mac OS X et Windows, et un script bash pour les distributions Linux basés sur DEB (Debian, Ubuntu) est fourni dans ce référentiel. Il est également possible de télécharger une machine virtuelle VirtualBox + Vagrant. Veuillez consulter le fichier d'installation pour des procédures d'installation détaillées et étape par étape pour différents systèmes d'exploitation.
La procédure générique indépendante du système d'exploitation est simple:
Installez Python (2.7.x Preferred), FFMPEG et ESPEAK
Assurez-vous que les exécutables suivants peuvent être appelés à partir de votre shell : espeak , ffmpeg , ffprobe , pip et python
Installez d'abord numpy avec pip puis aeneas (cet ordre est important):
pip install numpy
pip install aeneasPour vérifier si vous avez installé correctement Aeneas , exécutez:
python -m aeneas.diagnosticsExécutez sans arguments pour obtenir le message d'utilisation :
python -m aeneas.tools.execute_task
python -m aeneas.tools.execute_jobVous pouvez également obtenir une liste d' exemples en direct que vous pouvez immédiatement exécuter sur votre machine grâce aux fichiers inclus:
python -m aeneas.tools.execute_task --examples
python -m aeneas.tools.execute_task --examples-all Pour calculer une carte de synchronisation map.json pour une paire ( audio.mp3 , text.txt au format de texte brut), vous pouvez exécuter:
python -m aeneas.tools.execute_task
audio.mp3
text.txt
" task_language=eng|os_task_file_format=json|is_text_type=plain "
map.json (La commande a été divisée en lignes avec pour clarté visuelle; en production, vous pouvez avoir toute la commande sur une seule ligne et / ou vous pouvez utiliser des variables de shell.)
Pour calculer une carte de synchronisation map.smil pour une paire ( audio.mp3 , page.xhtml contenant des fragments marqués par des attributs id comme f001 ), vous pouvez exécuter:
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.smilComme vous pouvez le voir, le troisième argument (la chaîne de configuration ) spécifie les paramètres contrôlant les formats d'E / S et les options de traitement de la tâche. Consultez la documentation pour plus de détails.
Si vous avez plusieurs tâches à traiter, vous pouvez créer un conteneur de travail pour les traiter par lots:
python -m aeneas.tools.execute_job job.zip output_directory Fichier job.zip doit contenir un fichier de configuration config.txt ou config.xml , fournissant à AENEAS toutes les informations nécessaires pour analyser les actifs d'entrée et formater les fichiers de carte de synchronisation de sortie. Consultez la documentation pour plus de détails.
La documentation contient un tutoriel hautement suggéré qui explique comment utiliser les outils de ligne de commande intégrés.
parsed , plain , subtitles ou unparsed (XML)mplain et munparsed (XML)id et d'attributs classffmpegfinetuneas )Un nombre significatif d'utilisateurs exécute Aeneas pour aligner l'audio et le texte au niveau des mots (c'est-à-dire que chaque fragment est un mot). Bien qu'Aeneas n'ait pas été conçu avec l'alignement au niveau des mots à l'esprit et que les résultats pourraient être inférieurs aux aligneurs forcés basés sur ASR pour les langues avec de bons modèles ASR, AEEEAS propose quelques options pour améliorer la qualité de l'alignement au niveau des mots:
Si vous utilisez l'outil aeneas.tools.execute_task de la ligne de commande, vous pouvez ajouter un commutateur --presets-word pour activer le masquage de non-espèces MFCC, par exemple:
$ python -m aeneas.tools.execute_task --example-words --presets-word
$ python -m aeneas.tools.execute_task --example-words-multilevel --presets-word Si vous utilisez Aeneas comme bibliothèque, définissez simplement les paramètres RuntimeConfiguration appropriés. Veuillez consulter le tutoriel de la ligne de commande pour plus de détails.
Aeneas est publié en vertu des termes de la licence générale GNU Affero version 3. Voir le fichier de licence pour plus de détails.
Les licences de code tiers et les fichiers incluses dans AENEAS peuvent être trouvées dans le répertoire des licences.
Aucun droit de copie n'a été blessé dans la réalisation de ce projet.
Juillet 2015 : Michele Gianella soutient généreusement le développement du code d'ajustement des limites (V1.0.4)
Août 2015 : Michele Gianella a partiellement parrainé le port du code MFCC / DTW à C (V1.1.0)
Septembre 2015 : des amis en Afrique de l'Ouest ont parrainé partiellement le développement du code de détection de tête / queue (V1.2.0)
Octobre 2015 : Un don anonyme a parrainé le développement de l'option "YouTube Downloader" (V1.3.0)
Avril 2016 : La Fondation Fruch a aimablement parrainé le développement et la documentation de la V1.5.0
Décembre 2016 : Le Centro Interazionale del Libro Parlato "Adriano Sernagiotto" (Feltre, Italie) a parrainé partiellement le développement de la série V1.7
Souhaitez-vous soutenir le développement d' Éneas ?
J'accepte des parrainages à
N'hésitez pas à nous contacter.
Si vous pensez avoir trouvé un bogue ou si vous avez une demande de fonctionnalité, veuillez utiliser le suivi du problème GitHub pour le soumettre.
Si vous souhaitez poser une question sur l'utilisation d'Aeneas , votre meilleure option consiste à envoyer un e-mail à la liste de diffusion.
Enfin, les contributions du code sont les bienvenues! Veuillez vous référer au Guide de contribution du code pour plus de détails sur les politiques de branche et le style de code à suivre.
Un grand merci à Nicola Montecchio , qui a suggéré d'utiliser MFCCS et DTW, et a co-développé le premier code expérimental pour aligner l'audio et le texte.
Paolo Bertasi , qui a développé les API et l'application Web pour la synchronisation de Readbeyond, a aidé à façonner la structure de ce package pour son utilisation asynchrone.
Chris Hubbard a préparé les fichiers pour l'emballage Aeneas en tant que Debian / Ubuntu .deb .
Daniel Bair a préparé la formule brew pour installer Aeneas et ses dépendances sur Mac OS X.
Daniel Bair , Chris Hubbard et Richard Margetts ont emballé les installateurs de Mac OS X et Windows.
Firat Ozdemir a contribué le code HTML / JS finetuneas pour les cartes de synchronisation de réglage fin dans le navigateur.
Willem van der Walt a contribué l'extrait de code pour sortir une carte de synchronisation au format TextGrid.
Chris Vaughn a contribué l'emballage macOS TTS.
Tous les puissants contributeurs GitHub et les membres du groupe Google.