找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8042|回復(fù): 10
收起左側(cè)

STM32+LD3320實(shí)現(xiàn)語(yǔ)音識(shí)別與人機(jī)對(duì)話的源程序

  [復(fù)制鏈接]
ID:386676 發(fā)表于 2018-8-15 21:01 | 顯示全部樓層 |閱讀模式
LD3320程序代碼
0.png
單片機(jī)源程序如下:
  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];     //邏輯磁盤工作區(qū).文件系統(tǒng)默認(rèn)支持3個(gè)磁盤,我們只用了一個(gè) SD編號(hào)0

  11. int main(void)
  12. {                                          
  13.         u8 nAsrRes=0;                      //記錄識(shí)別碼
  14.         
  15.         delay_init();                               //延時(shí)初始化
  16.         Usart1_init(115200);                   //串口初始化波特率為115200
  17.         LED_Init();                            //LED初始化
  18.         while(SD_Init())                   //SD卡初始化
  19.         {
  20.                 printf("SD卡初始化錯(cuò)誤\r\n");  //串口提示SD卡初始化錯(cuò)誤
  21.                 delay_ms(2000);                //延時(shí)2s
  22.         }
  23.         f_mount(&fs[0],"0:",1);                //掛載SD卡        
  24.         LD3320_Init();                           //初始化LD3320
  25.                
  26.         printf(" 口令1:重啟系統(tǒng)\r\n ");
  27.         printf(" 口令2:講個(gè)笑話\r\n ");
  28.         printf(" 口令3:打開\r\n ");
  29.         printf(" 口令4:關(guān)閉\r\n ");
  30.         nAsrStatus = LD_ASR_NONE;                     //初始狀態(tài):沒(méi)有在作ASR
  31.         
  32.         PlayDemoSound_mp3("系統(tǒng)準(zhǔn)備.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;              //啟動(dòng)一次ASR識(shí)別流程:ASR初始化,ASR添加關(guān)鍵詞語(yǔ),啟動(dòng)ASR運(yùn)算
  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識(shí)別成功結(jié)束,取ASR識(shí)別結(jié)果                                                                                                                                                                                                
  51.                                                                                         switch(nAsrRes)                  
  52.                                                                                         {
  53.                                                                                                 case CODE_CQXT: printf("接收到口令:重啟系統(tǒng)\r\n");
  54.                                                                                                                                 PlayDemoSound_mp3("重啟.mp3");   //播放文件
  55.                                                                                                                                 NVIC_SystemReset();              //重啟
  56.                                                                                                                                 break;
  57.                                                                                                 case CODE_JGXH:        printf("接收到口令:講個(gè)笑話\r\n");
  58.                                                                                                                                 PlayDemoSound_mp3("笑話.mp3");   //播放文件
  59.                                                                                                                                 break;        
  60.                                                                                                 case CODE_DK:        printf("接收到口令:打開\r\n");
  61.                                                                                                                     PlayDemoSound_mp3("打開.mp3");       //播放文件
  62.                                                                                                                                 delay_ms(1000);                      //語(yǔ)音中提示是1s延時(shí)后,打開LED
  63.                                                                                                                                 LED_D3=0;
  64.                                                                                                                                 LED_D4=0;
  65.                                                                                                                                 break;        
  66.                                                                                                 case CODE_GB:        printf("接收到口令:關(guān)閉\r\n");
  67.                                                                                                                                 PlayDemoSound_mp3("關(guān)閉.mp3");       //播放文件
  68.                                                                                                                                 delay_ms(1000);                      //語(yǔ)音中提示是1s延時(shí)后,關(guān)閉LED
  69.                                                                                                                                 LED_D3=1;
  70.                                                                                                                                 LED_D4=1;
  71.                                                                                                                                 break;                                                                                                        
  72.                                                                                                 default:        printf("不在口令集之內(nèi)\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. }



復(fù)制代碼

所有資料51hei提供下載:
程序源碼.rar (1.22 MB, 下載次數(shù): 249)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:286053 發(fā)表于 2019-4-6 15:13 | 顯示全部樓層
看著非常的贊
回復(fù)

使用道具 舉報(bào)

ID:602314 發(fā)表于 2019-8-21 11:54 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:583948 發(fā)表于 2019-9-14 19:00 | 顯示全部樓層
兄弟,怎么接線呢?
回復(fù)

使用道具 舉報(bào)

ID:602314 發(fā)表于 2019-9-15 23:49 | 顯示全部樓層
正在解決播放MP3不全的問(wèn)題,感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:428438 發(fā)表于 2019-9-16 10:29 | 顯示全部樓層
不錯(cuò),我也想嘗試一下。
回復(fù)

使用道具 舉報(bào)

ID:438853 發(fā)表于 2019-10-7 22:36 | 顯示全部樓層
zpwgf 發(fā)表于 2019-9-14 19:00
兄弟,怎么接線呢?

同問(wèn) 層主知道怎么接了嗎
回復(fù)

使用道具 舉報(bào)

ID:69091 發(fā)表于 2020-1-20 16:04 | 顯示全部樓層
新手 謝謝分享。
回復(fù)

使用道具 舉報(bào)

ID:428388 發(fā)表于 2020-4-25 17:43 | 顯示全部樓層
可以實(shí)現(xiàn)對(duì)話嗎?
回復(fù)

使用道具 舉報(bào)

ID:743244 發(fā)表于 2020-5-3 12:10 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:834236 發(fā)表于 2021-4-23 18:56 | 顯示全部樓層
怎么接線啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表