语音助手开发教程

2 篇文章 0 订阅
订阅专栏

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

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 network
    WiFi.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 broker
    client.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 subscribe
    client.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 on
    if (message == "off") { digitalWrite(LED_BUILTIN, HIGH); } // LED off
    Serial.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控制小米、华为、苹果等智能家居设备

待补充。。。

Siri中文语音助理源码
12-13
一个简单android平台的语音助理源码,语音接口使用的是科大讯飞的云语音接口,请遵循科大讯飞的协议规定,请勿使用于商业用途,仅供学习研究。 智能语音处理使用的是小I聊天机器人的网络接口以及虫洞的开放API。
【语音识别】落地实现--离线智能语音助手
似水流年
02-26 1361
所有的源码:链接:https://pan.baidu.com/s/14667bZyc9xovUyUH_zf-CQ?pwd=lief提取码:lief–来自百度网盘超级会员V6的分享。
【GitHub项目推荐--13个最佳开源语音识别引擎】【转载】
j8267643的博客
03-18 2906
它主要支持日语ASR,但作为一个独立于语言的程序,该模型可以理解和处理多种语言,包括英语,斯洛文尼亚语,法语,泰语等。ESPnet是一个基于Apache 2.0许可证发布的开源语音转文本软件,它提供端到端语音处理功能,涵盖了ASR、翻译、语音合成、增强和日志化等任务。语音识别基本过程一般包括:分析音频、音频分解、格式转换、文本匹配,但实际的语音识别系统可能会更复杂,并且可能包括其他步骤和功能组件,例如:噪声抑制、声学模型、语言模型和置信度评估等。它训练执行转录,翻译,自动语音识别和情感分析任务的语言模型。
Android studio 将语音识别接入AI
PJ12love的博客
01-02 1463
本文章主要实现的功能和作用,当然此小艺非彼小艺(低配)。
测试开发 | 语音助手技术:Siri、Alexa、Google Assistant的背后
慕漓的博客
12-21 419
Siri、Alexa、Google Assistant等知名语音助手系统,不仅成为我们的智能助手,更是科技发展和人机交互的代表。Siri、Alexa、Google Assistant等语音助手技术的背后,是语音识别、自然语言处理等领域的技术创新,它们正在改变着我们与科技互动的方式。在不断解决技术挑战和隐私问题的同时,这些语音助手将继续在未来发挥着越来越重要的作用,为用户提供更智能、便捷的服务。Siri的背后基于语音识别、自然语言处理和机器学习等技术,通过分析用户的语音指令和上下文信息,实现智能的语音交互。
Python从零开始快速搭建一个语音对话机器人
2301_80241064的博客
11-22 1146
最近在研究语音识别方向,看了很多的语音识别的资料和文章,了解了一下语音识别的前世今生,其中包含了很多算法的演变,目前来说最流行的语音识别算法主要是依赖于深度学习的神经网络算法,其中RNN扮演了非常重要的作用,深度学习的应用真正让语音识别达到了商用级别。经过体验发现百度的语音识别准确率高的吓人,完爆了GitHub上的开源项目N条街,然后在CSDN浏览各位博主的博客时发现,用百度语音识别的API和图灵机器人的API可以做一个实时语音对话的机器人,感觉特别兴奋,从而决定搭建一个自己的语音对话机器人。
Android语音识别功能实战:打造智能语音助手
2201_76125261的博客
07-30 695
语音识别是一种将用户的语音输入转换为文本的技术,它为移动应用提供了更加智能、便捷的交互方式。用户可以通过语音与应用进行交互,无需手动输入文字,提高了应用的可用性和用户满意度。Android提供了SpeechRecognizer API,允许我们在应用中轻松实现语音识别功能。在本篇博客中,我们将学习如何使用Android的SpeechRecognizer API实现语音识别功能,并通过一个案例教你如何创建一个智能语音助手,让你的应用能够与用户进行自然的语音交互。
【五一创作】智能手机还是不够智能?这些事情交给自动化来做吧:3、打造自己掌控的AI语音助理
dannyxycheung9665的博客
04-29 1100
现在的手机里基本都内置了手机厂商的语音助手,但对这个语音助手,用户能掌控多少,能否按用户的要求学习和训练,都是有很大疑问的。所以,在手机上打造完全属于自己,由自己来掌控的AI语音助理,还是一件很有价值的事情。这里继续基于MacroDroid,基于低代码的理念,聊一聊我的思路。
语音助手
NON blog
05-05 915
语音助手 前言:相信大家都听过语音助手,虽然比较鸡肋,但确实有一部分人用过,比如苹果的Siri,微软的小娜。本次要做的业务也是跟这个功能类似,通过语音操作自己的软件中的部分功能。 1.项目简介 先讲一下项目的大体框架,这是一个基于electron实现的pc端应用程序,前端技术栈主要是node+vue+electron。一开始,这个语音助手功能是使用electron渲染进程实现的一个窗口,当时在这个窗口中处理语音交互,以及用户语音动作的执行。后来,考虑到助手功能以后会对接其他业务,所以选择将助手功能独立
LWN:开源语音助手的希望!
Linux News搬运工
04-03 1785
关注了就能看到更多这么棒的文章哦~Hopes and promises for open-source voice assistantsMarch 21, 2023This article was contributed by Koen VervloesemDeepL assisted translationhttps://lwn.net/Articles/926484/2022 年底,Paulu...
基于ChatGPT技术的智能语音助手开发指南.docx
07-21
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
树莓派语音助手,python + 百度语音api + 图灵api + 树莓派 .zip
最新发布
04-10
树莓派(Raspberry Pi)是一款由英国树莓派基金会开发的小型、低成本、高度可定制化的单板计算机。它的体积仅相当于一张信用卡大小,但拥有完整的计算能力,适合各种创新项目和教育应用。自2012年初次发布以来,...
awesome-rhasspy:精心策划了语音助手Rhasspy的项目和资源清单
05-09
精心策划了语音助手Rhasspy的项目和资源清单 (发音为RAH- )是一种开源的,完全脱机的,用于多种人类语言的语音助手服务集。 注意:尽管我是Rhasspy贡献者,但这不是Rhasspy项目“批准”的项目或资源的列表。 ...
van.memory:Bixby语音助手胶囊可帮助人们记住事物
04-29
该存储库正在积极开发中,可能尚未反映出完成所有事情的最简单方法。 演示幻灯片 细节 当您输入疑问词(例如,谁,何时或何地)时,“我的大脑”胶囊会识别出问题。 我的大脑胶囊重复您说的最后一句话,里面有相似...
基于树莓派和GPT实现的多功能语音家庭助手.zip
04-10
树莓派(Raspberry Pi)是一款由英国树莓派基金会开发的小型、低成本、高度可定制化的单板计算机。它的体积仅相当于一张信用卡大小,但拥有完整的计算能力,适合各种创新项目和教育应用。自2012年初次发布以来,...
搭建一个自己的AI学术语音助手(一)
Peter的博客
03-15 769
这几天的思考突然有了灵感,其实缺的就是自己的知识内容如何变成语音助手的管理对象,也就是说现在语音助手只是一个内容门户,并且还只服务于已经有的出名的内容APP商。对于用户自己的私域的数据和信息它是不管的,并且这些语音助手其实和内容是很松的耦合关系,这就会带来些问题对内容的理解不够深入,明明图书馆里有很多知识可是就是找产出不了好的科研论文。然而对于全局性问题前面的两个假设是不成立的。目标当然是星辰大海要把所有自己私域的知识:娱乐的、学习的、工作的、家庭的、历史事件全部给管理起来,语音作为知识沟通的手段;
搭建一个自己的AI学术语音助手(二)
Peter的博客
03-15 793
这部分实现生活利用了langchain的mapreduce的方法来实现摘要抽取。实现思路就是把大文件切成小文件,抽取没部分的摘要,然后汇总摘要在重复上面的几个流程,直到抽取的摘要符合要求(迭代轮次、字数要求)。这个效果还可以,但是后续如果要优化摘要效果其实还有很多工作可以做。比如:1.如何在map阶段把每段摘要抽取的既能兼顾本段信息、又能考虑整体信息完整2.对reduce信息汇总要怎么要才能保持文本思路结构,而不是只是把高频出现信息给出。
写在最后——如何做好一个语音助手
turned的博客
04-10 3724
语音助手系列文章到这里就要结束了,也正式要和语音助手say goodbye了,从2018年到2021年,经历了这个项目的从0到1,经历了日活从几千到千万,这一篇就来聊一聊作为一个nlu开发,对于如何做好一个语音助手产品的一点心得。好吧,这个文章其实是为了凑个吉利数,凑满18篇~ 这里再一起看下整个语音助手的文章脉络,它从技术的角度大致讲解了一个语音助手需要具备的模块和能力。如下图: 除了上面的模块之外,笔者还想说,想要做好一个语音助手,或者说想要做好一款产品,其实还需...
【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用
C站全栈优质创作者、阿里云受邀博主专家,喜欢结识新伙伴寻找志同道合的朋友,欢迎一起探讨学习
07-19 2541
适用人群:本教程适合大赛接入小布语音技能的同学以及初次使用小布助手的开发者本篇文章是博主弄了多次测试才勉强弄明白的,OPPO的开发文档和没有没啥区别很多人会问:“为啥有更成熟的其他语音技能平台放着不用?答:“因为我在参加的比赛是由oppo主办方举办的,若要想进决赛,必须要接入OPPO开放平台”猜想测试部分和实际操作部分,请根据你的需要进行跳过选择。
语音助手开发 android
09-10
语音助手是一种基于人工智能技术的应用程序,能够实现与用户...总的来说,语音助手开发与Android平台紧密结合,通过利用Android系统提供的工具、API和功能,我们可以创建出一个功能强大、方便实用的语音助手应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【STM32】使用ST-LINK V2下载程序 44375
  • 语音助手开发教程 9119
  • 《日常记录1》QT for Android报错:error: cannot find -lc++ 662
  • CLOCK代码学习 355

