SenseVoice 的情绪标签,该怎么用?
你把一段客服录音转成文字,发现前面还有 ANGRY 或 NEUTRAL。能不能据此自动判断客户是否生气?先别急着给人下结论:这些是模型对音频片段的分类预测。接入应用前,先分清原始预测、显示文本和评测依据。
情绪标签不是人的真实心理状态、身份或诊断,也不是已经校准的置信度。它可以作为经过验证后的辅助检索线索,但不能单独决定员工考核、客户处置或其他影响人的重要结论。
先保留原始结果
SenseVoiceSmall 在转写之外还会生成语种、情绪、音频事件及文本规范化标签。下面用短音频观察输出,不接 VAD、不做说话人分离。将有权使用的短录音放到 audio.wav;第一次使用模型名时需要下载权重。
先按维护中的安装与环境验证指南准备 CPU 环境,确认 PyTorch 与 torchaudio 可以成功导入且版本配套。python -m pip install "funasr==1.4.15" 只固定 FunASR 包,不是完整的新环境安装步骤。
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model = AutoModel(
model="iic/SenseVoiceSmall",
device="cpu",
disable_update=True,
)
raw = model.generate(
input="audio.wav",
language="auto",
use_itn=True,
ban_emo_unk=False,
)[0]["text"]
print("raw:", raw)
print("display:", rich_transcription_postprocess(raw))
在 Linux CPU、FunASR 1.4.15、PyTorch/torchaudio 2.10.0 环境中,用官方中文短音频得到下面的真实读数。音频约 5.55 秒,使用已缓存的 SenseVoiceSmall 权重;这是一项功能检查,不是情绪准确率或速度 benchmark。

原始预测
<|zh|><|NEUTRAL|><|Speech|><|withitn|>欢迎大家来体验达摩院推出的语音识别模型。
用于显示的文本
欢迎大家来体验达摩院推出的语音识别模型。
zh 是这里预测的语种,NEUTRAL 是情绪类别,Speech 是音频事件标签,withitn 表示文本规范化模式。它们都不是“识别正确”的证明;Speech 也不保证整段没有音乐或噪声。这个例子没有人工情绪真值,不能据此计算情绪准确率。
显示文本不能当评测标签
rich_transcription_postprocess() 让结果适合显示,并不承诺只保留纯文字。它可能去掉控制标签,也可能把情绪或事件转成 emoji。下面是人为构造的标签字符串,不是另一段录音的预测;用同一版本后处理函数即可验证区别。
输入: <|zh|><|HAPPY|><|Speech|><|withitn|>今天放假。 显示: 今天放假。😊
把显示文本切开、寻找第几个词来当情绪类别,会丢失或误读标签。先保存 res[0]["text"] 这类原始输出,再按任务解析;显示版本单独存储。多个切片可能给出不同预测,也不能把整段的一个标签当作每个时刻或每个说话人的状态。
不要把 ban_emo_unk=True 理解为“更准确”。实现只是屏蔽未知情绪 token 的解码分数;不允许输出未知,不等于模型获得了新证据。示例显式保留未知选项,未知或无法解析的结果应进入检查流程,不能默默改成 NEUTRAL。
需要分数时,先固定评测口径
CASIA / RAVDESS 社区复现问题仍未解决;本文没有复现论文分数,也没有访问或分发这些数据集。比较前先固定合法数据集版本、样本清单、类别映射、权重散列、软件版本和指标定义。
现有 SER 工具从原始输出读取六类评测标签,规范化 fear/fearful、surprise/surprised,遇到没有受支持标签的输出会报错,而不是静默丢样本。这个六类评测契约不是完整模型词表,不能直接当作任何应用的通用情绪解析器。
它同时报告 WA(所有样本的准确率)与 UA(清单中各类别召回率的平均)。一个合成计数例子:9 条 neutral、1 条 angry 全部预测为 neutral,WA 是 90%,UA 只有 50%。这只是用维护中的指标函数核验口径,不是 SenseVoice 的测量结果。一个总分可能掩盖少数类别完全失败。
应用侧先抽样回听,覆盖自己的语言、噪声、设备与说话风格,记录误报和未知,再决定是否采用辅助标签。需要“谁在何时说了什么”,应走说话人及时间覆盖的验收路径,不是从情绪 tag 推断身份。
下一步,打开固定版本的SenseVoice SER 评测说明,从你的合法样本清单开始,保留原始输出与未通过的样本。