You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy GUI语音激活按钮失效问题排查求助

Kivy语音按钮功能修正方案

原代码存在的问题

  • pyttsx3朗读对象错误:engine.say(r)中r是sr.Recognizer实例,不是字符串,pyttsx3无法朗读对象,需替换为文本内容。
  • 按钮未绑定点击事件:返回的Button没有关联say_command方法,点击按钮不会触发语音监听逻辑。
  • 类方法缺少self参数:say_command作为类的方法,必须包含self参数才能被类实例调用。
  • Microphone未实例化:sr.Microphone是类,使用时需要加括号实例化,即sr.Microphone()。
  • 异常分支未定义command:当捕获异常时,return command会因command未定义报错,需提前初始化变量。

修正后的完整代码

# Speech recognition
import speech_recognition as sr
# Text to speech
import pyttsx3
# base Class of your App inherits from the App class.
from kivy.app import App
from kivy.uix.button import Button

print('Jinx \n')

r = sr.Recognizer()
engine = pyttsx3.init()
# 修正:朗读文本而非Recognizer对象
engine.say("Jinx is ready")
engine.runAndWait()

class test(App):
    def build(self):
        # 修正:给按钮绑定点击事件到say_command方法
        return Button(text="Speak!", font_size=14, on_press=self.say_command)

    # 修正:添加self参数,初始化command变量
    def say_command(self, instance):
        command = ""
        try:
            # 修正:Microphone需要实例化
            with sr.Microphone() as source:
                print("Listening...")
                voice = r.listen(source)
                command = r.recognize_google(voice)
                command = command.lower()
                if 'jinx' in command:
                    command = command.replace('jinx', '').strip()
                    print(f"Received command: {command}")
                    # 可选:朗读识别结果
                    engine.say(f"You said: {command}")
                    engine.runAndWait()
        except sr.UnknownValueError:
            print("Sorry, I couldn't understand what you said.")
        except sr.RequestError:
            print("Sorry, speech recognition service is unavailable.")
        except Exception as e:
            print(f"Error occurred: {e}")
        return command

test().run()

优化说明

  • 给Button添加on_press绑定,点击后触发语音监听逻辑
  • 修复Microphone实例化问题,确保麦克风正常调用
  • 细化异常处理,区分语音识别的不同错误类型(无法识别、服务不可用等)
  • 初始化command变量,避免异常分支下的未定义报错
  • 增加监听提示和结果输出,方便调试
  • 可选添加识别结果的语音播报功能,增强交互性

内容的提问来源于stack exchange,提问作者creativesky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:55:46