智能家居入门DIY——【2、LD3320之语音识别】

        前一篇说了一下只有RX,TX,VCC,GND的WIFI模块软串口通信;在实现了远程观察数据,相似的就能够实现远程控制。接下来讲一下近距离控制,不少状况下应用语音识别技术无疑比掏出手机操做要更人性化一些,固然有些状况是例外,例如半夜起床来,那么人体感应模块和光传感器结合就更人性化。LD3320模块自己识别准确率并不高,可是经过编写程序的一些技巧,能够提升这个准确度。不过这个模块接线的时候有一些小问题,我买的是不少教程上的那个长方形模块,头上有俩插孔,尾巴上面2排12个针那种。说一下怎么用起来:数据结构

1、接线spa

A、下排code

CS是片选,不少教程讲接GND,若是有多个SPI设备,则须要接一个引脚。blog

P0-P2,接UNO11-13引脚。(通信+时钟)。教程

同排的GND,3.3V接UNO的GND,和3.3输出。class

B、上排技巧

IRQ是中断,接PIN2程序

WR接GND技术

RST接PIN9d3

共9线完成。

2、程序

        首先,感谢ld3320.h的原做者。

        而后,说一下这个“垃圾关键词”:首先,明确的说,把垃圾关键词都认为是真垃圾的思路我不认同;让我说严重点这就是误导,是背道而驰,贵圈确实很乱。提出几点缘由:

一、自己识别准确率并不高,假定为60%,而且要求发音清楚、连贯性适中。

二、“垃圾关键词”是接近正确命令的发音,其中有至关部分是用户正确发音但未正确识别,假定为30%。

若是,代码中让“垃圾关键词”并不“垃圾”,那么识别率就是60%+30%;换一种说法,垃圾关键词中即便有1%是正确发音但未被准确识别的,咱们把它加上,也是提升1%的正确识别。那么,接下来的问题就是真的垃圾怎么办。

一、场景切换(口令模式),当15%的真垃圾进入下一个场景,接下来的语句仍然符合下一场景的关键词的概率是多少?

二、长口令,带称呼的口令更符合人们的习惯,因此开灯能够变成二狗子开灯……长口令的错误识别率无疑要低。

因此,个人程序中,数据结构和逻辑结构是这样的:

struct AsrCommand
{
    char* flag;
    int ID;
};

AsrCommand CallName[] = { 
{ "da hei", 0 },
{ "da ei", 0 },
{ "da kei", 0 },
{ "da bai", 1 },
{ "da he", 1 } };

AsrCommand ExecuteCommand[] = { 
{ "kai dian shi",0 },
{ "ai dian shi",0 },
{ "kai yan shi",0 },
{ "ai yan shi",0 },
{ "kai tian shi",0 },
{ "ai tian shi",0 },
{ "guan dian shi",1 },
{ "kuan dian shi",1 },
{ "guan yan shi",1 },
{ "kuan yan shi",1 },
{ "guan tian shi",1 },
{ "kuan tian shi",1 } };

CallName中,编号为1的是真垃圾关键词,可是编号是0的部分里面包含了一部分假垃圾关键词,经过场景切换,使用ExecuteCommand中的关键词,两组都是命令,一组是开电视,一组是关电视。经过场景切换,第一组中的错误识别将被缩小。你能够尝试一下这个模式,它可让你没必要咬文嚼字的和机器对话而机器也会正确的响应你。识别率被提升,而没必要很是担忧:它会不会知道我说了什么?尽量的不要让咱们找方便的时候被搞得不痛快吧,那就不是用机器了,简直就是被机器用。

相关文章
相关标签/搜索