2025 0929 vad更新
authorcheng.chen <cheng.chen@raisound.com>
Mon, 29 Sep 2025 10:25:18 +0000 (18:25 +0800)
committercheng.chen <cheng.chen@raisound.com>
Mon, 29 Sep 2025 10:25:18 +0000 (18:25 +0800)
2.code/aicos/app/AI_AMP_2_5/imsl_kws.h
2.code/aicos/app/AI_AMP_2_5/imsl_vad.h
2.code/aicos/app/AI_AMP_2_5/libimslkws.a
2.code/aicos/app/AI_AMP_2_5/libimslnn.a
2.code/aicos/app/AI_AMP_2_5/libimslvad.a

index 1cc4b00..394e975 100644 (file)
@@ -1,8 +1,17 @@
+/*
+ * Build Information
+ * Git Commit: 66c47c389123d4d655eb5b1d63b5918355f15ce7
+ * Branch: master
+ * Build Date: 2025-09-29 18:13:29
+ */
+
 #ifndef _IMSL_KWS_DLL
 #define _IMSL_KWS_DLL
 
 #ifndef _IMSL_NN_COMMON
 #define _IMSL_NN_COMMON
+#include <stdint.h>
+
 typedef int (*imsl_nn_printf_func)(const char *format, ...);
 
 struct AuthInfo
@@ -13,11 +22,11 @@ struct AuthInfo
 
 struct KwsConfig
 {
-    int min_activate_len;  // æ\9c\80å°\8fæ£\80æµ\8bå¤\9aå°\91msç\9a\84æ¿\80æ´»æ\89\8dç®\97æ£\80æµ\8bå\88°å\85³é\94®è¯\8d
-    int max_activate_gap;  // å\85³é\94®è¯\8dæ¿\80æ´»ç\82¹æ\9c\80é\95¿æ\8c\81ç»­æ\97¶é\97´   æ¯\94å¦\82  100ms æ\97¶æ£\80æµ\8bå\88°å\85³é\94®è¯\8dä½\86æ\98¯æ\9cªè¾¾å\88°æ\9c\80ç\9f­é\95¿åº¦ï¼\8cç\9b´å\88°100ms + max_activate_gap è¿\99个æ\97¶é\97´ç\82¹ä½¿æ¿\80活失æ\95\88
-    int active_threshold;  // æ¿\80æ´»é\98\88å\80¼
+    int min_activate_len;  // æ\9c\80å°\8fæ£\80æµ\8bå¤\9aå°\91msç\9a\84æ¿\80æ´»æ\89\8dç®\97æ£\80æµ\8bå\88°å\85³é\94®è¯?
+    int max_activate_gap;  // å\85³é\94®è¯\8dæ¿\80æ´»ç\82¹æ\9c\80é\95¿æ\8c\81ç»­æ\97¶é\97?  æ¯\94å¦\82  100ms æ\97¶æ£\80æµ\8bå\88°å\85³é\94®è¯\8dä½\86æ\98¯æ\9cªè¾¾å\88°æ\9c\80ç\9f­é\95¿åº¦ï¼\8cç\9b´å\88°100ms + max_activate_gap è¿\99个æ\97¶é\97´ç\82¹ä½¿æ¿\80活失æ\95?
+    int active_threshold;  // æ¿\80æ´»é\98\88å\80?
 
-    int kws_log_level;     // kws logæ\89\93å\8d°æ\8e§å\88¶ï¼\8c 0 ä¸\8dæ\89\93å\8d°ï¼\8c1 INFOï¼\8c2 INFO DEBUG
+    int kws_log_level;     // kws logæ\89\93å\8d°æ\8e§å\88¶ï¼?0 ä¸\8dæ\89\93å\8d°ï¼\8c1 INFOï¼? INFO DEBUG
 
     struct AuthInfo auth_info;
 };
