Python 当我尝试在pyqt5中运行语音识别时,程序崩溃

Python 当我尝试在pyqt5中运行语音识别时,程序崩溃,python,pyqt,speech-recognition,Python,Pyqt,Speech Recognition,当我尝试在pyqt5中运行语音识别时,程序崩溃。Sr的代码位于另一个脚本文件中。我将其导入pyqt5脚本。我用sr功能连接了按钮。当我按下按钮时,sr工作,但两者都会崩溃 PyQt5代码: import sys from PyQt5 import QtWidgets,QtGui from Speech_Recognition import Voice def Gui(): app = QtWidgets.QApplication(sys.argv) window = Qt

当我尝试在pyqt5中运行语音识别时,程序崩溃。Sr的代码位于另一个脚本文件中。我将其导入pyqt5脚本。我用sr功能连接了按钮。当我按下按钮时,sr工作,但两者都会崩溃

PyQt5代码:

import sys
from PyQt5 import QtWidgets,QtGui
from Speech_Recognition import Voice



def Gui():

    app = QtWidgets.QApplication(sys.argv)
    window = QtWidgets.QWidget()
    window.setGeometry(200,200,150,150)


    button1 = QtWidgets.QPushButton(window)
    button1.setText("Start")
    button1.clicked.connect(Voice)


    window.show()
    sys.exit(app.exec())


Gui()

语音识别

import speech_recognition as sr

text = ""


def Voice():

    r = sr.Recognizer()
    m = sr.Microphone()



    while True:
        print("Say somethig!")
        with m as source:
            audio = r.listen(source)
            print("Got it! Now to recognize it...")

            try:

                value = r.recognize_google(audio)
                text = value
                print("You said: {}".format(text))

            except sr.UnknownValueError:
                print("Oops")




您的代码有一个while True,它将阻止GUI的eventloop,在这种情况下,建议在另一个线程中执行该任务:

导入系统 导入线程 从PyQt5导入QtWidgets 从语音识别导入语音 已单击“”上的def: th=线程。线程(目标=语音) th.daemon=True th.start() def Gui(): app=qtwidts.QApplication(sys.argv) window=qtwidts.QWidget() window.setGeometry(200200150150) button1=QtWidgets.QPushButton(窗口) 按钮1.setText(“开始”) 按钮1.单击。连接(单击时) window.show() sys.exit(app.exec_()) Gui() 加号:

从PyQt5导入QtCore、QtGui、qtwidget
将语音识别作为sr导入
类VoiceWorker(QtCore.QObject):
textChanged=QtCore.pyqtSignal(str)
@QtCore.pyqtSlot()
def任务(自我):
r=高级识别器()
m=高级话筒()
尽管如此:
打印(“说点什么!”)
以m为来源:
音频=r.listen(源)
打印(“明白了!现在要识别它…”)
尝试:
value=r.recognize\u谷歌(音频)
self.textChanged.emit(值)
打印(“你说:{}”。格式(文本))
除sr.UnknownValue错误外:
打印(“Oops”)
def Gui():
app=qtwidts.QApplication(sys.argv)
worker=VoiceWorker()
thread=QtCore.QThread()
thread.start()
worker.moveToThread(线程)
window=qtwidts.QWidget()
window.setGeometry(200200350400)
window.setWindowTitle(“助手”)
title_label=qtwidts.QLabel(窗口)
title_label.setText(“助手”)
标题标签移动(135,10)
title_label.setFont(QtGui.QFont(“SansSerif”,15))
programs_says=qtwidts.QLabel(窗口)
programs_says.setText(“programs says”)
项目名称:移动(240100)
you_says=qtwidts.QLabel(窗口)
你说,移动(25100)
you_text=qtwidts.QLabel(窗口)
worker.textChanged.connect(you_text.setText)
你的文字移动(25150)
开始按钮=qtwidts.QPushButton(“开始”)
关闭按钮=qtwidts.QPushButton(“关闭”)
v_box=qtwidts.QVBoxLayout()
v_box.addStretch()
v_box.addWidget(启动按钮)
v_box.addWidget(关闭按钮)
窗口设置布局(v_框)
启动按钮。单击。连接(worker.task)
关闭按钮。单击。连接(QCoreApplication.instance().quit)
window.show()
sys.exit(app.exec())
Gui()

为什么要将单击的信号与语音连接?请提供,因为我想在按下按钮时运行另一个脚本文件(语音识别)。如何做到这一点。语音是sr脚本文件的功能。@Laccazet如果您不提供MCVE,则无法帮助您,最有可能的错误原因是您没有显示的代码。@eyllanesc这就是所有的错误codes@Laccazet您不应该修改代码,但我的答案对未来用户没有意义语音识别正在将我的语音转换为文本。我想使Sr文本和pyqt标签相等。我改了密码。文本变量来自语音识别脚本。@Laccazet您似乎对Qt一无所知,就为了这个机会,我将向您演示如何操作。如果您还有其他疑问,请提出另一个问题