语音助手开发教程

注:本教程属于功能验证性质
思维导图:
在这里插入图片描述

1、搭建MQTT服务器(腾讯云为例)

  1. 购买云服务器,镜像选择为ubuntu系统,服务器的概要页面的网络信息栏中点击管理规则,自行添加8083、1883、18083端口,(详情查看EMQX的文档说明:链接,其中18083为web控制端:链接)。
  2. 设置云服务器的登陆密码,腾讯云的ubuntu默认不能使用root用户,需修改(参考:链接))。
  3. ssh连接云服务器,在emqx的文档中找到shell脚本安装命令(链接))安装完成后启动EMQX服务(后台启动:链接)。
  4. 浏览器中输入 服务器公网ip+:18083 访问,默认账户admin,密码public在设置中更换中文显示,点击工具栏的Websocket,点击连接。
  5. 打开MQTT.fx,新建连接,测试发送消息是否能成功接收。

2、购买域名并配置SSL证书到MQTT服务器

(该部分参考emqx的文档说明)

  1. 购买域名后添加域名解析(mqtt.域名),再在域名解析中添加解析记录,类型为TXT,验证…
  2. 下载证书,选择“其他”,解压出后缀为.key和.pem的两个文件,修改为mqtt.key,mqtt.pem,将两个文件复制到服务器的 /bin/etc/emqx/certs 目录下。
  3. 修改nano /etc/emqx/emqx.conf文件,在emqx文档中找到要修改的配置项(链接)):
  • listener.ssl.external.keyfile:指定SSL的私钥文件。
  • listener.ssl.external.certfile:指定SSL的证书文件。
  • listener.ssl.external.cacertfile:指定 SSL 的 CA 证书文件。

将文件名修改为mqtt.key,mqtt.pem,然后重启emqx服务。

3、esp8266测试

