idootop / mi-gpt

🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。
MIT License
7.77k stars 784 forks source link

小爱音箱并未转达chatgpt的回答 #5

Closed lyddias closed 5 months ago

lyddias commented 5 months ago

在docker交互日志上,程序已经成功调用chatgpt并且gpt已经给出回答,但小爱音箱并未读出回复内容,请问下可能是什么原因呢?

lyddias commented 5 months ago

是否在配置文件中加入tts: "xiaoai"就可以了?

idootop commented 5 months ago

你说的这个问题有以下几种可能:

  1. 小米 TTS 有敏感词检测,一些敏感回答会被拦截
  2. 小米 IoT 后端收到 tts 指令后,没有透传给本地设备
  3. 本地设备收到 tts 指令后没有正常播放(指令错乱)
  4. 你的设备不支持默认的 TTS 指令

其中,因为敏感词被拦截的可能性很大。

其次是因为指令错乱小爱音箱没有正确执行,此时可以重启设备试试看。

如果是每个回答都没有正确播放,则可能是你的设备不支持默认的 TTS 指令。

考虑 fork 本项目修改 TTS 指令,或自己实现 TTS 接口,接入百度,微软等 TTS 服务(本项目暂不提供第三方 TTS 的支持)

是否在配置文件中加入tts: "xiaoai"就可以了?

默认就是使用小米自带的 TTS

idootop commented 5 months ago

可以参考以下 issue:

lyddias commented 5 months ago

我的型号确实是L05C

idootop commented 5 months ago

等等吧,这两天有空我会加上一个使用 command 发送 TTS 指令的选项。

或者你动手能力强的话,也可以自己直接修改源码,欢迎 PR。

idootop commented 5 months ago

@lyddias 1.2.0 版本添加了 TTS 命令配置选项,你可以在这个网站上查询具体指令参数:https://home.miot-spec.com

// .mi-gpt.js
export default {
  speaker: {
    // ...
    ttsCommand: [5, 3], // L05C
    wakeUpCommand: [5, 1], // L05C
  },
  // ...
};
lyddias commented 5 months ago

好的,谢谢!

Ruiyuan-Zhang commented 5 months ago

@lyddias 1.2.0 版本添加了 TTS 命令配置选项,你可以在这个网站上查询具体指令参数:https://home.miot-spec.com

// .mi-gpt.js
export default {
  speaker: {
    // ...
    ttsCommand: [5, 3], // L05C
    wakeUpCommand: [5, 1], // L05C
  },
  // ...
};

这个具体怎么查呢?比如说下面这个型号。 https://home.miot-spec.com/s/xiaomi.wifispeaker.l17a

Ruiyuan-Zhang commented 5 months ago

是这个吗 https://home.miot-spec.com/spec?type=urn:miot-spec-v2:device:speaker:0000A015:xiaomi-l17a:1

idootop commented 5 months ago

@Ruiyuan-Zhang 你的这个设备分别对应是 [7, 3] 和 [7, 1],文档 FAQ里有图片教程。

Ruiyuan-Zhang commented 5 months ago

@Ruiyuan-Zhang 你的这个设备分别对应是 [7, 3] 和 [7, 1],文档 FAQ里有图片教程。

好的,谢谢。

另外,目前是还没有可以终止 “比较长的语音” 这个Action的是吧。 因为我问了gpt一个问题,我不想继续听了,似乎没有中指的操作

idootop commented 5 months ago

重新唤醒小爱同学,随便说句话即可打断正在回复的内容。

Ruiyuan-Zhang commented 5 months ago

重新唤醒小爱同学,随便说句话即可打断正在回复的内容。

不行诶,我重新唤醒之后。他回答完还会继续讲上一个没回答完的问题。

比如:我问他什么是扩散模型?他会说一大堆,然后我在他说话的时候打断他问他1+1等于多少。他首先回答我2,然后再继续说上一个问题的回答

日志可以看看:

