Я делаю устный переводчик PygLatin.Очень простое, по крайней мере, которое говорит одно переведенное слово.
Если я произнесу более одного слова, все получится путанным, и он берет первый символ в первом слове и помещает его в последнее произнесенное слово с помощью "ай "в конце.
Так что у меня возникло несколько проблем из-за этого.Есть ли способ заставить его перестать слушать только после одного произнесенного слова?Возможно ли было бы также получить первую букву каждого слова, поставленную в конце каждого произнесенного слова, за которой следует «ay»?
. Вот пример моего кода:
import time
import speech_recognition as sr
from gtts import gTTS
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
from pygame import mixer
mixer.init()
pyg = "ay"
count = 3
while count > 0:
while (True == True):
# get audio input
original = sr.Recognizer()
with sr.Microphone() as source:
# listen for 1 second and create the ambient noise energy level
original.adjust_for_ambient_noise(source, duration = 1)
print("Say ONE word. If you do not wish to use the translator, say 'stop' ")
audio = original.listen(source,phrase_time_limit = 1)
# speech recognition with Google
try:
response = original.recognize_google(audio)
if response == "stop":
print("Thanks for using the PygLatin Translator, Goodbye!")
break
pyg_word = response + pyg
w = response + pyg
pyg_word = w[1 : len(pyg_word)]
print(pyg_word)
tts = gTTS(text = str(pyg_word), lang='en')
tts.save("response.mp3")
mixer.music.load('response.mp3')
mixer.music.play()
except sr.UnknownValueError:
print("Translator could not understand audio")
except sr.RequestError as e:
print("Sphinx error; {0}".format(e))