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

如何修改Python while循环实现对话机器人持续交互直至触发退出指令

修复Bot类的持续运行循环问题

原代码的问题在于:内层对话循环仅执行一次voice_recognition()就break,且外层循环仅在未唤醒状态下运行,导致完成一次响应后脚本直接终止。以下是修改后的代码,实现持续运行直到sys.exit(0)触发:

import sys

class Bot():
    def __init__(self):
        self.woke = False
        # 主循环:持续运行直至sys.exit(0)触发终止
        while True:
            # 待唤醒阶段:循环检测唤醒词,直到被唤醒
            while not self.woke:
                self.wake_word()  # 识别到唤醒词时将self.woke设为True
            
            # 唤醒后持续处理交互:重复执行语音识别、对话、响应流程
            while self.woke:
                self.voice_recognition()  # 录制音频并转换为spoke.txt文件
                self.chat()  # 读取spoke.txt生成回复
                self.respond()  # 使用pyttsx3朗读回复
                # 若任一内部函数调用sys.exit(0),程序会直接终止

关键调整说明:

  • 外层使用while True作为无限主循环,确保程序始终处于运行状态,直到sys.exit(0)被触发。
  • 待唤醒阶段的while not self.woke循环会持续调用wake_word(),直到机器人被唤醒。
  • 唤醒后的对话循环while self.woke会完整重复语音交互流程,无需手动break;如果需要支持回到待唤醒状态(比如识别到特定退出指令),可在对应函数中将self.woke设为False,程序会自动回到待唤醒阶段。

内容的提问来源于stack exchange,提问作者Mo .haytham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:15:38