1@page kws_demo HaaS AI之HaaS语音唤醒 2 3[更正文档](https://gitee.com/alios-things/kws_demo/edit/master/README.md)      [贡献说明](https://help.aliyun.com/document_detail/302301.html) 4 5# 1. 案例简介 6kws(keyword spooting)是基于本地离线唤醒引擎,主要有三个部分组成: 71. 接入模拟麦克风(Mic3输入),采集HaaS HaaS唤醒词; 82. 当唤醒后,首先HaaS100上进行LED跑马灯闪烁; 93. 接入喇叭,播放本地响应词(mp3)。 10 11 12# 2. 基础知识 13## 2.1 基础目录结构 14```tree 15├── cp_resources.py # 拷贝本地语料到/prebuild/data目录,编译进文件系统 16├── kws.c # 唤醒词(keyword spooting)响应处理逻辑代码 17├── kws.h # 唤醒词(keyword spooting)头文件 18├── main.c # 该solution核心打印输出代码,入口**application_start** 19├── maintask.c # 系统主任务入口处理,入口**aos_maintask** 20├── Makefile # aos make编译时入口 21├── package.yaml # 编译系统配置文件 22├── README.md # solution使用指南 23├── resources # 本地mp3语料 24│ └── mp3 25└── SConstruct # Makefile => Scon => aostools 26``` 27 28# 3. 方案介绍 29## 3.1 硬件搭建 30**接线图** 31<div align=left display=flex> 32 <img src="https://img.alicdn.com/imgextra/i3/O1CN01T0U0jL28B2pYA09qL_!!6000000007893-2-tps-972-674.png" style="max-width:600px;" /> 33</div> 34 35**HaaS100硬件排线图请参考** 36https://help.aliyun.com/document_detail/184186.html?spm=a2c4g.11186623.6.703.274c51344iOgNc 37 38购买链接仅供参考!!我们不负责商家发货的品质保障等问题!! 39 40| 名称 | 数量 | 参考链接 | 41| ------ | :-----: | :----: | 42| HaaS100开发版 | 1 | [HaaS100购买链接](https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.2.38a23a98TnoFxv&id=627354125244&user_id=4160407286&cat_id=2&is_b=1&rn=bb0ed71a917987289b7d66f1803f4efc) | 43| microUSB数据线 | 1 | 普通microusb线即可 | 44| 模拟MIC | 1 | [模拟MIC参考链接](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.795a2e8drZ42nl&id=583316469629&_u=531h6c618fe) | 45| 喇叭 | 1 | [喇叭参考链接](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.6c4e2e8de1Ubch&id=564311744050&_u=ob3iuit4288) | 46 47 48## 3.2 软件架构 49<div align=left display=flex> 50 <img src="https://img.alicdn.com/imgextra/i2/O1CN016gzTt31mgGHLJEzSi_!!6000000004983-2-tps-664-446.png" style="max-width:600px;" /> 51</div> 52 53> * kws_demo: 主要打通实现AI语音引擎的初始化,以及处理唤醒后的跑马灯效果和语音响应播报。 54> * ai_agent组件:是AliOS Things上的AI引擎核心模块,后端接入不同的推理引擎,本案例中在初始化ai_agent时选择AI_MODEL_KWS(keyword spooting)。 55> * uVoice组件:是AliOS Things上智能语音解决方案的核心组件,提供了本地音频,URL音频,TTS合成等基础功能,音频格式支持mp3, m4a, wav, opus等主流格式,本案例中使用它来进行本地mp3语料的响应播报。 56> * A2SA组件:是AliOS Things上音频服务框架,兼容ALSA应用接口访问,支持音频硬件驱动抽象,多音频驱动加载/卸载,VFS接口支持等功能。 57 58# 4. AliOS Things开发环境搭建 59案例相关的代码下载、编译和固件烧录均依赖AliOS Things配套的开发工具,所以首先需要参考[《AliOS Things集成开发环境使用说明之搭建开发环境》](https://help.aliyun.com/document_detail/302378.html),下载安装。 60待开发环境搭建完成后,可以按照以下步骤进行示例的测试。 61 62## 4.7 案例代码下载 63该案例相关的源代码下载可参考[《AliOS Things集成开发环境使用说明之创建工程》](https://help.aliyun.com/document_detail/302379.html)。 64其中: 65> 选择解决方案: “HaaS语音唤醒案例”或者“kws_demo” 66 67> 选择开发板: HaaS100 68 69## 4.8 代码编译、烧录 70-- 固件编译方法可参考[《AliOS Things集成开发环境使用说明之编译固件》](https://help.aliyun.com/document_detail/302384.html)。 71 72### 4.8.1 文件件系统烧录 73本组件例子中使用到到的本地语料存放在代码中hardware/chip/haas1000/prebuild/data/目录下mp3目录,除烧录kws_demo image外,需烧录littlefs文件系统,请将hardware/chip/haas1000/package.yaml文件中以下代码段的注释打开: 74 75```yaml 76 program_data_files: 77 - filename: release/write_flash_tool/ota_bin/littlefs.bin 78 address: 0xB32000 79``` 80 81-- 固件烧录方法可参考[《AliOS Things集成开发环境使用说明之烧录固件》](https://help.aliyun.com/document_detail/302383.html)。 82 83### 4.9 打开串口 84 85固件烧录完成后,可以通过串口查看示例的运行结果,打开串口的具体方法可参考[《AliOS Things集成开发环境使用说明之查看日志》](https://help.aliyun.com/document_detail/302382.html)。 86 87# 5. 案例演示 88<video width="100%" height="560" controls="controls" src="https://cloud.video.taobao.com//play/u/3903519387/p/2/e/6/t/1/312916213915.mp4"></video> 89 90当程序烧录完成后,直接喊出“HaaS HaaS",就可以看到视频所示的效果。目前只支持近场唤醒,唤醒距离1米左右。如果听不到声音请逆时针选择喇叭蓝色旋钮调节音量至最大。 91 92# 6. 总结 93本文提供了本地语音唤醒体验的案例,用户可以根据需要在demo中修改唤醒后的逻辑处理,比如唤醒后直接播放音乐或者控制GPIO等操作,后续我们将有更多本地唤醒词输出,快来体验一下吧。 94