私はあなたと話すことができ、それはsiriのように応答しました。私はグーグルの音声認識とespeak
を使って聴いたり話したりしています。会話はテキストボックスに印刷されます。tkinterでspeech_recognitionを実行するとフリーズします
プログラムが音声認識を使用して聞くように要求されると、GUIがフリーズして再び「応答しない」と表示されますが、これは間違っているか、音声認識を実行できませんか?tkinter
?
なぜ凍結ですか?
import tkinter as tk
from subprocess import call as say
import winsound
import speech_recognition as sr
def cbc(tex):
return lambda : callback(tex)
def callback(tex):
button = "Listen"
tex.insert(tk.END, button)
tex.see(tk.END)# Scroll if necessary
def listen(tex):
say('espeak '+"Say,,your,,command,,after,,the,,beep", shell=True)
winsound.Beep(1000,500)
ltext = 'listening...'
tex.insert(tk.END, ltext)
tex.see(tk.END)
r = sr.Recognizer()
with sr.Microphone() as source:
damand = r.listen(source)
damandtxt = (recognizer_google(damand))
tex.insert(tk.END, damandtxt)
tex.see(tk.END)
top = tk.Tk()
tex = tk.Text(master=top)
tex.pack(side=tk.RIGHT)
bop = tk.Frame()
bop.pack(side=tk.LEFT)
tk.Button(bop, text='Listen', command=lambda: listen(tex)).pack()
tk.Button(bop, text='Exit', command=top.destroy).pack()
top.mainloop()
これは、コンピュータが一度に1つのことしか実行できないためです。リッスンしているときは、GUI操作を処理できません。この問題を回避するには、この問題を回避するために複数のスレッドを使用してみてください。 – Dzhao
@Dzhao複数のスレッドを追加するにはどうすればよいですか?すみません、私はPythonの初心者です。 –
私の答えをちょうど更新しました。 'a_thread = threading.Thread(target = callback(tex))'行は 'callback'関数の入力を必要としました。 – Dzhao