当前位置:首页 > 嵌入式 > 程序员小哈
[导读]LD3320是非特定人(不用针对指定人)语音识别芯片,即语音声控芯片。最多可以识别50条预先内置的指令。 工作模式: LD3320(LDV7)语音模块可以工作在以下三种模式:普通模式:直接说话,模块直接识别;按键模式:按键触发开始ASR进程;口令模式:需要一级唤

LD3320是非特定人(不用针对指定人)语音识别芯片,即语音声控芯片。最多可以识别50条预先内置的指令。

工作模式:

LD3320(LDV7)语音模块可以工作在以下三种模式:普通模式:直接说话,模块直接识别;按键模式:按键触发开始ASR进程;口令模式:需要一级唤醒词(口令);推荐使用口令模式,这样避免嘈杂环境下误动作。

应用场景:

  • 家居智能控制

  • 智能小车DIY设计

  • 毕业设计创新功能

  • 个人DIY设计

  • 语音控制嵌入式产品设计

我购买的LDV7语音识别模块,内置单片机,LD3320语音识别芯片的驱动是靠模块上自带的STC11L08单片机驱动的,我们可以修改模块自带工程的Demo程序,修改里面的关键词,然后将识别的结果通过串口打印出来,我们使用另外一个MCU与该模块进行串口通信,解析收到的串口指令,进而做响应的指令动作。

例如

我们说口令:当前时间(dang qian shi jian)
》》 模块识别之后,串口输出:PrintCom("{\"VoiceCommandCode\":2}");
》》 MCU接收串口信息之后,对该串口指令进行解析(可以使用cJSON解析此字符串);
》》 然后通过TTS文字转语音模块播放当前时间,即完成本次语音识别控制过程。

识别原理:

就是你说一句话,然后模块用拼音去和你的发音做比较,在关键词中找出哪些预设值的词语与发音的接近程度大于多少的(假定50%),然后再从一堆大于(50% )里面输出一个最接近的。

这里就会造成一个问题,容易造成误识别太多。
如果你只有一个关键词:时间
然后你说了一句:‘时刻’,他识别到‘时’这个发音,所以有50% 以上的相似,但是候选词中没有‘时刻’这个比他更接近的关键词,所以他就会输出‘时间’的结果。这样子他就是错误了。
如果你设置一些拟声词,有可能随随便便就触发了。

解决方案:

在设定好要识别的关键词语后,为了进一步降低误识别率,可以再添加一些其他的任意词汇进识别列表,用来吸收错误识别,从而达到降低误识别率的目的。我们把这样一些关键词语称之为“垃圾关键词语”。

比如,某个应用场景中,需要识别的关键词语是 4 条,“前进”,“后 退”,“开门”,“关门”。在把这 4 个关键词语设置进 LD3320 后,可以再另外设置10~30个词语进LD3320,比如“前门”,“后门”,“阿阿阿”,“呜 呜”等等。所以最好把一些拟声词或者容易混淆的词语设置为垃圾关键词,即,识别后不进行输出。
只有识别结果是 4 个关键词语之内的,才认为识别有效。如果识别结果是 “垃圾关键词语”,则说明是其他的声音导致的误识别,产品应该重新开始一 次识别过程。这样,可以非常有效地降低误识别率。极大地提高终端用户的主观使用体验。

移植过程:

1、向LD模块中添加关键词

2、用户执行函数User_handle(nAsrRes); 处理语音识别结果

3、根据不同结果,串口打印不同的指令

PrintCom("{\"VoiceCommandCode\":1}");

4、MCU根据指令不同,执行不同的动作

以JSON格式发送数据至串口,与语音识别模块相连的MCU接收此结果,然后对此字符串进行解析,进而得到当前识别的命令是什么,进而做相应的动作。

   
  1. //LD3320

  2. if(USART5_RX_STA&0x8000)

  3. {

  4. uart5Len=USART5_RX_STA&0x3f; //得到此次接收到的数据长度


  5. receive_json = cJSON_Parse(USART5_RX_BUF); //创建JSON解析对象,返回JSON格式是否正确

  6. if (!receive_json)

  7. {

  8. printf("JSON格式错误:%s \r\n", cJSON_GetErrorPtr()); //输出json格式错误信息

  9. }

  10. else

  11. {

  12. printf("JSON格式正确:%s \r\n",cJSON_Print(receive_json) );

  13. item_obj = receive_json->child; //获取name键对应的值的信息


  14. while(item_obj)

  15. {

  16. char * string = item_obj->string;


  17. if(!strcmp(string,"VoiceCommandCode"))

  18. {

  19. if(item_obj->valueint==0)

  20. {

  21. printf("收到一级口令 智能报时 ... \r\n");

  22. }

  23. else if(item_obj->valueint==1)

  24. {

  25. printf("“现在几点了”命令识别成功 \r\n");


  26. m_nCurrentVoicePlayTimes++;

  27. while(U5152_BSY){}

  28. if(m_nCurrentVoicePlayTimes%2==0)

  29. {

  30. sprintf((char*)dtbuf,"[v5][s5][m3]当前时间为%02d时%02d分%02d秒 \r\n",NowHour,NowMinute,NowSecond);

  31. }

  32. else

  33. {

  34. sprintf((char*)dtbuf,"[v5][s5][m51]当前时间为%02d时%02d分%02d秒 \r\n",NowHour,NowMinute,NowSecond);

  35. }

  36. printf((char*)dtbuf);

  37. XFS_FrameInfo((char*)dtbuf) ;

  38. delay_ms(10);while(U5152_BSY){delay_ms(500);printf("while(U5152_BSY) \r\n");}

  39. }

  40. }


  41. item_obj = item_obj->next;


  42. printf("while(item_obj) \r\n");

  43. }


  44. }


  45. cJSON_Delete(receive_json);


  46. USART5_RX_STA=0;

  47. memset(USART5_RX_BUF, 0, sizeof(USART5_RX_BUF)); //清空数组

  48. }

LDV7模块固件下载:

1、打开编译后的.hex文件

2、选对串口号,芯片型号后,选择“下载/编程”按钮,然后给STC单片机上电或者复位。

3、发出语音,测试语音识别结果

然后其他与LDV7模块相连的MCU只要解析接收到的串口数据即可。



喜欢请关注微信公众号:程序员小哈
有啥想玩的模块,留言给我,咱们一起玩
如果有其他的问题可以评论区指出,有问必答,知无不言。


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