STM32F103驱动LD3320语音识别模块

STM32F103驱动LD3320语音识别模块

  • LD3320语音识别模块简介
  • 模块引脚定义
  • STM32F103ZET6开发板与模块接线
  • 测试代码
  • 实验结果
  • LD3320语音识别模块简介

    基于 LD3320,可以在任何的电子产品中,甚至包括最简单的 51 作为主控芯片的系统中,轻松实现语音识别/声控/人机对话功能。为所有的电子产品增加 VUI(Voice User Interface)语音用户操作界面。
    主要特色功能:
    1.非特定人语音识别技术: 不需要用户进行录音训练可动态编辑的识别关键词语列表: 只需要把识别的关键词语以字符串的形式传送进芯片,即可以在下次识别中立即生效。比如,用户在 51 等 MCU 的编程中,简单地通过设置芯片的寄存器,把诸如“你好”这样的识别关键词的内容动态地传入芯片中,芯片就可以识别这样设定的关键词语了。
    2.真正单芯片解决方案:不需要任何外接的辅助Flash 和RAM,真正降低系统成本。内置高精度A/D和D/A通道:不需要外接AD 芯片,只需要把麦克风接在芯片的AD 引脚上;可以播放声音文件,并提供550mW 的内置放大器。高准确度和实用的语音识别效果。
    3.支持用户自由编辑50 条关键词语条:在同一时刻,最多在50 条关键词语中进行识别,终端用户可以根据场景需要,随时编辑和更新这50 条关键词语的内容。词组或短句,长度为不超过 10 个汉字或者 79 个字节的拼音串。
    主要技术参数:
    1.内置单声道mono 16-bitA/D 模数转换
    2. 内置双声道stereo 16-bit D/A数模转换
    3. 内置20mW 双声道耳机放大器输出
    4. 内置550mW 单声道扬声器放大器输出
    5. 支持并行接口或者SPI 接口
    6. 内置锁相电路PLL,输入主控时钟频率为2MHz -34MHz

    模块引脚定义



    P1:MIC麦克风插座,板载了MIC咪头可不用接
    P2:SPEAK喇叭输出
    两组VCC均为3.3V,一组5V均可给模块供电,实际只需接一组即可
    MO:SPI接口的MOSI
    MI:SPI接口的MISO
    SCK:SPI接口的时钟引脚
    CS:SPI接口的片选引脚
    RST:复位引脚,低电平有效
    IRQ:中断输出引脚,低有效
    WR:写允许共用SPI允许,低电平有效

    STM32F103ZET6开发板与模块接线

    STM32 LD3320
    CS PA4
    IRQ PB12
    SCK PA5
    WR PB13
    MO PA7
    RST PB15
    MI PA6

    测试代码

    用户只需修改几处代码,便可以增加新的指令。
    1.LD2230_config.h 文件中,增加相应的识别码。(必须)

    ///识别码(客户修改处)
    #define CODE_LSD	1	 //流水灯
    #define CODE_SS	  2	 //闪烁
    #define CODE_AJCF	3	 //按键触发
    #define CODE_QM	  4	 //全灭
    #define CODE_JT		5  //状态
    

    2.LD2230.c 文件中,在 LD3320_main 函数中增加相印分支。(必须)

                    switch(nAsrRes)		   			//对结果执行相关操作,客户修改
    						{
    							case CODE_LSD:					//命令“流水灯”
    								printf(" 流水灯 指令识别成功\r\n"); 
    							
    															 break;
    							case CODE_SS:	 					//命令“闪烁”
    								printf(" 闪烁 指令识别成功\r\n"); 
    															 break;
    							case CODE_AJCF:					//命令“按键触发”
    								printf(" 按键触发 指令识别成功\r\n"); 
    															break;
    							case CODE_QM:						//命令“全灭”
    								printf(" 全灭 指令识别成功\r\n");
    															break;
    							case CODE_JT:						//命令“状态”
    								printf(" 状态 指令识别成功\r\n");
    							
    							default:break;
    						}	
    

    3.LD2230.c 文件中,在 LD_AsrAddFixed 函数中修改相应代码。(必须)DATA_A 为指令的个数, DATA_B 为指令的最大长度, sRecog 二维数组为相应指令的拼音集合(注意空格)。pCode 为指令识别码的集合。

    	#define DATE_A 5    //数组二维数值
    	#define DATE_B 20		//数组一维数值
    	//添加关键词,用户修改
    	uint8  sRecog[DATE_A][DATE_B] = {
    	 			"liu shui deng",\
    				"shan shuo",\
    				"an jian chu fa",\
    				"quan mie",\
    				"zhuang tai"\
    		
      								   };	
    	uint8  pCode[DATE_A] = {
                     			CODE_LSD,	\
     						    CODE_SS,	\
    					        CODE_AJCF,  \
    				            CODE_QM,	\
    			                CODE_JT		\
      						    };	//添加识别码,用户修改
    

    4.LD2230.c 文件中,在 LD3320_main 函数中修改相应代码。(建议)

    ///识别码(客户修改处)
     	printf("1、流水灯\r\n"); 
    	printf("2、闪烁\r\n"); 				
    	printf("3、按键触发\r\n"); 		
    	printf("4、全灭\r\n"); 			
    	printf("5、状态\r\n"); 
    

    5.LD2230.c 文件中,在 Board_text 函数中修改相应代码。(建议)

    static void Board_text(uint8 Code_Val)
    {																					 
    	switch(Code_Val)  //对结果执行相关操作
    	{
    		case CODE_LSD:  //命令“流水灯”
    			Glide_LED();
    		break;
    		case CODE_SS:	  //命令“闪烁”
    			Flicker_LED();
    		break;
    		case CODE_AJCF:	//命令“按键触发”
    			Key_LED();
    		break;
    		case CODE_QM:		//命令“全灭”
    			Off_LED();
    		break;
    		case CODE_JT:		//命令“状态”
    			Jt_LED();
    		break;
    		default:break;
    	}	
    }
    

    实验结果

    通过STM32串口1通过USB转串口模块连接到电脑,打开串口助手软件,波特率设为115200,将显示以下内容,然后对着咪头说“流水灯”、“闪烁”、“按键触发”、“全灭”、“状态”命令词,串口助手显示出对应命令词识别成功。

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32F103驱动LD3320语音识别模块

    发表回复