-
-
Save turicas/da12b3c8e67a27e088d12d9c41be65d9 to your computer and use it in GitHub Desktop.
@RenataARamos eu usei o Whisper (assim como o Turicas colocou no console) e a fidelidade foi bem alta para PT-BR –o que fora impressionante visto que já havia testado em outras plataformas e nenhuma reconhecia o áudio da gravação;
Além do mais a execução é bem rápida (Minha gravação de 30 minutos demorou 4 minutos para ser transcrita) vale a pena tentar :)
@RenataARamos eu usei o Whisper (assim como o Turicas colocou no console) e a fidelidade foi bem alta para PT-BR –o que fora impressionante visto que já havia testado em outras plataformas e nenhuma reconhecia o áudio da gravação;
Além do mais a execução é bem rápida (Minha gravação de 30 minutos demorou 4 minutos para ser transcrita) vale a pena tentar :)
@lucastexr Obrigada. Estou tentando. Mas meu limitado conhecimento em Google Colab ou qq lgg computacional esta atrapalhando o processo. De qq forma uma gravacao de 2 hrs esta a mais de uma hora rodando. Vamos ver....
Isso aqui é a elite.
Pessoal, apenas para contribuir com a thread tem uma versão que roda com mais performance - https://github.com/guillaumekln/faster-whisper
Que coisa fantástica!! Meu parabéns e reconhecimento!!!
Olá, Turicas. Pesquisando como transcrever áudio em texto, caí aqui em seu tutorial. Consegui usar a transcrição no Drive+Colab. Será que pode me ajudar? Tem fazer transcrição por parágrafos com o Whiper? Ele dá as frases com quebra de linha, seria possível ele gerar a transcrição por parágrafos? Obrigado pela ajuda. Abraço
obrigado.
@jmsmoreira acredito que você não vai conseguir fazer isso com o Whiper.
O Whiper devolve a transcrição com pontuação. Voce pode fazer a quebra por paragrafos com bibliotecas como o NLTK e spaCy. Isso normalmente é conhecido como sentence tokenizer.
@johnidm Muito obrigado pela resposta. Abraço.
Olá @turicas ,
Tentei rodar o modelo small e medium, mas em ambos ocorreu algum tipo de erro, acredito que por falta de dependências. Vou colar o output do console aqui.
Esta parte apareceu em vermelho:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. llmx 0.0.15a0 requires cohere, which is not installed. llmx 0.0.15a0 requires openai, which is not installed.
No fim a ferramenta criou as pastas output-xxx, mas não criou nenhum arquivo.
Abraço,
Airton
Collecting openai-whisper Downloading openai-whisper-20231117.tar.gz (798 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 798.6/798.6 kB 6.0 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Requirement already satisfied: triton<3,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from openai-whisper) (2.1.0) Requirement already satisfied: numba in /usr/local/lib/python3.10/dist-packages (from openai-whisper) (0.58.1) Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from openai-whisper) (1.23.5) Requirement already satisfied: torch in /usr/local/lib/python3.10/dist-packages (from openai-whisper) (2.1.0+cu118) Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from openai-whisper) (4.66.1) Requirement already satisfied: more-itertools in /usr/local/lib/python3.10/dist-packages (from openai-whisper) (10.1.0) Collecting tiktoken (from openai-whisper) Downloading tiktoken-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 29.4 MB/s eta 0:00:00 Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from triton<3,>=2.0.0->openai-whisper) (3.13.1) Requirement already satisfied: llvmlite<0.42,>=0.41.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba->openai-whisper) (0.41.1) Requirement already satisfied: regex>=2022.1.18 in /usr/local/lib/python3.10/dist-packages (from tiktoken->openai-whisper) (2023.6.3) Requirement already satisfied: requests>=2.26.0 in /usr/local/lib/python3.10/dist-packages (from tiktoken->openai-whisper) (2.31.0) Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch->openai-whisper) (4.5.0) Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch->openai-whisper) (1.12) Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch->openai-whisper) (3.2.1) Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch->openai-whisper) (3.1.2) Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch->openai-whisper) (2023.6.0) Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken->openai-whisper) (3.3.2) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken->openai-whisper) (3.6) Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken->openai-whisper) (2.0.7) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken->openai-whisper) (2023.11.17) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch->openai-whisper) (2.1.3) Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch->openai-whisper) (1.3.0) Building wheels for collected packages: openai-whisper Building wheel for openai-whisper (pyproject.toml) ... done Created wheel for openai-whisper: filename=openai_whisper-20231117-py3-none-any.whl size=801356 sha256=30351f055493abac3a821be4d9363be78eb538908b230d82546562190b0e44cf Stored in directory: /root/.cache/pip/wheels/d0/85/e1/9361b4cbea7dd4b7f6702fa4c3afc94877952eeb2b62f45f56 Successfully built openai-whisper Installing collected packages: tiktoken, openai-whisper **ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. llmx 0.0.15a0 requires cohere, which is not installed. llmx 0.0.15a0 requires openai, which is not installed.** Successfully installed openai-whisper-20231117 tiktoken-0.5.2
@airtonac não sei o que pode ser, mas tente rodar o pip install
com a opção -U
para atualizar os pacotes do seu ambiente e/ou então usar uma versão mais antiga do pacote openai-whisper (as últimas versões deram alguns conflitos). De toda forma, a mensagem final foi de sucesso, então talvez funcione mesmo assim.
boa tarde, baixei o whisper é a transcrição no padrão medim é muito boa. Porém a transcirção é muito lenta. Leva 15 minutos para transcrever 1 minuto de audio de mp3! Como o audio tem 120 minutos vai levar dias para fazer a transcrição! Isso se a internet não cair! Essa performance é normal ou anormal. Estou usando o formato CPU, porque se usar o GPU T4 o arquivo não carrega e dá pau! tem como acelerar o processo para que o uso seja viável para mim ? grato pela ajuda
@celestino-lourenco Costumo transcrever mp3 de 20 minutos no padrão Medium e não leva 4 minutos... Não sei porque, mas como dito acima, não estava gerando o arquivo para download no fim da transcrição. Aí passei a usar o seguinte código e deu certo, transcreve rápido e gera o arquivo em txt e outros formatos para download. Segue como uso
!pip install git+https://github.com/openai/whisper.git
!sudo apt update && sudo apt install ffmpeg
!pip install openai-whisper
import subprocess
!whisper "Nomedoarquivo.mp3" --model medium --language pt
Assim gera o arquivo para dowload. Deixo também o ambiente de execução em GPU
Olá Moreira grato pelo retorno, carreguei os 3 scripts indicados por ti. Mas deu dois conflitos : 1) quando carreguei o scrip - !whisper "ID_19_MICHELLE POJETO_3_EPs.mp3" --model medium --language pt - deu o seguinte erro
_.../bin/bash: line 1: whisper: command not found. Isso com ou sem o termo "--language pt".
2) Em ambiente de execução / acelerado de hardware tinham apenas as opções CPU, T4 GPU, TPU. Quando ativei o T4 GPU o arquivo MP3 sumiu e com o CPU o arquivo ficava presente. Caso você tenha alguma sugestão para superar esses dois conflitos agradeço-lhe muito. Muito obrigado
@celestino-lourenco duas coisas. sobre o arquivo sumir... vc começa o processo alterando o ambiente, depois carrega o mp3... Quer me mandar o arquivo, eu faço a transcrição e te devolvo... Talvez seja mais fácil. Aí eu te mando as prints da tela... Meu e-mail é jmsmoreira@gmail.com
!pip install git+https://github.com/openai/whisper.git !sudo apt update && sudo apt install ffmpeg
!pip install openai-whisper import subprocess
!whisper "Nomedoarquivo.mp3" --model medium --language pt
Obrigado!
!pip install git+ https://github.com/openai/whisper.git !sudo apt update && sudo apt install ffmpeg
!pip install subprocesso de importação openai-whisper
!whisper "Nomedoarquivo.mp3" --model médio --linguagem pt
Assim gera o arquivo para download. Deixo também o ambiente de execução em GPU
Fiz exatamente como vc postou, mas meu áudio está demorando horas pra ser transcrito (20 min).
Tem mais alguma coisa que eu possa fazer?
Estava enfrentando o seguinte erro na saída do comando
AssertionError: libcuda.so cannot found!
Para corrigir execute antes do !pip
Audio disponível aqui
!export LC_ALL="en_US.UTF-8"
!export LD_LIBRARY_PATH="/usr/lib64-nvidia"
!export LIBRARY_PATH="/usr/local/cuda/lib64/stubs"
!ldconfig /usr/lib64-nvidia
!pip install openai-whisper
import subprocess
filename = "/content/Alfabeto_portugues_brasileiro.ogg"
model_name = "medium"
completed_process = subprocess.run(
[
"whisper",
"--language", "pt",
"--word_timestamps", "True",
"--model", model_name,
"--output_dir", f"output-{model_name}",
filename
],
capture_output=True, # Capture the output of the process
text=True # Convert the output to text (for Python 3.7 and later)
)
# Print the output of the process
print("STDOUT:", completed_process.stdout)
print("STDERR:", completed_process.stderr)
Pessoal, encontrei uma forma similar que funcionou 100%! Não estava conseguindo também e encontrei esse vídeo: https://www.youtube.com/watch?v=9prLBRpwZ78&list=LL&index=4
É simples: primeiro altere a execução do ambiente, mudando o tipo para T4GPU.
copie para executar: !pip install git+https://github.com/openai/whisper.git
!sudo apt update && sudo apt install ffmpeg
Quando terminar a execução, você carrega seu arquivo mp3, e arrasta ele para a pasta "sample_data".
Daí vc executa o seguinte comando em outra linha:
!whisper "/content/sample_data/arquivo.mp3" --model medium
Precisa ser especificamente o caminho do arquivo dentro da pasta sample, como fazer isso? 3 pontinhos e "copiar caminho".
Execute e baixe o arquivo txt.
O arquivo que transcrevi tinha 1h 27min, e deu tudo certo no "medium". Demorou 21 minutos.
Olá, bom dia!
Muito obrigado pelo tutorial e pelas dicas!!
Já estou usando aqui para transcrição de entrevistas.... muito bom.
Só uma dúvida...
É possível fazer algum tipo de marcação entre as pessoas que falam?
Tipo... Entre o entrevistador e o entrevistado...
Fazer marcações...
Isso é fala do entrevistador...
Isso é fala do entrevistado...
Pode haver algum parâmetro que se possa configurar para isso?
Olá, bom dia! Muito obrigado pelo tutorial e pelas dicas!! Já estou usando aqui para transcrição de entrevistas.... muito bom. Só uma dúvida... É possível fazer algum tipo de marcação entre as pessoas que falam? Tipo... Entre o entrevistador e o entrevistado... Fazer marcações... Isso é fala do entrevistador... Isso é fala do entrevistado... Pode haver algum parâmetro que se possa configurar para isso?
@vieiradatalab o modelo whisper não permite fazer essa segmentação de quem está falando. Existem alguns outros modelos que fazem, mas não tenho exemplos prontos e fáceis de usar assim.
Olá, bom dia! Muito obrigado pelo tutorial e pelas dicas!! Já estou usando aqui para transcrição de entrevistas.... muito bom. Só uma dúvida... É possível fazer algum tipo de marcação entre as pessoas que falam? Tipo... Entre o entrevistador e o entrevistado... Fazer marcações... Isso é fala do entrevistador... Isso é fala do entrevistado... Pode haver algum parâmetro que se possa configurar para isso?
@vieiradatalab o modelo whisper não permite fazer essa segmentação de quem está falando. Existem alguns outros modelos que fazem, mas não tenho exemplos prontos e fáceis de usar assim.
Opa... muito obrigado pela resposta.
Nós usávamos a ferramenta "transcriptor". Essa ferramenta faz a segmentação de quem está falando. Contudo, a qualidade da transcrição é muito ruim. Por isso estamos buscando outras alternativas.
Mesmo sem exemplos prontos, vc consegue citar outros modelos que possam fazer essa segmentação??
@vieiradatalab um dos mais usados é esse: https://huggingface.co/pyannote/segmentation
Olá amigo @turicas
Como faço para que, no arquivo TXT, também sair impresso o tempo inicial e final do áudio?
Olá Amigos eu fiz dessa forma e também obtive êxito!
!whisper "arquivo.mp3" --language Portuguese --model medium #or large or small
espero poder ter ajudado!
Oi Turicas. Meu nome e Renata. Esta e a minha primeira vez usando este espaco. Encontrei o seu post no Google enquanto explorando maneiras de transcrever audios gravados via Zoom em portugues (Brasil). Eu uso Rev Max AI para transcricoes em ingles e a fidelidade e bem alta. Mas as que enviei em portugues, a fidelidade e muito baixa. Portanto aqui vai a minha perguta: este whisper, se eu conseguir usa-lo, resolvera o meu problema de fidelidade de transcricao?
Todos os audios foram gravados pelo Zoom em portugues falado no Brasil.
Muito Obrigada.