@@ -44,7 +53,7 @@ void free_kws();
 extern imsl_nn_printf_func imsl_nn_printf;
 imsl_nn_printf = printf;
 
-// å\88\9då§\8bå\8c\96
+// å\88\9då§\8bå\8c?
 struct KwsConfig kws_conf;
 kws_conf.min_activate_len = 10;
 kws_conf.active_threshold = 32;
@@ -57,22 +66,22 @@ struct AuthInfo auth_info;
 strcpy(auth_info.dmp_token, dmp_token);
 auth_kws(&auth_info);
 
-// å\9c¨æ¯\8f次æ\8e¥æ\94¶è¯­é\9f³æ\97¶è°\83ç\94¨  æ³¨æ\84\8f å¦\82æ\9e\9cæ\98¯void* æ\88\96 int8* 的指针,长度 / 2
-// è¿\90è¡\8cç»\93æ\9d\9få\90\8eè\8e·å\8f\96kwsç\8a¶æ\80\81
+// å\9c¨æ¯\8f次æ\8e¥æ\94¶è¯­é\9f³æ\97¶è°\83ç\94¨  æ³¨æ\84\8f å¦\82æ\9e\9cæ\98¯void* æ\88?int8* 的指针,长度 / 2
+// è¿\90è¡\8cç»\93æ\9d\9få\90\8eè\8e·å\8f\96kwsç\8a¶æ\80?
 run_kws(wave, chunk_size / 2);
 int kws_status = kws_detect();
 if (kws_status == 1) {
     kws_clear();
 }
 
-// ä¸\8d使ç\94¨kwsæ\88\96kwsæ\9a\82æ\97¶å\81\9cç\94¨æ\97¶è°\83ç\94¨
+// ä¸\8d使ç\94¨kwsæ\88\96kwsæ\9a\82æ\97¶å\81\9cç\94¨æ\97¶è°\83ç\94?
 free_kws();
 
 */
 
 
 /* example 2 配合vad使用
-// å\88\9då§\8bå\8c\96
+// å\88\9då§\8bå\8c?
 
 
 struct VadConfig vad_conf;
@@ -95,9 +104,9 @@ kws_conf.kws_log_level = 0;
 
 int kws_status = init_kws(&kws_conf);
 
-const int chunk_size = 480;         // è¿\99é\87\8cç\9a\84chunk sizeæ¯\8f次é\80\81å\85¥kws语é\9f³ç\9a\84ç\82¹æ\95°  比如 30ms 就是 30 * 16
+const int chunk_size = 480;         // è¿\99é\87\8cç\9a\84chunk sizeæ¯\8f次é\80\81å\85¥kws语é\9f³ç\9a\84ç\82¹æ\95? 比如 30ms 就是 30 * 16
 const int chunk_cache = 9;          // 由于vad存在一定延时,需要cache一些chunk防止丢失头部语音
-const int cache_size = chunk_cache * chunk_size;  // chunk_cache ç\9a\84å\80¼é\9c\80è¦\81æ ¹æ\8d®chunk_sizeç\9a\84å\80¼å\8f\98å\8c\96   9*480/chunk_size
+const int cache_size = chunk_cache * chunk_size;  // chunk_cache ç\9a\84å\80¼é\9c\80è¦\81æ ¹æ\8d®chunk_sizeç\9a\84å\80¼å\8f\98å\8c?  9*480/chunk_size
 int16_t wave_cache[cache_size] = {0};  // !!!!!!!!!注意我这边是int16_t
 int prev_vad_status = 0;              // 记录vad状态,只在vad刚检测到语音时使用cache语音
 
@@ -129,10 +138,11 @@ memcpy(wave_cache, wave_cache + chunk_size, sizeof(int16_t) * (cache_size - chun
 memcpy(wave_cache + (cache_size - chunk_size), wave + i, sizeof(int16_t) * chunk_size);
 
 
-// kwsæ\9a\82å\81\9c使ç\94¨æ\97
+// kwsæ\9a\82å\81\9c使ç\94¨æ\97?
 free_kws();
 
-// vadæ\9a\82å\81\9c使ç\94¨æ\97
+// vadæ\9a\82å\81\9c使ç\94¨æ\97?
 free_vad();
 
 */