分类专栏

  • 日常记录 1篇
  • 学习笔记 2篇
  • STM32 1篇

最新评论

  • 【STM32】使用ST-LINK V2下载程序

    m0_62736480: 我想问一下到最后一步添加程序的时候为什么我的没有stm32的文件

  • 【STM32】使用ST-LINK V2下载程序

    FANT0M: 感谢大佬,帮助极大

  • 【STM32】使用ST-LINK V2下载程序

    qq_43350794: 请问boot0 1需要接地吗?还是悬空

  • 【STM32】使用ST-LINK V2下载程序

    不吃西红柿丶: 写的挺不错的,要持续稳定输出哦~

  • 【STM32】使用ST-LINK V2下载程序

    水巷石子: 大佬写的太好了!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 《日常记录1》QT for Android报错:error: cannot find -lc++
  • CLOCK代码学习
  • 【STM32】使用ST-LINK V2下载程序
2022年3篇
2021年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司绍兴建站价格湘潭优化报价定西企业网站改版多少钱哈尔滨优化哪家好贵阳营销网站多少钱三亚SEO按效果付费价格济南网站搭建多少钱阜阳百度seo哪家好南阳阿里店铺运营推荐德州品牌网站设计芜湖网站优化按天计费哪家好哈尔滨网站建设设计推荐拉萨企业网站改版多少钱自贡百度关键词包年推广推荐张掖百度爱采购推荐茂名网络广告推广推荐济南网络广告推广公司菏泽关键词按天收费公司垦利seo网站推广价格三明营销网站哪家好黔西南网站优化按天扣费哪家好飞来峡百度网站优化朔州关键词按天扣费公司长葛关键词排名包年推广朔州网站推广工具价格泸州seo排名报价兴安盟网站定制推荐清徐网站改版价格南通阿里店铺托管哪家好南宁网络推广多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化