pyinstaller 输出文件 运行 但未按预期正常工作

pyinstaller output file running but not working correctly as expected

我制作了一个非常简单的阿拉伯语语音识别程序,并尝试使用 Pyinstaller 制作它的 exe。 exe 文件已成功生成,但是当我 运行 它无法识别语音,而当我 运行 来自 IDE (Pycharm) 的程序时它可以工作fin 并按预期识别语音。 这是我的代码:

import speech_recognition
import pyttsx3
import pyperclip
import pyautogui
from PIL import ImageTk
import PIL.Image
import os
from tkinter import *
import tkinter as tk
import tkinter.font as font

def my_function():
    print("Start:")
    recognizer = speech_recognition.Recognizer()
    text =""
    if len(text)==0:
        try:
            with speech_recognition.Microphone() as mic:
                recognizer.adjust_for_ambient_noise(mic, duration=0.2)
                audio = recognizer.listen(mic)

                text = recognizer.recognize_google(audio,language="ar-AR")
                print("Recognized {}".format(text))
                pyperclip.copy(text)
                # Hotkey the paste command
                pyautogui.hotkey("ctrl", "v")
                text =""
        except speech_recognition.UnknownValueError():
            recognizer = speech_recognition.Recognizer()
            text = ""

# create a tkinter window
root = Tk()
root.title('محوّل الصوت إلى كتابة')
root.iconbitmap('icon.ico')
root.geometry('300x400')
myFont = font.Font(size=30)
title_font = font.Font(size=20, weight="bold")

text = Label( text="محوّل الصوت إلى كتابة" )
text.place(relx=0.5, rely=0.1, anchor=CENTER)
text['font'] = title_font

btn_text = tk.StringVar()
btn = Button(root, text='بداية التسجيل' , bd='5',bg='green',activebackground='red',fg='white',command=my_function)
btn['font'] = myFont

btn.place(relx=0.5, rely=0.8, anchor=CENTER)


image = PIL.Image.open('background.jpg')
zoom = 0.35

pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
img = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
label = Label(root, image=img)
label.image = img
label.place(relx=0.5, rely=0.4, anchor=CENTER)

root.mainloop()

我刚刚发现问题发生在我使用 -w 标志转换时。因此,为了解决这个问题,我使用控制台将我的 .py 脚本转换为 .exe(这意味着没有 -w 标志) 所以命令是:pyinstaller -F main.py

为了隐藏控制台,我在 main.py 中添加了以下代码:

import ctypes
ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 0 )