+
index 77f29fa..b95741f 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * Build Information
+ * Git Commit: 66c47c389123d4d655eb5b1d63b5918355f15ce7
+ * Branch: master
+ * Build Date: 2025-09-29 18:13:30
+ */
+
 #ifndef _IMSL_VAD_DLL
 #define _IMSL_VAD_DLL
 #include <stdint.h>
@@ -12,57 +19,57 @@ struct AuthInfo
 };
 #endif
 
-// æ³¨æ\84\8fè¿\99个å¿\85é¡»è¦\81ä¸\8eimsl_vad.h中ç\9a\84å®\9aä¹\89ä¸\80è\87´
+// æ³¨æ\84\8fè¿\99个å¿\85é¡»è¦\81ä¸\8eimsl_vad.h中ç\9a\84å®\9aä¹\89ä¸\80è\87?
 struct VadConfig
 {
-    int vad_log_level;                        // 0 ä¸\8då\90¯ç\94¨  1 INFO  2 INFO、DEBUG
-    int sil_threshold;                        // é\9d\99é\9f³é\98\88å\80¼   æ\8e¨è\8d\90å\80¼ 63 ï¼\880-127ï¼\89  (修改意义不大)
-    int energy_threshold;                     // è\83½é\87\8fé\98\88å\80¼   æ\8e¨è\8d\90å\80¼ 10000
-    int min_speech_length;                    // æ\9c\80ç\9f­è¯­é\9f³é\95¿åº¦   240 ï¼\88é¡»å°\8fäº\8e rule1_min_tailing_silenceï¼\89
+    int vad_log_level;                        // 0 ä¸\8då\90¯ç\94? 1 INFO  2 INFO、DEBUG
+    int sil_threshold;                        // é\9d\99é\9f³é\98\88å\80?  æ\8e¨è\8d\90å\80?63 ï¼?-127ï¼? (修改意义不大)
+    int energy_threshold;                     // è\83½é\87\8fé\98\88å\80?  æ\8e¨è\8d\90å\80?10000
+    int min_speech_length;                    // æ\9c\80ç\9f­è¯­é\9f³é\95¿åº?  240 ï¼\88é¡»å°\8fäº\8e rule1_min_tailing_silenceï¼?
     int silence_detect_length;                // vad_silence_detect 接口判定的尾部静音长度, 如果不需要vad_silence_detect接口可以忽略这个参数
-    int rule1_min_tailing_silence;            // å¤\9aé\95¿æ\97¶é\97´æ²¡æ\9c\89æ£\80æµ\8bå\88°è¯­é\9f³é\87\8dç½®VADç\8a¶æ\80\81 (ms)        480
-    int rule2_min_tailing_silence;            // 0-10sæ\9c\80ç\9f­å¤\9aå°\91é\9d\99é\9f³å\88¤å®\9a语é\9f³ç»\93æ\9d\9f (ms)           960  
-    int rule3_min_tailing_silence;            // 10s以ä¸\8aæ\9c\80ç\9f­å¤\9aå°\91é\9d\99é\9f³å\88¤å®\9a语é\9f³ç»\93æ\9d\9f (ms)          960
+    int rule1_min_tailing_silence;            // å¤\9aé\95¿æ\97¶é\97´æ²¡æ\9c\89æ£\80æµ\8bå\88°è¯­é\9f³é\87\8dç½®VADç\8a¶æ\80?(ms)        480
+    int rule2_min_tailing_silence;            // 0-10sæ\9c\80ç\9f­å¤\9aå°\91é\9d\99é\9f³å\88¤å®\9a语é\9f³ç»\93æ\9d?(ms)           960  
+    int rule3_min_tailing_silence;            // 10s以ä¸\8aæ\9c\80ç\9f­å¤\9aå°\91é\9d\99é\9f³å\88¤å®\9a语é\9f³ç»\93æ\9d?(ms)          960
 
     struct AuthInfo auth_info;
 };
 
 /* 初始化vad
 详细参数设置参照 imsl_vad.h
-è¿\94å\9b\9eå\80¼ ï¼\9a
-    0  å\88\9då§\8bå\8c\96失败
-    1  è¯\95ç\94¨æ¨¡å¼\8f ï¼\88æ\9c\80é\95¿30å\88\86é\92\9fï¼\89
-    // 2  æ\8e\88æ\9d\83æ\88\90å\8a\9f ï¼\88å¦\82æ\9e\9cæ\8e\88æ\9d\83失败æ\8e§å\88¶å\8f°ä¼\9aæ\89\93å\8d°é\94\99误信æ\81¯ï¼\8cå\90\8cæ\97¶è½¬ä¸ºè¯\95ç\94¨æ¨¡å¼\8fï¼\89
+è¿\94å\9b\9eå\80?ï¼?
+    0  å\88\9då§\8bå\8c\96失è´?
+    1  è¯\95ç\94¨æ¨¡å¼\8f ï¼\88æ\9c\80é\95?0å\88\86é\92\9fï¼?
+    // 2  æ\8e\88æ\9d\83æ\88\90å\8a\9f ï¼\88å¦\82æ\9e\9cæ\8e\88æ\9d\83失败æ\8e§å\88¶å\8f°ä¼\9aæ\89\93å\8d°é\94\99误信æ\81¯ï¼\8cå\90\8cæ\97¶è½¬ä¸ºè¯\95ç\94¨æ¨¡å¼\8fï¼?
 */
 int init_vad(const struct VadConfig* conf);
 
 /* 授权vad
 返回值:
-    0  å\88\9då§\8bå\8c\96失败
-    1  å\88\9då§\8bå\8c\96æ\88\90å\8a\9f
+    0  å\88\9då§\8bå\8c\96失è´?
+    1  å\88\9då§\8bå\8c\96æ\88\90å\8a?
 */
 int auth_vad(const struct AuthInfo* auth_info);
 
