语音音频数据标注怎么做
要转写加情感标注,口语词、噪声、多说话人重叠该怎么处理没规范,转写字错率和情感一致率都没个验收线。
有人这样说「这语音数据标注真头疼,转写错得离谱,情感标签也对不上,咋整?」
能替你选的都选好了。不想动,直接点下面「交给 AI 办」,点一下就开始做;想改,就点一下要的那个。
已替你选好想改就点一下
更多选项(一般不用动)
只有你知道的不填就先空着,成品里留【待填】
还想怎么改可以不选
高级选项一般不用动 · 这件事通常 1 分钟左右做好
示例成品全文按上面这组示例选项真跑出来的
别慌。你现在不是“标注难”,是流程糊在一起。3-5人、1万-10万条,关键是把流程拆开,别让一个人一边听写、一边猜情绪。
先说结论
转写和情感/意图必须拆成两个项目/两个阶段。
转写靠“听清字”,情感/意图靠“听语气+理解内容”,混在一起一定乱。
1. 先拆流程
项目 A:转写清洗
只干一件事:音频 → 逐字文本。
不要碰情绪标签。
项目 B:情感/意图标注
用项目 A 已经审核过的转写 + 音频。
只标情绪和意图,转写只读,不允许顺手改。
如果下游是 ASR,转写质量是你的命根子,情绪标签可以相对粗。
情绪标签如果只是辅助,不要投入过多人力死磕。
2. 转写错得离谱怎么办
不要从零写
用 Whisper / faster-whisper / WhisperX 先跑一遍 ASR,拿结果当预标注,导入 Label Studio 让人改。
这比人从空白开始写快很多。
长音频先切段
一段 5–15 秒最合适。
超过 10 秒,情绪容易混合,转写也容易漏。
多人对话音频先做 speaker diarization,否则转写和情绪都没法做。
转写规则必须定死
例如:
- 逐字写,保留“嗯、啊、呃、哦”等语气词。
- 听不清写
[unclear]。 - 多人重叠写
[overlap]。 - 明显噪声写
[noise]。 - 数字、英文、标点规则先定:
比如英文品牌到底写“iPhone 15”还是“爱疯十五”。
转写质检
抽 15%–20% 双人重听,算 CER / WER。
目标:WER / CER 低于 5%,否则别进入情绪标注。
3. 情感/意图标签对不上怎么办
标签先砍粗
不要一上来搞十几个情绪。
小团队建议控制在 6–7 类以内。
情感建议:
- 平静 / 中性
- 开心 / 满意
- 生气 / 不满
- 悲伤 / 失望
- 恐惧 / 焦虑
- 惊讶 / 疑惑
- 其他 / 无法判断
意图建议:
- 告知 / 回答
- 询问 / 请求
- 指令 / 要求
- 投诉 / 抱怨
- 寒暄 / 社交
- 其他
定两条核心规则
情感:以声音语气为主,文字内容为辅。
如果语气和文字冲突,标“其他/无法判断”,并备注。
意图:以文字内容为主。
看说话人到底想干什么,不要被语气带偏。
必须加“其他/无法判断”
不要逼人硬选。
硬选的后果就是标签对不上。
混合情绪
只选主导情绪。
例如一个人又生气又失望,选“生气”,备注写:混合:生气+失望。
4. 交叉一致性检查怎么做
先试标
找 100–200 条,让 3–5 个人全部标同一批。
导出后算一致性。
情感/意图用 Cohen's kappa:
from sklearn.metrics import cohen_kappa_score
print(cohen_kappa_score(标注员A, 标注员B))转写用 WER / CER:
import jiwer
print(jiwer.wer(参考转写, 转写结果))达标线
- 情感/意图:kappa < 0.6,先别铺量,开会改规则。
- 转写:WER/CER < 5%。
正式阶段
- 10%–20% 双盲复审。
- 每周随机抽 100 条复查。
- 做一个 200 条金标集,混在日常任务里,防止标注员漂移。
5. Label Studio 配置建议
项目 B 可以这样配:
<View>
<Audio name="audio" value="$audio" zoom="true" speed="true"/>
<Header value="参考转写"/>
<Text name="transcript" value="$transcript"/>
<Header value="情感"/>
<Choices name="emotion" toName="audio" choice="single" showInLine="true">
<Choice value="neutral" display="平静"/>
<Choice value="happy" display="开心"/>
<Choice value="angry" display="生气"/>
<Choice value="sad" display="悲伤"/>
<Choice value="fear" display="恐惧/焦虑"/>
<Choice value="surprise" display="惊讶/疑惑"/>
<Choice value="other" display="其他/无法判断"/>
</Choices>
<Header value="意图"/>
<Choices name="intent" toName="audio" choice="single" showInLine="true">
<Choice value="inform" display="告知/回答"/>
<Choice value="question" display="询问/请求"/>
<Choice value="command" display="指令/要求"/>
<Choice value="complaint" display="投诉/抱怨"/>
<Choice value="chitchat" display="寒暄/社交"/>
<Choice value="other" display="其他"/>
</Choices>
<Header value="置信度"/>
<Rating name="confidence" toName="audio" maxRating="3" defaultValue="2"/>
</View>项目 A 更简单,只留:
<View>
<Audio name="audio" value="$audio" zoom="true" speed="true"/>
<TextArea name="transcript" toName="audio" rows="4" placeholder="逐字转写,听不清写[unclear]"/>
</View>6. 人力怎么排
3–5 人建议:
- 1 人负责切音频、跑预标注、维护金标集。
- 2–3 人专职标注。
- 1 人轮换抽检、仲裁争议样本。
短音频每人每天标 100–200 条比较合理。
不要按数量考核,按抽检质量考核。
工作量参考:
- 1 万条:小团队 2–4 周可以搞定。
- 10 万条:纯人工不现实,必须靠预标注 + 抽检,先保核心 1 万条高质量。
7. 最终交付格式
建议导出一行一条:
audio_id, audio_path, duration, transcript, emotion, intent, annotator, confidence, split如果下游是 ASR,重点保证:
audio_pathtranscriptsplit
split 建议按说话人或场景切分,不要完全随机切,容易数据泄漏。
最后一句:
你现在已经有 Label Studio、有团队、有数据,缺的不是工具,是一套固定规则。先把规则和试标跑通,再铺量。