智能家居入门DIY——【二、LD3320之语音识别】
前一篇说了一下只有RX,TX,VCC,GND的WIFI模块软串口通讯;在实现了远程观察数据,类似的就可以实现远程控制。接下来说一下近距离控制,很多情况下应用语音识别技术无疑比掏出手机操作要更人性化一些,当然有些情况是例外,例如半夜起床来,那么人体感应模块和光传感器结合就更人性化。LD3320模块本身识别准确率并不高,但是通过编写程序的一些技巧,可以提高这个准确度。不过这个模块接线的时候有一些小问题,我买的是很多教程上的那个长方形模块,头上有俩插孔,尾巴上面2排12个针那种。说一下怎么用起来:
一、接线
A、下排
CS是片选,很多教程讲接GND,如果有多个SPI设备,则需要接一个引脚。
P0-P2,接UNO11-13引脚。(通讯+时钟)。
同排的GND,3.3V接UNO的GND,和3.3输出。
B、上排
IRQ是中断,接PIN2
WR接GND
RST接PIN9
共9线完成。
二、程序
首先,感谢ld3320.h的原作者。
然后,说一下这个“垃圾关键词”:首先,明确的说,把垃圾关键词都认为是真垃圾的思路我不认同;让我说严重点这就是误导,是背道而驰,贵圈确实很乱。提出几点原因:
1、本身识别准确率并不高,假定为60%,并且要求发音清楚、连贯性适中。
2、“垃圾关键词”是接近正确命令的发音,其中有相当部分是用户正确发音但未正确识别,假定为30%。
如果,代码中让“垃圾关键词”并不“垃圾”,那么识别率就是60%+30%;换一种说法,垃圾关键词中即使有1%是正确发音但未被准确识别的,我们把它加上,也是提高1%的正确识别。那么,接下来的问题就是真的垃圾怎么办。
1、场景切换(口令模式),当15%的真垃圾进入下一个场景,接下来的语句仍然符合下一场景的关键词的几率是多少?
2、长口令,带称呼的口令更符合人们的习惯,所以开灯可以变成二狗子开灯……长口令的错误识别率无疑要低。
所以,我的程序中,数据结构和逻辑结构是这样的:
struct AsrCommand
{
char* flag;
int ID;
}; AsrCommand CallName[] = {
{ "da hei", },
{ "da ei", },
{ "da kei", },
{ "da bai", },
{ "da he", } }; AsrCommand ExecuteCommand[] = {
{ "kai dian shi", },
{ "ai dian shi", },
{ "kai yan shi", },
{ "ai yan shi", },
{ "kai tian shi", },
{ "ai tian shi", },
{ "guan dian shi", },
{ "kuan dian shi", },
{ "guan yan shi", },
{ "kuan yan shi", },
{ "guan tian shi", },
{ "kuan tian shi", } };
CallName中,编号为1的是真垃圾关键词,但是编号是0的部分里面包含了一部分假垃圾关键词,通过场景切换,使用ExecuteCommand中的关键词,两组都是命令,一组是开电视,一组是关电视。通过场景切换,第一组中的错误识别将被缩小。你可以尝试一下这个模式,它可以让你不必咬文嚼字的和机器对话而机器也会正确的响应你。识别率被提高,而不必非常担心:它会不会知道我说了什么?尽可能的不要让我们找方便的时候被搞得不痛快吧,那就不是用机器了,简直就是被机器用。
智能家居入门DIY——【二、LD3320之语音识别】的更多相关文章
- 智能家居入门DIY——【一、ESP8266之软串口HTTP请求】
前段时间做了一个激光雕刻,玩的不亦乐乎.对Arduino大感兴趣,于是又入手一块20大洋版,配上买学习套件时的诸多零件——红外发射管.一体化红外接收头.DHT11温湿度传感器.ESP8266等,以及某 ...
- 智能家居入门DIY——【六、使用OneNet后台处理数据】
OneNet使用起来要比lewei50复杂一些,它没有前台需要自己开发.命令下发也和之前介绍的lewei50有一些区别,这里着重介绍一下使用MQTT协议来进行通讯. 一.准备 1.Esp8266开发板 ...
- 智能家居入门DIY——【五、执行命令】
前面几篇介绍了ESP8266使用AT命令来连接WIFI实现一系列功能.这一篇介绍一下使用Wemos D1 Wifi来进行开发,当然也可以用常见的8针ESP8266来完成(只是需要按网上的方法将Ardu ...
- 智能家居入门DIY——【四、组合】
前面几篇介绍了一些传感器和代码,这篇介绍一下把它们组合起来.之所以单独列出这部分,原因在于组合更多功能的时候发现使用软串口库驱动ESP8266时由于内存过小导致发送失败甚至整个系统无法工作的情况.所以 ...
- 智能家居入门DIY——【三、GP2Y10之颗粒物传感器】
这个传感器接线算比较简单的,程序也不麻烦.不过这东西是颗粒物传感器吧,不是神马PM2.5(总悬浮颗粒物),不是神马PM10(可吸入颗粒物).插个螺丝刀进去度数也是变的,不是说的很清楚原理是反光嘛……… ...
- 智能家居入门DIY——【七、添加一个LCD12864吧】
今天加了一个LCD12864,IC看说明上是ST7567,结果一顿U8g2,发现两个问题: 1.买的时候不知道是卖家写的我理解错了还是怎么了,反正是不出汉字的. 2.U8g2太大了…………占了uno的 ...
- 入门智能家居,从 IFTTT 到 HomeKit 自动化(二)
入门智能家居,从 IFTTT 到 HomeKit 自动化(二) 目录 0. HomeKit.HomeBridge.HomeAssistant 分别是什么?关系是什么? 1. 开始前的准备 2. 整 ...
- DIY智能家居——零基础入门篇
概要 本文主要根据笔者从零开始接触硬件,以小白视角开启IoT探索,根据相关资料DIY一个温湿度传感器.后经过探索发现新大陆--Home Assistant&Homebridge,最终实现了一个 ...
- Diy智能家居-1.基于esp8266的语音控制系统(开篇)
目录Diy智能家居-1.基于esp8266的语音控制系统(开篇) https://blog.csdn.net/arno1988/article/details/82628589 Diy智能家居-2.基 ...
随机推荐
- -03-PetaLinux通过eMMC方式启动【Xilinx-Petalinux学习】
前面说的我的硬件上有一颗eMMC的芯片,型号是MTFC4GACAJCN-4M IT,有4GB的容量. BOOT.bin的文件较小,只有不到3MB,但是image.ub的文件根据不同的需求,将来可能会越 ...
- git am PATCH_FILE_NAME自动打patch失败后的操作方法
1.找到打入patch不成功的patch 从打入patch的失败信息可以找到 2.根据patch的index重新打入 patch,将可以合并的内容合并,冲突的部分单独生成文件 比如出问题patch的i ...
- Bzoj 4371: [IOI2015]sorting排序 二分
题目 似乎很久没写题解了... 这题是校里胡策的时候的题,比赛因为评测机有点慢+自己代码常数大没快读...被卡t了,但是bzoj上还是A了的...,因为bzoj时限比较宽可以不卡常. 题解: 首先可以 ...
- 总结关于express vue-cli
零零散散,拼起来,花了不少时间,这回把一些东西拼一下吧,免得到时又得重头开始,Blog还没弄好,打算用这些重新写一个,稍接不上,就落后了,这是技术,技术是不断更新换代的,明天这个框架,可以后天就有一个 ...
- (CLR via C#学习笔记)异步操作 - 线程池
一 线程池基础 1.线程池维护了一个操作请求队列,将请求的操作追加到线程池队列中,线程池的代码从队列中提取操作项,派发给线程池中的线程; 2.CLR初始化时,线程池中是没有线程的,当有操作派发给线程池 ...
- python 列表嵌套
>>> a = ['a', 'b', 'c'] >>> n = [, , ] >>> x = [a, n] >>> x [[, ...
- sql语句练习-基础篇
本文内容源自改编http://blog.csdn.net/ochangwen/article/details/51297893, 针对mysql数据库做了语法更改 个人觉得原版有些不合理之处,改了部分 ...
- 第106天:Ajax中同步请求和异步请求
同步请求和异步请求的区别 1.同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的.信息错误又要重新 ...
- Java队列的两种实现方式
1. 基于数组 package Algorithm.learn; import java.util.Arrays; /** * Created by liujinhong on 2017/3/7. * ...
- 尺取法拓展——POJ3320
#include <iostream> #include <cstdio> #include <algorithm> #include <set> #i ...