Na aula passada, aula 01 (Como fazer o Python falar), aprendemos um programa que faz o nosso assistente virtual falar, agora vamos dar mais um passo em nosso projeto, vamos fazer o Python ouvir nossa voz e confirmar o que ouviu nos devolvendo um texto, usando a rede neural do Google você verá a precisão que ficará esse programa, e ai vamos lá?
A sua direita temos mais uma vez nosso super Python, como pode perceber um código simples e intuitivo onde o resultado alcançado é surpreendente, com esse simples código seu Assistente Virtual começará a lhe ouvir, basta falar que ele identifica a fala, reduz o ruído do ambiente, envia o que ouviu para o Google (isso mesmo, para esse assistente funcionar você precisa de uma conexão com o Google, logo você precisa estar conectado na internet) e devolve para o meu programa um arquivo de texto que será usado para confirmarmos se realmente nosso programa ouviu o que falamos. Então vamos explorar o código linha a linha.
import speech_recognition as sr
r = sr.Recognizer()
mic = sr.Microphone()
with mic as fonte:
r.adjust_for_ambient_noise(fonte)
print("Fale alguma coisa")
audio = r.listen(fonte)
print("Enviando para reconhecimento")
try:
text = r.recognize_google(audio, language= "pt-BR")
print("Você disse: {}".format(text))
except:
print("Não entendi o que você disse")
O reconhecimento de fala é o processo de conversão de palavras faladas em texto. O Python suporta muitos mecanismos de reconhecimento de voz e APIs, incluindo Google Speech Engine, Google Cloud Speech API, Microsoft Bing Voice Recognition e IBM Speech to Text. Neste programa, usaremos o Google pacote speech_recognition e este
módulo depende do pyaudio para funcionar, logo vamos instalar esses dois pacotes através dos comandos conda install -c anaconda pyaudio e pip install SpeechRecognition no seu CMD, basta copiar e colar, porém caso queira pesquisar esse comando de instalação na internet, basta acessar os links ao lado para ter acesso a esses pacotes e outros mais.
import speech_recognition as sr
Na linha 01, importamos o pacote de reconhecimento de fala e como ele é um nome grande, quando formos usá-lo como objeto ficaria um pouco trabalhoso ficar reescrevendo o nome "speech_recognition", logo abreviamos esse nome para "sr", assim fica mais fácil e prático a escrita do código.
r = sr.Recognizer() #Função de reconhecimento de audio e fala
Na linha 03, o método "Recognizer" ativa a função de reconhecimento de fala e áudio e pega as configurações de seu computador para usá-la no reconhecimento. Observe que usamos o objeto "sr" para chamar o método e as informações adquiridas já atribuímos a um novo objeto que chamamos de "r".
mic = sr.Microphone() #Função que habilita o microfone para ouvir o usuário
Na linha 05, o método "Microphone" também chamado pelo objeto "sr" tem a função de habilitar o microfone para ouvir o usuário do Assistente Virtual e já atribuímos a um novo objeto que chamamos de "mic".
with mic as fonte:
Na linha 07, já com o "mic em mãos", dizemos para o Python praticamente assim com essa linha de comando: "Python use a sua configuração do microfone com a fonte, que seria sua voz captada".
r.adjust_for_ambient_noise(fonte) #Chama a funcao de reducao de ruido disponivel na speech_recognition
Já na linha 08, eu chamo a função de redução de ruído através do objeto "r", que trata do reconhecimento de fala disponível no pacote "speech_recognition" e aplico essa redução de ruído passando como parâmetro a minha "fonte".
print("Fale alguma coisa")
Na linha 09 usamos a função print, ela permite que apareça na tela do usuário a informação que eu escrever ou chamar dentro dos parênteses, nesse caso, como já foi filtrado o ruído na linha de comando anterior, nós usamos o print para informar ao usuário que o programa está pronto para ouvi-lo.
audio = r.listen(fonte) #Armazena a informacao que ouviu na variavel audio
Na linha 10, a função "listen" coloca o reconhecimento em modo passivo e armazena a informação que ouviu na variável áudio.
print("Enviando para reconhecimento")
Como o envio para o Google pode demorar alguns segundos, dependerá se sua internet e processamento de seu computador, na linha 11 eu notifico mais uma vez o usuário com a função print informando que o esta sendo enviado para reconhecimento de áudio o que meu Assistente ouviu.
try:
A linha 13, é a chave de entrada para passar o áudio para o Google ou informar para o usuário que meu assistente não entendeu o que foi dito, logo o "try" é um teste onde se o programa estiver reconhecido um padrão de fala permitirá entrar nessa condicional e dar continuidade a conversa, caso contrário o programa pula para a linha 17 que habilita a entrada na linha 18 que estudaremos logo em seguida.
text = r.recognize_google(audio, language= "pt-BR") #Passa o audio para o reconhecedor de padroes do speech_recognition
Na linha 14, o áudio é enviado para o reconhecimento do Google através da função "recognize_google" sempre sendo chamado pelo objeto "r", passando nessa função dois parâmetros: (o áudio salvo na linha 10, idioma), quando retornar do reconhecimento do Google a informação é salva na variável "text".
print("Você disse: {}".format(text)) #Após alguns segundos, retorna a frase falada
Agora na linha 15 chegou a hora de confirmar o que meu Assistente virtual ouviu, pois a informação salva na variável "text" da linha anterior será impressa nessa linha usando o método ".format()".
O método format() serve para criar uma string que contem campos entre chaves a serem substituídos pelos argumentos de format. Repare os campos de substituição na string (que é tudo que está entre aspas) estão associadas aos parâmetros de format onde se eu tivesse dentro da string 3 chaves o meu format passaria 3 parâmetros que respectivamente cada parâmetro corresponderia a uma chave.
except: #Caso nao tenha reconhecido o padrao de fala, exibe esta mensagem
print("Não entendi o que você disse")
E o nosso programa encerra nas linhas 17 e 18 que ocorre quando o padrão de fala não é reconhecido.
Gostou desse código? Se interessou em aprender mais? Pois aguarde que a próxima postagem, no dia 28/11 iremos ensinar ao seu Python a repetir o que você fala.
Não viu a aula anterior? Pois acesse o link e aprenda a fazer seu Python falar na Aula 01, será pré-requisito para sua Aula 03.
Escrito por Sandro Mesquita
Tá gostando das aulas? Que tal deixarmos nosso assistente assim? Só depende de seu esforço.
Divulgue essa página pra continuarmos firmes produzindo conteúdos relevantes para nosso crescimento tecnológico.