首页 > 解决方案 > Python 语音识别在基于窗口的 GUI 应用程序中不起作用(它是一个带有隐藏控制台的 .exe 应用程序)

问题描述

我使用 pyqt5 python 创建了一个桌面应用程序。它可以从音频文件中生成文本。(为此我正在使用 python 语音识别)如果我使用 vs code、pycharm 和终端运行脚本,它工作得很好。但是当我将它转换为 .exe 文件并尝试运行它时;我可以运行应用程序 (GUI),但语音识别不起作用。但是,我也注意到,如果我将 .py 文件转换为基于控制台的 .exe,它也可以完美运行。这意味着语音识别功能在基于控制台的窗口中工作,而不仅仅是在基于窗口的应用程序中。但我的目标是创建一个基于窗口的应用程序,而不是基于控制台的应用程序。我认为问题出在语音识别功能上。

我使用这个命令来创建一个窗口化的 exe:pyinstaller --noconfirm --onefile --windowed "Python_file.py"

和我的语音识别功能

import speech_recognition as sr
class ThreadClass(QtCore.QThread):  
    any_signal = QtCore.pyqtSignal(str)
    def __init__(self, parent=None):
        super(ThreadClass, self).__init__(parent)
        self.is_running = True
    def run():
        r = sr.Recognizer()
        try:
            audio = 'path/audio.wav'
            text = r.recognize_google(audio, language= 'en-us')
        except Exception as e:
            print(e)
            return e
        self.any_signal.emit(text) 
    def stop(self):
        self.is_running = False
        self.terminate()
class Ui_Text_genarator(QMainWindow):
    def __init__(self):
        super(Ui_Text_genarator, self).__init__() 
        uic.loadUi('A_to_T.ui', self)
        self.Generate_pushButton.clicked.connect(self.generate)
    def generate(self):
        self.thread = ThreadClass(lang, path, parent=None)
        self.thread.start()
        self.thread.any_signal.connect(self.my_function)
    def my_function(self, text):
        self.textEdit.setText(text)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = Ui_Text_genarator() 
    ex.show()
    sys.exit(app.exec_())  

标签: pythonpyqt5speech-recognition

解决方案


推荐阅读