← 返回文档
初始化与配置
配置结构
通过 cry_detect_config_t(定义在 cry_detect.h 中)配置 SDK:
typedef struct {
const char *engine_type; // "pure_c" | "svp_acl" | "magik" | "int8"
const char *weight_path; // 模型权重路径 (.bin / .om / .mgk)
const char *capture_type; // "mpp" | "imp" | "file"
int silence_rms_threshold; // 静音检测阈值,0=禁用,50=默认
cry_detect_callback_t callback; // 结果回调(可为 NULL)
void *callback_data; // 回调用户数据
const char *alarm_strategy; // 告警策略名,"asymmetric_envelope" 或 NULL
const char *alarm_params; // 策略参数 "k1=v1,k2=v2",NULL=默认值
alarm_callback_t alarm_callback; // 告警事件回调
void *alarm_callback_data; // 告警回调用户数据
} cry_detect_config_t;所有字段均为可选——传入 NULL(或 0)使用默认值。默认引擎和采集类型由构建系统在编译时确定(参见 config.h)。
初始化流程
// 1. 创建配置(或传 NULL 全部使用默认值)
cry_detect_config_t config = {
.engine_type = "pure_c",
.weight_path = "./model_weights.bin",
.callback = my_callback,
.callback_data = &my_context,
.alarm_strategy = "asymmetric_envelope",
.alarm_callback = my_alarm_callback,
};
// 2. 初始化
int ret = cry_detect_init(&config);
if (ret < 0) {
// 处理错误(如模型文件未找到、不支持的引擎)
return ret;
}
// 3. 启动实时检测
ret = cry_detect_start();
if (ret < 0) {
// 处理错误(如音频设备不可用)
cry_detect_deinit();
return ret;
}
// 4. 检测在后台运行——结果通过回调到达
// 您的应用程序可以在此处执行其他工作
// 5. 停止检测
cry_detect_stop();
// 6. 清理资源
cry_detect_deinit();编译期配置 (`config.h`)
音频参数定义在 config.h 中,必须与训练配置一致:
参数
值
说明
`CRY_SAMPLE_RATE`
16000
采样率(Hz)
`CRY_BIT_WIDTH`
16
位深
`CRY_SOUND_MODE`
1
单声道
`CRY_FRAME_TIME_SEC`
5
帧大小(秒)
`CRY_FRAME_STEP_SEC`
1
步长(秒,4 秒重叠)
`AUDIO_BUF_SLOTS`
10
环形缓冲 slot 数(~10 秒)
`AUDIO_SLOT_SAMPLES`
15975
每 slot 采样数(~1 秒)
平台特定的音频参数(设备 ID、帧大小)根据 AUDIO_CAPTURE_* 宏自动选择。
默认后端选择
构建脚本定义编译到固件中的后端:
预处理器宏
默认引擎
默认采集
`ENGINE_SVP_ACL`
`"svp_acl"`
`"mpp"`
`ENGINE_MAGIK`
`"magik"`
`"imp"`
`ENGINE_INT8`
`"int8"`
`"file"`
(无)
`"pure_c"`
`"file"`
文件处理模式
无需麦克风,直接用 WAV 文件测试:
cry_detect_init(NULL); // 全部默认
cry_detect_process_file("test.wav");
cry_detect_deinit();适用于 PC 离线测试或 CI 自动化验证。