语音智能:会话状态运行时
当客户咬着牙说”没事”时,文本分析看到的是平静,而语音中传来的是激动。语音智能弥合了这一鸿沟 — 将文本和语音情绪信号融合到统一的会话状态机中,检测隐藏的不满,追踪升级风险,并实时推荐干预策略。
1. 为什么需要跨模态情绪分析
传统客服分析工具在单一模态下工作:要么分析文本情感,要么分析语音语调,从不同时分析两者。这带来了危险的盲区:
- 客户打字”没问题”的同时,语音音调上升了 40% — 文本显示平静,语音显示压力
- 只有将文本沮丧度与语音激动度随时间关联,才能看到升级趋势
- “隐藏性不满”状态 — 任何单一模态都无法检测,但两者的分歧可以揭示
语音智能将文本和语音视为两个并行信号通道,通过时间线对齐引擎进行关联,并将结果融合为带有自动策略推荐的 7 态会话状态机。
2. 架构总览
语音智能运行时跨越五层构建,遵循 OctopusOS 三层架构(内核契约、内核域、共享层)。
语音智能五层模型
L5: 操作界面
策略钩子证据包导出运营仪表盘升级告警
L4: 会话状态引擎
升级分数融合7 态状态机转换检测器可解释性
L3: 关联引擎
时间线对齐情绪关联漂移检测冲突检测器
L2: 情绪分析
文本情绪评分器语音情绪评分器情绪追踪器AMD 分类器
L1: 接入适配器
Twilio WebSocketRTP 流SIPREC 录音聊天消息 API
层级放置规则:
- L1(接入层) 位于
server/shared/ports_impl/— WebSocket 处理器、音频流适配器 - L2(情绪层) 位于
kernel/domains/voice_intelligence/— 纯评分函数,零 I/O - L3(关联层) 位于
kernel/domains/signal_correlation/— 纯时间线对齐和漂移检测 - L4(状态层) 位于
kernel/domains/session_state/— 纯状态机、策略查找、可解释性 - L5(界面层) 位于
server/shared/— HTTP 路由、仪表盘、证据导出
3. 文本情绪评分
文本情绪评分器通过多特征管线分析聊天消息:
文本情绪评分管线
1
关键词匹配
匹配加权情绪词典 — 沮丧词、困惑词、紧急标记、平静指标
2
特征提取
标点密度(!!!)、大写比例(全大写)、词语重复、消息长度分析
3
强度计算
关键词权重 * 标点乘数 = 每个维度的原始情绪强度
4
评分归一化
归一化到 [0, 1] 区间,识别主导情绪,计算置信度分数
输出:TextEmotionScores — frustration、confusion、urgency、calm 四维评分 + dominant_emotion + confidence。
4. 语音情绪评分
语音情绪分析基于从音频帧提取的声学特征:
能量分析
energy_mean — 平均信号振幅energy_variance — 振幅稳定性intensity_drift — 能量随时间的趋势
基频分析
pitch_mean_hz — 平均说话音高pitch_variance — 音高稳定性(压力指标)pitch_contour — 升降模式
时间特征分析
speaking_rate — 每秒词数silence_ratio — 停顿频率speech_continuity — 流畅度(1.0=连续,0.0=碎片化)
评分计算
agitation — 高能量 + 高音高变化stress — 音高上升 + 语速加快hesitation — 高静音比 + 低连续性calm — 低变化 + 稳定音高
5. 跨通道漂移关联
关联引擎对齐文本和语音情绪时间线,检测五种漂移状态:
跨通道漂移状态
正向一致
语音激动
负向一致
分歧中
双向恶化
交叉升级
干预介入
交叉降级
已解决: DC ← AP
文本跟随语音: DV ← AN
冲突检测
当文本和语音情绪的分歧超过阈值时,冲突检测器识别四种矛盾模式:
| 冲突类型 | 文本状态 | 语音状态 | 严重度 |
|---|---|---|---|
text_calm_voice_agitated | 平静 | 激动/压力 | 高 |
text_neutral_voice_stressed | 中性 | 压力 | 中 |
text_positive_voice_negative | 正面 | 负面 | 高 |
voice_calm_text_frustrated | 平静 | 沮丧 | 中 |
6. 会话状态机
会话状态引擎将三个信号源融合为单一升级分数:
升级分数 = 漂移(0.3) + 冲突(0.4) + 情绪(0.3)
该分数驱动 7 态状态机:
会话状态机
平静
分数 > 0.25
渐趋紧张
检测到冲突
隐藏不满
分数 > 0.55
升级风险
分数 > 0.75
主动升级
分数下降
降级中
分数 < 0.15
已解决
策略钩子
每个状态映射到推荐操作:
| 状态 | 操作 | 建议响应 |
|---|---|---|
| calm | 无操作 | 继续正常对话 |
| rising_tension | 增加监控 | 提高监控频率 |
| hidden_frustration | 标记审查 | 标记:文本表现平静但语音显示不适 |
| escalation_risk | 建议干预 | 建议主管审查 |
| active_escalation | 立即升级 | 立即升级 — 检测到主动不适 |
| deescalating | 增加监控 | 维持高级别监控 |
| resolved | 记录解决 | 记录解决方案供审查 |
7. 可解释性引擎
每个状态决策都包含完整的 StateBasis 分解:
- 分数贡献者:三个加权因子(漂移/冲突/情绪)的原始分数、权重和详情
- 主导信号:哪个因子对决策影响最大
- 分类路径:人类可读的决策逻辑描述
- 校准版本:记录使用了哪些评分参数
这确保每个升级决策都可以被审计、解释和校准。
8. 实现指标
| 指标 | 数量 |
|---|---|
| 冻结契约(voice_intelligence + signal_correlation + session_state) | 22 |
| 纯域模块 | 16 |
| 内核测试 | 296 |
| 共享层测试 | 119 |
| 总测试数 | 415 |
| 门禁违规 | 0 |