-// è¿\90è¡\8cvadå\87½æ\95°ï¼\8cdata为16khz  16bit的pcm音频数据  
-// æ³¨æ\84\8fdata_lenæ\98¯int16_tç\9a\84data_lenï¼\8cå¦\82æ\9e\9cä¼ å\85¥u8*æ\88\96void* æ\95°æ\8d®data_lené\9c\80è¦\81 / 2
+// è¿\90è¡\8cvadå\87½æ\95°ï¼\8cdataä¸?6khz  16bit的pcm音频数据  
+// æ³¨æ\84\8fdata_lenæ\98¯int16_tç\9a\84data_lenï¼\8cå¦\82æ\9e\9cä¼ å\85¥u8*æ\88\96void* æ\95°æ\8d®data_lené\9c\80è¦?/ 2
 void run_vad(const int16_t* data, int data_len);
 
-// è\8e·å\8f\96VADç\9a\84ç\8a¶æ\80\81
+// è\8e·å\8f\96VADç\9a\84ç\8a¶æ\80?
 // 0 静音  1 语音   2 语音结束
 int vad_detect();
 
-// è\8e·å\8f\96å°¾é\83¨é\9d\99é\9f³ç\9a\84ç\8a¶æ\80\81
-// 1 å°¾é\83¨é\9d\99é\9f³è¶\85è¿\87è§\84å®\9aæ\97¶é\95¿ï¼\8c0 å°¾é\83¨é\9d\99é\9f³æ\9cªè¶\85è¿\87è§\84å®\9aæ\97¶é\95¿
-// æ³¨æ\84\8få¦\82æ\9e\9cè¦\81è°\83ç\94¨ vad_silence_detectï¼\8cé\9c\80è¦\81å\9c¨vad_clearå\89\8dè°\83ç\94¨
+// è\8e·å\8f\96å°¾é\83¨é\9d\99é\9f³ç\9a\84ç\8a¶æ\80?
+// 1 å°¾é\83¨é\9d\99é\9f³è¶\85è¿\87è§\84å®\9aæ\97¶é\95¿ï¼? å°¾é\83¨é\9d\99é\9f³æ\9cªè¶\85è¿\87è§\84å®\9aæ\97¶é\95?
+// æ³¨æ\84\8få¦\82æ\9e\9cè¦\81è°\83ç\94?vad_silence_detectï¼\8cé\9c\80è¦\81å\9c¨vad_clearå\89\8dè°\83ç\94?
 int vad_silence_detect();
 
 // 清除尾部静音,调用这个函数后尾部静音长度会清0
 void vad_silence_clear();
 
