標(biāo)題: 【Arduino】168種傳感器系列實(shí)驗(yàn)(171)---HLK-V20離線語(yǔ)音模塊 [打印本頁(yè)]

作者: eagler8    時(shí)間: 2020-10-30 09:45
標(biāo)題: 【Arduino】168種傳感器系列實(shí)驗(yàn)(171)---HLK-V20離線語(yǔ)音模塊
37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動(dòng)手試試多做實(shí)驗(yàn),不管成功與否,都會(huì)記錄下來(lái)——小小的進(jìn)步或是搞不掂的問(wèn)題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別









作者: eagler8    時(shí)間: 2020-10-30 10:23
本帖最后由 eagler8 于 2020-10-30 12:04 編輯

HLK-V20
是針對(duì)大量純離線控制場(chǎng)景和產(chǎn)品,最新推出的高性能純離線語(yǔ)音識(shí)別模塊,可廣泛且快速的應(yīng)用于智能家居、各類智能小家電、86盒、玩具、燈具、工業(yè)、醫(yī)療、物聯(lián)網(wǎng)、汽車、安防與照明等需要語(yǔ)音操控的智能模塊。模塊采用32bit RSIC架構(gòu)內(nèi)核,并加入了專門針對(duì)信號(hào)處理和語(yǔ)音識(shí)別所需要的DSP令集,支持浮點(diǎn)運(yùn)算的FPU運(yùn)算單元,以及FFT加速器,通過(guò)神經(jīng)網(wǎng)絡(luò)對(duì)音頻信號(hào)進(jìn)行訓(xùn)練學(xué)習(xí),提高語(yǔ)音信號(hào)的識(shí)別能力。該方案支持150條本地指令離線識(shí)別,可自由定制喚醒詞、命令詞與應(yīng)答播報(bào)詞,具有豐富的外圍接口。







作者: eagler8    時(shí)間: 2020-10-30 10:24
HLK-V20模塊上的二塊芯片







作者: dj3365191    時(shí)間: 2020-10-30 10:31
啊,實(shí)驗(yàn)?zāi)兀?hr noshade size="2" width="100%" color="#808080"> 作者: eagler8    時(shí)間: 2020-10-30 10:31
HLK-V20特性




作者: eagler8    時(shí)間: 2020-10-30 10:32


作者: eagler8    時(shí)間: 2020-10-30 10:52
LPA4871
是一款 3W、單聲道 AB 類音頻功率放大器。工作電壓 2.5-5.5V,以 BTL 橋接方式,在 5V 電源供電情況下,可以給 4Ω 負(fù)載提供 THD 小于 10%、平均 3.0W 的輸出功率。在關(guān)斷模式下,電流典型值小于 0.5μA。LPA4871 是為提供足功率、高保真音頻輸出而專門設(shè)計(jì)的,它僅需少量的外圍器件,輸出不需要外接耦合電容或上舉電容,采用 SOP-8 封裝,節(jié)約電路面積,非常適合移動(dòng)電話及各種移動(dòng)設(shè)備等使用低電壓、低功耗應(yīng)用方案上使用。





作者: eagler8    時(shí)間: 2020-10-30 11:14
LPA4871特征
工作電壓:2.5 - 5.5V
創(chuàng)新的“開(kāi)關(guān)/切換噪聲”抑制技術(shù),杜絕了上電、掉電出現(xiàn)的噪聲
10% THD+N,VDD=5V,4Ω 負(fù)載下,提供高達(dá)
2.9W 的輸出功率
10% THD+N,VDD=5V,8Ω 負(fù)載下,提供高達(dá)
1.8W 的輸出功率
關(guān)斷電流< 0.5μA
過(guò)溫保護(hù)
SOP-8 封裝






作者: eagler8    時(shí)間: 2020-10-30 11:16
HLK-V20模塊具有豐富的系統(tǒng)外設(shè),包括UART/I2C/SPI/PWM/I2S/DAC/GPIO/DMic/AMic。
下圖為模塊系統(tǒng)功能框圖。





作者: eagler8    時(shí)間: 2020-10-30 11:19
HLK-V20模塊接腳




作者: eagler8    時(shí)間: 2020-10-30 11:28




作者: eagler8    時(shí)間: 2020-10-30 12:03
HLK-V20模塊底板尺寸




作者: eagler8    時(shí)間: 2020-12-3 19:49
HLK-V20配套咪頭(6027)




作者: eagler8    時(shí)間: 2020-12-3 19:50


