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