如何基于现有Python Excel录入程序实现语音输入转文本存储功能?
语音输入功能实现方案
核心修改内容
- 编写语音转文本工具函数,处理语音捕获与识别逻辑
- 为
Speak按钮添加事件响应,将识别结果填充到当前选中的输入框 - 处理语音识别过程中的异常场景,提升用户体验
修改后的完整代码
import PySimpleGUI as sg import pandas as pd import speech_recognition as sr # 初始化语音识别器 recognizer = sr.Recognizer() # 设置窗口主题 sg.theme('Green') exfile = 'Break Down Report.xlsx' df = pd.read_excel(exfile) layout = [ [sg.Text('Machines Breakdown Entries Table:')], [sg.Text('S.No', size=(15,1)), sg.InputText(key='S.No')], [sg.Text('Fault Desc', size=(15,1)), sg.InputText(key='Fault Desc')], [sg.Text('Start Time', size=(15,1)), sg.InputText(key='Start Time')], [sg.Text('End Time', size=(15,1)), sg.InputText(key='End Time')], [sg.Text('Date', size=(15,1)), sg.InputText(key='Date')], [sg.Text('Employe Name', size=(15,1)), sg.InputText(key='Employe Name')], [sg.Button('Speak'), sg.Save(), sg.Button('Clear'), sg.Quit()] ] window = sg.Window('Daily Breakdown Report ', layout) def clear_input(): for key in values: window[key]('') return None def get_speech_text(): """将麦克风输入的语音转换为文本""" with sr.Microphone() as source: sg.popup('请开始说话', auto_close_duration=2) recognizer.adjust_for_ambient_noise(source) # 消除环境噪音干扰 audio_data = recognizer.listen(source) try: # 使用Google语音识别,支持多语言,可修改language参数切换(如'en-US') return recognizer.recognize_google(audio_data, language='zh-CN') except sr.UnknownValueError: sg.popup('无法识别语音,请重试') return None except sr.RequestError: sg.popup('语音识别服务不可用,请检查网络连接') return None while True: event, values = window.read() if event == sg.WIN_CLOSED or event == 'Quit': break if event == 'Clear': clear_input() if event == 'Save': # 适配Pandas 2.0+版本,原append方法已弃用 df = df._append(values, ignore_index=True) df.to_excel(exfile, index=False) sg.popup('数据已保存!') clear_input() if event == 'Speak': # 获取当前聚焦的输入框 active_input = window.find_element_with_focus() if active_input and active_input.Type == sg.ELEM_TYPE_INPUT_TEXT: speech_content = get_speech_text() if speech_content: active_input.update(value=speech_content) else: sg.popup('请先点击要输入的文本框,再点击Speak按钮') window.close()
关键细节说明
- 语音识别初始化:提前创建识别器实例,避免重复初始化带来的性能损耗
- 噪音处理:调用
adjust_for_ambient_noise自动适配环境噪音,提升识别准确率 - 多语言支持:修改
recognize_google的language参数即可切换识别语言,比如英文场景用'en-US' - 输入框定位:通过
find_element_with_focus获取当前选中的输入框,确保语音内容填充到目标位置 - Pandas兼容性:将原
df.append替换为df._append,适配Pandas 2.0及以上版本(原方法已被标记为弃用)
内容的提问来源于stack exchange,提问作者Hassaan Rasheed
相关产品推荐
相关产品推荐

