标题: STM32+LD3320实现语音识别与人机对话的源程序 [打印本页]

作者: Zzip    时间: 2018-8-15 21:01
标题: STM32+LD3320实现语音识别与人机对话的源程序
LD3320程序代码

单片机源程序如下:
  1. #include "main.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "sd.h"
  5. #include "ff.h"   
  6. #include "ld3320.h"
  7. #include "mp3.h"
  8. #include "led.h"
  9. #include "asr.h"

  10. FATFS fs[_VOLUMES];     //逻辑磁盘工作区.文件系统默认支持3个磁盘,我们只用了一个 SD编号0

  11. int main(void)
  12. {                                          
  13.         u8 nAsrRes=0;                      //记录识别码
  14.         
  15.         delay_init();                               //延时初始化
  16.         Usart1_init(115200);                   //串口初始化波特率为115200
  17.         LED_Init();                            //LED初始化
  18.         while(SD_Init())                   //SD卡初始化
  19.         {
  20.                 printf("SD卡初始化错误\r\n");  //串口提示SD卡初始化错误
  21.                 delay_ms(2000);                //延时2s
  22.         }
  23.         f_mount(&fs[0],"0:",1);                //挂载SD卡        
  24.         LD3320_Init();                           //初始化LD3320
  25.                
  26.         printf(" 口令1:重启系统\r\n ");
  27.         printf(" 口令2:讲个笑话\r\n ");
  28.         printf(" 口令3:打开\r\n ");
  29.         printf(" 口令4:关闭\r\n ");
  30.         nAsrStatus = LD_ASR_NONE;                     //初始状态:没有在作ASR
  31.         
  32.         PlayDemoSound_mp3("系统准备.mp3");   //播放文件

  33.         while(1)
  34.         {
  35.              switch(nAsrStatus)
  36.                 {
  37.                         case LD_ASR_RUNING:            
  38.                                                                                         break;
  39.                         
  40.                         case LD_ASR_ERROR:                        
  41.                                                                                         break;
  42.                         
  43.                         case LD_ASR_NONE:                                nAsrStatus=LD_ASR_RUNING;              //启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算
  44.                                                                                         if (RunASR()==0)                  
  45.                                                                                         {                        
  46.                                                                                                 printf("ASR_ERROR\r\n");
  47.                                                                                                 nAsrStatus = LD_ASR_ERROR;
  48.                                                                                         }
  49.                                                                                         break;

  50.                         case LD_ASR_FOUNDOK:                        nAsrRes = LD_ReadReg(0xc5);                    //一次ASR识别成功结束,取ASR识别结果                                                                                                                                                                                                
  51.                                                                                         switch(nAsrRes)                  
  52.                                                                                         {
  53.                                                                                                 case CODE_CQXT: printf("接收到口令:重启系统\r\n");
  54.                                                                                                                                 PlayDemoSound_mp3("重启.mp3");   //播放文件
  55.                                                                                                                                 NVIC_SystemReset();              //重启
  56.                                                                                                                                 break;
  57.                                                                                                 case CODE_JGXH:        printf("接收到口令:讲个笑话\r\n");
  58.                                                                                                                                 PlayDemoSound_mp3("笑话.mp3");   //播放文件
  59.                                                                                                                                 break;        
  60.                                                                                                 case CODE_DK:        printf("接收到口令:打开\r\n");
  61.                                                                                                                     PlayDemoSound_mp3("打开.mp3");       //播放文件
  62.                                                                                                                                 delay_ms(1000);                      //语音中提示是1s延时后,打开LED
  63.                                                                                                                                 LED_D3=0;
  64.                                                                                                                                 LED_D4=0;
  65.                                                                                                                                 break;        
  66.                                                                                                 case CODE_GB:        printf("接收到口令:关闭\r\n");
  67.                                                                                                                                 PlayDemoSound_mp3("关闭.mp3");       //播放文件
  68.                                                                                                                                 delay_ms(1000);                      //语音中提示是1s延时后,关闭LED
  69.                                                                                                                                 LED_D3=1;
  70.                                                                                                                                 LED_D4=1;
  71.                                                                                                                                 break;                                                                                                        
  72.                                                                                                 default:        printf("不在口令集之内\r\n");
  73.                                                                                                                                 break;
  74.                                                                                         }        
  75.                                                                                         nAsrStatus = LD_ASR_NONE;
  76.                                                                                         break;
  77.                                                                                        
  78.                         case LD_ASR_FOUNDZERO:          printf("未知口令\r\n");
  79.                                                                                         nAsrStatus = LD_ASR_NONE;
  80.                                                                                         break;
  81.                                                                                        
  82.                         default:                                                nAsrStatus = LD_ASR_NONE;
  83.                                                                                         break;
  84.                         }
  85.         }               
  86. }



复制代码

所有资料51hei提供下载:
程序源码.rar (1.22 MB, 下载次数: 249)



作者: mkkygege    时间: 2019-4-6 15:13
看着非常的赞
作者: mingyong78    时间: 2019-8-21 11:54
感谢分享

作者: zpwgf    时间: 2019-9-14 19:00
兄弟,怎么接线呢?
作者: mingyong78    时间: 2019-9-15 23:49
正在解决播放MP3不全的问题,感谢楼主分享
作者: leo2002zhang    时间: 2019-9-16 10:29
不错,我也想尝试一下。
作者: 蒸鱼z    时间: 2019-10-7 22:36
zpwgf 发表于 2019-9-14 19:00
兄弟,怎么接线呢?

同问 层主知道怎么接了吗

作者: hai911    时间: 2020-1-20 16:04
新手 谢谢分享。
作者: 助手    时间: 2020-4-25 17:43
可以实现对话吗?
作者: 489465165416541    时间: 2020-5-3 12:10
感谢分享
作者: caibiyige    时间: 2021-4-23 18:56
怎么接线啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1