我编写了一个基本程序,它基本上使用了pyttsx,speechrecognition和tkinter库。我有如下功能。
def dunno():
with sr.Microphone() as source:
audio = r.listen(source)
try:
print('1')
textEntry = r.recognize(audio)
print('2')
print(textEntry)
engine.say("You said: "+ textEntry)
engine.runAndWait()
except LookupError:
engine.say("Sorry I couldn't understand what you said")
engine.runAndWait()
此外,我已将我的识别器和麦克风定义如下:
r = sr.Recognizer()
然后我使用命令提示符使用pyinstaller创建了一个exe文件,如下所示:
pyinstaller --onedir --onefile --name=somesing "C:\Users\ABCD\Desktop\SomeFolder\mycodefile.py"
正在创建.exe文件,没有任何问题。此外,我为另一个没有语音识别的版本创建了另一个.exe文件,但它运行良好。这个输出的错误如下:
1
The system cannot find the path specified
1
The system cannot find the path specified
1
The system cannot find the path specified
这里我调用了函数dunno()三次,并且已经犯了这个错误。 python脚本正在运行非常好的butexe文件无效。
编辑:我也尝试过使用wav文件。我认为问题不在于麦克风。它应该是关于内部的识别器。
答案 0 :(得分:1)
我认为问题在于 speech_recognition 的捆绑FLAC转换实用程序无法找到,因为 PyInstaller 不知道它是必需的。
因此,您需要在构建过程中明确要求 PyInstaller 包含它。尝试使用以下内容创建名为hook-speech_recognition.py
的文件:
from PyInstaller.hooks.hookutils import collect_data_files
datas = collect_data_files('speech_recognition')
构建时,提供放置文件的目录的路径作为--additional-hooks-dir
参数的值,如下所示:
--additional-hooks-dir=<path_to_directory_of_hook_file>
答案 1 :(得分:0)
Yoel是正确的(但代码中的speech_recognition
应该是双引号)。
我已经在this commit中添加了有关如何使用PyInstaller设置库的详细说明。
我还向PyInstaller提交了pull request以默认包含speech_recognition集成。合并后,将不再需要添加这些挂钩。