/video-voice-over

Prototipo de Dublagem de Videos

Primary LanguageJupyter Notebook

Video-Voice-Over

Protótipo de Dublagem de Vídeos PT-EN

Table of contents

  1. Como usar
  2. Documentação
    1. Extração do áudio
    2. Transcrever o áudio
    3. Tradução
    4. Sintetização de fala
    5. Sincronizar áudios

Como Usar

  1. Após clonar o repositorio
  2. Inicializar um ambiente virtual na raiz do projeto
  3. instalar os pacotes do requirements.txt: Ex.
pip install -r requirements.txt
  1. colocar o video de teste dentro da pasta files que será o diretório de trabalho.
  2. Executar script "poc_voiceover.py" passando os parametros, working_dir, file, sample_size que correspondem ao diretório de trabalho, do arquivo de video que precisa estar no diretório de trabalho e do tamanho da amostra que será dublado, respectivamente. Ex.
python poc_voiceover.py --working_dir files/ --file case_ai.mp4 --sample_size 200

Nota: o script voiceover.py pode ser executado também, e foi uma tentativa de realizar a sintetização de fala através de um modelo do hugging face e sincronização do áudio e vídeo, mas a qualidade do video final ficou a baixo da apresentada pelo protótipo inicial que usa a vós do google tradutor na dublagem. Acredito que com mais tempo, talvez, seria possivel aprimorar a qualidade dessa abordagem.

Documentação

Extrair o áudio de um arquivo de vídeo

Para manipular o video e extrair o áudio é usado o Moviepy

Transcrever o Áudio

Por algum erro de conexão, não foi possível consumir o modelo Whisper do Hugging Face então é necessário intalar o pacote da OpenIA localmente e para evitar ter que intalar manualmente a ferramenta do ffmpeg, também é necessário instalar o pacote SpeechRecognition que auxilia no uso do whisper.

Tradução

Inicialmente a ideia era usar o modelo da Unicamp dispinível no Hugging Face para traduzir o texto para inglês, mas após testar o tradutor do Whisper, decidi simplificar essa etapa.

Sintetização de Fala

Para sintetizar a fala do texto tradzido é usado uma das vozes masculina da base de dados do CMU_ARCTIC que jé possui um dataset de embeddings de suas vozes no Hugging Face e é necessário consumir o modelo da microsoft de Text To Speech também disponível no Hugging Face. O problema é que há um limite de tokens que o sintetizador aceita, assim seria necessário particionar o texto e sitentizer as partes separadas e depois montar o audio. Para ganhar tempo e ter um protótio funcional, foi implementado uma forma de consumir a api de tradução do google através do modulo gTTS.

Sincronizar Áudios

Com o Librosa dá para fazer uma análise de spectograma e assim medir a energia e estabelecer as pausas para então segmentar a fala, e tentar sencronizar os trecho. Essa quebra do audio nas pausas, pode ser útil para lidar com o problema do limite de tokens na sintetização.