2024/06/03 02:48:13 Speaker ✅ 服务已启动...
2024/06/03 02:48:19 Speaker 🔥 请扩散模型是什么
2024/06/03 02:48:28 Speaker 🔥 请问扩散模型是什么
2024/06/03 02:48:29 Speaker 🔊 请稍等
2024/06/03 02:48:32 Speaker 🐛 {"playState":0}
2024/06/03 02:48:35 Speaker 🔊 扩散模型(Diffusion Model)是一类生成模型,它们通过模拟扩散过程来生成数据。
2024/06/03 02:48:38 Open AI ✅ Answer: 扩散模型(Diffusion Model)是一类生成模型,它们通过模拟扩散过程来生成数据。基本过程包括两步:

1. **正向扩散(Forward Diffusion):** 从真实数据逐渐添加噪声,直到数据变成纯随机噪声。这一步反向模拟自然界中的扩散过程。

2. **反向扩散/生成(Reverse Diffusion/Generation):** 从纯随机噪声开始,逐步去除噪声,恢复到类似真实数据的状态。这一步则模拟了从噪声到结构化数据的生成过程。

这种方法在图像生成等任务中表现突出,比如“Denoising Diffusion Probabilistic Models(DDPM)”就是一个典型例子,它通过从噪声到图像的反向扩散过程生成高质量图像。

如果你对某个具体的扩散模型、应用场景或者相关的论文感兴趣,我可以给你更多详细信息哦!
2024/06/03 02:48:39 Speaker 🐛 {"playState":1}
2024/06/03 02:48:40 Speaker 🐛 {"playState":1}
2024/06/03 02:48:41 Speaker 🐛 {"playState":1}
2024/06/03 02:48:42 Speaker 🐛 {"playState":1}
2024/06/03 02:48:44 Speaker 🐛 {"playState":0}
2024/06/03 02:48:45 Speaker 🔊 基本过程包括两步:
1. **正向扩散(Forward Diffusion):** 从真实数据逐渐添加噪声,直到数据变成纯随机噪声。这一步反向模拟自然界中的扩散过程。
2024/06/03 02:48:48 Speaker 🔥 请问1+1等于几
2024/06/03 02:48:48 Speaker 🐛 {"playState":0}
2024/06/03 02:48:49 Speaker 🔊 让我先想想
2024/06/03 02:48:50 Speaker 🔊 2. **反向扩散/生成(Reverse Diffusion/Generation):** 从纯随机噪声开始,逐步去除噪声,恢复到类似真实数据的状态。
2024/06/03 02:48:52 Speaker 🐛 {"playState":1}
2024/06/03 02:48:53 Speaker 🐛 {"playState":1}
2024/06/03 02:48:53 Speaker 🐛 {"playState":1}
2024/06/03 02:48:54 Speaker 🐛 {"playState":1}
2024/06/03 02:48:54 Speaker 🐛 {"playState":1}
2024/06/03 02:48:55 Speaker 🐛 {"playState":1}
2024/06/03 02:48:56 Speaker 🐛 {"playState":1}
2024/06/03 02:48:57 Speaker 🐛 {"playState":1}
2024/06/03 02:48:57 Speaker 🐛 {"playState":1}
2024/06/03 02:48:58 Speaker 🐛 {"playState":1}
2024/06/03 02:48:58 Speaker 🐛 {"playState":1}
2024/06/03 02:48:59 Speaker 🐛 {"playState":1}
2024/06/03 02:48:59 Speaker 🐛 {"playState":1}
2024/06/03 02:49:00 Speaker 🐛 {"playState":0}
2024/06/03 02:49:01 Speaker 🐛 {"playState":0}
2024/06/03 02:49:02 Speaker 🔊 这一步则模拟了从噪声到结构化数据的生成过程。
2024/06/03 02:49:05 Speaker 🐛 {"playState":1}
2024/06/03 02:49:06 Speaker 🐛 {"playState":1}
2024/06/03 02:49:06 Open AI ✅ Answer: 1+1等于2。这是基本的数学知识哦。如果你有其他问题或需要讨论更多的内容,尽管告诉我,我很乐意帮忙!
2024/06/03 02:49:07 Speaker 🔊 1+1等于2。这是基本的数学知识哦。如果你有其他问题或需要讨论更多的内容,尽管告诉我,我很乐意帮忙!
2024/06/03 02:49:07 Speaker 🐛 {"playState":1}
2024/06/03 02:49:09 Speaker 🐛 {"playState":1}
2024/06/03 02:49:10 Speaker 🐛 {"playState":1}
2024/06/03 02:49:10 Speaker 🐛 {"playState":1}
2024/06/03 02:49:11 Speaker 🐛 {"playState":1}
2024/06/03 02:49:11 Speaker 🐛 {"playState":1}
2024/06/03 02:49:13 Speaker 🐛 {"playState":1}
2024/06/03 02:49:13 Speaker 🐛 {"playState":1}
2024/06/03 02:49:14 Speaker 🐛 {"playState":1}
2024/06/03 02:49:14 Speaker 🐛 {"playState":1}
2024/06/03 02:49:15 Speaker 🐛 {"playState":1}
2024/06/03 02:49:15 Speaker 🐛 {"playState":1}
2024/06/03 02:49:16 Speaker 🐛 {"playState":1}
2024/06/03 02:49:16 Speaker 🐛 {"playState":1}
2024/06/03 02:49:18 Speaker 🐛 {"playState":0}
2024/06/03 02:49:18 Speaker 🐛 {"playState":0}
2024/06/03 02:49:18 Speaker 🔊 我说完了
2024/06/03 02:49:19 Speaker 🔊 这种方法在图像生成等任务中表现突出,比如“Denoising Diffusion Probabilistic Models(DDPM)”就是一个典型例子,它通过从噪声到图像的反向扩散过程生成高质量
2024/06/03 02:49:21 Speaker 🐛 {"playState":1}
2024/06/03 02:49:22 Speaker 🐛 {"playState":1}
2024/06/03 02:49:22 Speaker 🐛 {"playState":1}
2024/06/03 02:49:23 Speaker 🐛 {"playState":1}
2024/06/03 02:49:24 Speaker 🐛 {"playState":1}
2024/06/03 02:49:25 Speaker 🐛 {"playState":1}
2024/06/03 02:49:25 Speaker 🐛 {"playState":1}
2024/06/03 02:49:26 Speaker 🐛 {"playState":1}
2024/06/03 02:49:26 Speaker 🐛 {"playState":1}
2024/06/03 02:49:27 Speaker 🐛 {"playState":1}
2024/06/03 02:49:27 Speaker 🐛 {"playState":1}
2024/06/03 02:49:28 Speaker 🐛 {"playState":1}
idootop commented 5 months ago

