From: cheng.chen Date: Mon, 29 Sep 2025 10:25:18 +0000 (+0800) Subject: 2025 0929 vad更新 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=cc83daa272e5521914a4a1e21f1c65e77f2a8fff;p=mirrors%2FFX01.git 2025 0929 vad更新 --- diff --git a/2.code/aicos/app/AI_AMP_2_5/imsl_kws.h b/2.code/aicos/app/AI_AMP_2_5/imsl_kws.h index 1cc4b00..394e975 100644 --- a/2.code/aicos/app/AI_AMP_2_5/imsl_kws.h +++ b/2.code/aicos/app/AI_AMP_2_5/imsl_kws.h @@ -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 + typedef int (*imsl_nn_printf_func)(const char *format, ...); struct AuthInfo @@ -13,11 +22,11 @@ struct AuthInfo struct KwsConfig { - int min_activate_len; // 最小检测多少ms的激活才算检测到关键词 - int max_activate_gap; // 关键词激活点最长持续时间 比如 100ms 时检测到关键词但是未达到最短长度,直到100ms + max_activate_gap 这个时间点使激活失效 - int active_threshold; // 激活阈值 + int min_activate_len; // 最小检测多少ms的激活才算检测到关键è¯? + int max_activate_gap; // 关键词激活点最长持续时é—? 比如 100ms 时检测到关键词但是未达到最短长度,直到100ms + max_activate_gap 这个时间点使激活失æ•? + int active_threshold; // 激活阈å€? - int kws_log_level; // kws log打印控制, 0 不打印,1 INFO,2 INFO DEBUG + int kws_log_level; // kws log打印控制ï¼?0 不打印,1 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; -// 初始化 +// 初始åŒ? 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); -// 在每次接收语音时调用 注意 如果是void* 或 int8* 的指针,长度 / 2 -// 运行结束后获取kws状态 +// 在每次接收语音时调用 注意 如果是void* æˆ?int8* 的指针,长度 / 2 +// 运行结束后获取kws状æ€? run_kws(wave, chunk_size / 2); int kws_status = kws_detect(); if (kws_status == 1) { kws_clear(); } -// 不使用kws或kws暂时停用时调用 +// 不使用kws或kws暂时停用时调ç”? free_kws(); */ /* example 2 配合vad使用 -// 初始化 +// 初始åŒ? 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; // 这里的chunk size每次送入kws语音的点数 比如 30ms 就是 30 * 16 +const int chunk_size = 480; // 这里的chunk size每次送入kws语音的点æ•? 比如 30ms 就是 30 * 16 const int chunk_cache = 9; // 由于vad存在一定延时,需要cache一些chunk防止丢失头部语音 -const int cache_size = chunk_cache * chunk_size; // chunk_cache 的值需要根据chunk_size的值变化 9*480/chunk_size +const int cache_size = chunk_cache * chunk_size; // chunk_cache 的值需要根据chunk_size的值变åŒ? 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暂停使用时 +// kws暂停使用æ—? free_kws(); -// vad暂停使用时 +// vad暂停使用æ—? free_vad(); */ + diff --git a/2.code/aicos/app/AI_AMP_2_5/imsl_vad.h b/2.code/aicos/app/AI_AMP_2_5/imsl_vad.h index 77f29fa..b95741f 100644 --- a/2.code/aicos/app/AI_AMP_2_5/imsl_vad.h +++ b/2.code/aicos/app/AI_AMP_2_5/imsl_vad.h @@ -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 @@ -12,57 +19,57 @@ struct AuthInfo }; #endif -// 注意这个必须要与imsl_vad.h中的定义一致 +// 注意这个必须要与imsl_vad.h中的定义一è‡? struct VadConfig { - int vad_log_level; // 0 不启用 1 INFO 2 INFO、DEBUG - int sil_threshold; // 静音阈值 推荐值 63 (0-127) (修改意义不大) - int energy_threshold; // 能量阈值 推荐值 10000 - int min_speech_length; // 最短语音长度 240 (须小于 rule1_min_tailing_silence) + int vad_log_level; // 0 不启ç”? 1 INFO 2 INFO、DEBUG + int sil_threshold; // 静音阈å€? 推荐å€?63 ï¼?-127ï¼? (修改意义不大) + int energy_threshold; // 能量阈å€? 推荐å€?10000 + int min_speech_length; // 最短语音长åº? 240 (须小于 rule1_min_tailing_silenceï¼? int silence_detect_length; // vad_silence_detect 接口判定的尾部静音长度, 如果不需要vad_silence_detect接口可以忽略这个参数 - int rule1_min_tailing_silence; // 多长时间没有检测到语音重置VAD状态 (ms) 480 - int rule2_min_tailing_silence; // 0-10s最短多少静音判定语音结束 (ms) 960 - int rule3_min_tailing_silence; // 10s以上最短多少静音判定语音结束 (ms) 960 + int rule1_min_tailing_silence; // 多长时间没有检测到语音重置VAD状æ€?(ms) 480 + int rule2_min_tailing_silence; // 0-10s最短多少静音判定语音结æ?(ms) 960 + int rule3_min_tailing_silence; // 10s以上最短多少静音判定语音结æ?(ms) 960 struct AuthInfo auth_info; }; /* 初始化vad 详细参数设置参照 imsl_vad.h -返回值 : - 0 初始化失败 - 1 试用模式 (最长30分钟) - // 2 授权成功 (如果授权失败控制台会打印错误信息,同时转为试用模式) +返回å€?ï¼? + 0 初始化失è´? + 1 试用模式 (最é•?0分钟ï¼? + // 2 授权成功 (如果授权失败控制台会打印错误信息,同时转为试用模式ï¼? */ int init_vad(const struct VadConfig* conf); /* 授权vad 返回值: - 0 初始化失败 - 1 初始化成功 + 0 初始化失è´? + 1 初始化成åŠ? */ int auth_vad(const struct AuthInfo* auth_info); -// 运行vad函数,data为16khz 16bit的pcm音频数据 -// 注意data_len是int16_t的data_len,如果传入u8*或void* 数据data_len需要 / 2 +// 运行vad函数,dataä¸?6khz 16bit的pcm音频数据 +// 注意data_len是int16_t的data_len,如果传入u8*或void* 数据data_len需è¦?/ 2 void run_vad(const int16_t* data, int data_len); -// 获取VAD的状态 +// 获取VAD的状æ€? // 0 静音 1 语音 2 语音结束 int vad_detect(); -// 获取尾部静音的状态 -// 1 尾部静音超过规定时长,0 尾部静音未超过规定时长 -// 注意如果要调用 vad_silence_detect,需要在vad_clear前调用 +// 获取尾部静音的状æ€? +// 1 尾部静音超过规定时长ï¼? 尾部静音未超过规定时é•? +// 注意如果要调ç”?vad_silence_detect,需要在vad_clear前调ç”? int vad_silence_detect(); // 清除尾部静音,调用这个函数后尾部静音长度会清0 void vad_silence_clear(); -// 重置VAD的状态 每次在vad_detect为2时调用 +// 重置VAD的状æ€? 每次在vad_detectä¸?时调ç”? void vad_clear(); -// 释放VAD内存,不使用VAD或暂停使用VAD时调用 +// 释放VAD内存,不使用VAD或暂停使用VAD时调ç”? void free_vad(); #endif @@ -90,14 +97,14 @@ void free_vad(); strcpy(auth_info.dmp_token, dmp_token); auth_vad(&auth_info); - // 每次获得语音后调用, 语音长度最好小于100ms - // wave为u8*或void*指针时需要 / 2 + // 每次获得语音后调ç”? 语音长度最好小äº?00ms + // wave为u8*或void*指针时需è¦?/ 2 run_vad(wave, wave_len / 2); int status = vad_detect(); if (status == 2) { vad_clear(); } - // 不使用或暂停使用VAD时调用 + // 不使用或暂停使用VAD时调ç”? free_vad(); -*/ \ No newline at end of file +*/ diff --git a/2.code/aicos/app/AI_AMP_2_5/libimslkws.a b/2.code/aicos/app/AI_AMP_2_5/libimslkws.a index fffdf53..5610ab3 100644 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 diff --git a/2.code/aicos/app/AI_AMP_2_5/libimslnn.a b/2.code/aicos/app/AI_AMP_2_5/libimslnn.a index f8ae66a..9e25eca 100644 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 diff --git a/2.code/aicos/app/AI_AMP_2_5/libimslvad.a b/2.code/aicos/app/AI_AMP_2_5/libimslvad.a index 951369a..b8bf999 100644 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