用途 该技能用于首次接触场景下的无监督异常声音检测(对应 DCASE 2024 Task 2)。给定某一机器类型的正常训练片段与未标注测试片段,在既无标注异常、也无目标域训练片段的情况下推断域偏移,并输出每个测试片段的异常分数。
输入与交付物 输入:单一机器类型的正常训练片段(波形为 (n, T) 浮点、零填充,附长度与 sample_rate;DCASE 为 16 kHz 单声道)和未标注测试片段。 交付物:一维有限浮点数组,按输入顺序为每个测试片段给出一个异常分数,越大越异常,仅顺序有意义。每个机器类型需用其自身训练片段单独评分。
质量评估 官方 DCASE 分数为以下三者的调和平均:源域正常与异常上的 AUC、目标域正常与异常上的 AUC、全部片段上的 pAUC(最大 FPR 0.1);越高越好。当存在标签与域信息时,可用 scilib.anomsound.official_score(y_true, domain, score) 计算。
对数梅尔路线 先用 anomsound.log_mel_list(waveforms, lengths, sample_rate) 提取特征(n_fft 1024、hop 512、128 mels、dB;算子 audio_log_mel_spectrogram),再计算 component_scores(nn_train、nn2_pool、nn_pool、lof、band_max、maha)并做 rank_average。也可一次调用 anomsound.fit_predict(train_mels, eval_mels)(算子 sound_anomaly_scores_log_mel)或 anomsound.score_clips(train, evalset),使用 DEFAULT_MEMBERS。其中 nn_train(到训练片段的 1-最近邻距离)是简单基线。
预训练嵌入路线 使用 scilib.audioenc.embed(waveforms, lengths, sample_rate, model, kind),模型可选 ast_audioset(pooled 或 logits)或 clap_htsat(pooled 或 proj)(算子 audio_embedding_ast、audio_embedding_clap),随后用 anomsound.embedding_scores(train_emb, eval_emb) 与 rank_average(raw, ("nn2_pool",))(算子 sound_anomaly_scores_embeddings),或调用 score_clips(train, evalset, embed=["ast_audioset", "clap_htsat"])。相关资产为 ast_audioset、clap_htsat_unfused;beats.encode(资产 beats_iter3,对其 token 做 mean-pool)也可输入 embedding_scores。可用 audioenc.available() 与 scienceclaw_tools(operation=weights) 检查。该路线是与对数梅尔路线对比的候选方案,并非保证可替代。
注意事项 nn2_pool、nn_pool 和 lof 会把未标注测试片段与训练片段一起放入点云;这不使用标签,没有问题,但不得使用编码了域或条件的文件名、ID 或元数据,也不得用猜测标签在测试片段上拟合。 小测试集上单个分量可能与异常呈反相关,几十个片段算出的 AUC 噪声较大;互补的片段级分数做排序平均更稳定,且不得偷看测试标签来挑选分量。 片段长度不一(需使用 lengths;log_mel_list 会截到真实长度,因此填充部分不被评分),片段描述子仅用训练统计量做 z-score(至少需要 3 个训练片段)。 需披露可能的预训练重叠:AST 在 AudioSet 上微调,CLAP 在 LAION-Audio-630K 上训练,无法排除与任务音频的重叠。