这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】LD3320语音识别模块智能灯控----from孙万杰

共12条 1/2 1 2 跳转至

【原创】LD3320语音识别模块智能灯控----from孙万杰

工程师
2023-11-20 21:36:13   被打赏 50 分(兑奖)     打赏

 LD3320 是一颗基于非特定人语音识别(SI-ASRSpeaker-Independent Automatic SpeechRecognition)技术的语音识别/声控芯片。提供了真正的单芯片语音识别解决方案。LD3320 芯片上集成了高精度的 A/D D/A 接口,不再需要外接辅助的 Flash RAM,即可以实现语音识别/声控/人机对话功能。并且,识别的关键词语列表是可以动态编辑的。基于 LD3320,可以在任何的电子产品中,甚至包括最简单的 51 作为主控芯片的系统中,轻松实现语音识别/声控/人机对话功能。为所有的电子产品增加 VUI Voice User Interface)语音用户操作界面。

主要特色功能:

1. 非特定人语音识别技术: 不需要用户进行录音训练可动态编辑的识别关键词语列表: 只需要把识别的关键词语以字符串的形式传送进芯片,即可以在下次识别中立即生效。比如,用户在 51 MCU 的编程中,简单地通过设置芯片的寄存器,把诸如“你好”这样的识别关键词的内容动态地传入芯片中,芯片就可以识别这样设定的关键词语了。

2. 真正单芯片解决方案: 不需要任何外接的辅助 Flash RAM,真正降低系统成本。内置高精度 A/D D/A 通道: 不需要外接 AD 芯片,只需要把麦克风接在芯片的 AD 引脚上;可以播放声音文件,并提供 550mW 的内置放大器。高准确度和实用的语音识别效果。

3. 支持用户自由编辑 50 条关键词语条: 在同一时刻,最多在 50 条关键词语中进行识别,终端用户可以根据场景需要,随时编辑和更新这 50 条关键词语的内容。

 

LD3320可以直接用CH340下载,接线也很简单,下载的时候只需要将上边的5V接上CH3405V或者VCCGNDGNDTXRXRXTX,就能进行下载了

 

11  2.jpeg11  1.jpeg

代码框架大致如下:

LD3320进行语音识别,然后进行串口通信,将数据发送给STM32STM进行数据接收判断,然后再进行对应操作,如输出PWM或者高低电平或者OLED显示

 

LD3320需要操作的代码不多,只有几处。

第一处位于LDChip.c里,用来做识别的代码,LD3320采用的是拼音识别,也就是你希望它识别什么,你就输入什么。

 

第一个就是数据的数量和宽度,上边的13是数量,30是宽度,宽度可以超出拼音的长度一些,但是不能超太多,不然会报错,下边就是对应的指令了,记住除了最后一个指令,其他指令后边都有,\,下边的那些CODE_...都是自己起的名字,有多少个指令就起多少个,除了第一个CODE_CMD不能改,其他的都随便改随便加。

11  3.jpeg 

 

 

第二处在LDChip.c对应的LDChip.h里,这个和前边是对应的,只是对CODE_..进行一个声明,但是这个是必需的,值的话就随便,只要不重复就行,最后还是CODE_CMD不能改。下边是灵敏度调节。

 

11   4.jpeg

  第三处就是在主函数main.c里,就是通信函数处理,有个用户处理函数,其他的都不用改,只需要在switch——case里多加几个判断条件哈,然后通信发送函数也是有的,改改送数据就好了。

11  5.jpeg

32的代码部分也不难,只需要配置个串口,接收LD3320传过来的数据,再进行if判断,然后进行处理,我所使用的芯片型号是C8T6

void UART1_Init(void)

{

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    

    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStructure);

    

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStructure);

    

    USART_InitTypeDef USART_InitStructure;

    USART_InitStructure.USART_BaudRate = 9600;

    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;

    USART_InitStructure.USART_Parity = USART_Parity_No;

    USART_InitStructure.USART_StopBits = USART_StopBits_1;

    USART_InitStructure.USART_WordLength = USART_WordLength_8b;

    USART_Init(USART1, &USART_InitStructure);

    

    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

    

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    

    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

    NVIC_Init(&NVIC_InitStructure);

    

    USART_Cmd(USART1, ENABLE);

}

 

这就是串口配置,我用的串口1

 

void USART1_IRQHandler(void)

{

    

    if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)

    {

      uint8_t rx_data = USART_ReceiveData(USART1);

        if(rx_data == 'a') //LED1 0

        {

           a=1;                   

        }

        if(rx_data == 'b') //LED1 1

        {

          a=2;

        }

        if(rx_data == 'c') //LED1 2

        {

          a=3;

        }

        USART_ClearITPendingBit(USART1, USART_IT_RXNE);

        

    }

}

这是中断服务函数,这里只有一些判断,然后做完判断后会发现接收到不同的数据,a的值不一样,这样就可以用来做判断,在主函数里执行就好了,如图

11  5.jpeg


 






关键词: MarsZ的嵌入式    

专家
2023-11-21 08:35:31     打赏
2楼

学习了


院士
2023-11-21 10:52:19     打赏
3楼

学习并收藏了,谢谢分享。


高工
2023-11-30 06:20:48     打赏
4楼

好详细  真不错 好好学习



专家
2023-11-30 09:26:38     打赏
5楼

感谢分享


专家
2023-12-16 14:06:52     打赏
6楼

感谢分享


菜鸟
2023-12-20 10:27:25     打赏
7楼

很棒的分享,点赞


专家
2023-12-31 13:17:48     打赏
8楼

能通过串口转TTL下载,不错,可以放心使用。谢谢分享哈!


高工
2024-01-04 09:06:54     打赏
9楼

学习一下


专家
2024-02-11 04:48:58     打赏
10楼

谢谢分享


共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
站长统计