From d8bf19bf5b63c3af45969d6e573893b68b6f9130 Mon Sep 17 00:00:00 2001 From: Sun ChuanHu Date: Thu, 30 Aug 2018 15:34:27 +0800 Subject: [PATCH] device:rockchip:aispeech-4mic-32bit:support vad Change-Id: I28a99191f6df65cc2824010367e91a97e88a8aa2 Signed-off-by: Sun ChuanHu --- rk3308/aispeech-4mic-32bit/RkLunch.sh | 6 +- .../components/dui/dui_major_minor_multiple.c | 34 ++++----- .../components/dui/dui_major_minor_multiple.o | Bin 31892 -> 31900 bytes .../dds_client/components/fsm/dui_fsm.o | Bin 904 -> 908 bytes .../dds_client/components/json/cJSON.o | Bin 10184 -> 10192 bytes .../aispeech-4mic-32bit/dds_client/dui_fespa | Bin 43736 -> 43992 bytes .../dds_client/dui_fespa_record | Bin 43824 -> 44084 bytes .../dds_client/example/main.c | 57 ++++++++++++++- .../dds_client/example/main.o | Bin 1428 -> 2836 bytes .../dds_client/example/main_vad.c | 69 ------------------ 10 files changed, 74 insertions(+), 92 deletions(-) delete mode 100755 rk3308/aispeech-4mic-32bit/dds_client/example/main_vad.c diff --git a/rk3308/aispeech-4mic-32bit/RkLunch.sh b/rk3308/aispeech-4mic-32bit/RkLunch.sh index ae34d25..ce56b70 100755 --- a/rk3308/aispeech-4mic-32bit/RkLunch.sh +++ b/rk3308/aispeech-4mic-32bit/RkLunch.sh @@ -1,8 +1,8 @@ -arecord -D vad -c 8 -r 16000 -f S16_LE -d 1 -t raw /tmp/test.pcm -rm /tmp/test.pcm +amixer cset name='vad switch' 1 echo 0x60 0x40ff0050 > /sys/kernel/debug/vad/reg echo 0x5c 0x000e2080 > /sys/kernel/debug/vad/reg - +arecord -D 4mic_loopback -c 5 -r 16000 -f S16_LE -d 1 -t raw /tmp/test.pcm +rm /tmp/test.pcm ln -s /oem/aispeech_softap_lite /data/aispeech_softap_lite ln -s /oem/wifi_monitor.sh /data/ ln -s /oem/dds_client /data/dds_client diff --git a/rk3308/aispeech-4mic-32bit/dds_client/components/dui/dui_major_minor_multiple.c b/rk3308/aispeech-4mic-32bit/dds_client/components/dui/dui_major_minor_multiple.c index 5673bcb..cfaa017 100755 --- a/rk3308/aispeech-4mic-32bit/dds_client/components/dui/dui_major_minor_multiple.c +++ b/rk3308/aispeech-4mic-32bit/dds_client/components/dui/dui_major_minor_multiple.c @@ -31,7 +31,7 @@ static FILE *input_fd, *output_fd; #endif -const char *dui_msg_table[] = { +const char *dui_msg_table[] = { "RECORDER_CMD_START", "RECORDER_CMD_STOP", "PLAYER_CMD_PLAY", @@ -195,7 +195,7 @@ static void recorder_run(void *args) { .channels = g_cfg.recorder.channels, .samplerate = g_cfg.recorder.samplerate, .device = g_cfg.recorder.device - }; + }; recorder_handle_t recorder = recorder_open(&cfg); assert(recorder != NULL); int block = cfg.bits * cfg.channels / 8; @@ -216,7 +216,7 @@ static void recorder_run(void *args) { #elif defined(WAKEUP_FESPL) system("tinymix set 28 3"); system("tinymix set 36 12"); - system("tinymix set 29 3"); + system("tinymix set 29 3"); system("tinymix set 37 12"); system("tinymix set 26 3"); system("tinymix set 35 5"); @@ -227,7 +227,7 @@ static void recorder_run(void *args) { os_queue_send(user_listen_queue, &m); int frames, read_bytes; while (1) { - frames = recorder_read(recorder, read_buf, cfg.period_size); + frames = recorder_read(recorder, read_buf, cfg.period_size); if (frames > 0) { read_bytes = frames * block; //OS_LOG_I(recorder, "read bytes: %d", read_bytes); @@ -259,7 +259,7 @@ static void player_run(void *args) { bool cancel = false; while (1) { memset(&item, 0, sizeof(item)); - ret = os_queue_receive(player_queue, &m); + ret = os_queue_receive(player_queue, &m); if (ret == -1) break; OS_LOG_I(player, "%s", dui_msg_table[m.type]); @@ -343,7 +343,7 @@ static bool is_same_word(const char *s1, const char *s2) { s2++; } } - return true; + return true; } #ifdef WAKEUP_FESPA @@ -426,7 +426,7 @@ static void vad_run(void *args) { int read_bytes; OS_LOG_I(vad, "START"); - gettimeofday(&start_time, NULL); + gettimeofday(&start_time, NULL); while (1) { read_bytes = os_stream_read(vad_stream, read_buf, read_buf_size); if (read_bytes == -1) { @@ -463,7 +463,7 @@ static void vad_run(void *args) { if (info.status == 2) { //终止VAD输入缓冲写入 duilite_vad_stop(vad_engine); - + //os_stream_finish(dds_stream); os_stream_stop(vad_stream); @@ -717,7 +717,7 @@ static void speech_to_wait_for_wakeup(void *args) { //终止VAD数据缓冲写入 os_stream_stop(vad_stream); os_stream_stop(dds_stream); - dui_msg_t m; + dui_msg_t m; memset(&m, 0, sizeof(m)); m.type = PLAYER_CMD_PLAY; m.player.mode = PLAYER_MODE_PROMPT; @@ -725,7 +725,7 @@ static void speech_to_wait_for_wakeup(void *args) { m.player.native = true; m.player.need_free = false; m.player.end_session = true; - os_queue_send(player_queue, &m); + os_queue_send(player_queue, &m); OS_LOG_I(process, "====="); } @@ -956,7 +956,7 @@ static char *msg_type_set[] = { "DDS_EV_OUT_ERROR", "DDS_EV_OUT_ASR_RESULT", "DDS_EV_OUT_DUI_RESPONSE", - "DDS_EV_OUT_DUI_LOGIN" + "DDS_EV_OUT_DUI_LOGIN" }; static int process_tts(struct dds_msg *msg) { @@ -1141,7 +1141,7 @@ static int dui_parse_cfg(const char *cfg) { //auth cJSON *auth_js = cJSON_GetObjectItem(js, "auth"); char *auth = cJSON_Print(auth_js); - duilite_library_load(auth); + duilite_library_load(auth); free(auth); //recorder @@ -1206,8 +1206,8 @@ static int dui_parse_cfg(const char *cfg) { int dui_library_init(const char *cfg, user_listen_cb listen) { #ifdef SAVE_AUDIO - input_fd = fopen("/tmp/1.pcm", "wb"); - output_fd = fopen("/tmp/2.pcm", "wb"); + input_fd = fopen("/userdata/1.pcm", "wb"); + output_fd = fopen("/userdata/2.pcm", "wb"); #endif if (0 != dui_parse_cfg(cfg)) return -1; os_log_init(NULL); @@ -1243,7 +1243,7 @@ int dui_library_init(const char *cfg, user_listen_cb listen) { //500ms缓冲 int recorder_stream_size = 5 * g_cfg.recorder.channels * (g_cfg.recorder.bits / 8) * (g_cfg.recorder.samplerate / 10); wakeup_stream = os_stream_create(recorder_stream_size); - + //200ms缓冲 int vad_stream_size = 2 * (g_cfg.recorder.bits / 8) * (g_cfg.recorder.samplerate / 10); vad_stream = os_stream_create(vad_stream_size); @@ -1262,11 +1262,11 @@ int dui_library_init(const char *cfg, user_listen_cb listen) { //唤醒线程 c.run = wakeup_run; wakeup_task = os_thread_create(&c); - + //vad线程 c.run = vad_run; vad_task = os_thread_create(&c); - + //处理线程 c.run = process_run; process_task = os_thread_create(&c); diff --git a/rk3308/aispeech-4mic-32bit/dds_client/components/dui/dui_major_minor_multiple.o b/rk3308/aispeech-4mic-32bit/dds_client/components/dui/dui_major_minor_multiple.o index de916bd7f7d9e871044c146678ba2c03b3dc0a7e..8b0d6029d3c571110d4cc0d5135b4cb880ed5bf6 100644 GIT binary patch delta 112 zcmV-$0FVEa`2n2y0gxa8M6n@bG7c~>G&D0UXE-=8I5TBplZ-N0lj?g4v+OdkM*&2W zoqA6Je3R{ZcL7Y3WqVTrGn4Tp6O+t)5CNK#-FqhmnlbJ#nJJS1 delta 95 zcmV-l0HFVz`2m#q0gxa8Jh35TG6-iiVl`rAH!_owGFY?hGPp+pJd>q*PXTn3^?G*! zM3ZfMQvofL!FwYDlrodvG8U8kdk_JXlMQ?)0o0Q(=ta_QtkW^n*=Oc%5O delta 75 zcmeBS?_i&x!1!aLVgX0GX_9GDs=3j``H_>en7B4EZeV28oxG7rnQ`IdSSInwZ844hNvY;WliS22Ha`&e;A5exw k#*WF7>gqt!5lEhxoCzc=CQnpXmk3d1V8~%W07fVi0PiUnqyPW_ diff --git a/rk3308/aispeech-4mic-32bit/dds_client/dui_fespa b/rk3308/aispeech-4mic-32bit/dds_client/dui_fespa index a508f799e988a05e8f08b0bcf299ef680e1f8844..03b38924ea84a9c844aa73b9cb89741a2e5af216 100755 GIT binary patch delta 18927 zcmc(Hd32OT)^|ObP|XX76lb0WWf#u2@ri52koHD z$jD-#(20UGsC*h2mqx&Yz95W)4m#)rMF$X_$Ol7K(&@o;3ncyh?z1FC>zwzm@4R(R zb=_axTldy_tDdK;`^?w6Gyl+4TZauukl0wpSiu|kFfij-W@C{ooegA(Ok%8JZ82kO zizURZQ;SR+fHo9w-J4+a85rBX_0zxhU5s+2h!Ke3vU?F@_$#{po(Did1_s+txd?S(jx4QH$n#NCJ# zrXwyyypw<$#;Bn5zr7%Z|#^;z=J#Zr8t%ww&NQ3bf zP)51$lR)(*27+Bl*f2HKlG{|GznYHL7)VihmVszS?1N}Q9EC_>1fr7&HKc0D9LxR-IFB!(@7WCx_#{2ue6jts9=*{K7 zGS1}d%@%&z7_Y0I&zp=1#%EZCsE+4*BOcPt>(8Ui_w#us3okKSbR&&?i6N=)S`_GMSbz2hS??b69sHuf zBDM2N=H&hrVKR?EX}ne9-MzqmiRx$A;BlK0g>aN*c2NQsh;` zkkzH-rNxzOanXuZm2A?2uT@|4Kqw%4;Z1=5NR5L}J13 zA~cM5#Xg*ZC3=PsmhyQ@G4bjtg@3t7=_LN!xSUul`e<0`2XADdG>?BD*M9(3u8k1< zN*bkDgXxsc<}tSnDTJqS5`yEHPAR5tE~W5H`IN%@6;KMNGmlbuu?3XEu`Hw%PN$I4 zA~-iniy3oMT7pIA%xGN3m*3LgGw%URY z(*!zEpyLHPTA@9%VS~W9ajmBkR|UF7pf3vad4WDH&?g1@xIiBk=mXcr^%#3oVC)v? zodUfb^qQPwE?(L1hDYnF`k#7~oDt|cfj%M7#{~M2KzjwcR-ktYbWIQKxlr8$E^H9! zDuG@j&=msh7U)8OULeo~0-Y<+PMP*7lO{`GI0QOfplt$e6=;hHMwG4#EZEy%w=~;DGt!ru7mqeg0QK>lhq|dD* zbh6bXD=%u3Y*5)Y+U4>a94N>_f#@rvuZe;GkreQYFs#Sr}yYP~i0| zE`Pi#T>-jKrI%ijd_RV;%Riss8sM^`!WXX`Yx7uGzQ1716jzq(<5t#dSz#y;4--`@ z4KAIFrF&0N70yGAQh`~%(CAR$v(|4fQ|sf}+Ag!BvwW-^*leWnjz3YSvI$0ItE6kKh{>jws>`Wq%>XXl%JBLtnTcNmNER$5Ze?? zsaDMvYLy9vI=0R3nss&Hs`YMC7=!w-qgPeqwUE&1G=(t0pC2$Pqp9VWbU6J7samQI z>jJ8NZpR4TK49pm55*GQeepndGZd@S#WFG5ZYsm8608%;A%OLgljE-)kBUWX@uDJq zK^bkS%>K{dhU#E>ZpXxXkz>m4n79DVGlv4>TC+RM)A;Fxas8fZksPypl75!&ZC#$L zz}0XnyTdY#+itZDt%2_K*w`vC7`0=e!C-Q2@!FP$0!=N{0X}!?Qr#Zvg0fpj&+Kac zc^3?Kt#>>9ahXatR-hYeq4VeZ-u#)q;g(R~qnk8xTcUO9Nu{~dwB}~C8a6)fwVys*r8d|X2BA>aO+mXe8 zGtlk{Hm$l$DvmYl_E6fol_C9I4 zu*?CRrs5BqQp*WDRQz63k&Lrc{C3l^HVZ@hQ{)*?Uv5UnO!dE*Lh3$m)%DVC4F%RV z%VVFLlxTjusc;`0;WS>Jlwf+jNp9<=BS8i)v)wCue#sS`KERm zVf@akMWA!Lc1_LyF2$9OQOobj?l>=((D~+cQ3da;GnLWS|7xSRotd+~Bih$^sNK*f z!qw}$+I9m*<)U1|kv<(p}ma+a^}=v)+8F!kqss^Hh(U^-=5%6^xItK)ULpLZ8iICt}dKk zOfIsK?lQk6*(3I5V{g)>VUEgbK5vcg^?7Ryq6IOoS0vvY9N~z1!HmxGHbm@zTbqLg zsC%tl((k|a^uNt}9*DHKH^YN<1!QiOH}g$5rnlzQ@8^RDrFjm8OnV&euE0ZWk|WRMbkVNn z^uL{XN#4AMSBOsM?SqnIj$hGiDE@D7!jzLRklW#u z6<7{RX=KXkCS&KISXp_b*otO+*=>r@XKg)3o)nCf-)!WI!3mQt3PuzUP72m{8=zWu z1=hA{y-yRc$A3>sAIk3@Vk$|!Nilj)Jr&)7QxTnL$Rl1AEKzf|cuDibZcBv5wUK_R zymAx^JAkDYfB%ceFQ@-3JbKUZ%W{8D&-FAactz_qrBOaq`jxp{oNu+%f~)UaB46qI3K*xEhp^K*aEj?93>)c4IbE>U)271z z&<1R*G%zuSoAmRYL#-Jlzo;nbKPt+IIWC?gGkM}L>zHaN(R#1D?aOIyRl1Js*_*tApa6ljIgJ9?+I!nYI+-)BCgY1~}Ifcq$n20CtaF(>uPp|IhxSsII_y`D6$sdORu2;oCA&rIGw##wd@=zvdRo zX8h~m_Cm=%>uUR|m3gajy*XdwRO_4%H4)NaX3xUr6JKb6^)H(BJDjewOS=NDW|!X` zN1Z*!#kNuTSy#VVRg_nR(k#VP+Z9M_lInFsGwNozQe0VBSPPq{C05kwfSmBSlba1u zFS4OmPMINU;mb!(n)H1miM`p}g@b8niU~q>&2%ijirrAsVW*OJ&#u6{CWowmJ|D-? zSUDi5G`J&vnn>PeXD z!g-!P$2JYTOjViDOllT3X(xO#Wlr@9`{c<2REvG!1-cT zSHHl5rUDGDVU>>M_6#xqYE+J=Qa-61tU4fSx`S%WoZF*zR zw0Q)z8r(%q1y6{+~Ab#t5ak0`rtg=pZ49>0OVqRqxao^}9X$kL>*;hAxF&~_n6uTS; zQXK7MGY*&JE9LiO4)1Mhc)mf;)+1tJ^39pICC_Wrxic{iRfZ{Fzx0#jjB1yn*a+V# zmT^}d76<k5eWA4Si?e z?KX^g9CwbLAXV~Tj~(K1v?=aq2M*Zfa-Vkwj^mVArP3dQ-mcPzK-a4DyPyxN^qZjT zRQh$$7gc%}=%7l!1UkBc#jBRi znE7C=i@6gZ``#61GvnZcolB2x=U!|(rq~m`-80?mubX(r_%TuzUp#(LAM=&o-Uow* z>+C4Q$svnBKYpmLrIjBWpX&M7H5;1ptLyZ97V{Jy;8&uGQUvn0UYC3;uNz>-iFd@E zfdzQS<(9cw;68O754bWi0R0+ht&E<=YhB5=8hE{ojWS*aTrJ~uGA_RUlnX0*>@g4C zD}5WZV3zf3J%=@S7EXA1S$!d%+GX)9S5e_>g@e$?GrA2*zUkLlS!bZD1<&!alx;Cp z>2^rGsT!4hnLvs=(N)vf4FmS7RUn*-D&)F6lFy8`7Zwfvt_qciYAs$`zqkgJ36!mf z4Nv%v4LTi6^bUovY5oG#0rqxF6X}2QoJ-5Inr$}PrdZ5u14~G zbq$M7Hd!cFuo1YYf){{}d4w9ByJnP)9J;ovC>>_Dpna!hzO9(r_ZbQ(Z?b6i{RK#Q zk5z>ycggqPz{-29r)9h!Sb2~2l#Ks$Z5?(1>gl4EUBybDKh)x>FFq${E@5TbsEBgJTYt)w&X4bHyG>CBPh@;~fZ@`-=R5^JFmhCTyp>|D%ny(1;p zzbhM*QQ;g0XN1bJ7Dhq#0CJSKe~uJIW-oG-CnCxrnOBjc_$F&1)_RNG{fhhCz%fmB zefrT`Tt#lFd7Z@1Pq2C}fK}u^tFn5z;L2vhxb)O@)9=2ueA)j2_EGa5ow-nVUGGCR zeYDP-w~Nm}3hwEm;!H@fBD#VOZzs@-XOhFwp`77w|Pp()?y{E zLd~m1Uc0=vu5p)iMGWHE!smrq4Pk>qduY2Ee++^6Ctn656X)J zQf3yRXdq=a5i&G;v>8dT3x`f+8WHLMQl}7*uL&-@xdGIdO|(Gkn%ww2*;I?q&zhDk zWy4P#Wof;?Yc87`Okx}1{#JKQP6ST6)9O;~F8}&;UU}z3xN`H=oilYc1>EM0 z*IjGkRkTqa-LDn>xaBa$lEE% zMe|crUxbEb(+(PL1TM7gPn$kc4?H&~8=o)c%tZ@Zb4EuWXr+f5Q_YQlx0MgeEr@#k ziV4lR5qR|qU!Oa1rUh9hrtUW%@zg?sZ7bX~3dWFE;S&zKTZE6dGou@1ixIM&J^nPE%zc4z5Oui92! zO}G8$XguDUac4iJNA))9Q@plL|2x`$$j)^$NAx*xQ}G3S(#(IF6I%-1Hv(U_@U;9F zhMa890$ATN$U4h6K_8i7pI26)yA5B3TGG+*51Z*r(HntE{zLu~_Qz$}OniAVK|jc9 zpC@(8J)+8`@pX5l3{Hd((&?@4ikuVssvAr=T`M)T9GK#_;E*A)DIM_!e&Vh~yTSmJ zXjs9P9}1sFp^6;KetKcBlSkY=Q%c-F_wK$DCPUe*{>Cf^&KVQu!H6NZ!*&l+<7Tg} zp5a+AqOQzkb6*b}zzMM9RBycXqVsb)nmDzg{W7nbcdu^y6@F%3qG@4&iQU_O|FwDF zNW*F##4)Z=!cHwQC*nLrH{x2vO^CY?4Y%F!l3Pavh6UUU_XF4$4p6$-7`fcy|ry6faa`k_VQQwm3KtBCgOguVa8==t9? z4%?pp|E))#cZaK(;F!v69+pl6(H<4t0I)2USQ_G3#C*g;#0tbJ#A?Ldh=&nRBA!R| zA+jQrLrg<-A{HQ)Bko+(W9YO%?-uC8pgme`+yXcgj>&j9E6b5JrnHD3SiO+PRAzd}BT&%GEd>EjpQV_4&Is+aZRE;M`q z1-*RznKAMe3Z~vve29YS&avW%6imIzMUG9K7%SM8RWOfV`-TD7h^TuI7Y^F zHJgH7o)3(zFXp;OABwG@ujJ%xx=f6lrF`Y1i)LFfa!QD1J3(lLX)X|+DDa0nsHq4mgOsW%45l%T%puK7|^f|u9r%c2>f@!CugjLC?;dINpxZPBaH5(GJQSP(R)UJvKBm2aDrnoRbQZb&nIH+%#Fl`G ze;7+&2{CN8CW;KQw@?TBhv_0Nf`lnf2FryOmw~lh#afS434D^@B;aL`-y9~tTi{cL zD%H`Yd)DK}LV;HhcoGWsg()~L@VA4%oA3LtTRpo$9qO)noLu!2g5=-8r_GdtR`v4& zpQ>^|El=C#KOnDR+B%7^UFM>`?Eqg3=sQn{Zn2X$p$p~OU|kdpj0T^ahsGy`S-?tA z26Li-b0JU8LXZWJJIQm$5j4AgZCC)30Q}D+7A4tXkg&Y71}A_ILKpzU~3`o z(Z)0$JBSjL7Fz{81_fw`StA(OB=D(1)dHRa`K`d)k+11bwB4*fO~JHqquGNfFbEmv zRRg8KFQ#H|Mye?YhACk1?@EYfDXOtQi+YF@qzm{6 zDl`=MFyyrgofr5de^J1nLY{U&agJ=l7R%SKwR*k>llEJ$pll-cVlXB6uv8Sd4_F+}dVw#uPQVi&e+hWEU|>B? zEJ{!sutC5JAWtWn^|CyC0F8%PJrZf%9WCIeP=Jm|RdNAEeuKcL3T+bb9>~)XORUfc z^^B+KcW9V=z)=*SL*RD7z%flg9slD3{s-jg5GYp2i9@3jlon4H@HNQOp>nOD|FFu( z98?M%6AIjlGZURs#WBtwb+ds20gr+FY~VWhcbbrQ06&<8qqJZ!KJ(`CHU%p_AQuHv zkYQ03%mp5eeeDFwkiuf%yKa{l{isQs@oBX0$w6s=L%=koS8uzS9~AH!==%w{gf?$Y zVF79^DqJXFQkaVhi2Qs36Tf=m&HNex6MyG?jUU5)g9;F~QTrvFrZ_U_Vlq8<5`G1k zE+5-e{0=bP9Zpg45n#Frj32wm@_z%STfX#rDk^^#m@f5d{L8>}5!a&fe*~sWv>r{N zK7uj27MrXJ!~)axQaYBB!en5&&`HNy!WqDH4^u0D2Qb~3q#+`H9xz>Xq*E*5`M`8n zELz2-z=ikWNo9nZu?iVGd-eDyv&sn9RzC__Ti=zb9W_>XWOV7kd;Rq;Szx@)7g za5yksnHi??ZwIE^FGEzE15DRe=m1Xo?g6ITCYrut;06ye?5e;@WY854txG+?bVEZc zuo;-X&PO6Ed>sUR&9C7DAn2=SZOA?crmv(m{4FqjpR3J*Mqm$pQ>cwm02$Q+w&0nC zzKGNKNx;W}>A8$rM6-I0a1T#SU8+}fDHoP2y7PccHn3MzXEI#@ZLzQzjz_zJqTC@Of9;I7Aql! z{S|yI(CPp0z>-s9Um%nG$aoS3Rzfs82mUGG5h}kCxDz;C#U0dwK~p68=dYw70#9Ab zf#aZquoZaSREf<{3k(JR95_z(lvKej(|Qb21zr{KB*_0T9q$9N2WXD2KDS5SLj@Xy zj64+R%##>x8d`y*89fC^euRLj0=Bzv<`)Q<_&YJAO6bS#fqufu9O&m^MabCIlOa#4 zL=1rv`m^QW6V@gTDWvzJN{C?<;A??~geqv6ukoYVsoq_)W6skB~an{j3$wYJs(9FM4)*A6R>KB772< z;RlKo$cep+7SS6;CG?W5yeVMfdj&im_mVyy+j z_-6S9g;Idzt-$N%;37WgILy>BVSLw380+kzn=bQV z-vO*WP0}xaUk&3Q02Y7wdmLDP4Nm%KpFJ5?;7k~P0nO6ho7iBW5qx^%K{GEF?k*T6 z-;1^yHBgTv0@J&93WNs>d=F(z6fy|U1ir68S=`hE3&Qwizy@q_lpTu-Jr3g1T=Kk1 zmv089-(F3IO)9^Q1l2(LU+uvjxkm3Hqc6HRA51E6j^3!LfeL&9ey+OqESLk|0F#49 zB3Gap#G@E8+5)M32>7R2%AQL&7CVLZZX#CKk0k-8%X13-Pm?Nxwh}dv!SP`@8~6#d zkY2-+!h6H`%Yc{PF3CR)C;k&*{A%C~Ov>qM`MnyS#-9uxM#czXmVcrNsQe#bS$pLc zhmG%a7{4A^?4cH5`f-!iLq_GT9JDF+tST<5Czu5Qbyu6r~30RvYlad6N834Hy>>%R)vh27(S#G*I(_ zU%@=ZaYx3>!W29nhTlO==$|PlP6D}fYT>XjdaN)I$7TvpbN%=fd!=F#Hy<<_>ACy$`$+Jx(J9ZxhYF5(?Omc^P;y7XJ&Ni60R7 zWYCCX9esmBf$#uex-db2?W9t;y$8HS$#eo$~{TY$$3 zL$)JKet#JL82EO0BRtB;_D*&4(f?G#bI6#DSy`kCv;*(MB*|2<0YY~P73fQa)Ij85 ze7p~SB4}#R?P2^mz}gUyyDS9$GlsyWc$;YUD`f0b$AlDY2iA5N+QMD|9*q{@+$|e8 zfIV0AE^mRa1tLET!zaV=ITe$Axd)n&K{ryhF$@7O7g`(}wgK3IpGSqXWt#=O4|t-i zFPhyQCjSty*aJ&}@g<9FU#`H~umW3vW3i_?RfR8y@%I4JPl+{y?}zdK2An0#k+Wg^ z7T|#s@KpB{c5UkN&M<-Aw6&;#dMgn)4=vPooKYZJfz!aF@^=AG0oEp22??r!%0Cu{ zpCPQYA8rx!YsmOo=<q8w!*FN1}q-p82G}Cxz8v_?0lcKMb=`Zr=8sMY?TU^~?0} z#Qs~i#z}q3%T`yGKC-B|h?PE8`bg#e5!>cO#w!0c;&kTZ=S`iqD0Af4*Phs6idFuc zM9AI0_LY8;MgB(;A(wA`_3yFDpOXl=`xm{|PtVu9UZTSlz3*R7ilndf=pAkWH@=Y^ zDSx2{SA2wL0MXZZAHolQ#_xH{svp0{^M qZ)+uERq#pl;v$tlvG-PEO*P&K@|XA8tq;D=*uRml1;w2+_WuCVeCR^} delta 17745 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 WJ^ZED?3R_UF!nFxYe8|LjQv00brKo? diff --git a/rk3308/aispeech-4mic-32bit/dds_client/dui_fespa_record b/rk3308/aispeech-4mic-32bit/dds_client/dui_fespa_record index 5a04ea5226074b782a48d1a8dac18aa97762f089..f12cea9e5edc6833f93e459e942fd2a22324ec6e 100755 GIT binary patch delta 18930 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 F{|9YB1M&a> delta 17888 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 diff --git a/rk3308/aispeech-4mic-32bit/dds_client/example/main.c b/rk3308/aispeech-4mic-32bit/dds_client/example/main.c index 320f376..de41bc0 100755 --- a/rk3308/aispeech-4mic-32bit/dds_client/example/main.c +++ b/rk3308/aispeech-4mic-32bit/dds_client/example/main.c @@ -1,7 +1,31 @@ #include "dui.h" +#include "dui_msg.h" +#include "os_thread.h" +#include "os_queue.h" +#include "os_event_group.h" #include #include #include +#include + +#define EV_RECODER_CLOSE (1 << 0) + +static os_event_group_handle_t event; + +extern os_queue_handle_t user_listen_queue; + +static void listen_cb(dui_msg_t *msg) { + dui_msg_t m; + int ret; + while (1) { + ret = os_queue_receive(user_listen_queue, &m); + if (ret == -1) break; + if (m.type == RECORDER_CMD_STOP) { + os_event_group_set_bits(event, EV_RECODER_CLOSE); + } + } +} + int main(int argc, char **argv) { FILE *fd = fopen(argv[1], "rb"); @@ -11,13 +35,40 @@ int main(int argc, char **argv) { fseek(fd, 0L, SEEK_SET); fread(buf, 1, len, fd); + event = os_event_group_create(); - dui_library_init(buf, NULL); + dui_library_init(buf, listen_cb); + fclose(fd); dui_start_recorder(); while (1) { - sleep(20); + int buf[64]; + long frames; + while (1) { + struct timeval tv = { + .tv_usec = 50000 + }; + frames = -1; + fd = fopen("/sys/module/snd_soc_rockchip_vad/parameters/voice_inactive_frames", "r"); + if (fd) { + if (fgets(buf, sizeof(buf), fd)) { + frames = atol(buf); + } + fclose(fd); + } + sleep(1); + printf("\n frames = %d", frames); + + if (frames > 80000) { + dui_stop_recorder(); + os_event_group_wait_bits(event, EV_RECODER_CLOSE, true, true); + system("echo 0 > /sys/module/snd_soc_rockchip_vad/parameters/voice_inactive_frames"); + system("echo mem > /sys/power/state"); + // usleep(30 * 1000); + dui_start_recorder(); + } + select(0, NULL, NULL, NULL, &tv); + } } - dui_stop_recorder(); dui_library_cleanup(); return 0; } diff --git a/rk3308/aispeech-4mic-32bit/dds_client/example/main.o b/rk3308/aispeech-4mic-32bit/dds_client/example/main.o index 67d1c3b31022cabe429dac62cccb98a46d0505dd..34908892c27d405fa70dceaa4de4c55cac12f62e 100644 GIT binary patch literal 2836 zcmb_eONbm*6us4-=}G6~WH4kBW32f^JBd?WGd+=3Oq|JRC5thMi9!&ut*(BZE~mPy zQ}udc-1u3zQV@e62)Zyr77=FSO2t{2g&>kB2r5dDU{I8N6pb6lbL(SjYURQ^ygK*X zciz3PUcL8vo_lD{P!xq?Q>a8Y8PTQwpeH{SK#A7TTGHR2zD~I%G+-W>e`PUqk=|5x z7S7v-+FJhe?`1{*&Li$U;$XjyvIszyD#R>FcwE> zm`X>^hpaEkt*G2L!Q%qnNZE7`a94t>X58C6DxU{cM%6g?E3KY?Dy;DQ@tlz{sI+(?oI#xB;ML^`R(yLoeD^Dt z>0_@>~3wrY?QmEXSRhDo?l*YZA;Ybj%i7I zLDZVu;Uh;;4PAA&x~%~&td^_l>K^rfNFL;Bi*}r?>z)u^*_WmiMEhoE?^8>Ad$!Z? zTvw`-`b1UJC&xXjGOp`WQ!)v8{ti28Q*9&Jj~Y32dU&lG0eCS@1g{H*Iq@yz&4 zWf%3WE6nsOt1`vHn(SciR%L^-F*~GeQZ{F{C|ffl$`0khEQYMKYP%fK5<3cxq4;JFnnOZk*OPj{?P6le_m=BNT~2M>=S3k#&-Imd2b z1*!m_h#2?tyv`)}?tguDax@)ruAw9c z@p=sM%SOh0XNpgzIJHf?qgmwGz7(CBRi`mY+T6^6+5HC(>+oiS#{_$m{HX9_iXXdZ ztU+QybR_kB;nkuP$9tkD$n|T1Q}cu+a651y(AJK5Zm(POg{;+W=?C?x>2^hjn!XV8 z)Re+;5Oy5bqNXRzMtZD;AdY*ZXQO7_Grg0zgltJo%W?fMjtjw)T-)^;!lULffl|Ko zr0bCH2+^gkXLn>XNa9PkdsCa5=n2z~W{R6piZ=Pe5tig7&Y+by67>OfV39et^g8B1 z6<8c1nq=G*p0hGUYq%fC-=}yR(PqXik^XkVuO#?ZqPu~dPX}_o`y<_cMjY%pMwRFg zu$(7)6sQBA&%X{l%kjI2K4iqCKWD^+@&)U#2wwqp;5QuKLG(SxZz1}D<3Qf~9RHaS^=~ll z#QI^6^17&us5=Jax+Ngj)j5v3RYuH@H2-8%=w(r1W<4{`jq|F?DSTm*c?0QcIzjdhopN#Ke zOgGpoJb?e_sj?Fp-6 zi)(Rz?DKq*^W%Keagv0N=fb!2G#c9g_T^FNcz)P=K|Y?}UNj!gd!Owr$S0v2Jh?9S zKN2D5W$R`r_{|AfsA1jXXpFJF16|VMzNZnyyLRI~)=kF*80#35DK3F5q2X8%j&krG g13-S)cU1-7tAns!>pNXwH%DYn8}kbQ2YCv zv;lTnt^0-YNP$wpbQAd|EAPLhEM-nbXbULC8NW*+26CaPRX24X$ZNLm%!VJ~$43WeAmnIyv z_DW2bVtOs6*JFA!rgvldWlTfgat6EuB?Wx1RfSSF$Ux50G zCDDtg91St!(J;+j=XKy6uiqB~oHX#1;5!G;E9mST18+Xv=ay2^u}4byxb1o4IvVL) z>sJ!~n`g82TV5Ue^y~bW?l^?2s+<9f@+;S_aRQQFsDPWhfgr#%j2Xs+Jvlqe*x9+q3r+w diff --git a/rk3308/aispeech-4mic-32bit/dds_client/example/main_vad.c b/rk3308/aispeech-4mic-32bit/dds_client/example/main_vad.c deleted file mode 100755 index 229aa16..0000000 --- a/rk3308/aispeech-4mic-32bit/dds_client/example/main_vad.c +++ /dev/null @@ -1,69 +0,0 @@ -#include "dui.h" -#include "dui_msg.h" -#include "dui_thread.h" -#include "dui_queue.h" -#include -#include -#include -#include - -#define EV_RECODER_CLOSE (1 << 0) - -static dui_event_group_handle_t event; - -extern dui_queue_handle_t user_listen_queue; - -static void listen_cb(dui_msg_t *msg) { - dui_msg_t m; - int ret; - while (1) { - ret = dui_queue_receive(user_listen_queue, &m); - if (ret == -1) break; - if (m.type == RECORDER_CMD_STOP) { - dui_event_group_set_bits(event, EV_RECODER_CLOSE); - } - } -} - - -int main(int argc, char **argv) { - FILE *fd = fopen(argv[1], "rb"); - fseek(fd, 0L, SEEK_END); - int len = ftell(fd); - char *buf = (char *)malloc(len + 1); - fseek(fd, 0L, SEEK_SET); - fread(buf, 1, len, fd); - - event = dui_event_group_create(); - - dui_library_init(buf, listen_cb); - fclose(fd); - dui_start_recorder(); - while (1) { - int buf[64]; - long frames; - while (1) { - struct timeval tv = { - .tv_usec = 50000 - }; - frames = -1; - fd = fopen("/sys/module/snd_soc_rockchip_vad/parameters/voice_inactive_frames", "r"); - if (fd) { - if (fgets(buf, sizeof(buf), fd)) { - frames = atol(buf); - } - fclose(fd); - } - if (frames > 80000) { - dui_stop_recorder(); - dui_event_group_wait_bits(event, EV_RECODER_CLOSE, true, true); - system("echo 0 > /sys/module/snd_soc_rockchip_vad/parameters/voice_inactive_frames"); - system("echo mem > /sys/power/state"); - dui_start_recorder(); - } - select(0, NULL, NULL, NULL, &tv); - } - } - dui_library_cleanup(); - return 0; -}