Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于使用过程中遇到的问题补充 #28

Closed
shaoyi1991 opened this issue Jun 6, 2024 · 11 comments
Closed

关于使用过程中遇到的问题补充 #28

shaoyi1991 opened this issue Jun 6, 2024 · 11 comments

Comments

@shaoyi1991
Copy link

作者少写了一些关键点,可能这些关键点对于经常用的都是常识,对于没用过的可能就理解不来。
我补充两点:
1、docker部署
通过docker获取镜像后,同时需要将代码 clone到本地(主要目的是clone两个需要修改的配置文件),修改本地的配置文件后,使用作者写的启动命令直接启动即可。pwd是文件所属路径,不识别的话,可以用两个配置文件的绝对路径执行。
2、使用方式
项目运行后,按正常理解是先唤醒,比如“召唤小爱”,实际应该是先普通唤醒“小爱同学”,然后再“召唤小爱” 进入 AI 唤醒状态,或者 “傻妞,介绍下中国近代史”来调用 AI 来回复消息。

我遇到的使用问题(我用的小爱触屏音箱(LX04)):
1、看指令,是支持查询播放状态的,但是如果 streamResponse: true,效果不好。
回复内容较长时,会分段回复,并且每一段都只讲部分就继续一下段(应该是触发了作者的轮询逻辑)
2、回答完后,无法继续提问。需要重新唤醒。 “小爱同学”>"请介绍下xxx"
3、如果 streamResponse: false,则不需要唤醒进入AI 唤醒状态,体验效果会好些。 可以将回答全部播放。下一次对话前仍需要通过“小爱同学”唤醒,然后“请介绍下李白。”

建议作者可以将实现逻辑图画下,能方便理解问题出在哪里?

猜测大概顺序:
1、“小爱同学” 设备本身唤醒,不可避免。
2、“召唤xx”进入AI 唤醒状态,可以通过streamResponse: false,省略。
3、“请介绍xxx”,会调用 AI 来回复消息。

使用实际情况是,进入AI 唤醒状态 这个属性没有用。

@idootop
Copy link
Owner

idootop commented Jun 6, 2024

多谢补充,讲解的很细致。

AI 唤醒状态的运行流程大致如下:

  1. 通过唤醒词进入唤醒模式,比如:打开豆包,召唤豆包等。
  2. 当 AI 开始流式响应时,根据合适的长度 chunk 句子片段,调用 TTS 指令播放句子。
  3. 下发完 TTS 指令后,默认会等待 3s ,然后轮询查询接口检查当前设备是否在播放中。
  4. 当设备停止播放时,说明上一句已经 TTS 结束了,继续 TTS 播放下一句 AI 回复。
  5. 当在播放 AI 回复时,如果收到了新的用户消息,则终止当前的后续回复,处理新的用户消息。
  6. 当全部回复播放完毕后,会调用 wakeUpCommand 主动唤醒小爱,使其可以持续对话,省去了每一句都需要以“小爱同学”开头唤醒的麻烦。不过需要注意的是,这个唤醒是有时效的,当小爱回复说完了的时候,大概 10s 之内都可以正常继续回答,时间过久小爱也会自己取消唤醒状态。
  7. 如果当前 AI 没有正在回复,则通过循环播放静音音频 mute 小爱可能会随时会出现的回复。
  8. 当超过一段时间没有新对话产生时,会自动退出唤醒状态(也可以通过退出关键词手动触发)。

@idootop
Copy link
Owner

idootop commented Jun 6, 2024

回复内容较长时,会分段回复,并且每一段都只讲部分就继续一下段

这种情况有两种可能:

  1. 下发 TTS 指令后,小爱音响设备只 TTS 出了前面一部分文字,后面的没有出来。
  2. 在下发 TTS 指令 3s 后,查询小爱音箱播放状态的时候,查询失败或者返回状态为 idel(尚未开始 TTS)

可以打开 speaker 下面的 debug 选项,查看具体的请求响应日志,判断分析是何原因造成的。

// .migpt.js
export default {
  speaker: {
    // 打开调试日志输出
    debug: true,
    // ...
  },
};

@shaoyi1991
Copy link
Author

我开了debug模式。
1717658845639
唤醒 和 不唤醒,效果是一样的。

@idootop
Copy link
Owner

