0

我制作了一个简单的语音识别程序,并尝试在 Pyinstaller 的帮助下制作 exe,现在当我在我的机器上运行该 exe 时它工作正常并从麦克风打印识别的音频但是当我在另一台机器上运行它时在*win10 Lenovo IdeaPad 330 *上运行它,程序运行但不打印识别的音频并继续循环,即使我已经允许在 windows 上使用麦克风并且当程序使用麦克风时任务栏中的小图标太流行-UPS 。现在总结是在我的机器上制作的exe在其他机器上不起作用,为什么?而且我认为一个线程可能是重复的,因为我的问题与模块特别相关有任何解决方案吗?

这是代码

import speech_recognition
recognizer = speech_recognition.Recognizer()


def listen():
   with speech_recognition.Microphone() as source:
      print('i m hearing !')
      recognizer.adjust_for_ambient_noise(source)
      try:
         audio = recognizer.listen(
         source=source, timeout=5, phrase_time_limit=4)
      except speech_recognition.WaitTimeoutError:
         pass

   try:
      print(recognizer.recognize_google(audio))
      return recognizer.recognize_google(audio)
   except speech_recognition.UnknownValueError:
      pass
   except Exception as e:
      print(e)


if __name__ == '__main__':
   while True:
      user=str(listen())
      if user in ['exit','close','goodbye']:
         print('okay goodbye!')
         exit()
4

1 回答 1

1

当没有 Mic 时speech_recognition.Microphone()会引发OSError异常,因此您需要捕获它。我建议您创建一个函数来返回source是否有麦克风,然后在另一个函数上使用它来读取命令。像这样的东西:

import speech_recognition
recognizer = speech_recognition.Recognizer()


def get_mic():
   try:
      source = speech_recognition.Microphone()
      return source
   except OSError:
      return None


def listen(source):
   with source as src:
      print('i m hearing !')
      recognizer.adjust_for_ambient_noise(src)
      try:
         audio = recognizer.listen(
             source=src, timeout=5, phrase_time_limit=4)
      except speech_recognition.WaitTimeoutError:
         print("speech_recognition.WaitTimeoutError")
         return

      try:
         result = recognizer.recognize_google(audio)
         return str(result)
      except speech_recognition.UnknownValueError:
         print("speech_recognition.UnknownValueError")
         return
      except Exception as e:
         print("Other Exception:", e)


if __name__ == '__main__':
   source = get_mic()
   if not source:
      print("No Mic Device Found!")
      exit()
   while True:
      user = listen(source)
      if user in ['exit', 'close', 'goodbye']:
         print('okay goodbye!')
         exit()
      else:
         print(user)

最后,运行pyinstaller -F script.py以生成您的可执行文件。

于 2019-07-10T10:04:24.913 回答