作者: eagler8    時(shí)間: 2020-12-3 19:52
HLK-V20配套喇叭(8歐2瓦)




作者: eagler8    時(shí)間: 2020-12-3 19:54


作者: eagler8    時(shí)間: 2020-12-3 20:12
使用2.0MMP8插排,引出HLK-V20模塊接線




作者: eagler8    時(shí)間: 2020-12-5 10:37
嘗試使用模塊制作語(yǔ)音識(shí)別控制接線板。




作者: eagler8    時(shí)間: 2020-12-5 10:41
通過(guò)命令詞”打開(kāi)開(kāi)關(guān)”,對(duì)應(yīng)模塊上 B2 引腳,繼電器模塊接通220V插座,板上 LED1點(diǎn)亮;使用命令詞”關(guān)閉 開(kāi)關(guān)”,繼電器模塊斷開(kāi)220V插座,LED 燈熄滅。
https://v.youku.com/v_show/id_XNDk5NDQzNTk0MA==.html


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



作者: eagler8    時(shí)間: 2020-12-7 17:05
本帖最后由 eagler8 于 2020-12-9 10:48 編輯

通過(guò)命令詞”打開(kāi)燈光”,對(duì)應(yīng)模塊上 B6 引腳,繼電器模塊接通5V燈光電源,打開(kāi)燈光;使用命令詞”關(guān)閉燈光”,繼電器模塊斷開(kāi)5V燈光電源,LED 燈帶熄滅。見(jiàn)視頻


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


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



作者: eagler8    時(shí)間: 2020-12-7 17:19


作者: eagler8    時(shí)間: 2021-4-29 11:05

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



作者: eagler8    時(shí)間: 2021-4-29 11:10
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  項(xiàng)目測(cè)試:嘗試簡(jiǎn)單讀取HLK-V20模塊的數(shù)據(jù)


  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  3.   實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  4.   項(xiàng)目測(cè)試:嘗試簡(jiǎn)單讀取HLK-V20模塊的數(shù)據(jù)
  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. }
復(fù)制代碼




作者: eagler8    時(shí)間: 2021-4-29 11:12
實(shí)驗(yàn)串口數(shù)據(jù)




作者: eagler8    時(shí)間: 2021-4-29 11:31
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  項(xiàng)目測(cè)試:讀取并顯示HLK-V20模塊的串口輸出數(shù)據(jù)

  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  3.   實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  4.   項(xiàng)目測(cè)試:讀取并顯示HLK-V20模塊的串口輸出數(shù)據(jù)
  5.   模塊接線:
  6.   HLK_V20   Arduino
  7.   VCC         5V
  8.   GND         GND
  9.   TX          D2
  10.   RX          D3
  11. */

  12. #include <SoftwareSerial.h>//導(dǎo)入軟串口庫(kù)
  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 準(zhǔn)備就緒");
  18. }

  19. void loop() {
  20.   int outputValue = 0;
  21.   String HLK_V20_feedback = "";
  22.   if (HLK_V20.available()) {//當(dāng)串口接收到數(shù)據(jù)時(shí),執(zhí)行下述程序
  23.     HLK_V20_feedback = HLK_V20.readString();
  24.     Serial.println(HLK_V20_feedback); //串口打印HLK_V20輸出的反饋數(shù)據(jù)
  25.     Serial.println("");
  26.     delay(100);
  27.   }
  28. }
復(fù)制代碼





作者: eagler8    時(shí)間: 2021-4-29 11:35
實(shí)驗(yàn)串口返回情況




