1@page kws 智能语音唤醒 2# 实验介绍 3本章主要介绍通过本地HaaS HaaS唤醒词唤醒设备实现本地语音播报响应。 4开始学习之前我们先看一下显示效果,如下图所示: 5 6<video width="100%" height="560" controls="controls" src="https://cloud.video.taobao.com//play/u/3903519387/p/2/e/6/t/1/312891141393.mp4"></video> 7 8# 涉及知识点 9 10- 模拟MIC声音采样 11- 喇叭播放mp3 12- 本地唤醒AI推理引擎运用 13- OLED绘图 14 15 16# 开发环境准备 17## 硬件 18 开发用电脑一台 19 HAAS EDU K1 开发板一块 20 模拟MIC一个 21 喇叭一个 22 USB2TypeC 数据线一根 23 24## 软件 25### AliOS Things开发环境搭建 26 开发环境的搭建请参考 @ref HaaS_EDU_K1_Quick_Start (搭建开发环境章节),其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。 27 28### HaaS EDU K1 DEMO 代码下载 29 HaaS EDU K1 DEMO 的代码下载请参考 @ref HaaS_EDU_K1_Quick_Start (创建工程章节),其中, 30 选择解决方案: 基于教育开发板的示例 31 选择开发板: haaseduk1 board configure 32 33### 代码编译、烧录 34 参考 @ref HaaS_EDU_K1_Quick_Start (3.1 编译工程章节),点击 ✅ 即可完成编译固件。 35 参考 @ref HaaS_EDU_K1_Quick_Start (3.2 烧录镜像章节),点击 "⚡️" 即可完成烧录固件。 36 37### OLED绘图 38参考上一章节。 39# 软硬件环境准备 40 41## 硬件 42 1、开发用电脑一台 43 2、HaaS EDU K1开发板一个 44 3、USB Type-C 数据线一根 45 4、外接模拟MIC一个 46 47[模拟MIC购买链接](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.795a2e8drZ42nl&id=583316469629&_u=531h6c618fe) 48[喇叭购买链接](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.6c4e2e8de1Ubch&id=564311744050&_u=ob3iuit4288) 49 50# 硬件接线图 51在本实验中,喇叭和模拟MIC与HaaS EDUK1连接如下所示: 52 53<div align=center> 54 <img src="https://img.alicdn.com/imgextra/i4/O1CN01XKHM5s1djcdqTJo1S_!!6000000003772-2-tps-1394-724.png" style="zoom:50%;" /> 55</div> 56MIC也可以接MIC1_P,喇叭的in也可以接到SPK_LN。 57 58## 软件设计 59#### 应用代码部分 60文件路径如下: 61solutions/eduk1_demo/k1_apps/kws/kws.c 62solutions/eduk1_demo/k1_apps/kws/kws.h 63```basic 64# 唤醒后蜂鸣器发出声音,并播放本地响应TTS,等待播放结束重现显示语音唤醒初始界面 65 66int32_t kws_callback(ai_result_t *result) 67{ 68 int32_t kws_ret = (int32_t)*result; 69 player_state_t player_state = -1; 70 71 if (kws_ret) { 72 beeper_start(0, 1, 25); 73 OLED_Clear(); 74 OLED_Show_String(14, 24, "Hi, I am here!", 16, 1); 75 OLED_Refresh_GRAM(); 76 beeper_stop(0); 77 78 /*play local asr*/ 79 play_local_mp3(); 80 81 uvocplayer->wait_complete(); 82 83 OLED_Clear(); 84 OLED_Show_String(28, 16, "HaaS HaaS!", 16, 1); 85 OLED_Show_String(28, 34, "Wakeup me!", 16, 1); 86 87 OLED_Icon_Draw(2, 24, &icon_skip_left, 0); 88 OLED_Icon_Draw(122, 24, &icon_skip_right, 0); 89 OLED_Refresh_GRAM(); 90 } 91 92 return 0; 93} 94``` 95 96 97