标题: 【Arduino】168种传感器系列实验(171)---HLK-V20离线语音模块 [打印本页]

作者: eagler8    时间: 2020-10-30 09:45
标题: 【Arduino】168种传感器系列实验(171)---HLK-V20离线语音模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别









作者: eagler8    时间: 2020-10-30 10:23
本帖最后由 eagler8 于 2020-10-30 12:04 编辑

HLK-V20
是针对大量纯离线控制场景和产品,最新推出的高性能纯离线语音识别模块,可广泛且快速的应用于智能家居、各类智能小家电、86盒、玩具、灯具、工业、医疗、物联网、汽车、安防与照明等需要语音操控的智能模块。模块采用32bit RSIC架构内核,并加入了专门针对信号处理和语音识别所需要的DSP令集,支持浮点运算的FPU运算单元,以及FFT加速器,通过神经网络对音频信号进行训练学习,提高语音信号的识别能力。该方案支持150条本地指令离线识别,可自由定制唤醒词、命令词与应答播报词,具有丰富的外围接口。







作者: eagler8    时间: 2020-10-30 10:24
HLK-V20模块上的二块芯片







作者: dj3365191    时间: 2020-10-30 10:31
啊,实验呢?
作者: eagler8    时间: 2020-10-30 10:31
HLK-V20特性




作者: eagler8    时间: 2020-10-30 10:32


作者: eagler8    时间: 2020-10-30 10:52
LPA4871
是一款 3W、单声道 AB 类音频功率放大器。工作电压 2.5-5.5V,以 BTL 桥接方式,在 5V 电源供电情况下,可以给 4Ω 负载提供 THD 小于 10%、平均 3.0W 的输出功率。在关断模式下,电流典型值小于 0.5μA。LPA4871 是为提供足功率、高保真音频输出而专门设计的,它仅需少量的外围器件,输出不需要外接耦合电容或上举电容,采用 SOP-8 封装,节约电路面积,非常适合移动电话及各种移动设备等使用低电压、低功耗应用方案上使用。





作者: eagler8    时间: 2020-10-30 11:14
LPA4871特征
工作电压:2.5 - 5.5V
创新的“开关/切换噪声”抑制技术,杜绝了上电、掉电出现的噪声
10% THD+N,VDD=5V,4Ω 负载下,提供高达
2.9W 的输出功率
10% THD+N,VDD=5V,8Ω 负载下,提供高达
1.8W 的输出功率
关断电流< 0.5μA
过温保护
SOP-8 封装






作者: eagler8    时间: 2020-10-30 11:16
HLK-V20模块具有丰富的系统外设,包括UART/I2C/SPI/PWM/I2S/DAC/GPIO/DMic/AMic。
下图为模块系统功能框图。





作者: eagler8    时间: 2020-10-30 11:19
HLK-V20模块接脚




作者: eagler8    时间: 2020-10-30 11:28




作者: eagler8    时间: 2020-10-30 12:03
HLK-V20模块底板尺寸




作者: eagler8    时间: 2020-12-3 19:49
HLK-V20配套咪头(6027)




作者: eagler8    时间: 2020-12-3 19:50


作者: eagler8    时间: 2020-12-3 19:52
HLK-V20配套喇叭(8欧2瓦)




作者: eagler8    时间: 2020-12-3 19:54


作者: eagler8    时间: 2020-12-3 20:12
使用2.0MMP8插排,引出HLK-V20模块接线




作者: eagler8    时间: 2020-12-5 10:37
尝试使用模块制作语音识别控制接线板。




作者: eagler8    时间: 2020-12-5 10:41
通过命令词”打开开关”,对应模块上 B2 引脚,继电器模块接通220V插座,板上 LED1点亮;使用命令词”关闭 开关”,继电器模块断开220V插座,LED 灯熄灭。
https://v.youku.com/v_show/id_XNDk5NDQzNTk0MA==.html


https://v.youku.com/v_show/id_XNDk5NDQzNTk0MA==.html



