找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7082|回复: 10
打印 上一主题 下一主题
收起左侧

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, 下载次数: 248)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:286053 发表于 2019-4-6 15:13 | 只看该作者
看着非常的赞
回复

使用道具 举报

板凳
ID:602314 发表于 2019-8-21 11:54 | 只看该作者
感谢分享
回复

使用道具 举报

地板
ID:583948 发表于 2019-9-14 19:00 | 只看该作者
兄弟,怎么接线呢?
回复

使用道具 举报

5#
ID:602314 发表于 2019-9-15 23:49 | 只看该作者
正在解决播放MP3不全的问题,感谢楼主分享
回复

使用道具 举报

6#
ID:428438 发表于 2019-9-16 10:29 | 只看该作者
不错,我也想尝试一下。
回复

使用道具 举报

7#
ID:438853 发表于 2019-10-7 22:36 | 只看该作者
zpwgf 发表于 2019-9-14 19:00
兄弟,怎么接线呢?

同问 层主知道怎么接了吗
回复

使用道具 举报

8#
ID:69091 发表于 2020-1-20 16:04 | 只看该作者
新手 谢谢分享。
回复

使用道具 举报

9#
ID:428388 发表于 2020-4-25 17:43 | 只看该作者
可以实现对话吗?
回复

使用道具 举报

10#
ID:743244 发表于 2020-5-3 12:10 | 只看该作者
感谢分享
回复

使用道具 举报

11#
ID:834236 发表于 2021-4-23 18:56 | 只看该作者
怎么接线啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表