Extrai palavras terminadas em vogal átona de áudio em português
A ideia é criar um script auxiliar para extrair palavras terminadas em vogal átona de um áudio em português para fins de pesquisa em sociolinguística. Inicialmente, pretende-se que o script execute as seguintes etapas:
- Transcrever o áudio
- Identificar as palavras terminadas em vogal átona
- Localizar as palavras no áudio (i.e., os timestamps)
- Criar um (novo) TextGrid para o áudio, com uma trilha contendo a seleção de palavras
Para a transcrição do áudio e localização dos timestamps das palavras, pode-se usar os pacotes whisper e stable-ts, que modifica o modelo de língua utilizado pelo whisper. Para trabalhar com o TextGrid, usamos o pacote TextGridTools.
- Ler os limites de cada intervalo da trilha S1.
- Fazer a transcrição de cada intervalo separadamente. Resolvido: não é preciso transcrever cada intervalo separadamente, basta mascarar (emudecer) os trechos do áudio que não pertencem a nenhum intervalo da trilha do informante S1.
- O tokenizador usado pelo whisper e pelo stable-ts não tokeniza corretamente em palavras. Usar talvez o tokenizador do NLTK ou do SpaCy. Resolvido: o stable-ts possui uma solução satisfatória para sistemas de escrita que utilizam espaço para separar palavras.
- Identificar se a palavra termina em vogal e se a última sílaba é átona. Resolvido com heurística: a palavra tem grandes chances de ter mais de uma sílaba e terminar com vogal átona se terminar em 'a', 'e' ou 'o' não acentuados graficamente, tiver alguma outra vogal e a penúltima letra não for uma vogal nasalizada.
- Criar um novo TextGrid com uma trilha a mais, contendo as palavras terminadas em vogal átona.
Caso você queira contribuir com o projeto, além de fazer fork, clonar, etc., é preciso instalar algumas outras coisas, como o FFmpeg, o ffmpeg-python, o PyTorch, os transformers do Hugging Face, o whisper, o TextGridTools e o stable-ts. Você pode instalar estes pacotes e módulos pelo pip
ou pelo Anaconda. Como o projeto utiliza o PyTorch, o qual é instável e costuma apresentar conflito com outros pacotes e programas, recomenda-se criar um ambiente virtual para o projeto, seja por meio do Python, seja por meio do Anaconda. O Anaconda, além de criar ambientes virtuais, já vem com vários programas adicionais.
Primeiro, instale o Python, caso ainda não o tenha instalado. Usuários Linux ou MacOS devem instalar o ffmpeg pelo repositório online, por exemplo, via (Ubuntu/Debian)
sudo apt install ffmpeg
Usuários Windows devem instalar da página do FFmpeg.
Depois disso, é preciso criar um ambiente virtual no python para o projeto, evitando conflitos e quebras de pacotes devidos ao PyTorch e aos transformers. Em alguns sistemas, é necessário instalar um pacote para a criação de ambientes virtuais no python, por exemplo (Ubuntu/Debian),
sudo apt install python3-venv
Para criar um ambiente com o nome de, digamos, .env
, dirija-se à pasta do projeto e use
python3 -m venv .env
Isto deve criar uma pasta .env
com o ambiente virtual. Caso esteja contribuindo via git, opte por nomes constantes no arquivo .gitignore
, como env
, venv
, ENV
, .env
ou .venv
, para evitar que a pasta de seu ambiente virtual seja adicionada acidentalmente ao projeto.
Agora ative o ambiente usando um dos comandos a seguir, dependendo do sistema operacional:
source .env/bin/activate
.\.env\Scripts\activate
Agora os pacotes python podem ser instalados via pip:
pip install wheel
pip install tgt git+https://github.com/openai/whisper.git
pip install stable-ts
Para desativar o ambiente virtual, use
deactivate
Caso ainda não tenha o Anaconda, instale-o seguindo as instruções em da página.
Crie um ambiente de nome, digamos, surtolinguistica
com alguns dos pacotes necessários e ative-o:
conda create -n surtolinguistica ffmpeg pytorch transformers more-itertools decorator=4.4.2 imageio
conda activate surtolinguistica
Instale os pacotes restantes usando o canal conda-forge
e o pip:
conda install -c conda-forge ffmpeg-python moviepy
pip install tgt git+https://github.com/openai/whisper.git
pip install stable-ts
Agora você pode desativar o ambiente:
conda deactivate