当前位置: 首页 > 分享发现 > 成了!将小爱音箱接入ChatGPT

成了!将小爱音箱接入ChatGPT

发布于:2024-4-12 分享发现 0条评论 1,313 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

xiaoz在一个朋友推荐下了解到xiaogpt这个项目,xiaogpt可以将家里的小爱音箱接入ChatGPT、ChatGLM等大模型,从而让小爱音箱变得更加智能。

1264da806ff51a87.png

目前xiaoz已成功将家里的小米AI音箱一代接入到ChatGPT,大家可以通过下方的B站链接查看效果,如果有用,别忘记一键三联哦。

开始之前

此教程略微复杂,不适合新手小白,推荐有一定开发基础的IT从业人员尝试,开始之前,您需要准备:

  • 小爱音箱并开启蓝牙功能
  • 魔法上网工具
  • ChatGPT或ChatGLM API SK
  • 一台长期运行的内网服务器,比如NAS设备
  • 一台内网Windows电脑
  • 熟悉基本的Python编程语言

获取小米音响DID

xiaogpt需要依赖小米音响DID,这样才能控制和通讯,我们要先用到miservice_fork这个工具,该工具使用Python开发,因此您的电脑需要先安装Python 3,xiaoz是在自己Windows电脑上操作(任意内网电脑设备均可),至于如何安装Python 3建议通过网络搜索。

# 安装miservice_fork
pip install miservice_fork
# 设置小米用户名
set MI_USER=xxxx
# 设置小米账号的密码
set MI_PASS=xxx
# 得到DID
micli list

结果如下图所示,找到小爱音箱的DID号码,并记录下来。

74355bf72401c977.png

Docker安装xiaogpt

在安装之前,我们需要先创建xiaogpt配置文件config.json,xiaoz使用的配置文件如下:

{
        "openai_key":"sk-xxx",
    "api_base":"https://xxx.com/v1",
        "hardware":"S12A",
        "mute_xiaoai": true,
        "account": "xxx",
        "password":"xxx.",
        "mi_did":"xxx",
        "bot": "chatgptapi",
    "tts": "mi",
        "prompt": "你的名字叫xxx,今年18岁,是一个人工智能助手,你的主人叫xiaoz,你的回答尽量简明扼要,回答总数不能超过150字。",
        "keyword": [
                "请"
        ],
        "stream": true
}

配置参数含义如下:

  • openai_key:OpenAI提供的SK,由于国内网络无法直接访问OpenAI API,可尝试使用第三方的OpenAI API中转服务
  • api_base:由于xiaoz使用的第三方OpenAI API中专服务,所以这里的接口域名需要改成第三方的域名,末尾需要带上v1
  • hardware:在小爱音箱屁股上有型号,输入进来,如果在屁股上找不到或者型号不对,可以用 micli mina 找到型号
  • mute_xiaoai:启用中断服务,就是不让小爱自身的回答说完,然后让ChatGPT去接管,不启用的话每次都要等小爱先回答完毕
  • account:小米账户的用户名
  • password:小米账户的密码
  • mi_did:上面得到的DID
  • bot:使用哪个API接口
  • tts:默认mi就是小爱原生音色回答,也可以使用Edge TTS,但是xiaoz测试Edge TTS非常不稳定
  • prompt:提示词,可以自己修改
  • keyword:触发的关键词
  • stream:开启后效率更好

关于hardware的获取

xiaoz使用的小米音箱一代,底部显示的是MDZ-25-DA,这个型号xiaogpt是识别不了的。

60a483db0c73b50c.png

您可能需要修改为S12A/S12/L07A,总之挨个修改尝试一下。

然后继续使用Docker Compose进行安装,推荐安装到NAS上,xiaoz的完整的docker-compose.yaml内容如下:

version: '3.8'
services:
 xiaogpt:
   image: yihong0618/xiaogpt
   volumes:
     - ./config:/config
   ports:
     - "9527:9527"
   restart: always
   command: --config=/config/config.json
   container_name: xiaogpt

./config自己改成您配置文件的目录,比如您的配置文件位于./config/config.json,那么就填写./config,然后输入docker-compose up -d进行启动。

如果一切顺利,尝试唤醒小爱同学后,加上字就可以触发ChatGPT,如上面的视频所示。

接入ChatGLM

如果您无法解OpenAI访问问题,并且也没找到合适的OpenAI中转服务,可以尝试接入国内大模型ChatGLM:https://open.bigmodel.cn/,在智谱AI后台获取SK后填写到配置文件中,使用ChatGLM的配置参考如下:

{
        "glm_key":"xxx",
        "hardware":"S12A",
        "mute_xiaoai": true,
        "account": "xxx",
        "password":"xxx.",
        "mi_did":"xxx",
        "bot": "glm",
        "tts": "mi",
        "use_glm": true,
        "prompt": "回答不能超过200字",
        "keyword": [
                "请"
         ],
         "stream": true
}

错误排查

如果触发小爱同学后,加上“请”字没效果,可使用docker logs xiaogpt查看容器日志,如果出现Exception: we have no hardware: S12A please check这样的错误,可能并不是hardware写错了,也可能是其他配置参数错误,总之按个参数都检查下。

实际体验

目前来说通过xiaogpt将小爱音箱接入ChatGPT并不算很完美,但却扩展了小爱音箱的玩法,让小爱音箱变得更加有趣和智能,有条件的朋友还是值得一试。

xiaoz实际体验后发现存在以下问题:

  • 每次对话,小爱会先抢答部分,然后再由ChatGPT接管
  • 如果启用Edge TTS,会非常不稳定,经常无法输出音频或或者响应慢的情况,建议默认用小爱内置语音
  • 连续对话存在BUG,可能导致无法完全退出连续对话

总结

在使用xiaogpt将小爱音箱接入ChatGPT过程中,注意以下问题:

  • 小爱音箱需要开启蓝牙
  • 安装miservice_fork获取正确的DID号码
  • 通过查看音箱底部获取hardware编号,如果是一代设备,可尝试填写:S12A/S12/L07A
  • 国内网络无法正确访问OpenAI API,可以考虑第三方OpenAI中转服务,或者接入ChatGLM

xiaogpt项目地址:https://github.com/yihong0618/xiaogpt ,感谢作者的贡献。

另外xiaoz建了一个NAS用户交流群,有兴趣的可微信扫码加入。

4d46cac8d56d7b26.png


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注