Reconhecimento de Voz com Python

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.

2 thoughts on “Reconhecimento de Voz com Python

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *