shineblink LD3320A语音识别
LD3320A语音识别一、LD3320A语音识别模块介绍二、本章节实现功能介绍三、接线图四、完整代码五、代码运行结果六、一些优化语音识别效果的建议一、LD3320A语音识别模块介绍LD3320A基于ASR语音识别技术,是基于关键词语列表识别的技术。只需要设定好要识别的关键词语列表,并把这些关键词语以字符的形式传送到LD3320A内部,就可以对用户说出的关键词语进行识别。不需要用户作任何地录音训练。
二、本章节实现功能介绍通过LD3320语音识别模块识别我们预定的短语。当说出“你好”时开发板上的LED1灯和LED2灯全部亮,说出“左边”时LED1灯亮,说出“右边”时LED2灯亮,说出“再见”时LED1灯和LED2灯都灭掉。
三、接线图四、完整代码Code=0--全局变量,识别到的短语的代号--PhraseCode是需要识别的短语的代号,例如识别到用户说"右边"时,我们会得到短语的代号"3"PhraseCode={1,2,3,4,}--注意:元素个数不能超过50个!--Phrase是需要识别的短语,每个短语的长度不能超过79个字节(包含拼音之间的空格)Phrase={"nihao","zuobian","youbian","zaijian"}--注意:短语数量不能超过50个!--配置LD3320语音识别模块的引脚RST占用Core的D7引脚以及SPI接口,麦克风音量0x43LIB_LD3320Config("D7",0x43,PhraseCode,Phrase)--使能A0引脚的外部中断检测,A0引脚接语音识别模块的IRQ引脚用来接收语音识别结果通知LIB_CompConfig("0.5Vdd","Down")--配置开发板上的LED1和LED2灯LIB_GpioOutputConfig("D8","STANDARD")LIB_GpioOutputConfig("D9","STANDARD")LIB_GpioWrite("D8",1)--LED1灭LIB_GpioWrite("D9",1)--LED2灭--当A0引脚的出现下降沿信号时,该函数会自动被调用functionLIB_CompCallBack()Flag,CCC=LIB_LD3320GetResult()ifFlag==1thenCode=CCCendend--开始大循环while(GC(1)==true)doifCode>0thenifCode==1then--识别到"你好"LIB_GpioWrite("D8",0)--LED1亮LIB_GpioWrite("D9",0)--LED2亮elseifCode==2then--识别到"左边"LIB_GpioWrite("D8",0)--LED1亮LIB_GpioWrite("D9",1)--LED2灭elseifCode==3then--识别到"右边"LIB_GpioWrite("D8",1)--LED1灭LIB_GpioWrite("D9",0)--LED2亮elseifCode==4then--识别到"再见"LIB_GpioWrite("D8",1)--LED1灭LIB_GpioWrite("D9",1)--LED2灭elseprint("Unknowstate")endCode=0--清掉刚刚识别到的短语代号endend五、代码运行结果(1)当说出“你好”时,绿色LED1和绿色LED2同时亮(2)当说出“左边”时,LED1亮(3)当说出“右边”时,LED2亮(4)当说出“再见”时,LED1和LED2都灭
六、一些优化语音识别效果的建议(1)调节麦克风音量在上面的代码中调用LIB_LD3320Config函数初始化时,P2参数(麦克风音量)我们给的是0x43,这个值相对来说比较通用。不过用户可以结合自己的使用场景,根据下面这些原则来调整这个值,以达到最好的识别效果:
值越大代表MIC音量越大,识别启动越敏感,但可能带来更多误识别。值越小代表MIC音量越小,需要近距离说话才能启动识别功能,好处是对远处的干扰语音没有反应在正常生活条件下的室内环境和比较安静的室外环境,建议设置值为40H-55H;使用距离在0.5米以上为好,避免声音录入产生过激。在十分嘈杂的环境中,比如展览会现场,建议设置值为10H-2FH;此时需要使用者嘴巴距离MIC距离为0~50厘米以内。--配置麦克风音量0x43LIB_LD3320Config("D7",0x43,PhraseCode,Phrase)(2)在识别精度要求高的场景中,使用“触发识别”模式这种方式目前市面上很多智能音箱都这么做,例如苹果手机的“Hey,Siri”,某某音箱的“小Du,小Du”等,需要人为的提供一个开始的信号,这些接下来这段时间(比如10秒内)识别到的后续的语音指令才算数,这种方式可以防止语音识别模块在平时误识别进而导致设备误动作的发生。(3)增添“垃圾关键词语”——吸收错误识别在设定好要识别的关键词语后,为了进一步降低误识别率,可以再添加一些其他的任意词汇进识别列表,用来吸收错误识别,从而达到降低误识别率的目的。可以把这些关键词语称之为“垃圾关键词语”。
比如,某个应用场景中,需要识别的关键词语是4条,“前进”,“后退”,“开门”,“关门”。在把这4个关键词语设置进LD3320后,可以再另外设置10~30个词语进LD3320,比如“前门”,“后门”,“阿阿阿”,“呜呜”等等。只有识别结果是4个关键词语之内的,才认为识别有效。如果识别结果是“垃圾关键词语”,则说明是其他的声音导致的误识别,这样就可以非常非常有效地降低误识别率。极大地提高终端用户的主观使用体验。“垃圾关键词语”的选取,最好可以选择一些字数和关键词语一样的词语,用来吸收可能发生的错误识别。更多详情请参看shineblink.com官网链接
QT实现语音识别功能
QT实现语音识别功能铅笔小建:-lalibabacloud-idst-common-lalibabacloud-idst-speech这个是什么意思,我编译的时候找不到,我直接用的windows平台那个包
C++(9)Cdf(人名):干货满满,很详细,评论占个坑,期待大佬回访!
C语言(25)Cdf(人名):干货满满,很详细,评论占个坑,期待大佬回访!
QT实现语音识别功能Cdf(人名):学习佳作,顺手点赞与关住,期待大佬回访!
C语言(13)旺仔OO糖:文章写得很好,初来乍到,希望多多关注