Reconhecimento de Voz com Python: Faça seu primeiro Olá Mundo com Speech Recognition!
Nos tempos atuais todo mundo já utilizou um Ok Google ou pelo menos já ouviu falar de algum outro assistente pessoal como: a Siri da Apple, a Cortana da Microsoft ou a Alexa da Amazon.
Diante do crescimento destes assistentes pessoais não há dúvidas: Somos fascinados por máquinas que podem nos entender! A base de toda esta tecnologia é o reconhecimento de padrões de voz.
Se você quer entender como isso funciona e adicionar aos seus projetos Python, continue a leitura e veja que é muito mais simples do que você imagina.
Como tudo começou
Os primeiros registros de reconhecimento de fala foram iniciados nos laboratórios do Bell Labs no início dos anos 50. A Audrey, uma máquina criada pela Bell Labs, conseguiu entender os dígitos de 0 a 9, com uma taxa de precisão de 90%.
Dez anos depois, a IBM exibiu na Feira Mundial de 1962 a sua máquina “ Shoebox ”, que podia entender 16 palavras faladas em inglês.
Isso pode não parecer muito, mas esses primeiros esforços foram um começo impressionante, especialmente quando se considera o quão primitivos eram os computadores na época.
Nos anos 70 a DARPA ( Departamento de Defesa dos EUA) investiu pesadamente na área e em parceria com a Universidade CarnegieMellon, desenvolveram o sistema de compreensão de fala “Harpy” que podia entender 1011 palavras, mais ou menos o equivalente ao vocabulário de uma criança de três anos.
Um ponto de virada fundamental veio com a popularização dos Modelos Ocultos de Markov (HMMs) em meados da década de 1980. A maioria dos sistemas atuais ainda se baseia nesta técnica de análise estatística.
Em um HMM típico, o sinal de fala é dividido em fragmentos de 10 milissegundos. O espectro de energia de cada fragmento, que é essencialmente um gráfico do poder do sinal em função da freqüência, é mapeado para um vetor de números reais conhecidos como coeficientes cepstrais .
Para decodificar a fala em texto, grupos de vetores são combinados com um ou mais fonemas— uma unidade fundamental da fala, tipo A-BA-CA-TE. Esse cálculo requer treinamento, uma vez que o som de um fonema varia de pessoa para pessoa. Um algoritmo especial é então aplicado para determinar a palavra mais provável que produza a sequência de fonemas dada.
Pode-se imaginar que todo esse processo pode ser computacionalmente caro e é realmente é. Em muitos sistemas modernos de reconhecimento de fala, as redes neurais são usadas para simplificar o sinal de fala, usando técnicas de transformação de recursos e redução de dimensionalidade antes do reconhecimento de HMM. Os detectores de atividade de voz (VADs) também são usados para reduzir um sinal de áudio somente para as partes que provavelmente contêm fala. Isso evita que o reconhecedor perca tempo analisando partes desnecessárias do sinal.
Mãos a obra: Criando o seu Olá Mundo de Reconhecimento de Voz
Neste tutorial utilizamos a linguagem Python na versão 3.6.6, se você não possui o Python instalado em sua máquina, aconselho fortemente a utilizar o ambiente Anaconda, pois torna a instalação fácil e intuitiva. Você pode fazer o download aqui.
1° Passo: Instalação de Bibliotecas
Vamos utilizar a biblioteca speech recognition, para instalar abra o seu prompt de comando e digite:
pip install SpeechRecognition
A biblioteca speech recognition possui a dependencia com a biblioteca PyAudio, por isso também precisamos instalá-la, com o comando.
pip install pyaudio
2° Passo: Código Python
import speech_recognition as sr#Funcao responsavel por ouvir e reconhecer a fala
def ouvir_microfone():
#Habilita o microfone para ouvir o usuario
microfone = sr.Recognizer()
with sr.Microphone() as source:
#Chama a funcao de reducao de ruido disponivel na speech_recognition
microfone.adjust_for_ambient_noise(source)
#Avisa ao usuario que esta pronto para ouvir
print("Diga alguma coisa: ")
#Armazena a informacao de audio na variavel
audio = microfone.listen(source)try:
#Passa o audio para o reconhecedor de padroes do speech_recognition
frase = microfone.recognize_google(audio,language='pt-BR')
#Após alguns segundos, retorna a frase falada
print("Você disse: " + frase)#Caso nao tenha reconhecido o padrao de fala, exibe esta mensagem
except sr.UnkownValueError:
print("Não entendi")return fraseouvir_microfone()
3° Passo: Divirta-se
Agora você testa e brinca a vontade, com a sua nova aplicação. Mas atenção, tenha um pouco de paciência, o reconhecimento não acontece em tempo real e a biblioteca precisa de alguns segundos, até reconhecer o que foi dito.
E se a voz do Google repetisse o que você acabou de dizer?
Vamos criar uma variação da aplicação anterior, agora além de reconhecer o que você diz, a voz do Google repete através do áudio o que foi dito.
1° Passo: Instalação de Bibliotecas
Agora, além da biblioteca speech_recognition vamos utilizar duas outras: a gTTS e a playsound. Para tanto, utilize os comandos:
pip install gTTS
pip install playsound
2° Passo: Código Python
import speech_recognition as sr
from gtts import gTTS
from playsound import playsound#Funcao responsavel por falar
def cria_audio(audio):
tts = gTTS(audio,lang='pt-br')
#Salva o arquivo de audio
tts.save('audios/hello.mp3')
print("Estou aprendendo o que você disse...")
#Da play ao audio
playsound('audios/hello.mp3')#Funcao responsavel por ouvir e reconhecer a fala
def ouvir_microfone():
#Habilita o microfone para ouvir o usuario
microfone = sr.Recognizer()
with sr.Microphone() as source:
#Chama a funcao de reducao de ruido disponivel na speech_recognition
microfone.adjust_for_ambient_noise(source)
#Avisa ao usuario que esta pronto para ouvir
print("Diga alguma coisa: ")
#Armazena a informacao de audio na variavel
audio = microfone.listen(source)try:
#Passa o audio para o reconhecedor de padroes do speech_recognition
frase = microfone.recognize_google(audio,language='pt-BR')
#Após alguns segundos, retorna a frase falada
print("Você disse: " + frase)#Caso nao tenha reconhecido o padrao de fala, exibe esta mensagem
except sr.UnkownValueError:
print("Não entendi")return frasefrase = ouvir_microfone()
cria_audio(frase)
3° Passo: Divirta-se
Agora é a hora de testar, tente novas frases e também tenha paciência, o processo não é tempo real.
Se você gostou desse tutorial, deixe a sua palminha, sugestões e comentários!
Você também pode baixar o código no link do github e realizar suas próprias alterações e melhorias: https://github.com/suzanasvm/ReconhecimentoVoz