AMD:应答实体识别引擎
在外呼场景中,30-40% 的电话接通的是语音信箱。坐席等待机器播完问候语的每一秒都是浪费的人力成本。AMD 引擎使用四维特征决策树在 3 秒内完成分类 — 检测人类、语音信箱、蜂鸣音和未知实体,并提供可解释的置信度评分。
1. 外呼场景的效率挑战
外呼联络中心面临一个持续的效率挑战:相当比例的电话接通的是语音信箱而非人类。没有 AMD:
- 坐席等待 5-15 秒 听完语音信箱问候语才意识到没有人接听
- 误报(将人类判为机器)导致过早挂断,丢失客户
- 漏报(将机器判为人类)让坐席在语音信箱录音上浪费时间
- 蜂鸣音检测失败 意味着坐席错过了留下自动消息的机会
传统 AMD 依赖单一特征(通常是静音时长或问候语长度),需要 5-8 秒才能做出判定 — 到那时,真人来电者已经说了”喂”并且听到了沉默。
2. 四维特征决策架构
AMD 引擎从音频的前 3 秒中提取四个正交特征:
初始静音
人类:通常 0-500ms语音信箱:通常 1000-3000ms阈值:1500ms 区分人类和机器通过能量级门限测量
问候时长
人类:0.5-2.0 秒(喂、你好)机器:3.0-8.0 秒(您好,您拨打的电话...)阈值:2500ms 为人类/机器边界从语音开始到第一次停顿测量
语音节奏
speech_continuity:流畅度 vs. 碎片化cadence_regularity:节奏均匀度人类:不规则、自然停顿机器:规则、录制的节奏
蜂鸣音检测
440-1000Hz 频段的频谱分析beep_tone_detected:布尔标志beep_frequency_hz:主导频率蜂鸣音 = 确定性的机器指标
3. 决策树分类器
四个特征馈入优先级排序的决策树:
AMD 决策树
1
1. 蜂鸣音检查
如果 beep_tone_detected = true,判定 = machine(带蜂鸣音的语音信箱)。置信度:0.95+。这是最强的单一指标。
2
2. 机器特征
如果初始静音 > 1500ms 且 问候时长 > 2500ms 且 节奏规律性 > 0.7,判定 = machine。置信度基于特征裕度。
3
3. 人类特征
如果初始静音 < 800ms 且 问候时长 < 2000ms 且 语音连续性 < 0.6,判定 = human。置信度基于特征裕度。
4
4. 回退
如果没有明确分类,判定 = unknown。低置信度。标记为人工审查或重试。
为什么使用决策树?
AMD 分类器刻意使用基于规则的决策树而非神经网络,有三个原因:
- 可解释性 — 每个判定都附带人类可读的原因(“initial_silence=1800ms 超过人类阈值 1500ms”)
- 可校准 — 阈值可以按运营商、地区或活动调整,无需重新训练
- 确定性 — 相同的音频始终产生相同的判定,这对审计合规至关重要
4. AMD 契约
@dataclass(frozen=True)
class AmdFeatures:
initial_silence_ms: int # 接通后的静音时长
greeting_duration_ms: int # 第一段语音长度
speech_continuity: float # 0.0-1.0 流畅度分数
cadence_regularity: float # 0.0-1.0 节奏均匀度
beep_tone_detected: bool # 频域蜂鸣音标志
beep_frequency_hz: float # 主导蜂鸣频率
background_noise_level: float # 环境底噪
total_duration_ms: int # 总分析时长
@dataclass(frozen=True)
class AmdResult:
result_id: str
correlation_id: str
ts_ms: int
verdict: str # "human" | "machine" | "beep" | "unknown"
confidence: float # 0.0 - 1.0
features: AmdFeatures
reason: str # 人类可读的解释
5. SignalOS 集成
AMD 结果自动转化为 SignalOS 信号:
AMD 信号流
1
音频接入
Twilio/RTP/SIPREC 适配器在通话接通后接收首批音频帧
2
特征提取
AMD 特征提取器在前 3 秒内分析初始静音、问候语、节奏和蜂鸣音
3
分类
决策树产生 AmdResult,包含判定、置信度和原因
4
信号发射
amd_to_signal() 将结果转化为 SignalEnvelope(kind=amd_event, domain=stream_io)
5
治理管线
信号进入 SignalOS 总线,进行风险评级、路由和下游操作
下游操作
| 判定结果 | 操作 |
|---|---|
| human | 立即将通话路由到下一个可用坐席 |
| machine | 可选在蜂鸣音后留下预录消息 |
| beep | 触发自动消息播放 |
| unknown | 短暂保持,重试分类,或路由到坐席 |
6. 证据包集成
AMD 结果自动包含在会话证据包中:
- AMD 卡片:判定结果、置信度、全部四个特征值、决策原因
- 时间线:AMD 分类时间戳(相对于通话接通时间)
- 审计追踪:使用的特征阈值、校准版本、运营商信息
这确保每个 AMD 决策都可追溯、可审计,满足合规要求。
7. 性能指标
| 指标 | 值 |
|---|---|
| 分类延迟 | 从通话接通起 < 3 秒 |
| 蜂鸣音检测准确率 | > 98%(最强单一特征) |
| 人类/机器准确率 | > 92%(四维特征融合) |
| 误报率(人类判为机器) | < 3% |
| 内核测试 | 12(分类器 + 契约) |
| 冻结契约 | 2(AmdFeatures, AmdResult) |
| 纯域模块 | 1(amd_classifier.py) |
| 门禁违规 | 0 |