Aeneas é uma biblioteca Python/C e um conjunto de ferramentas para sincronizar automaticamente áudio e texto (também conhecido como alinhamento forçado).
O AENEAS gera automaticamente um mapa de sincronização entre uma lista de fragmentos de texto e um arquivo de áudio que contém a narração do texto. Na ciência da computação, essa tarefa é conhecida como (computando automaticamente A) alinhamento forçado .
Por exemplo, dado este arquivo de texto e este arquivo de áudio, o AENEAS determina, para cada fragmento, o intervalo de tempo correspondente no arquivo de áudio:
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 sincronização pode ser emitido para arquivar em vários formatos, dependendo de seu aplicativo:
BeautifulSoup4 , lxml e numpyAeneas foi desenvolvido e testado no Debian 64bit , com o Python 2.7 e o Python 3.5 , que são as únicas plataformas suportadas no momento. No entanto, Enéias foi confirmado para trabalhar em outras distribuições Linux, Mac OS X e Windows. Consulte o arquivo de plataformas para obter detalhes.
Se a instalação do AENEAS no seu sistema operacional se mostrar difícil, você será fortemente incentivado a usar o Aeneas-Vagrant, o que fornece Enéias dentro de uma imagem do Debian virtualizada em execução no VirtualBox e Vagrant, que pode ser instalado em qualquer sistema operacional moderno (Linux, Mac OS X, Windows).
Os instaladores all-in-one estão disponíveis para o Mac OS X e o Windows, e um script bash para distribuições Linux baseado em Deb (Debian, Ubuntu) é fornecido neste repositório. Também é possível baixar uma máquina virtual VirtualBox+Vagrant. Consulte o arquivo de instalação para obter procedimentos detalhados de instalação passo a passo para diferentes sistemas operacionais.
O procedimento genérico independente da OS é simples:
Instale o python (2.7.x preferido), ffmpeg e espéek
Verifique se os seguintes executáveis podem ser chamados da sua concha : espeak , ffmpeg , ffprobe , pip e python
Primeiro instale numpy com pip e depois aeneas (este pedido é importante):
pip install numpy
pip install aeneasPara verificar se você instalou o AENEAS corretamente, execute:
python -m aeneas.diagnosticsCorra sem argumentos para obter a mensagem de uso :
python -m aeneas.tools.execute_task
python -m aeneas.tools.execute_jobVocê também pode obter uma lista de exemplos ao vivo que você pode executar imediatamente em sua máquina, graças aos arquivos incluídos:
python -m aeneas.tools.execute_task --examples
python -m aeneas.tools.execute_task --examples-all Para calcular um mapa de sincronização map.json para um par ( audio.mp3 , text.txt em formato de texto simples), você pode executar:
python -m aeneas.tools.execute_task
audio.mp3
text.txt
" task_language=eng|os_task_file_format=json|is_text_type=plain "
map.json (O comando foi dividido em linhas com para clareza visual; na produção, você pode ter o comando inteiro em uma única linha e/ou usar variáveis de shell.)
Para calcular um mapa de sincronização map.smil para um par ( audio.mp3 , página.xhtml contendo fragmentos marcados por atributos id como f001 ), você pode executar:
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 você pode ver, o terceiro argumento (a string de configuração ) especifica os parâmetros que controlam os formatos de E/S e as opções de processamento para a tarefa. Consulte a documentação para obter detalhes.
Se você tiver várias tarefas a processar, pode criar um contêiner de emprego para processá -los em lote:
python -m aeneas.tools.execute_job job.zip output_directory O arquivo de job.zip deve conter um arquivo de configuração config.txt ou config.xml , fornecendo aeneas com todas as informações necessárias para analisar os ativos de entrada e formatar os arquivos de mapa de sincronização de saída. Consulte a documentação para obter detalhes.
A documentação contém um tutorial altamente sugerido, que explica como usar as ferramentas de linha de comando embutidas.
parsed , plain , subtitles ou unparsed (XML)mplain e munparsed (XML)id e classffmpegfinetuneas )Um número significativo de usuários executa o AENEAS para alinhar áudio e texto no nível da palavra (ou seja, cada fragmento é uma palavra). Embora o Aeneas não tenha sido projetado com o alinhamento no nível da palavra em mente e os resultados possam ser inferiores aos alinhadores forçados baseados em ASR para idiomas com bons modelos ASR, a AENEAS oferece algumas opções para melhorar a qualidade do alinhamento no nível da palavra:
Se você usar a ferramenta de linha de comando aeneas.tools.execute_task , poderá adicionar-Switch --presets-word para ativar o mascaramento de não-pee do MFCC, por exemplo:
$ python -m aeneas.tools.execute_task --example-words --presets-word
$ python -m aeneas.tools.execute_task --example-words-multilevel --presets-word Se você usar o AENEAS como uma biblioteca, basta definir os parâmetros apropriados RuntimeConfiguration . Consulte o tutorial da linha de comando para obter detalhes.
AENEAS é divulgado sob os termos da versão 3 da Licença Pública Geral GNU Affero. Consulte o arquivo de licença para obter detalhes.
As licenças para código de terceiros e arquivos incluídos no AENEAS podem ser encontrados no diretório de licenças.
Nenhum direito de cópia foi prejudicado na criação deste projeto.
Julho de 2015 : Michele Gianella apoiou generosamente o desenvolvimento do Código de Ajuste de Limite (v1.0.4)
Agosto de 2015 : Michele Gianella patrocinou parcialmente o porto do código MFCC/DTW para C (v1.1.0)
Setembro de 2015 : Amigos da África Ocidental patrocinaram parcialmente o desenvolvimento do código de detecção de cabeça/cauda (v1.2.0)
Outubro de 2015 : Uma doação anônima patrocinou o desenvolvimento da opção "YouTube Downloader" (v1.3.0)
Abril de 2016 : A Fundação Fruch gentilmente patrocinou o desenvolvimento e a documentação da v1.5.0
Dezembro de 2016 : o Centro Internazionale del Libro Parlato "Adriano Sernagiotto" (Feltre, Itália) patrocinou parcialmente o desenvolvimento da série V1.7
Você gostaria de apoiar o desenvolvimento de Enéias ?
Eu aceito patrocínios para
Sinta -se à vontade para entrar em contato.
Se você acha que encontrou um bug ou possui uma solicitação de recurso, use o rastreador de problemas do GitHub para enviá -lo.
Se você deseja fazer uma pergunta sobre o uso do AENEAS , sua melhor opção consiste em enviar um email para a lista de discussão.
Finalmente, as contribuições do código são bem -vindas! Consulte o Guia de contribuição de código para obter detalhes sobre as políticas de ramificação e o estilo de código a seguir.
Muito obrigado a Nicola Montecchio , que sugeriu o uso de MFCCs e DTW, e co-desenvolveu o primeiro código experimental para alinhar áudio e texto.
Paolo Bertasi , que desenvolveu o aplicativo APIs e a Web para a Sync Sync, ajudou a moldar a estrutura deste pacote para seu uso assíncrono.
Chris Hubbard preparou os arquivos para empacotar Enéias como um Debian/Ubuntu .deb .
Daniel Bair preparou a fórmula brew para instalar o Aeneas e suas dependências no Mac OS X.
Daniel Bair , Chris Hubbard e Richard Margetts embalaram os instaladores para o Mac OS X e o Windows.
Firat Ozdemir contribuiu com o código finetuneas HTML/JS para mapas de sincronização de ajuste fino no navegador.
Willem van der Walt contribuiu com o trecho de código para produzir um mapa de sincronização no formato TextGrid.
Chris Vaughn contribuiu com o wrapper MacOS TTS.
Todos os poderosos colaboradores do Github e os membros do Grupo do Google.