作者: eagler8    时间: 2020-12-7 17:05
本帖最后由 eagler8 于 2020-12-9 10:48 编辑

通过命令词”打开灯光”,对应模块上 B6 引脚,继电器模块接通5V灯光电源,打开灯光;使用命令词”关闭灯光”,继电器模块断开5V灯光电源,LED 灯带熄灭。见视频


https://v.youku.com/v_show/id_XNDk5NzYwNDEyNA==.html


[media=x,500,375][/media]



作者: eagler8    时间: 2020-12-7 17:19


作者: eagler8    时间: 2021-4-29 11:05

官方提供的资料下载地址:
https://h.hlktech.com/mobile/download/fdetail/93



作者: eagler8    时间: 2021-4-29 11:10
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  项目测试:尝试简单读取HLK-V20模块的数据


  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  4.   项目测试:尝试简单读取HLK-V20模块的数据
  5.   模块接线:
  6.   HLK_V20   Arduino
  7.   VCC         5V
  8.   GND         GND
  9.   TX          D2
  10.   RX          D3
  11. */

  12. #include <SoftwareSerial.h>
  13. SoftwareSerial HLK_V20(2, 3);

  14. void setup() {
  15.   Serial.begin(115200);
  16.   HLK_V20.begin(115200);
  17. }

  18. void loop() {
  19.   Serial.println(HLK_V20.readString());
  20.   delay(1000);
  21. }
复制代码




作者: eagler8    时间: 2021-4-29 11:12
实验串口数据




作者: eagler8    时间: 2021-4-29 11:31
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  项目测试:读取并显示HLK-V20模块的串口输出数据

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  4.   项目测试:读取并显示HLK-V20模块的串口输出数据
  5.   模块接线:
  6.   HLK_V20   Arduino
  7.   VCC         5V
  8.   GND         GND
  9.   TX          D2
  10.   RX          D3
  11. */

  12. #include <SoftwareSerial.h>//导入软串口库
  13. SoftwareSerial HLK_V20(2, 3);//定义软串口接脚D2与D3

  14. void setup() {
  15.   Serial.begin(115200);
  16.   HLK_V20.begin(115200);
  17.   Serial.println("HLK_V20 准备就绪");
  18. }

  19. void loop() {
  20.   int outputValue = 0;
  21.   String HLK_V20_feedback = "";
  22.   if (HLK_V20.available()) {//当串口接收到数据时,执行下述程序
  23.     HLK_V20_feedback = HLK_V20.readString();
  24.     Serial.println(HLK_V20_feedback); //串口打印HLK_V20输出的反馈数据
  25.     Serial.println("");
  26.     delay(100);
  27.   }
  28. }
复制代码





作者: eagler8    时间: 2021-4-29 11:35
实验串口返回情况




