Stack Overflow em Português Asked by Ruan Ferreira on October 27, 2020
Eu estou tentando fazer um programa que escute oque eu digo e responda conforme oque eu falo,mas,quando eu falo ele demora um pouco para reconhecer e responder
eu tenho um código aqui mais ou menos que eu criei,e eu faço ele abrir uma janela
com o pygame.
Para especificar quando eu executo o código no pycharm ele abre uma janela com uma imagem de fundo e no terminal do pycharm ele escreve estou escutando só que quando eu falo ele demora para reconhecer e responder de volta.
O código:
`import speech_recognition as sr
import pyttsx3
import pygame
pygame.init()
r = sr.Recognizer()
engine = pyttsx3.init()
x = 1280
y = 720
imagem = pygame.image.load("fundo.jpg")
BLUE = (0, 0, 255)
#janela = pygame.display.set_mode((x, y), pygame.FULLSCREEN)
janela = pygame.display.set_mode((1280, 720))
pygame.display.set_caption('I.A')
janela_aberta = True
while janela_aberta == True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
janela_aberta = False
janela.blit(imagem, (0, 0))
pygame.display.update()
with sr.Microphone() as source:
print ('fale algo: ')
audio = r.listen(source)
try:
text = r.recognize_google(audio, language='pt-br')
print('você disse: {}'.format(text))
except:
print('Desculpe não escutei sua voz')
#janela.blit(imagem, (0, 0))
#pygame.draw.line(janela, BLUE, (60, 60), (120, 60), 4)
#text1 = r.recognize_google(audio, language='pt-br')
if text == 'sair':
janela_aberta = False
elif text == 'Olá':
engine.say('Ola,como você está')
engine.runAndWait()
elif text == 'bem':
engine.say('então Esta bom!')
engine.runAndWait()
#elif text == 'quit':
b = False
elif text == "como você está":
engine.say('como voçe vai?')
engine.runAndWait()
elif text == 'Bom dia':
engine.say("bom dia")
engine.runAndWait()
#pygame.draw.line(janela, BLUE, (60, 60), (120, 60), 4)
pygame.display.update()
pygame.quit()`
Até onde eu sei, a única forma de diminuir o tempo do reconhecimento é tendo uma ótima qualidade de áudio. Você pode melhorar a qualidade do áudio utilizando o método r.adjust_for_ambient_noise
que recebe um source
(no seu caso o microfone) e a duração.
O que esse método faz é ajustar o Recognizer
para o som do ambiente em que você está. Você pode definir o método para ajustar por 1 segundo e colocar ele antes de fazer a captura do áudio para o recognizer sempre adaptar-se ao ambiente, melhorando o áudio e o reconhecimento.
Seu código ficaria assim:
import speech_recognition as sr
import pyttsx3
import pygame
pygame.init()
r = sr.Recognizer()
engine = pyttsx3.init()
x = 1280
y = 720
imagem = pygame.image.load("fundo.jpg")
BLUE = (0, 0, 255)
#janela = pygame.display.set_mode((x, y), pygame.FULLSCREEN)
janela = pygame.display.set_mode((1280, 720))
pygame.display.set_caption('I.A')
janela_aberta = True
while janela_aberta == True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
janela_aberta = False
janela.blit(imagem, (0, 0))
pygame.display.update()
with sr.Microphone() as source:
print ('Fale algo: ')
# Ajusta o recognizer antes de capturar seu microfone.
r.adjust_for_ambient_noise(source,duration=1)
# Captura o som do microfone.
audio = r.listen(source)
try:
text = r.recognize_google(audio, language='pt-br')
print('você disse: {}'.format(text))
except:
print('Desculpe não escutei sua voz')
#janela.blit(imagem, (0, 0))
#pygame.draw.line(janela, BLUE, (60, 60), (120, 60), 4)
#text1 = r.recognize_google(audio, language='pt-br')
if text == 'sair':
janela_aberta = False
elif text == 'Olá':
engine.say('Ola,como você está')
engine.runAndWait()
elif text == 'bem':
engine.say('então Esta bom!')
engine.runAndWait()
#elif text == 'quit':
b = False
elif text == "como você está":
engine.say('como voçe vai?')
engine.runAndWait()
elif text == 'Bom dia':
engine.say("bom dia")
engine.runAndWait()
#pygame.draw.line(janela, BLUE, (60, 60), (120, 60), 4)
pygame.display.update()
pygame.quit()
Answered by JeanExtreme002 on October 27, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP