【教程】让小爱音箱Play增强版接入Mi-GPT

news2024/10/6 20:30:02

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]

如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~


项目地址:https://github.com/idootop/mi-gpt

MiIOT:小米小爱音箱Play 增强版 - 产品规格 - Xiaomi Miot Spec

实现效果图:

1、安装pnpm

sudo apt-get install -y nodejs
sudo npm install -g pnpm@latest

2、下载工程源码

git clone https://kkgithub.com/idootop/mi-gpt.git

3、修改配置文件

  • 把 .migpt.example.js 改为 .migpt.js
  • 把 .env.example 改为 .env

        在 .env.json 中填写OpenAI Key:

OPENAI_MODEL=gpt-3.5-turbo
OPENAI_API_KEY=sk-SOxxxx
# 注意URL后面不需要带 chat/completions
OPENAI_BASE_URL=xxxxxx

        在 .migpt.js中填写小米ID等信息:

speaker: {
    // 小米 ID
    // 注意这里改成你的!!!
    userId: "xxxx", // 注意:不是手机号或邮箱,请在「个人信息」-「小米 ID」查看
    // 账号密码
    // 注意这里改成你的!!!
    password: "xxxx",
    // 小爱音箱 ID 或在米家中设置的名称
    did: "小爱音箱Play增强版",
    // 当消息以下面的关键词开头时,会调用 AI 来回复消息
    callAIKeywords: ["请", "你", "傻妞"],
    // 当消息以下面的关键词开头时,会进入 AI 唤醒状态
    wakeUpKeywords: ["打开", "进入", "召唤"],
    // 当消息以下面的关键词开头时,会退出 AI 唤醒状态
    exitKeywords: ["关闭", "退出", "再见"],
    // 进入 AI 模式的欢迎语
    onEnterAI: ["你好,我是傻妞,很高兴认识你"],
    // 退出 AI 模式的提示语
    onExitAI: ["傻妞已退出"],
    // AI 开始回答时的提示语
    onAIAsking: ["让我先想想", "请稍等"],
    // AI 结束回答时的提示语
    onAIReplied: ["我说完了", "还有其他问题吗"],
    // AI 回答异常时的提示语
    onAIError: ["啊哦,出错了,请稍后再试吧!"],
    // 无响应一段时间后,多久自动退出唤醒模式(默认 30 秒)
    exitKeepAliveAfter: 30,
    // TTS 指令,https://home.miot-spec.com/spec/xiaomi.wifispeaker.l05c
    // 注意改成这个!!!
    ttsCommand: [5, 3],
    // 设备唤醒指令,https://home.miot-spec.com/spec/xiaomi.wifispeaker.l05c
    // 注意改成这个!!!
    wakeUpCommand: [5, 1],
    // 是否启用流式响应,部分小爱音箱型号不支持查询播放状态,此时需要关闭流式响应
    // 注意不要开启!!!
    streamResponse: false,
    // 查询是否在播放中指令
    // 注意不要开启!!!
    // playingCommand: [3, 1, 1],
  },

4、编译项目

cd mi-gpt
pnpm install && pnpm build

5、启动项目

node --env-file=.env app.js

        保持程序运行,可参考使用nohop或者screen。

6、用法(语音命令顺序):

  • 小爱同学
  • 你 在干什么
  • 小爱同学
  • 召唤傻妞

7、注意事项:

  • Windows上运行可能会有点问题。
  • Docker需要魔法,反正我是一直没pull下来。
  • 小爱同学会抢答一两个字,属于正常情况,刷机可解决这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1806989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ABC 357 G Stair-like Grid

link 其实是我之前写的一篇博客的推广 大意: 一个阶梯型,第 i i i行有 ⌈ i / 2 ⌉ ∗ 2 \left \lceil i/2 \right \rceil*2 ⌈i/2⌉∗2个方块,总共有n行。在其中给定 m m m个点无法经过,求从左上角到右下角的方案数。其中每次移…

macOS优化工具CleanMyMac2024免费版电脑性能提升 存储空间释放 电脑维护 高效易用 延长电脑使用寿命

【CleanMyMac】是一款专为macOS系统设计的优化和清理软件,它的核心特性就是帮助我们提升电脑性能,释放存储空间。🚀 CleanMyMac绿色免费版下载如下:记得保存哈,以防失效: https://pan.quark.cn/s/9b08114…

【电机控制】FOC算法验证步骤

【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…

Spring03-依赖注入(DI)

依赖注入 概念 依赖注入(Dependency Injection,DI)。 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 . 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 构造器注入 前面已经介绍过,参考4、IOC创建对象的方式 Set方…

2024最新华为OD机试-C/D卷 - 在线OJ使用说明

文章目录 🪐在线 OJ 入口🎧申请OD使用权限🍓在线 OJ 的使用说明OJ主界面专题系列语言支持评测结果 🪐在线 OJ 入口 🔗 2024最新华为OD机试 - 在线OJ入 🎧申请OD使用权限 本专栏配套 OJ 的为了配合考友更高…

Vue数据动态代理机制的实现

Object.defineProperty() (1)这个方法是ES5新增的 (2)这个方法的作用是:给对象新增属性,或者设置对象原有的属性 (3)用法:Object.defineProperty(给哪个对象新增属性,‘…

【简单介绍下DALL-E2,什么是DALL-E2?】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Functional ALV系列 (09) - 双击跳转到另外一个ALV

在查看数据的时候,不总是只有一个界面,为了让用户更方便地查看数据,需要根据当前的数据跳转到另外的界面中,比如查看明细等。本文演示 ALV 比较实用的功能:双击 ALV 单元格跳转到另外一个 ALV 中。 要实现的业务场景&…

Diffusers代码学习: 多个Adapter

T2I Adapter也是可组合的,允许您使用多个适配器对图像施加多个控制条件。例如,可以使用姿势贴图提供结构控制,使用深度贴图进行深度控制。这是由[MultiAdapter]类启用的。 让我们用姿势和深度适配器来调节文本到图像的模型。创建深度和姿势图…

树状数组的基础

树状数组1 树状数组可以解决什么问题呢? 可以解决大部分区间上面的修改以及查询的问题,例如1.单点修改,单点查询,2.区间修改,单点查询,3.区间查询,区间修改,换言之,线段…

大模型应用工程化过程

近年来,以人工智能为代表的新一代信息技术加速应用,特 别是基于大模型、大数据、大算力的 ChatGPT 的发布,标志着人 工智能技术取得里程碑式突破,推动科技创新进入新阶段。随着 大模型技术的迅猛发展和场景价值的不断涌现&#xf…

React:Expected property name or ‘}‘ in JSON at position 1

代码&#xff1a; import { Form, Input, Button } from antd export default function FormCom() {function onFinish(a, b, c, d) {console.log(a, b, c, d)}const describe "{tip:请输入用户名}"return (<><Form onFinish{onFinish}><Form.Itemn…

C++面试八股文:static和const的关键字有哪些用法?

100编程书屋_孔夫子旧书网 某日二师兄参加XXX科技公司的C工程师开发岗位第7面&#xff1a; 面试官&#xff1a;C中&#xff0c;static和const的关键字有哪些用法? 二师兄&#xff1a;satic关键字主要用在以下三个方面&#xff1a;1.用在全局作用域&#xff0c;修饰的变量或者…

嵌入式学习——Linux高级编程复习(进程)——day39

1. 进程 进程是计算机科学中的一个核心概念&#xff0c;它是操作系统进行资源分配和调度的基本单位&#xff0c;代表了一个正在执行中的程序实例。当一个程序被加载到内存并开始执行时&#xff0c;它就变成了一个进程。 1. 程序&#xff1a;存放在外存中的一段代码的集合 2. 进…

HTML标签 label for 还是 htmlFor

文章目录 问题结论更多 问题 HTML标签&#xff1a; label 的属性 for 还是 htmlFor&#xff1f; MDN文档&#xff1a;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label 结论 for 和 htmlFor 都可以使用&#xff0c;都是对的。在部分情况中&#xff0c;只能…

window wsl2的ubuntu如何配置代理获取docker image

最近两天&#xff0c;docker pull一直下不来docker image, 研究了下可以通过代理pull, 我的是window电脑下的linux子系统wsl2, 装的是ubuntu跑docker. # 创建/etc/systemd/system/docker.service.d路径 sudo mkdir -p /etc/systemd/system/docker.service.d # 创建 http-proxy…

C++设计模式-中介者模式,游戏对象之间的碰撞检测

运行在VS2022&#xff0c;x86&#xff0c;Debug下。 31. 中介者模式 中介者模式允许对象之间通过一个中介者对象进行交互&#xff0c;而不是直接相互引用。可以减少对象之间的直接耦合&#xff0c;同时集中化管理复杂的交互。应用&#xff1a;如在游戏开发中&#xff0c;可以使…

BERT+PET方式数据处理

基于BERTPET方式数据预处理介绍 BERTPET方式数据预处理&#x1f43e; 本项目中对数据部分的预处理步骤如下: 查看项目数据集编写Config类项目文件配置代码编写数据处理相关代码 1 查看项目数据集&#x1f43e; 数据存放位置&#xff1a;/Users/***/PycharmProjects/llm/prom…

Innodb Buffer Pool缓存机制(四)预读与Mysql改进的LRU策略

一、什么是预读 InnoDB提供了预读(read ahead)。所谓预读&#xff0c;就是InnoDB认为执行当前的请求可能之后会读取某些页面&#xff0c;就预先把它们加载到Buffer Pool中。根据触发方式的不同&#xff0c;预读又可以细分为下边两种&#xff1a; 1.1 线性预读 InnoDB提供了一…

Rust-02-变量与可变性

在Rust中&#xff0c;变量和可变性是两个重要的概念。 变量&#xff1a;变量是用于存储数据的标识符。在Rust中&#xff0c;变量需要声明其类型&#xff0c;例如&#xff1a; let x: i32 5; // 声明一个名为x的变量&#xff0c;类型为i32&#xff08;整数&#xff09;&#…