Python 3.x 使用Python的GUI进行语音输入和输出
我一直在尝试使用python制作一个基本的语音助手——它会听我的命令,并根据需要进行语音响应(打开网页,或讲笑话等)。我正在为此使用Python 3.x 使用Python的GUI进行语音输入和输出,python-3.x,speech-recognition,text-to-speech,pysimplegui,pyttsx3,Python 3.x,Speech Recognition,Text To Speech,Pysimplegui,Pyttsx3,我一直在尝试使用python制作一个基本的语音助手——它会听我的命令,并根据需要进行语音响应(打开网页,或讲笑话等)。我正在为此使用pyttsx3和speech\u recognition。就这一点而言,它工作得很好——它听我说,然后说出它的反应(并将同样的结果并排打印到终端上) 我想做的是制作一个与之配套的基本GUI,这样我就可以把它变成一个合适的应用程序。没什么特别的-只是一个彩色的背景,一个绿色的灯光当它“听”和一个无休止的滚动区域打印出它的话旁边 我试着用PySimpleGUI来做这个。
pyttsx3
和speech\u 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,我应该使用什么