OpenAi回答过长的情况下小爱音箱没有读完整
lyddias opened this issue · 30 comments
如果OpenAi回答过长,程序自动会将回答拆分成多个,但小爱音箱还没有读完第一个就开始读第二个了,后边的几条回答都是如此,每条回答都无法读完整,这个拆分功能是不是叫流式响应?
如果openai回答不长,程序就不会拆分,小爱音箱只读1条的情况下就能将句子读完。
检查一下你用的是不是最新的 2.0.0 版本,新版本有尝试修复这个问题。
是最新2.0.0版本,型号L05C,录音记录链接:https://pan.baidu.com/s/1yOhf3MPLXnAKOpV9RI1lsQ
提取码:mafd

问题在于现在 TTS 是按句分段去读的,要等到第一句播放完再播放下一句,所以在下发 TTS 指令之后,会去检测当前设备的播放状态,此时拿到状态可能不是最新的,就会过早地判断为当前句子已经播放结束了。
那程序是否可以不对回答进行拆分
拆分是必要的:
- 小米音箱 TTS 一次的文字长度有上限。
- 等待 AI 返回全部回答再播放,会拉长每次提问的等待时间。
- 如果回复中存在敏感词,整个回答都会被驳回。
问题的关键在于,如何控制检测 TTS 播放是否开始/结束的时机,下个版本我再尝试优化下。
我在 v2.0.1 版本添加了一个 debug 开关,你把它打开看下日志。
// .migpt.js
export default {
speaker: {
// 打开调试开关
debug: true,
// ...
},
};
@lyddias 更新到 v2.1.0 版本,试试看。
// .migpt.js
export default {
speaker: {
// 打开调试开关
debug: true,
// 查询是否在播放中指令,请到 https://home.miot-spec.com 查询具体指令
playingCommand: [3, 1, 1], // L05C
// ...
},
};
经过测试,当前音箱型号通过 MioT 接口(L05C,3,1)获取设备播放状态值时,返回错误 code 如下:
-704220043 Property value invalid
此问题源自小米 MioT 后端处理状态值异常,需要等待小米官方修复后才能继续使用。
总结:小米音箱 Play 增强版 (L05C) 大部分 MioT 接口都无法调用,要想体验更完整的智能家居生态,慎入。相关 issue:
注:我的小米音箱 Play (L05B) 也遇到了这个问题,应该是整个L05系列都有类似的问题
确实能回答完整了,但是每次问问题的时候,小爱同学会先说几个字,是设置问题吗
@wangqiang1988 与本项目的实现原理有关,目前无法完美避免出现这个问题。具体可以查看此处的说明:#24
@wangqiang1988 与本项目的实现原理有关,目前无法完美避免出现这个问题。具体可以查看此处的说明:#24
有没有可能唤醒小爱的时候,直接mute掉小爱,然后等tts ai的答案后再开启呢
有没有可能唤醒小爱的时候,直接mute掉小爱,然后等tts ai的答案后再开启呢
默认就是这种运行方式呢。问题在于小爱音箱上报状态到云端存在延迟。从服务端拉取到小爱消息的时候,小爱已经开始在说话了,这个时候再 mute 小爱已经能够察觉到了。
mac 系统 无法修改文件名为.env文件 怎么办
看看小爱音箱有没有新固件可以升级
我现在的设备固件版本是 1.88