@Ruiyuan-Zhang 多谢反馈,长回答无法被终止的问题已修复。此修复随下一个版本更新,大概今晚我会再发一个版本。

idootop commented 5 months ago

@Ruiyuan-Zhang v3.0.0 版本已发布,修复了长回答无法被终止的问题。

JefferWong commented 5 months ago

找不到设备:小爱音箱 找不到设备:小爱音箱 2024/06/05 16:29:14 Speaker ❌ 初始化 Mi Services 失败 2024/06/05 16:29:14 database ❌ Error: ❌ Assertion failed at _LoggerManager.assert (C:\Users\yaoyi\mi-gpt\dist\index.cjs:237:13) at __Logger.assert (C:\Users\yaoyi\mi-gpt\dist\index.cjs:274:19) at AISpeaker.initMiServices (C:\Users\yaoyi\mi-gpt\dist\index.cjs:449:17) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async AISpeaker.run (C:\Users\yaoyi\mi-gpt\dist\index.cjs:693:5) at async main (file:///C:/Users/yaoyi/mi-gpt/app.js:6:3)

Ruiyuan-Zhang commented 5 months ago

@Ruiyuan-Zhang v3.0.0 版本已发布,修复了长回答无法被终止的问题。

收到,辛苦!!!

idootop commented 5 months ago

@JefferWong 打开米家看看你的小爱音箱叫什么,需要填写完整名称注意空格(比如:小爱音箱Pro)。另外,在海外服务器等非中国大陆网络环境下,也有可能会导致设备列表获取失败。 telegram-cloud-photo-size-5-6269166936961171135-y