作者: eagler8    時(shí)間: 2021-4-29 14:30
  【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  項(xiàng)目測(cè)試:HLK-V20模塊控制浴霸的串口輸出數(shù)據(jù)

  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  3.   實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  4.   項(xiàng)目測(cè)試:HLK-V20模塊控制浴霸的串口輸出數(shù)據(jù)
  5.   模塊接線:
  6.   HLK_V20   Arduino
  7.   VCC         5V
  8.   GND         GND
  9.   TX          D2
  10.   RX          D3
  11. */

  12. #include <SoftwareSerial.h>//導(dǎo)入軟串口庫(kù)
  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 準(zhǔn)備就緒");
  18. }

  19. void loop() {
  20.   int outputValue = 0;
  21.   String HLK_V20_feedback = "";
  22.   while (HLK_V20.available()) {//當(dāng)串口接收到數(shù)據(jù)時(shí),執(zhí)行下述程序
  23.     HLK_V20_feedback = HLK_V20.readString();
  24.     Serial.print("串口命令=");
  25.     Serial.println(HLK_V20_feedback); //串口打印HLK_V20輸出的反饋數(shù)據(jù)
  26.     delay(500);

  27.   }
  28.   if (HLK_V20_feedback.endsWith("dakaiyuba") == 1) {
  29.     Serial.println("播報(bào)語(yǔ):已為您打開(kāi)浴霸");
  30.   }
  31.   else if (HLK_V20_feedback.endsWith("Jguanbiyuba") == 1) {
  32.     Serial.println("播報(bào)語(yǔ):已為您關(guān)閉浴霸");
  33.   }
  34.   else if (HLK_V20_feedback.endsWith("dakaizaoming") == 1) {
  35.     Serial.println("播報(bào)語(yǔ):已為您打開(kāi)照明");
  36.   }
  37.   else if (HLK_V20_feedback.endsWith("guanbizhaoming") == 1) {
  38.     Serial.println("播報(bào)語(yǔ):已為您關(guān)閉照明");
  39.   }
  40.   else if (HLK_V20_feedback.endsWith("dakainuanqi") == 1) {
  41.     Serial.println("播報(bào)語(yǔ):已為您打開(kāi)暖氣");
  42.   }
  43.   else if (HLK_V20_feedback.endsWith("guanbinuanq") == 1) {
  44.     Serial.println("播報(bào)語(yǔ):已為您關(guān)閉暖氣");
  45.   }
  46.   else if (HLK_V20_feedback.endsWith("dakaicfeng") == 1) {
  47.     Serial.println("播報(bào)語(yǔ):已為您打開(kāi)吹風(fēng)");
  48.   }
  49.   else if (HLK_V20_feedback.endsWith("guanbicfeng") == 1) {
  50.     Serial.println("播報(bào)語(yǔ):已為您關(guān)閉吹風(fēng)");
  51.   }
  52.   else if (HLK_V20_feedback.endsWith("Jwakeup_uni") == 1) {
  53.     Serial.println("播報(bào)語(yǔ):我在");
  54.   }
  55.   else if (HLK_V20_feedback.endsWith("exitUni") == 1) {
  56.     Serial.println("播報(bào)語(yǔ):有需要再叫我");
  57.   }
  58. }
復(fù)制代碼





作者: eagler8    時(shí)間: 2021-4-29 14:34
實(shí)驗(yàn)串口返回情況




作者: eagler8    時(shí)間: 2021-4-29 19:07


作者: eagler8    時(shí)間: 2021-4-29 19:08


作者: eagler8    時(shí)間: 2021-4-29 19:10


作者: eagler8    時(shí)間: 2021-4-29 19:11


作者: eagler8    時(shí)間: 2021-4-29 19:12


作者: eagler8    時(shí)間: 2021-4-30 12:01
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  項(xiàng)目測(cè)試:語(yǔ)音識(shí)別HLK-V20控制三色LED燈模塊

  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
  3.   實(shí)驗(yàn)一百七十一:HLK-V20 AI智能離線語(yǔ)音識(shí)別模塊 150條本地指令離線識(shí)別
  4.   項(xiàng)目測(cè)試:語(yǔ)音識(shí)別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 準(zhǔn)備就緒");
  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("播報(bào)語(yǔ):已為您打開(kāi)燈");
  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("播報(bào)語(yǔ):已為您關(guān)閉燈");
  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("播報(bào)語(yǔ):好的");//調(diào)為紅色燈
  51.     hlk = "";
  52.   }
  53. }
復(fù)制代碼





作者: eagler8    時(shí)間: 2021-4-30 12:03
實(shí)驗(yàn)串口返回情況




作者: eagler8    時(shí)間: 2021-4-30 12:08
實(shí)驗(yàn)場(chǎng)景圖




作者: eagler8    時(shí)間: 2021-4-30 14:39
項(xiàng)目測(cè)試:語(yǔ)音識(shí)別HLK-V20控制三色LED燈模塊(視頻)

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


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


作者: eagler8    時(shí)間: 2021-4-30 16:56
實(shí)驗(yàn)開(kāi)源圖形編程(Mixly、Mind+、編玩邊學(xué))




作者: eagler8    時(shí)間: 2021-4-30 16:58
實(shí)驗(yàn)串口返回情況




作者: zhizhuoggg    時(shí)間: 2021-4-30 17:44
挺好的,買個(gè)模塊試試
作者: eagler8    時(shí)間: 2021-4-30 17:52
海凌科人氣語(yǔ)音模組V20改詞攻略(可以修改喚醒語(yǔ)和命令詞)

