37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十:海凌科HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
海凌科人气语音模组V20改词攻略(可以修改唤醒语和命令词)
专用烧录器
第一步,注册一个云知声通行证账号
https://udp.hivoice.cn/login
第二步,进入产品控制台,选择创建一个应用
第三步,进入设备场景,选择需要的语音版本
第四步,选择系统与设备类型——蜂鸟M芯片+通用设备平台
第五步,创建产品版本
第六步,配置SDK能力,前端信号处理
第七步,Pin脚配置
第八步,自定义唤醒语
第九步,自定义离线命令词与应答语
语法格式为:
action=命令词1|命令词2…@回复语
例:TempSet15=设置十五度|十五度@已设为十五度
action、命令词、回复语均由用户定义
- action由英文、下划线“_”和数字组成,必须英文开头,不区分大小写,15个字符内
- 命令词最多支持150条,每条限 2 - 10 个字符,仅支持中文
- 一个action最多支持一个”@”定义回复语,单条回复语不得超过500个字符,支持中英文、数字、逗号、句号、问号
action一个控制指令的唯一标识,用户对着设备说出“设置十五度”“十五度”并被语义理解时,如已对接设备,语义理解模块会将TempSet15传给设备。
命令词想要定义的语音话术,用户必须按照定义的话术说出才有效。如用户可以使用“设置十五度”“十五度”来实现同一个设置温度15度的控制。
回复语针对该条控制指令的设备回复播报。
回复语中支持标签,来指定某些字播报时的读音:
:需要对单个汉字的发音进行纠正的场合。
注:拼音声调范围为 1 - 5,1 - 4 对应一声到四声,5对应轻声。
例:已调tiao2至中zhong1风档
播报为:已调(tiao2)至中(zhong1)风档
:需要将数字按照数值读法播报
例:已设为15度
播报为:已设为十五度
:需要将数字按照数字串逐位播报
例:已设为15
度
播报为:已设为一五度
第十步,设置免唤醒词
第十一步,配置发音人
第十二步,设置其他配置
通过命令词”打开灯光”,对应模块上 B6 引脚,继电器模块接通5V灯光电源,打开灯光;使用命令词”关闭灯光”,继电器模块断开5V灯光电源,LED 灯带熄灭。见视频
https://v.youku.com/v_show/id_XNDk5NzYwNDEyNA==.html
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十:海凌科HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
项目测试:语音识别HLK-V20控制三色LED灯模块及自动调光
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别项目测试:语音识别HLK-V20控制三色LED灯模块及自动调光模块接线:HLK_V20 ArduinoVCC 5VGND GNDTX D0RX D1三色LED灯 ArduinoR D5G D6B D7- GND
*/String hlk;
int ledPin = 6;//定义Led引脚,输出PWMvoid setup() {Serial.begin(115200);hlk = "";pinMode(5, OUTPUT);pinMode(ledPin, OUTPUT);pinMode(7, OUTPUT);digitalWrite(5, LOW);digitalWrite(ledPin, LOW);digitalWrite(7, LOW);Serial.println("HLK_V20 准备就绪");
}void loop() {while (Serial.available() > 0) {hlk = String(hlk) + String(char(Serial.read()));}if (String(hlk).indexOf(String("openled")) != -1) {digitalWrite(5, HIGH);digitalWrite(ledPin, HIGH);digitalWrite(7, HIGH);Serial.println("播报语:已为您打开灯");hlk = "";} else if (String(hlk).indexOf(String("closeled")) != -1) {digitalWrite(5, LOW);digitalWrite(ledPin, LOW);digitalWrite(7, LOW);Serial.println("播报语:已为您关闭灯");hlk = "";}else if (String(hlk).indexOf(String("ksetcolorred")) != -1) {digitalWrite(5, HIGH);digitalWrite(ledPin, LOW);digitalWrite(7, LOW);Serial.println("播报语:好的");//调为红色灯hlk = "";}else if (String(hlk).indexOf(String("zengjialiangdu")) != -1) {for (int i = 0; i < 255; i++) { //每次+1的循环analogWrite(ledPin, i); //LED的亮度逐渐增加delay(8); //延时8毫秒}digitalWrite(5, LOW);digitalWrite(7, LOW);Serial.println("播报语:好的");//增加亮度hlk = "";}else if (String(hlk).indexOf(String("jianxiaoliangdu")) != -1) {for (int i = 255; i > 0; i--) { //每次-1的循环analogWrite(ledPin, i); //LED的亮度逐渐减小delay(8); //延时8毫秒}digitalWrite(5, LOW);digitalWrite(7, LOW);Serial.println("播报语:好的");//减少亮度hlk = "";}}
实验串口返回情况
Arduino实验场景图
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
项目测试:语音识别HLK-V20控制三色LED灯模块及自动调光(实验视频36秒)
https://v.youku.com/v_show/id_XNTE2OTE4Mzc2OA==.html?spm=a2hcb.playlsit.page.1
后来查到,离线语音模块的核心处理器是采用中国本土US516P6 芯片,属于云知声AI蜂鸟m系列。
蜂鸟系列芯片是云知声最新一代专门为离在线远场语音交互场景设计的高性能,高集成度,低成本的语音智能芯片,主要面对智能家电,小家电,灯具,智能插座等产品领域。基于蜂鸟芯片的深度定制算法,云知声离线语音技术在远场拾音、声源定位、高性能识别、低功耗唤醒、自然音色、one-shot等方面都有不错表现。
Unisound AI芯片:蜂鸟M US516P6
特点:
1、简洁友好的客制化工具,可快速部署到不同的终端产品
2、可以针对设备具体的使用场景,配置不同的语音交互方案,自动生成SDK程序
3、单MIC,识别距离:0-5M
4、唤醒词自定义
5、150 条本地指令离线识别,离线命令词与应答语自定义
6、10条免唤醒命令词,无需唤醒,说出命令词即可控制设备
7、Pin 脚配置通过定制可以自动生成代码,实现GPIO、PWM、UART等端口根据语音指令输出自定义信号,无需代码开发即可控制外部设备
8、多种发音人音色:提供标准女声、甜美女声、可爱女声、台湾女声、标准男声、女童声、男童声七种音色可选
9、稳态降噪功能
10、识别率高达90%以上
11、OTA