robofeiathome / speech_recognition

0 stars 0 forks source link

Whisper API #2

Open khaledhazime opened 1 year ago

khaledhazime commented 1 year ago

Test OpenAI's whisper API on speech recognition

luca-moraes commented 1 year ago

Para resolver essa issue eu e o @PedroTolardo iremos primeiro criar a lógica para um método que reconhce o alias e a frase logo em sequência, algo que também esta solicitado na issue #1, com tempo para entregua de 1 semana, após isso integraremos com os códigos já existentes do speech durante a outra semana, @PedroTolardo sinta-se livre para acrescentar ou discordar de algo também.

luca-moraes commented 1 year ago

avaços dia 28: eu e o @PedroTolardo descobrimos que é possivel usar diretamente a api do whisper sem carregar o modelo pois o speech recognition criou um metodo ja pronto pra isso.

dificuldades: erros para ele reconhcer o microfone e erros quando o texto esta sendo transcrito, tentamos resolver o erro com base nos seguintes repos:

erro:

To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags. 2023-02-28 16:39:50.507953: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/noetic/lib 2023-02-28 16:39:50.508000: I tensorflow/compiler/xla/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine. 2023-02-28 16:39:51.447655: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/noetic/lib 2023-02-28 16:39:51.447755: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/ros/noetic/lib 2023-02-28 16:39:51.447774: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.

PedroTolardo commented 1 year ago

Criei mais uma branch com o código atualizado. Nele já possui a lógica do Speech mas sem o whisper

PedroTolardo commented 1 year ago

Avanços 01/03: O código da lógica do Speech está funcionado. O código é o Speech_objeto. Eu e o @luca-moraes tentamos colocar o whisper e surgiu um erro que não conseguimos resolver: image

No meu computador não consegui rodar pelo vscode pois não estava instalando o whisper. Tentei pelo jupyter e instalou certinho, o problema foi esse erro acima.

khaledhazime commented 1 year ago

Tentem reinstalar o Whisper:

pip uninstall whisper pip install git+https://github.com/openai/whisper.git

luca-moraes commented 1 year ago

conseguimos fazer a gavação e a reprodução do audio, usamos a lib soundevice como alternativa para resolver os erros, agora precisamos integrar isso com a api do whisper fornecida pela lib do speechrecognition

luca-moraes commented 1 year ago

Eu e o @PedroTolardo ainda estamos com problemas, rodando recognize_whisper() pela biblioteca do speechRecognition temos erros relacionados ao torch

in recognize_whisper import torch ModuleNotFoundError: No module named 'torch'

Tentando com o recognize_google(), não temos nenhum problema.

Usando diretamente o modulo da openai com import whisper temos problemas relacionado ao modulo ffmpeg

Traceback (most recent call last): File "/home/robofei/miniconda3/envs/speechEnv/lib/python3.10/site-packages/whisper/audio.py", line 42, in load_audio ffmpeg.input(file, threads=0) AttributeError: module 'ffmpeg' has no attribute 'input' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/robofei/Documents/speech_recognition/teste_scripts/Speech_whisper_1", line 23, in audio = whisper.load_audio("recording.wav") File "/home/robofei/miniconda3/envs/speechEnv/lib/python3.10/site-packages/whisper/audio.py", line 46, in load_audio except ffmpeg.Error as e: AttributeError: module 'ffmpeg' has no attribute 'Error'

Acredito que o erro possa ser relacionado a versão do python que funciona corretamente com as bibliotecas necessárias, vou tentar excluir o env criado no conda e refazer a instalçao, porque aparentemente não tem nenhum erro de lógica no código

Instalação do whisper: https://github.com/openai/whisper

Dependencias do whisper https://stackoverflow.com/questions/73842876/fmpeg-has-no-attribute-input https://stackoverflow.com/questions/54843067/no-module-named-torch

khaledhazime commented 1 year ago

Eu e o @PedroTolardo ainda estamos com problemas, rodando recognize_whisper() pela biblioteca do speechRecognition temos erros relacionados ao torch

in recognize_whisper

import torch

ModuleNotFoundError: No module named 'torch'

Tentando com o recognize_google(), não temos nenhum problema.

Usando diretamente o modulo da openai com import whisper temos problemas relacionado ao modulo ffmpeg

Traceback (most recent call last):

File "/home/robofei/miniconda3/envs/speechEnv/lib/python3.10/site-packages/whisper/audio.py", line 42, in load_audio

ffmpeg.input(file, threads=0)

AttributeError: module 'ffmpeg' has no attribute 'input'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "/home/robofei/Documents/speech_recognition/teste_scripts/Speech_whisper_1", line 23, in

audio = whisper.load_audio("recording.wav")

File "/home/robofei/miniconda3/envs/speechEnv/lib/python3.10/site-packages/whisper/audio.py", line 46, in load_audio

except ffmpeg.Error as e:

AttributeError: module 'ffmpeg' has no attribute 'Error'

Acredito que o erro possa ser relacionado a versão do python que funciona corretamente com as bibliotecas necessárias, vou tentar excluir o env criado no conda e refazer a instalçao, porque aparentemente não tem nenhum erro de lógica no código

Instalação do whisper:

https://github.com/openai/whisper

Dependencias do whisper

https://stackoverflow.com/questions/73842876/fmpeg-has-no-attribute-input

https://stackoverflow.com/questions/54843067/no-module-named-torch

@cauansousa ve se consegue ajudar eles com isso?

cauansousa commented 1 year ago

Consigo, porém só estou no lab pela manhã. Vou marcar com o @luca-moraes / @PedroTolardo pra fazermos isso.

