Как я могу заставить распознавание речи перестать слушать после одного слова? - PullRequest
0 голосов
/ 19 октября 2018

Я делаю устный переводчик 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))
...