You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.9 KiB

6 months ago
import tkinter as tk
from tkinter import messagebox
import speech_recognition as sr
class VoiceRecognitionApp:
def __init__(self, master):
self.master = master
master.title("语音识别工具")
# 创建开始录音的按钮
self.record_button = tk.Button(master, text="开始录音", command=self.start_listening)
self.record_button.pack(pady=10)
# 创建完成按钮,初始时禁用
self.finish_button = tk.Button(master, text="完成并识别", state=tk.DISABLED, command=self.recognize_voice)
self.finish_button.pack(pady=10)
self.recognizer = sr.Recognizer()
self.audio_data = None
def start_listening(self):
# 启动录音
self.record_button.config(state=tk.DISABLED) # 禁用开始录音按钮
self.finish_button.config(state=tk.NORMAL) # 启用完成按钮
with sr.Microphone() as source:
print("请说话...")
self.audio_data = self.recognizer.listen(source)
def recognize_voice(self):
if self.audio_data is not None:
try:
recognized_text = self.recognizer.recognize_google(self.audio_data, language='zh-CN')
messagebox.showinfo("识别结果", f"你说的是: {recognized_text}")
except sr.UnknownValueError:
messagebox.showerror("错误", "无法识别你的语音")
except sr.RequestError as e:
messagebox.showerror("错误", f"服务不可用; {e}")
finally:
self.reset_ui() # 识别完成后重置UI状态
def reset_ui(self):
# 重置按钮状态和音频数据
self.record_button.config(state=tk.NORMAL)
self.finish_button.config(state=tk.DISABLED)
self.audio_data = None
# 创建主窗口并启动应用
app = tk.Tk()
VoiceRecognitionApp(app)
app.mainloop()