專用燒錄器








作者: eagler8    時(shí)間: 2021-4-30 18:00
第一步,注冊(cè)一個(gè)云知聲通行證賬號(hào)
hivoice點(diǎn)cn





作者: eagler8    時(shí)間: 2021-4-30 18:17





作者: eagler8    時(shí)間: 2021-4-30 18:19



作者: eagler8    時(shí)間: 2021-4-30 18:42
第二步,進(jìn)入產(chǎn)品控制臺(tái),選擇創(chuàng)建一個(gè)應(yīng)用




作者: eagler8    時(shí)間: 2021-4-30 18:45
第三步,進(jìn)入設(shè)備場(chǎng)景,選擇需要的語(yǔ)音版本







作者: eagler8    時(shí)間: 2021-4-30 19:15
第四步,選擇系統(tǒng)與設(shè)備類型——蜂鳥(niǎo)M芯片+通用設(shè)備平臺(tái)




作者: eagler8    時(shí)間: 2021-4-30 19:18
本帖最后由 eagler8 于 2021-4-30 20:45 編輯

第五步,創(chuàng)建產(chǎn)品版




作者: eagler8    時(shí)間: 2021-5-1 11:44
zhizhuoggg 發(fā)表于 2021-4-30 17:44
挺好的,買個(gè)模塊試試

是的,識(shí)別效果還不錯(cuò)
作者: eagler8    時(shí)間: 2021-5-1 16:04
第六步,配置SDK能力,前端信號(hào)處理





作者: eagler8    時(shí)間: 2021-5-1 16:16
第七步,Pin腳配置





作者: eagler8    時(shí)間: 2021-5-1 16:41
第八步,自定義喚醒語(yǔ)









作者: eagler8    時(shí)間: 2021-5-1 16:47
第九步,自定義離線命令詞與應(yīng)答語(yǔ)

語(yǔ)法格式為:
action=命令詞1|命令詞2...@回復(fù)語(yǔ)

例:TempSet15=設(shè)置十五度|十五度@已設(shè)為十五度
action、命令詞、回復(fù)語(yǔ)均由用戶定義

action一個(gè)控制指令的唯一標(biāo)識(shí),用戶對(duì)著設(shè)備說(shuō)出“設(shè)置十五度”“十五度”并被語(yǔ)義理解時(shí),如已對(duì)接設(shè)備,語(yǔ)義理解模塊會(huì)將TempSet15傳給設(shè)備。

命令詞想要定義的語(yǔ)音話術(shù),用戶必須按照定義的話術(shù)說(shuō)出才有效。如用戶可以使用“設(shè)置十五度”“十五度”來(lái)實(shí)現(xiàn)同一個(gè)設(shè)置溫度15度的控制。

回復(fù)語(yǔ)針對(duì)該條控制指令的設(shè)備回復(fù)播報(bào)。
回復(fù)語(yǔ)中支持標(biāo)簽,來(lái)指定某些字播報(bào)時(shí)的讀音:
<py>:需要對(duì)單個(gè)漢字的發(fā)音進(jìn)行糾正的場(chǎng)合。
注:拼音聲調(diào)范圍為 1 - 5,1 - 4 對(duì)應(yīng)一聲到四聲,5對(duì)應(yīng)輕聲。
例:已調(diào)<py>tiao2</py>至中<py>zhong1</py>風(fēng)檔
播報(bào)為:已調(diào)(tiao2)至中(zhong1)風(fēng)檔
<value>:需要將數(shù)字按照數(shù)值讀法播報(bào)
例:已設(shè)為<value>15</value>度
播報(bào)為:已設(shè)為十五度
<code>:需要將數(shù)字按照數(shù)字串逐位播報(bào)
例:已設(shè)為<code>15</code>度
播報(bào)為:已設(shè)為一五度



作者: eagler8    時(shí)間: 2021-5-1 16:52


作者: eagler8    時(shí)間: 2021-5-1 16:59


作者: eagler8    時(shí)間: 2021-5-1 20:07
第十步,設(shè)置免喚醒詞





作者: eagler8    時(shí)間: 2021-5-1 20:14
第十一步,配置發(fā)音人




作者: eagler8    時(shí)間: 2021-5-5 16:25
第十二步,設(shè)置其他配置





作者: 木示    時(shí)間: 2022-2-14 17:12
可以增加語(yǔ)種嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1