我有一个基本的Python语音文本转录器。我想将它包装在一些简单的 GUI 中只是为了好玩,但是在尝试向其添加停止和启动按钮时遇到了很多麻烦。希望得到一些指导!
我想如果我添加一个按钮来设置 while 函数的值,它将能够启动和停止该函数,但是,这似乎不起作用。什么都没发生。
import speech_recognition as sr
import pyttsx3
import tkinter as tk
r = sr.Recognizer()
def start(value):
global startCheck
startCheck = 0
variable = value
root = tk.Tk()
root.title("CrittyCorder")
root.geometry("500x500")
label = tk.Label(root, text="Critty Corder", font=('Arial',24))
label.pack(padx=20, pady=20)
buttonframe = tk.Frame(root)
buttonframe.columnconfigure(0, weight=1)
buttonframe.columnconfigure(1, weight=1)
buttonframe.columnconfigure(2, weight=1)
startbutton = tk.Button(buttonframe, text="Start 'cording", font=('Arial',18),command=lambda *args: start(1))
startbutton.grid(row=0, column=0)
stopbutton = tk.Button(buttonframe, text="Stop 'cording", font=('Arial',18),command=lambda *args: start(0))
stopbutton.grid(row=0, column=1)
buttonframe.pack(padx=20, pady=20)
root.mainloop()
def record_text():
while(1):
try:
with sr.Microphone() as source2:
r.adjust_for_ambient_noise(source2, duration=0.2)
audio2 = r.listen(source2)
MyText = r.recognize_google(audio2)
return MyText
except sr.RequestError as e:
print("Couldn't get results; {0}".format(e))
except sr.UnknownValueError:
print("Unkown error occured")
return
def output_text(text):
f = open("critvoice.txt", "r")
temp = f.read()
f.close()
f = open("critvoice.txt", "w")
f.seek(0,0)
f.write(text + '\n' + temp)
f.write("\n")
f.close()
return
while(startCheck == 1):
text = record_text()
output_text(text)
print("wrote text:", text)
我应该有其他方法来实现这个吗?
正如所指出的 - while 循环从未达到。弄乱了一个变量。但值得庆幸的是,我的主要问题是该怎么做而不是这个也得到了回答 - 使用 after 进行重构来管理重复任务。 – 蚝壳