-// é\87\8dç½®VADç\9a\84ç\8a¶æ\80\81   æ¯\8f次å\9c¨vad_detect为2æ\97¶è°\83ç\94¨
+// é\87\8dç½®VADç\9a\84ç\8a¶æ\80?  æ¯\8f次å\9c¨vad_detectä¸?æ\97¶è°\83ç\94?
 void vad_clear();
 
-// é\87\8aæ\94¾VADå\86\85å­\98ï¼\8cä¸\8d使ç\94¨VADæ\88\96æ\9a\82å\81\9c使ç\94¨VADæ\97¶è°\83ç\94¨
+// é\87\8aæ\94¾VADå\86\85å­\98ï¼\8cä¸\8d使ç\94¨VADæ\88\96æ\9a\82å\81\9c使ç\94¨VADæ\97¶è°\83ç\94?
 void free_vad();
 
 #endif
@@ -90,14 +97,14 @@ void free_vad();
     strcpy(auth_info.dmp_token, dmp_token);
     auth_vad(&auth_info);
 
-    // æ¯\8f次è\8e·å¾\97语é\9f³å\90\8eè°\83ç\94¨, è¯­é\9f³é\95¿åº¦æ\9c\80好å°\8fäº\8e100ms
-    // wave为u8*æ\88\96void*æ\8c\87é\92\88æ\97¶é\9c\80è¦\81 / 2
+    // æ¯\8f次è\8e·å¾\97语é\9f³å\90\8eè°\83ç\94? è¯­é\9f³é\95¿åº¦æ\9c\80好å°\8fäº?00ms
+    // wave为u8*æ\88\96void*æ\8c\87é\92\88æ\97¶é\9c\80è¦?/ 2
     run_vad(wave, wave_len / 2);
     int status = vad_detect();    
     if (status == 2) {
         vad_clear();
     }
 
-    // ä¸\8d使ç\94¨æ\88\96æ\9a\82å\81\9c使ç\94¨VADæ\97¶è°\83ç\94¨
+    // ä¸\8d使ç\94¨æ\88\96æ\9a\82å\81\9c使ç\94¨VADæ\97¶è°\83ç\94?
     free_vad();
-*/
\ No newline at end of file
+*/
index fffdf53..5610ab3 100644 (file)
Binary files a/2.code/aicos/app/AI_AMP_2_5/libimslkws.a and b/2.code/aicos/app/AI_AMP_2_5/libimslkws.a differ
index f8ae66a..9e25eca 100644 (file)
Binary files a/2.code/aicos/app/AI_AMP_2_5/libimslnn.a and b/2.code/aicos/app/AI_AMP_2_5/libimslnn.a differ
index 951369a..b8bf999 100644 (file)
Binary files a/2.code/aicos/app/AI_AMP_2_5/libimslvad.a and b/2.code/aicos/app/AI_AMP_2_5/libimslvad.a differ