idootop commented Jun 6, 2024

获取设备播放状态失败了。你可以试试打开或注释掉 playingComannd 能否获取成功,如果都不成功,说明这个型号也不支持获取设备播放状态,只能关闭唤醒模式来用了。

@AetosWu
Copy link

AetosWu commented Jun 6, 2024

图片
问题同上。
设备型号:LX06(小爱音箱Pro)
当注释掉playingComannd后可以正常运行。
当将playingComannd设置为“[3, 1, 1]”时,我观察到执行了小爱同学的Play动作而非查询播放状态,因为听到了音乐(虽然被打断/静音了)。
以下是LX06的调用说明。
图片
望修复。

@idootop
Copy link
Owner

idootop commented Jun 6, 2024

@AetosWu 1. playingCommand 是当默认配置(不设置 playingCommand)获取不到设备播放状态时,再去尝试填写的,LX06 使用默认配置开箱即用,不需要填写这个属性。2. playingCommand 对于显示 play-state 属性只有通知权限的设备来说是无效的,因为没有读取权限。

@hodrag
Copy link

hodrag commented Jun 6, 2024

我使用群晖拉取docker镜像安装,无法启动。请问群晖中怎么指定那两个配置文件?

@idootop
Copy link
Owner

idootop commented Jun 6, 2024

@hodrag 没用过群晖,你可以在网上搜搜看,应该支持自定义启动参数的(或者对应配置环境变量和文件指定路径挂载功能)。

@delury
Copy link

delury commented Jun 6, 2024

2024/06/07 07:17:19 stdout > node ./app.js
2024/06/07 07:17:19 stdout > mi-gpt@3.0.0 start
2024/06/07 07:17:19 stdout
2024/06/07 07:16:52 stdout �[1G�[0K\�[1G�[0K
2024/06/07 07:16:52 stdout �[1mnpm�[22m �[96mnotice�[39m
2024/06/07 07:16:52 stdout �[1mnpm�[22m �[96mnotice�[39m To update run: �[4mnpm install -g npm@10.8.1�[24m
2024/06/07 07:16:52 stdout �[1mnpm�[22m �[96mnotice�[39m Changelog: �[34mhttps://github.com/npm/cli/releases/tag/v10.8.1�[39m
2024/06/07 07:16:52 stdout �[1mnpm�[22m �[96mnotice�[39m New �[33mminor�[39m version of npm available! �[33m10.7.0�[39m -> �[34m10.8.1�[39m
2024/06/07 07:16:52 stdout �[1G�[0K\�[1G�[0K�[1mnpm�[22m �[96mnotice�[39m
2024/06/07 07:16:52 stdout at async main �[90m(file:///app/�[39mapp.js:6:3�[90m)�[39m
2024/06/07 07:16:52 stdout at async AISpeaker.run �[90m(/app/�[39mdist/index.cjs:695:5�[90m)�[39m
2024/06/07 07:16:52 stdout at AISpeaker.initMiServices �[90m(/app/�[39mdist/index.cjs:451:17�[90m)�[39m
2024/06/07 07:16:52 stdout at __Logger.assert �[90m(/app/�[39mdist/index.cjs:276:19�[90m)�[39m
2024/06/07 07:16:52 stdout at _LoggerManager.assert �[90m(/app/�[39mdist/index.cjs:239:13�[90m)�[39m
2024/06/07 07:16:52 stdout 2024/06/06 23:16:52 database ❌ Error: ❌ Assertion failed
2024/06/07 07:16:52 stdout 2024/06/06 23:16:52 Speaker ❌ 初始化 Mi Services 失败
2024/06/07 07:16:51 stdout 找不到设备:795643464

群晖docker启动

@idootop
Copy link
Owner

idootop commented Jun 7, 2024

@delury 提示找不到设备,大多数情况是填写的小米设备did有误。打开米家看看你的小爱音箱叫什么,需要填写完整名称注意空格(比如:小爱音箱Pro),相关问题:#5 (comment)

image

@idootop
Copy link
Owner

idootop commented Jun 7, 2024

此 issue 下面不再接受其他问题的反馈,有问题请开新 issue。

Repository owner locked and limited conversation to collaborators Jun 7, 2024
@idootop idootop closed this as completed Jun 11, 2024
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants