Ao ver o Tony Stark (Homem de Ferro) nos filmes da Marvel, sempre dava vontade de ter um assistente virtual como o Jarvis. A Siri, Cortana e Alexa ainda não possuem o mesmo nível de interação. Pesquisando na Internet encontrei o projeto https://kripytonianojarvis.com/site/ que eu achei bem interessante.
Mas acho que ainda não é o que eu quero, então decidi (tentar) criar uma assistente virtual. Sei que não será fácil e esse projeto será uma espécie de hobby.
A primeira parte é a comunicação por voz com o computador, assim preciso que a máquina entenda a minha fala. Nesse post vou mostrar código em python para capturar a fala do microfone e transformar em texto, gravando em um arquivo.
Vamos ao Código.
Instalação das Bibliotecas
pip install SpeechRecognition pip install pyaudio
Se você estiver no Windows será necessário utilizar:
pip install pipwin pipwin install pyaudio
Apesar do código não chamar explicitamente o Pyaudio ele é necessário para podermos acessar o microfone. Portanto, é imprescindível que ele esteja instalado corretamente.
Código completo
import speech_recognition as sr def EscreveArquivo(mensagem): try: with open("transcricao_audio.txt", "a") as file: file.write(str(mensagem) + "\n") file.close() except: print("Erro na Escrita da " + mensagem) r = sr.Recognizer() mensagem = "" while(mensagem != "desligar"): with sr.Microphone() as source: r.adjust_for_ambient_noise(source) print("Diga Algo:") audio = r.listen(source) print("Hello") try: mensagem = r.recognize_google(audio, language='pt-BR') print("Você falou: " + mensagem) except sr.UnknownValueError: print("Google Speech Recognition não pode entender o que você falou!") except sr.RequestError as e: print("Não foram obtidos resultados do Google Speech Recognition service; {0}".format(e)) EscreveArquivo(mensagem)
Escrita em Arquivo
import speech_recognition as sr def EscreveArquivo(mensagem): try: with open("transcricao_audio.txt", "a") as file: file.write(str(mensagem) + "\n") file.close() except: print("Erro na Escrita da " + mensagem)
Essa primeira parte do código tem a importação de biblioteca e a função para escrever o texto transcrito. Isso será importante para no futuro enviarmos a mensagem de texto com comandos para o computador e outros equipamentos. Já pensou ligar a cafeteira com comando de voz. Muito Show!
Reconhecimento de Voz
r = sr.Recognizer() mensagem = "" while(mensagem != "desligar"): with sr.Microphone() as source: r.adjust_for_ambient_noise(source) print("Diga Algo:") audio = r.listen(source) print("Hello") try: mensagem = r.recognize_google(audio, language='pt-BR') print("Você falou: " + mensagem) except sr.UnknownValueError: print("Google Speech Recognition não pode entender o que você falou!") except sr.RequestError as e: print("Não foram obtidos resultados do Google Speech Recognition service; {0}".format(e))
O Reconhecimento de voz é realizado pelo Google Speech Recognition e no nosso exemplo está ajustado para entender o português. Há dois tratamentos de erro. O primeiro erro refere-se ao fato da máquina não entender o que foi dito, já o segundo está relacionado a conexão com a rede do Google. Para tudo funcionar corretamente é necessário ter conexão com a Internet.
O Google Speech Recognition é uma rede neural de treinamento para o reconhecimento de fala. Ela é bem robusta pois na maioria das vezes irá reconhecer a fala sem uma etapa de calibração do timbre de voz.
Interessante notar que o programa funciona até receber, por voz, o comando “desligar”.
Conclusão
Foi escrito um código simples que captura o que foi falado e exibe em formato de texto na tela. Além disso, tudo o que foi falado fica gravado em um arquivo de texto e o programa é encerrado ao falarmos “desligar”.
Para trabalhos futuros iremos acrescentar comandos para que o computador execute tarefas através do comando de voz.