From: p15692025051 <846603105@qq.com> Date: Thu, 12 Jun 2025 03:51:24 +0000 (+0800) Subject: 补充文件 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=a21ff5e856488c38ec84a00deff7351f12168df6;p=mirrors%2FASR1603_G5.git 补充文件 --- diff --git a/2.sdk/Helios_SDK/services/microPython/microPython.mk b/2.sdk/Helios_SDK/services/microPython/microPython.mk index 0578ed36..6a3e7bc0 100644 --- a/2.sdk/Helios_SDK/services/microPython/microPython.mk +++ b/2.sdk/Helios_SDK/services/microPython/microPython.mk @@ -294,6 +294,7 @@ QPY_SRCS = \ ports/quectel/core/source/modwlan.c\ ports/quectel/core/source/code128_p.c \ ports/quectel/core/source/modmask.c \ + ports/quectel/core/source/modVad.c \ ports/quectel/core/source/machine_one_wire.c\ ports/quectel/core/source/modalipay_collection.c \ ports/quectel/core/source/modsif.c\ @@ -317,6 +318,10 @@ QPY_SRCS += ../../components/quecsdk/cloud/python/modquecIot.c endif endif + +$(NAME)_ARCHIVES = \ + ports/quectel/core/source/libimslvad.a + ifeq ($(CONFIG_USQLITE), y) EXTMOD_SRCS += lib/usqlite/usqlite_connection.c \ lib/usqlite/usqlite_cursor.c \ diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/imsl_vad.h b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/imsl_vad.h new file mode 100644 index 00000000..04afa01e --- /dev/null +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/imsl_vad.h @@ -0,0 +1,75 @@ +#ifndef _IMSL_VAD_DLL +#define _IMSL_VAD_DLL +#include + +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 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 +}; + +/* 初始化vad +详细参数设置参照 imsl_vad.h +返回值 : + 0 初始化失败 + 1 试用模式 (最长30分钟) + 2 授权模型 (授权失败 控制台会打印,同时转为试用模式) +*/ +int init_vad(struct VadConfig* conf); + +// 运行vad函数,data为16khz 16bit的pcm音频数据 +// 注意data_len是int16_t的data_len,如果传入u8*或void* 数据data_len需要 / 2 +void run_vad(const int16_t* data, const int data_len); + +// 获取VAD的状态 +// 0 静音 1 语音 2 语音结束 +int vad_detect(); + +// 获取尾部静音的状态 +// 1 尾部静音超过规定时长,0 尾部静音未超过规定时长 +// 注意如果要调用 vad_silence_detect,需要在vad_clear前调用 +int vad_silence_detect(); + +// 清除尾部静音,调用这个函数后尾部静音长度会清0 +void vad_silence_clear(); + +// 重置VAD的状态 每次在vad_detect为2时调用 +void vad_clear(); + +// 释放VAD内存,不使用VAD或暂停使用VAD时调用 +void free_vad(); + +#endif + +/*example : + #include "imsl_vad.h" + + // 启用VAD时初始化 + struct VadConfig conf; + conf.sil_threshold = 63; + conf.energy_threshold = 10000; + conf.min_speech_length = 240; + conf.silence_detect_length = 300; + conf.rule1_min_tailing_silence = 480; + conf.rule2_min_tailing_silence = 960; + conf.rule3_min_tailing_silence = 960; + conf.vad_log_level = 2; + init_vad(&conf); + + // 每次获得语音后调用, 语音长度最好小于100ms + // wave为u8*或void*指针时需要 / 2 + run_vad(wave, wave_len / 2); + int status = vad_detect(); + if (status == 2) { + vad_clear(); + } + + // 不使用或暂停使用VAD时调用 + free_vad(); +*/ \ No newline at end of file diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/libimslvad.a b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/libimslvad.a new file mode 100644 index 00000000..e8c15e22 Binary files /dev/null and b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/libimslvad.a differ