cauansousa commented 1 year ago

Tinha problemas de versão. E uma das bibliotecas que o whisper chamava tinha que ser instalada manualmente. conda install -c conda-forge ffmpeg

luca-moraes commented 1 year ago

Erro relacionado ao ffmpeg foi corrigido pelo grande @cauansousa, removendo toda as versões do python e instalando de novo a versão especifica do ffmpeg que é uma dependencia usada pelo whisper

Referências:

PedroTolardo commented 1 year ago

Logo após a correção do erro, eu e o @luca-moraes começamos os testes no speech recoginition com o whisper. Fizemos alguns testes com os modelos small e medium. Nenhum dos modos identificou a palavra "hera" ou algo do tipo e além disso quanto melhor o modo, mais pesado o programa fica e demora mais para transcrever a palavra. Portanto, na semana do dia 06/03 vamos realizar vários testes com o recognize do speechrecogniton para ver qual API tem o melhor reconhecimento.

PedroTolardo commented 1 year ago

A logica para funcionamento do alias esta funcionando usando o modelo do google, com o whisper o modelo está um pouco lento e as vezes não reconhece nenhum texto, precisamos testar um pouco mais com o whisper pela api do speech recog, ou pelo proprio whisper, também vamos melhorar a logica do reconhecimento em plano de fundo usando esse exemplo como base:

PedroTolardo commented 1 year ago

Criei mais um programa para o alias pois o outro programa "speech_objeto" do @luca-moraes estava dando erro no qual eu não consegui resolver. No programa "speech_alias" está identificando "hera" e "dizendo" yes. Logo após reconhece a task que deve ser executada. No programa está reconhecendo a task speech recognition.

khaledhazime commented 1 year ago

@PedroTolardo Qual erro? Quem pode te ajudar nisso?

PedroTolardo commented 1 year ago

Avanços dia 14/03: No arquivo Speech-alias realizei o aprimoramento do alias proposto pelo @khaledhazime, que consiste em separar o "text" em substrings para identificar o alias "hera". Durante a semana tentarei colocar o arquivo orientado a objeto e aprimorar e cirar outras funçoes.

PedroTolardo commented 1 year ago

Avanços (15/03): Modifiquei algumas coisas no arquivo Speech_alias pois estava apresentando alguns erros. Junto ao @MaSNogueiraS arrumamos o loop da função "transcribe_audio(audio)" pois estava ocorrendo um erro de "NoneType". Agora com a correção do erro, o loop, o reconhecimento do alias e o reconhecimento das perguntas já estão funcionando corretamente.

PedroTolardo commented 1 year ago

Avanços (17/03): Comecei a estudar um jeito de responder as perguntas. Iniciei olhando o site que o @khaledhazime me mandou. Além disso, criei um novo arquivo para modificar, o arquivo é o "Speech_answer".
Neste site apresenta vários métodos para executar pesquisas no google. No link que o khaled me mandou o código apenas mostra os links para possíveis sites de acordo com a pergunta, sem navegar por ele. Link do site: https://www.geeksforgeeks.org/performing-google-search-using-python-code/

Olhando mais no site, encontrei um outro tópico que diz sobre pesquisa de texto no google usando o selenium e o pyautogui, uma maneira mais eficaz para navegar no site. Link do site: https://www.geeksforgeeks.org/text-searching-in-google-using-selenium-in-python/?ref=rp

O problema é que estou caindo em um erro no qual não estou conseguindo resolver. Erro: selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Vou continuar tentando resolver o erro para testar o código e ver se realmente é eficaz.

PedroTolardo commented 1 year ago

Avanços(21/03): Junto ao @MaSNogueiraS demos início as respostas das perguntas do Speech. Para isso, criamos um novo arquivo chamado "Speech_answer_working.py". Estamos com algumas melhorias em mente e algumas já estão encaminhadas. Uma das melhorias seria a filtragem das respostas.

PedroTolardo commented 1 year ago

Avanços(22/03): Junto ao @MaSNogueiraS começamos a reproduzir as respostas em fala. Para isso utilizamos a biblioteca "pyttsx3". As respostas estão em inglês e feminino, o problema é que estão muito robotizadas. Vou tentar pegar a biblioteca do speech anterior.

PedroTolardo commented 1 year ago

Avanços(23/03): Junto ao @MaSNogueiraS arrumamos a reprodução das repostas em fala. Utilizamos a biblioteca "gTTS" que tem a mesma voz que do google. Não consegui testar no zotac pois não está funcionando a entrada de áudio. Tentei em outro pc também mas não está saindo som. Vou tentar no meu pc em casa.

PedroTolardo commented 1 year ago

Avanços(24/03): Consegui arrumar a reprodução das resposta em fala com a voz do google. Junto ao @MaSNogueiraS conseguimos fazer as respostas pelo "chatgpt". O arquivo que está funcionando é o "Speech_gpt". Agora vou tentar encontrar um jeito para colocar o whisper para ver se melhora na captação do áudio, já que todos os códigos estão com a api do google.

PedroTolardo commented 1 year ago

Avanços (30/03): Junto ao @MaSNogueiraS conseguimos colocar a api do chat gpt para responder as perguntas. Agora, a "Hera" consegue responder perguntas no geral. O arquivo que está funcionando é o "Speech_gpt_working". Demorei um pouco para comentar pois o outro arquivo "Speech_gpt" deu problema e estava resolvendo até agr. A mundança foi alterar a bash que o @MaSNogueiraS indicou pela api do chat gpt.