【问题标题】:Exe made with pyinstaller does not works用pyinstaller制作的exe不起作用
【发布时间】:2019-07-10 22:42:03
【问题描述】:

我制作了一个简单的语音识别程序,并尝试在 Pyinstaller 的帮助下制作 exe,现在当我在我的机器上运行该 exe 时,它​​可以正常工作并从麦克风打印识别的音频但是当我在另一个上运行它时当我在 *win10 Lenovo IdeaPad 330 * 上运行它时,程序运行但不打印识别的音频并继续循环,即使我已在 Windows 上允许使用麦克风并且程序使用时任务栏中的mic小图标也弹出来。 现在总结是在我的机器上制作的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()

【问题讨论】:

  • “继续循环”是什么意思?您正在捕获您的异常,但不会在其中打印任何内容。用一些打印语句替换pass,并将输出放在这里。
  • 嘿,我在添加打印异常后检查了exe,所以在提到的机器上错误是local variable 'audio' referenced before assignment。现在我认为当没有麦克风时会发生这种错误,不是吗?但根据我提到的机器配置,exe 使用 mic 。那么可能的解决方案是什么?和@M.R.请在你的机器上用pyinstaller检查这个程序exe,这可能会澄清。

标签: python speech-recognition pyinstaller


【解决方案1】:

当没有麦克风时,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 以生成您的可执行文件。

【讨论】:

  • 嘿@M.R.感谢您的回复,所以我按照您的指示在上述机器上运行它的 exe 时,没有任何消息显示 No Mic Device Found!* ,但每次我得到@ 987654326@ 作为输出,这意味着我对麦克风有误,我希望在麦克风没有输入时出现None。但是我已经尝试过故障排除以及在那台机器上设置麦克风,似乎没有任何效果。嘿,请尝试在您的机器上制作 exe 并检查此代码,这可能会有所帮助!
  • 我已经在两台机器上测试了上面的代码,当没有麦克风时(你可以自己尝试移除或禁用它),它会说没有麦克风。您的目标机器似乎有另一个问题,而不是没有麦克风。你在控制台上得到了什么(我已经编辑了帖子并将打印放在所有异常上)
  • 再次感谢伙计!使用上面的代码我能够纠正问题,实际上是机器配置问题,问题是设置中的麦克风不允许此 exe,有​​时 crotana 阻止了其他应用程序的麦克风,所以我也不得不关闭它。非常感谢您宝贵的时间!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多