作者: eagler8    时间: 2021-4-29 14:30
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  项目测试:HLK-V20模块控制浴霸的串口输出数据

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  4.   项目测试:HLK-V20模块控制浴霸的串口输出数据
  5.   模块接线:
  6.   HLK_V20   Arduino
  7.   VCC         5V
  8.   GND         GND
  9.   TX          D2
  10.   RX          D3
  11. */

  12. #include <SoftwareSerial.h>//导入软串口库
  13. SoftwareSerial HLK_V20(2, 3);//定义软串口接脚D2与D3

  14. void setup() {
  15.   Serial.begin(115200);
  16.   HLK_V20.begin(115200);
  17.   Serial.println("HLK_V20 准备就绪");
  18. }

  19. void loop() {
  20.   int outputValue = 0;
  21.   String HLK_V20_feedback = "";
  22.   while (HLK_V20.available()) {//当串口接收到数据时,执行下述程序
  23.     HLK_V20_feedback = HLK_V20.readString();
  24.     Serial.print("串口命令=");
  25.     Serial.println(HLK_V20_feedback); //串口打印HLK_V20输出的反馈数据
  26.     delay(500);

  27.   }
  28.   if (HLK_V20_feedback.endsWith("dakaiyuba") == 1) {
  29.     Serial.println("播报语:已为您打开浴霸");
  30.   }
  31.   else if (HLK_V20_feedback.endsWith("Jguanbiyuba") == 1) {
  32.     Serial.println("播报语:已为您关闭浴霸");
  33.   }
  34.   else if (HLK_V20_feedback.endsWith("dakaizaoming") == 1) {
  35.     Serial.println("播报语:已为您打开照明");
  36.   }
  37.   else if (HLK_V20_feedback.endsWith("guanbizhaoming") == 1) {
  38.     Serial.println("播报语:已为您关闭照明");
  39.   }
  40.   else if (HLK_V20_feedback.endsWith("dakainuanqi") == 1) {
  41.     Serial.println("播报语:已为您打开暖气");
  42.   }
  43.   else if (HLK_V20_feedback.endsWith("guanbinuanq") == 1) {
  44.     Serial.println("播报语:已为您关闭暖气");
  45.   }
  46.   else if (HLK_V20_feedback.endsWith("dakaicfeng") == 1) {
  47.     Serial.println("播报语:已为您打开吹风");
  48.   }
  49.   else if (HLK_V20_feedback.endsWith("guanbicfeng") == 1) {
  50.     Serial.println("播报语:已为您关闭吹风");
  51.   }
  52.   else if (HLK_V20_feedback.endsWith("Jwakeup_uni") == 1) {
  53.     Serial.println("播报语:我在");
  54.   }
  55.   else if (HLK_V20_feedback.endsWith("exitUni") == 1) {
  56.     Serial.println("播报语:有需要再叫我");
  57.   }
  58. }
复制代码





作者: eagler8    时间: 2021-4-29 14:34
实验串口返回情况




作者: eagler8    时间: 2021-4-29 19:07


作者: eagler8    时间: 2021-4-29 19:08


作者: eagler8    时间: 2021-4-29 19:10


作者: eagler8    时间: 2021-4-29 19:11


作者: eagler8    时间: 2021-4-29 19:12


作者: eagler8    时间: 2021-4-30 12:01
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  项目测试:语音识别HLK-V20控制三色LED灯模块

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
  4.   项目测试:语音识别HLK-V20控制三色LED灯模块
  5.   模块接线:
  6.   HLK_V20   Arduino
  7.   VCC         5V
  8.   GND         GND
  9.   TX          D0
  10.   RX          D1
  11.   三色LED灯 Arduino
  12.   R           D5
  13.   G           D6
  14.   B           D7
  15.   -           GND
  16. */

  17. String hlk;

  18. void setup() {
  19.   Serial.begin(115200);
  20.   hlk = "";
  21.   pinMode(5, OUTPUT);
  22.   pinMode(6, OUTPUT);
  23.   pinMode(7, OUTPUT);
  24.   digitalWrite(5, LOW);
  25.   digitalWrite(6, LOW);
  26.   digitalWrite(7, LOW);
  27.   Serial.println("HLK_V20 准备就绪");
  28. }

  29. void loop() {
  30.   while (Serial.available() > 0) {
  31.     hlk = String(hlk) + String(char(Serial.read()));
  32.   }
  33.   if (String(hlk).indexOf(String("openled")) != -1) {
  34.     digitalWrite(5, HIGH);
  35.     digitalWrite(6, HIGH);
  36.     digitalWrite(7, HIGH);
  37.     Serial.println("播报语:已为您打开灯");
  38.     hlk = "";

  39.   } else if (String(hlk).indexOf(String("closeled")) != -1) {
  40.     digitalWrite(5, LOW);
  41.     digitalWrite(6, LOW);
  42.     digitalWrite(7, LOW);
  43.     Serial.println("播报语:已为您关闭灯");
  44.     hlk = "";
  45.   }
  46.   else if (String(hlk).indexOf(String("ksetcolorred")) != -1) {
  47.     digitalWrite(5, HIGH);
  48.     digitalWrite(6, LOW);
  49.     digitalWrite(7, LOW);
  50.     Serial.println("播报语:好的");//调为红色灯
  51.     hlk = "";
  52.   }
  53. }
