You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

模型推理时如何选择合适的决策阈值?说话人识别未知类判定场景

说话人识别开放集阈值设置方案

先修复现有代码逻辑问题

你当前写的for循环存在两个问题:

  1. 无论判断结果如何都会执行break,循环仅会执行一次,逻辑等价于直接判断两个概率是否都小于等于0.6,完全不需要循环结构
  2. 当k=1时sample_prob[k+1]会触发数组索引越界错误
    可以直接简化为对概率特征的直接判断。

可选阈值方案

1. 固定最大概率阈值(最易落地)

思路是判断两个概率的最大值是否达到置信要求,未达到则判定为未知说话人。
阈值校准方法:

  • 准备专属校准集,包含你业务场景下的已知说话人测试样本和常见未知说话人样本
  • 遍历阈值区间(建议0.5~0.9,步长0.05),分别统计两个指标:
    • 漏识率:已知说话人被判定为未知的比例
    • 误识率:未知说话人被判定为已知的比例
  • 根据你能接受的业务平衡选择阈值,90%精度的二分类说话人模型通常推荐先尝试0.7~0.75的阈值。

修复后代码示例:

import pandas as pd

# 阈值可根据校准结果调整
MAX_PROB_THRESHOLD = 0.75

sample_df = pd.DataFrame(list_).transpose()
sample_pred = model.predict(sample_df)[0]
sample_prob = model.predict_proba(sample_df)[0]

if max(sample_prob) < MAX_PROB_THRESHOLD:
    sample_pred = "unknown speaker"

2. 自适应概率差阈值(抗干扰性更强)

未知说话人输入时,模型对两个已知类的输出概率通常会非常接近(你给出的示例[0.46, 0.54]差值仅为0.08),而已知说话人输入时两个概率差值会明显更大。你可以用两个概率的差值作为动态判断依据。
校准方法和固定阈值一致,通常差值阈值可选0.15~0.3区间。

代码示例:

import pandas as pd

# 差值阈值可根据校准结果调整
PROB_DIFF_THRESHOLD = 0.2

sample_df = pd.DataFrame(list_).transpose()
sample_pred = model.predict(sample_df)[0]
sample_prob = model.predict_proba(sample_df)[0]
prob_diff = abs(sample_prob[0] - sample_prob[1])

if prob_diff < PROB_DIFF_THRESHOLD:
    sample_pred = "unknown speaker"

3. 组合阈值(高精度场景适用)

如果需要同时降低漏识和误识率,可以组合上述两个判断条件,满足任意一个就判定为未知:

import pandas as pd

MAX_PROB_THRESHOLD = 0.7
PROB_DIFF_THRESHOLD = 0.15

sample_df = pd.DataFrame(list_).transpose()
sample_pred = model.predict(sample_df)[0]
sample_prob = model.predict_proba(sample_df)[0]
max_prob = max(sample_prob)
prob_diff = abs(sample_prob[0] - sample_prob[1])

if max_prob < MAX_PROB_THRESHOLD or prob_diff < PROB_DIFF_THRESHOLD:
    sample_pred = "unknown speaker"

注意:所有阈值都没有通用最优值,必须结合你的业务场景校准。如果不能接受把已知说话人判为未知,就适当降低阈值;如果不能接受把未知说话人判为已知,就适当提高阈值。

内容的提问来源于stack exchange,提问作者lmarenast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:45:03