前不久我用PyQt5写语音识别,发现在调用语音识别代码模块时,界面会卡成白屏,后来在网上找到了问题所在——没有使用多线程。。。于是我就在网上找到了使用方法,想和大家分享,一起学习进步!
1.为什么我们要使用多线程?
看看我当时界面卡白屏的情况及代码:(界面我是用Python自带的designer设计的,你们也可以直接编程,我比较懒^_^)
py名:login
# author: xiaowen time:2021/11/21
from PyQt5.QtWidgets import QPushButton
from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import *
from PyQt5.QtCore import *
from PySide2.QtCore import QFile
from PyQt5 import QtWidgets
import sys
import time
import wave
import pyaudio
from aip import AipSpeech
import text
class Qq:
def __init__(self):
# 从文件中加载UI定义
qfile_qq = QFile("D:/gui/qq-ui.ui")
qfile_qq.open(QFile.ReadOnly)
qfile_qq.close()
self.ui = QUiLoader().load(qfile_qq)
self.ui.button2.clicked.connect(self.handleCalc) # 当button2被按下,调用槽函数handleCalc,进行登录
self.ui.button2.clicked.connect(self.text_air) # 当button2被按下,调用text_air进行语音控制功能
def handleCalc(self):
info1 = self.ui.lineEdit1.text()
info2 = self.ui.lineEdit2.text()
if info1 == "35" and info2 == "12":
self.ui.close()
text1.ui.show()
def text_air(self):
print("开始语音...")
ret = get_audio(3) # 识别语音指令
# 翻译语音,
result = recognize(ret)
print(''.join(result['result'])) # ''.join(a) 表示将列表a转变为str类型
if result["err_no"] == 0:
text = result["result"][0]
print(text)
if '统计' in ''.join(result['result']):
text1.u