复制代码





作者: eagler8    时间: 2021-4-30 12:03
实验串口返回情况




作者: eagler8    时间: 2021-4-30 12:08
实验场景图




作者: eagler8    时间: 2021-4-30 14:39
项目测试:语音识别HLK-V20控制三色LED灯模块(视频)

https://v.youku.com/v_show/id_XNTE0Njk0Njk4NA==.html


https://v.youku.com/v_show/id_XNTE0Njk0Njk4NA==.html


作者: eagler8    时间: 2021-4-30 16:56
实验开源图形编程(Mixly、Mind+、编玩边学)




作者: eagler8    时间: 2021-4-30 16:58
实验串口返回情况




作者: zhizhuoggg    时间: 2021-4-30 17:44
挺好的,买个模块试试
作者: eagler8    时间: 2021-4-30 17:52
海凌科人气语音模组V20改词攻略(可以修改唤醒语和命令词)

专用烧录器








作者: eagler8    时间: 2021-4-30 18:00
第一步,注册一个云知声通行证账号
hivoice点cn





作者: eagler8    时间: 2021-4-30 18:17





作者: eagler8    时间: 2021-4-30 18:19



作者: eagler8    时间: 2021-4-30 18:42
第二步,进入产品控制台,选择创建一个应用




作者: eagler8    时间: 2021-4-30 18:45
第三步,进入设备场景,选择需要的语音版本







作者: eagler8    时间: 2021-4-30 19:15
第四步,选择系统与设备类型——蜂鸟M芯片+通用设备平台




作者: eagler8    时间: 2021-4-30 19:18
本帖最后由 eagler8 于 2021-4-30 20:45 编辑

第五步,创建产品版




作者: eagler8    时间: 2021-5-1 11:44
zhizhuoggg 发表于 2021-4-30 17:44
挺好的,买个模块试试

是的,识别效果还不错
作者: eagler8    时间: 2021-5-1 16:04
第六步,配置SDK能力,前端信号处理





作者: eagler8    时间: 2021-5-1 16:16
第七步,Pin脚配置





作者: eagler8    时间: 2021-5-1 16:41
第八步,自定义唤醒语









作者: eagler8    时间: 2021-5-1 16:47
第九步,自定义离线命令词与应答语

语法格式为:
action=命令词1|命令词2...@回复语

例:TempSet15=设置十五度|十五度@已设为十五度
action、命令词、回复语均由用户定义

action一个控制指令的唯一标识,用户对着设备说出“设置十五度”“十五度”并被语义理解时,如已对接设备,语义理解模块会将TempSet15传给设备。

命令词想要定义的语音话术,用户必须按照定义的话术说出才有效。如用户可以使用“设置十五度”“十五度”来实现同一个设置温度15度的控制。

回复语针对该条控制指令的设备回复播报。
回复语中支持标签,来指定某些字播报时的读音:
<py>:需要对单个汉字的发音进行纠正的场合。
注:拼音声调范围为 1 - 5,1 - 4 对应一声到四声,5对应轻声。
例:已调<py>tiao2</py>至中<py>zhong1</py>风档
播报为:已调(tiao2)至中(zhong1)风档
<value>:需要将数字按照数值读法播报
例:已设为<value>15</value>度
播报为:已设为十五度
<code>:需要将数字按照数字串逐位播报
例:已设为<code>15</code>度
播报为:已设为一五度



作者: eagler8    时间: 2021-5-1 16:52


作者: eagler8    时间: 2021-5-1 16:59


作者: eagler8    时间: 2021-5-1 20:07
第十步,设置免唤醒词





作者: eagler8    时间: 2021-5-1 20:14
第十一步,配置发音人




作者: eagler8    时间: 2021-5-5 16:25
第十二步,设置其他配置





作者: 木示    时间: 2022-2-14 17:12
可以增加语种吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1