Open khaledhazime opened 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.
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.
Criei mais uma branch com o código atualizado. Nele já possui a lógica do Speech mas sem o whisper
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:
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.
Tentem reinstalar o Whisper:
pip uninstall whisper
pip install git+https://github.com/openai/whisper.git
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
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
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?
Consigo, porém só estou no lab pela manhã. Vou marcar com o @luca-moraes / @PedroTolardo pra fazermos isso.
Tinha problemas de versão. E uma das bibliotecas que o whisper chamava tinha que ser instalada manualmente. conda install -c conda-forge ffmpeg
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:
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.
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:
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.
@PedroTolardo Qual erro? Quem pode te ajudar nisso?
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.
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.
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.
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.
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.
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.
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.
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.
Test OpenAI's whisper API on speech recognition