xiaozhi-esp32 icon indicating copy to clipboard operation
xiaozhi-esp32 copied to clipboard

Speaking 状态下 接收服务器回传数据异常时无法离开 speaking 状态

Open laride opened this issue 9 months ago • 14 comments

Answers checklist.

  • [x] I have read the documentation XiaoZhi AI Programming Guide and the issue is not addressed there.
  • [x] I have updated my firmware to the latest version and checked that the issue is present there.
  • [x] I have searched the issue tracker for a similar issue and not found a similar issue.

XiaoZhi AI firmware version.

v1.4.6

Operating System used.

Linux

How did you build your project?

Command line with idf.py

If you are using Windows, please specify command line type.

None

Power Supply used.

USB

What is the expected behavior?

在 speaking 状态下触发 Application::ToggleChatState()Application::AbortSpeaking(AbortReason),对话应当立刻切换至 listening 状态。

What is the actual behavior?

listening 状态结束、进入 speaking 状态时,设备可能出现以下两种情况

  • 不打印 Application: << 回传文字内容 log
  • 打印 Application: << 回传文字内容 log,但没有音频播放

此时,设备卡在 speaking 状态,无法自动恢复正常;手动触发 Application::AbortSpeaking(AbortReason) 无法离开 speaking 状态,只能通过重启/reset恢复。

Steps to reproduce.

普通对话时可能触发

WebSocket 协议时复现概率更大

Debug Logs.

I (75719) Application: STATE: listening
I (80507) Application: >> 给我说个笑话吧
I (80529) Application: STATE: speaking
[触发 Application::AbortSpeaking(kAbortReasonNone)]
I (93183) Application: Abort speaking
[触发 Application::AbortSpeaking(kAbortReasonNone)]
I (97442) Application: Abort speaking
[触发 Application::AbortSpeaking(kAbortReasonNone)]
I (101643) Application: Abort speaking

More Information.

No response

laride avatar Mar 13 '25 11:03 laride

偶尔发生的吗? 看起来是服务器没有返回tts.stop

78 avatar Mar 13 '25 13:03 78

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

WJ-JAY avatar Mar 13 '25 16:03 WJ-JAY

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

78 avatar Mar 13 '25 19:03 78

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

WiFi

WJ-JAY avatar Mar 14 '25 00:03 WJ-JAY

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

经常发生在按键调用ToggleChatState打断对话之后

WJ-JAY avatar Mar 14 '25 01:03 WJ-JAY

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

经常发生在按键调用ToggleChatState打断对话之后

有可能是最近更新的版本的bug,不过还需要研究如何快速重现。

78 avatar Mar 14 '25 03:03 78

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

我的4G版本,最近新版本也会出现这种情况,只能rst重启,感觉是服务器接口压力上来了?

manicwy avatar Mar 14 '25 05:03 manicwy

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

我的4G版本,最近新版本也会出现这种情况,只能rst重启,感觉是服务器接口压力上来了?

设备IP是国内的吗?最近在升级海外加速线路,不知道跟这个有没有关系。

78 avatar Mar 14 '25 06:03 78

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

我的4G版本,最近新版本也会出现这种情况,只能rst重启,感觉是服务器接口压力上来了?

设备IP是国内的吗?最近在升级海外加速线路,不知道跟这个有没有关系。

我的是国内

WJ-JAY avatar Mar 14 '25 07:03 WJ-JAY

偶尔发生的吗?

频率不算低,每天日常使用时可以触发

不过还需要研究如何快速重现

正常对话,某次进 speaking 后没有声音播放基本可以重现

可以考虑在本地加一个多次打断(但未收到 tts.stop )时强行进入 Idle 的逻辑?

laride avatar Mar 14 '25 08:03 laride

可以这么做,至于是两次还是三次强行进入idle,需要研究一下

78 avatar Mar 14 '25 15:03 78

应该是tts失败了,和音色有关系,可以更换湾湾小何看看

HoGC avatar Mar 15 '25 09:03 HoGC

偶尔发生的吗?看起来是服务器没有返回tts.stop

我也发现了,概率蛮大,日志看也是服务器没有返回tts.stop,是否跟网络不稳定有关?

Wi-Fi还是4G版本呢?

我的4G版本,最近新版本也会出现这种情况,只能rst重启,感觉是服务器接口压力上来了?

设备IP是国内的吗?最近在升级海外加速线路,不知道跟这个有没有关系。

国内4G物联网

manicwy avatar Mar 16 '25 05:03 manicwy

确实是跟音色有关,应该是用的阿里云的音色,看到有不少报错,临时修改忽略了一下错误,不知道有没有改善(正确处理方式可能是重试)

78 avatar Mar 16 '25 14:03 78