如何解决使用Python使用GUI进行语音输入和输出
我一直在尝试使用python创建基本的语音助手-它会听我的命令,并在适当的时候以语音方式做出响应(打开网页,或通过开个玩笑进行响应,等等)。我为此使用pyttsx3
和speech_recognition
。就此而言,它工作得很好—它听我说,并说出它的响应(并在终端上并排打印出来)。
我要做的是制作一个基本的GUI来配合它,因此我可以将其变成一个合适的应用程序。没什么花哨的-只是彩色背景,“监听”时呈绿色,滚动区域无休止地打印出它在说什么。
我尝试为此使用PySimpleGUI。起初,我只是设置了print=sg.Print
,其中sg是我导入PySimpleGui
的方式。理想情况下,这将运行“调试窗口”并在其中打印出内容。但是,调试窗口通常会停止响应,并且也会出现滞后。
这是我正在运行的基本代码
import pyttsx3
import PySimpleGUI as sg
import speech_recognition as sr
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice',voices[0].id)
#print=sg.Print
def speak(audio):
engine.say(audio)
engine.runAndWait()
def takeCommand():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Recognizing...")
query = r.recognize_google(audio,language ='en-in')
print(f"User said: {query}\n")
except Exception as e:
print(e)
print("Unable to Recognizing your voice.")
speak("Sorry,I didn't get that.")
return "None"
return query
if __name__ == '__main__':
while True:
query=takeCommand().lower()
if 'how are you' in query:
speak("I am fine,thanks")
print("I am fine,thanks")
speak("You?")
resp = takeCommand()
for i in ["good","fine","okay"]:
if i in resp:
speak(f"That's good to kNow,user.")
print(f"That's good to kNow,user.")
按原样运行时,它将在终端中运行。如果在显示“正在听”之后说“你好吗”,它会答复。但是,取消注释打印部分时,它会在gui调试窗口中运行,并且会有明显的滞后。为什么会这样呢?另外,我将如何使用适当的单独窗口而不是调试窗口来执行此操作?如果不是PySimpleGUI,我应该使用什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。