arduino代码:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>// WiFi
const char *ssid = "luobo"; //WiFi name
const char *password = "88888888";  //WiFi password// MQTT Broker
const char *mqtt_broker = "mqtt.luomingxiong.xyz"; //域名或IP地址
const char *topic = "esp8266/led";	//topic
const char *mqtt_username = "admin";	//默认为admin
const char *mqtt_password = "public";
const int mqtt_port = 1883;		//1883端口WiFiClient espClient;
PubSubClient client(espClient);void setup() {// Set software serial baud to 115200;Serial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);// connecting to a WiFi networkWiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.println("Connecting to WiFi..");}Serial.println("Connected to the WiFi network");//connecting to a mqtt brokerclient.setServer(mqtt_broker, mqtt_port);client.setCallback(callback);while (!client.connected()) {String client_id = "esp8266-client-";client_id += String(WiFi.macAddress());Serial.printf("The client %s connects to the public mqtt broker\n", client_id.c_str());if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {Serial.println("Public emqx mqtt broker connected");} else {Serial.print("failed with state ");Serial.print(client.state());delay(2000);}}// publish and subscribeclient.publish(topic, "hello emqx");client.subscribe(topic);
}void callback(char *topic, byte *payload, unsigned int length) {Serial.print("Message arrived in topic: ");Serial.println(topic);Serial.print("Message:");String message;for (int i = 0; i < length; i++) {message = message + (char) payload[i];  // convert *byte to string}Serial.print(message);if (message == "on") { digitalWrite(LED_BUILTIN, LOW); }   // LED onif (message == "off") { digitalWrite(LED_BUILTIN, HIGH); } // LED offSerial.println();Serial.println("-----------------------");
}void loop() {client.loop();
}

复制到arduino IDE,下载的esp8266中,通过Websocket测试(域名+:18083),主题为esp8266/led,发送on开灯,off关灯

4、Linux下QT导入MQTT模(源码移植)

参考:链接
测试程序:

  • 创建界面
  • 编写代码
    单击连接按钮的槽函数:
void Widget::on_connectBt_clicked()
{mqtt = new QMQTT::Client(QHostAddress(QString(ui->hostLe->text())),ui->portLe->text().toInt());connect(mqtt, SIGNAL(connected()), this, SLOT(mqtt_connect_success()));connect(mqtt, SIGNAL(disconnected()), this, SLOT(mqtt_disconnect()));connect(mqtt, SIGNAL(subscribed(QString,quint8)), this, SLOT(mqtt_sub_success()));connect(mqtt, SIGNAL(received(QMQTT::Message)), this, SLOT(mqtt_recv_msg(QMQTT::Message)));mqtt->setClientId("Qt-test0x10");	//客户端ID,任取mqtt->setUsername("admin");			//EMQx的默认用户名mqtt->setPassword("public");		//EMQx的默认密码mqtt->setCleanSession(true);mqtt->connectToHost(); //连接mqtt
}
  • 测试
    输入云服务器的ip地址、端口、主题,点击连接,订阅,发布:

    EMQx的后台连接:

    成功接收到“hello”

    完整工程代码:

5、Linux安装QT for Android

安装参考链接

需要注意的地方:

  • 版本尽量与参考链接里的保持一致,否则会有很多问题,特别是QT的版本
    多次尝试均失败后(一直报错:”All essential packages installed …“)。百度了一圈链接,原来是在某个文件中显示安装的安卓环境是只支持Qt5.12.[0-5]以及5.13.[0-1]的,而我原来用的版本是5.12.9,这点在官方文档中并没有说明。

  • 在配置环境变量的时候,如果修改后仍有问题,就在~/.bashrc中同样配置一次,并且执行source ~/.bashrc命令让配置生效。

  • 如果在打开安卓模拟器时提示/dev/kvm device:permission denied,参考链接解决。

6、esp8266与手机APP通信

手机APP测试:
在这里插入图片描述
手机APP的订阅主题与esp8266代码中保持一致,即可通过手机APP发送”on“,”off“控制LED灯亮灭。

7、语音唤醒及识别

  1. 硬件部分:使用夸克开发板(全志H3芯片,也可使用树莓派或者其他能运行ubuntu的开发板)。
  2. 软件部分:参考开源项目wukong-robot(链接)

8、“小爱同学”离线唤醒关键词训练

离线唤醒关键词的识别使用的是一个开源引擎叫snowboy,但官方在2021年之后就关闭了线上训练功能,因此需要把源码下载到自己的ubuntu系统中进行本地训练关键词模型。snowboy源码地址,详细步骤可参考github中的文档说明。

注意:在开发板上搭建训练的环境可能会报错,因此建议在电脑的ubuntu系统中搭建(一定要是16版本的)。搭建好后用开发板录制音频,然后通过电脑训练出模型。
[参考链接](snowboy本地模型训练 基于树莓派4b | Never的个人博客 (gitee.io))

9、wukong通过mqtt控制esp8266

  • wukong-robot的安装与配置参考文档。
  • esp8266的代码参考wukong-robot文档。

10、wukong-robot与app控制esp8266

  • 将订阅主题和发布主题修改为“开发板一”,发送“开灯”,“关灯”或者“on”,“off”即可控制esp8266的灯亮灭
  • 通过语音识别“开灯”,“关灯”也可控制灯亮灭。

11、通过hass控制小米、华为、苹果等智能家居设备

待补充。。。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我和程序员打了13年交道后,为什么做了缘创派?

可能很多朋友还不认识我&#xff0c;我叫闫辉&#xff0c;曾经在CSDN工作了十三年。做过《程序员》杂志记者&#xff0c;CTO俱乐部的产品和运营等等。 最初加入CSDN的时候&#xff0c;公司也就是10来个人&#xff0c;办公地点就在现在的鸟巢下面&#xff0c;那个地方当时叫利康…

【陈老板赠书活动 - 04期】- 【C++、Linux、算法等系列众书】

陈老老老板&#x1f9b8; &#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;与几分醉意.一起搞的赠书活动一次30本书哦&#xff01;&#xff01;…

腾讯云云函数收费?python脚本挂回自己路由一样玩

前言腾*宣布六月一日云函数开始收费。。。而且python脚本中无法使用xpath。。。搞了大半天放弃了&#xff0c;最终还是使用正则完成了代码&#xff0c;功能又不咋地&#xff0c;又要收费。。。还是挂到自己的路由上吧&#xff0c;想怎么样就怎么样&#xff0c;模块装好了没有坑…

钉钉:开放不是玩流量

钉钉&#xff0c;正在重新思考自己真正的价值——答案不是规模、不是流量、不是过去20年里消费互联网的“成熟”游戏规则&#xff0c;而是更能切实服务B端客户、帮助企业做好数字化。 作者|皮爷 出品|产业家 “过去一年如果给我打分数的话&#xff0c;有两件事肯定是做对的。…

使用科大飞讯语音合成报 20021 引擎错误

错误编码20021为引擎错误&#xff0c;是因为项目本身没有找到它的dll文件和so文件 解决方法&#xff1a; 将从官网下载的包中这4个文件放到项目根目录下 完美运行

基于QT平台webapi科大讯飞语音机器人2.0

本博是针对上一个版本的语音机器人更新&#xff0c;主要更新内容为对iat的支持&#xff0c;即使用语音交互取代文字输入的方式&#xff0c;由于之前忙于其他事情一直没来的及更新&#xff0c;以后会将语音机器人一直做下去&#xff0c;添加更多的功能和大家分享。 那么先来看看…

使用科大飞讯语音合成SDK报 20021 引擎错误

一、报错 在参考在Java中实现在线语音识别进行语音识别的时候&#xff0c;检查Jar包已经导入后&#xff0c;点击main运行&#xff0c;控制台报错20021如下 二、解决 如果没有Jar包和.os、.dll文件去官网https://www.xfyun.cn/sdk/dispatcher注册申请项目&#xff0c;然后免费…

飞讯管理员端的主页设计

首先创建一个web项目&#xff0c;由于需要使用react&#xff0c;则使用npm安装react与antd npm i react react-dom 然后在目录中可见 此两个文件夹 之后使用react需要将jsx翻译为js语句&#xff0c;使用babel。在页面中引入 <script src"https://unpkg.com/babel-…

基于QT平台webapi科大讯飞语音机器人

最近打算做一个语音识别&#xff0c;语义理解机器人方面的软件&#xff0c;于是了解了科大讯飞语音平台&#xff0c;平台大部分都是对Java的支持&#xff0c;对c和c的支持特别少&#xff0c;对c的支持有Windows的SDK&#xff0c;但是代码相对冗杂&#xff0c;且不支持跨平台&am…

基于阿里云微信小程序语音识别

页面效果 其中采用阿里云语音识别&#xff1a;阿里云一句话语音识别 语音识别页面 <template><view><view class"chat_list"><view v-for"v in chatList" :class"v.type right ? type_right : type_left"><chat …

飞讯管理员端群组部分完整版实现

群组概括信息页面&#xff1a; /GroupBrief 需要展示有关群组的概括信息&#xff0c;包括群组的组成占比&#xff0c;群组数量&#xff0c;不同群组的数量&#xff0c;均可视化展示 群组有六个种类 Public Work Meeting AVChatRoom Community Private 使用一个一维数组存储…

快速开发智能硬件,阿里云AIoT首期云端一体训练营开麦了

6月10号&#xff0c;阿里云AIoT面向智能硬件开发者发起首期云端一体物联网开发训练营&#xff0c;免费报名火热开启&#xff0c;为期5天干货详解&#xff0c;内容覆盖阿里云Cloud AIoT Native架构中多个核心产品&#xff0c;包括物联网平台、IoT Studio、HaaS开发板&#xff0c…

微信小程序+云函数+腾讯云对话机器人API(ChatBot)

文章目录 前言 一、小程序云开发是什么&#xff1f; 二、步骤 1. 在app.js中绑定好云环境id&#xff0c;并且选好当前环境以及选好云文件夹 2. 去到腾讯云API Explorer中选好Region地区和Query这个必填参数&#xff0c;然后进行代码生成 3. 在上面的API Explorer网站点击前往获…

001,Python微信接龙脚本与腾讯会议定时挂网课脚本

目录 前言: 微信接龙: 腾讯会议: 前言: 这是我的第一篇博客,看到一个视频,推荐写写博客来验证所学,觉得很有道理,就来写一个. 这两个脚本是我的处女作,还有很多不完善的地方,但重点是能跑..... 系统是win11 微信接龙: 我使用的wxauto库,pip install wxauto就行,不过需要…

如何用网易邮箱大师登录QQ邮箱账号

非常无语&#xff0c;非常不理解为什么QQ邮箱整这么多幺蛾子&#xff1f; 问题描述&#xff1a; 登陆的时候&#xff0c;问你是否有授权码&#xff0c;如果有用授权码登录&#xff08;注意不是QQ密码&#xff09;&#xff1b;如果没有&#xff0c;就需要获取授权码。 获取授权…

利用masigpro包进行时间序列分析

这边文章的代码主要源于网上已有的精品推文&#xff0c;根据自身数据和作图时出现的报错“Error in plot.new() : figure margins too large”进行了个性化修改 值得注意的是&#xff1a;maSigPro软件包主要用于差异基因分析&#xff0c;因此其内置的函数和方法都是基于差异基…

文末赠书 | 基于python的《AI医学图像处理》

关注我们丨文末赠书 说到生成型人工智能ChatGPT&#xff0c;恐怕没人不知道吧&#xff1f; 毫无意外&#xff0c;它也对医疗界产生了不小震撼。不仅能够书写医疗论文、提供问诊服务&#xff0c;甚至连影像医生的饭碗都要抢—— 有网友把OpenAI的GPT3.0系统接入了自家服务器&…

GPT免费好用,国内手机用户人人可玩!

使用ChatGPT已经成为我生活中不可或缺的一部分&#xff0c;它太好用了&#xff01;无论是写作、编程还是日常咨询搜索&#xff0c;我都可以全部交给它处理。但是&#xff0c;很少有人知道如何在手机上使用GPT。对于大多数普通用户来说&#xff0c;想要在手机上使用GPT&#xff…

阿里发布免费的全新可变字体;Stability AI CEO:5年内,人类程序员将不复存在;Perl 5.38发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

抖音多闪背后的AI和社交

https://www.toutiao.com/a6646710308825989636/ 2019-01-16 08:16:00 通过多闪发布会现场可知字节跳动创始人张一鸣并没有出场&#xff0c;而是给了95年颜值正义的小姑娘徐璐冉一个靠前的产品经理的位子。我们姑且不去猜这门安排的意义。 本文主要讨论抖音多闪产品背后都用到…