Documentando a criação do docker para diarização (transcrição com nomes) de áudios utilizando Whisper e pyannote.
Para a criação do Docker, foi utilizado o comando:
docker run --name transcreve --security-opt seccomp:unconfined -v /home/murilo/docker/:/home/docker --gpus all -e NVIDA_DRIVER_CAPABILITIES=all -ti ubuntu:rolling /bin/bash
Detalhamento dos parâmetros:
--name Define um nome para o container
--security-opt seccomp:unconfined Permite a instalação de novos pacotes no container via apt
-v /home/murilo/docker/:/home/docker Mapeia o diretório /home/murilo/docker para /home/docker no container
--gpus all -e NVIDA_DRIVER_CAPABILITIES=all Libera todas as capacidades da placa de vídeo para o container
Inicialmente, instalaremos alguns pacotes necessários para prosseguirmos com a configuração.
apt install -y bash-completion vim software-properties-common python3 wget git ffmpeg
Vamos então alterar o arquivo /etc/bash.bashrc, removendo os comentários das linhas a seguir para permitir o bash-completion
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
Remova o arquivo /etc/apt/apt.conf.d/docker-clean para o bash-completion funcionar também com o apt.
Depois disso, execute os comandos para atualizar o apt.
apt clean
apt autoclean
apt update
Para instalar o Anaconda, execute os comandos, substituindo pela URL mais atual do Anaconda:
wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
chmod +x Anaconda3-2024.06-1-Linux-x86_64.sh
/Anaconda3-2024.06-1-Linux-x86_64.sh
Após o download, execute a instalação.
chmod +x Anaconda3-2024.06-1-Linux-x86_64.sh
./Anaconda3-2024.06-1-Linux-x86_64.sh
Após a instalação, adicionar o Anaconda ao PATH, editando o arquivo /root/.bashrc e adicionando o texto a seguir no final:
export PATH=/root/anaconda3/condabin/:$PATH
Execute os comandos:
conda init bash
exit
Saia do container. Entre novamente no container e execute:
conda activate env
conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi
Para instalar o Whisper, execute o comando:
pip install openai-whisper
Para instalar o pyannote.audio, execute o comando a seguir:
pip install pyannote.audio
Aparecerão erros de compatibilidade mas podemos ignorar por enquanto.
Para instalar o pyannote-whisper, primeiro devemos clonar o git do projeto.
git clone https://github.com/yinruiqing/pyannote-whisper.git
Depois, entraremos no diretório do pyannote-whisper e realizamos a instalação.
cd pyannote-whisper/
pip install .
Para configurar, devemos criar um token no site huggingface, com permissões para leitura, e depois colar no código, no local indicado, no arquivo /root/anaconda3/lib/python3.12/site-packages/pyannote_whisper/cli/transcribe.py.
if diarization:
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization",
use_auth_token="ENTRE SEU TOKEN")
É necessário alterar uma linha de código do arquivo também para consertar a chamada do Whisper:
from whisper import load_model
devices = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model = load_model(model_name, device=devices, download_root=model_dir)
#model = load_model(model_name, device=device, download_root=model_dir)
Também é necessário outra alteração para utilizar o CUDA, logo depois da inicialização do pipeline, no mesmo arquivo.
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization",
use_auth_token="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")
# Adiciona a linha a seguir para utilizar o cuda
pipeline = pipeline.to(torch.device('cuda:0'))
O ambiente deve estar pronto para executar a diarização.
Teste com o comando a seguir:
python -m pyannote_whisper.cli.transcribe --model tiny --device gpu --verbose False --language Portuguese --threads 10 --diarization True --output_format SRT audio.wav
O arquivo de áudio precisa estar em wav.