信息速览

Saarbrücken Voice Database — 病理性嗓音声学+EGG 双模态 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | Saarbrücken Voice Database(萨尔布吕肯病理性嗓音数据库) |
|---|---|
| 英文全称 | Saarbrücken Voice Database(Saarbrücker Stimmdatenbank) |
| 别名/简称 | SVD、Stimmdatenbank、Saarbruecken Voice Database |
| 疾病分类(ICD-11) | CA0H.0 声带或喉麻痹、CA0H.1 声带或喉息肉、CA0H.2 声带结节、CA0H.3 喉水肿等,共 71 类发声障碍 |
| 数据模态 | 持续元音声学信号(麦克风)+ 电声门图(EGG)生理信号 + 德语朗读句子 |
| AI 任务类型 | 健康/病理二分类、病理多分类、嗓音质量评估、自监督预训练 |
| 样本总数 | 约 2,225 名说话人(1,356 名病理 + 869 名健康对照)、约 2,043 个录音会话 |
| 数据大小 | 38.1 GB(Zenodo v2 档案,其中 data.zip 为 17.9 GB) |
| 数据格式 | .nsp(CSL 声学)、.egg(电声门图)、WAV(转换后)、CSV/在线元数据 |
| 许可证 | CC BY 4.0(Creative Commons Attribution 4.0 International) |
| 访问级别 | 开放(无需注册,Zenodo 直接下载) |
| DUO 标签 | NRES(无限制研究使用,归因即可) |
| 语言 | 德语(录音任务为德语元音与德语句子) |
| 首发日期 | 1997 年(Phonus 3 首篇描述论文发表) |
| 最后更新 | 2008 年(Zenodo v2 归档,截至 2026-09 检索无更新版本) |
| 发布机构 | 前萨尔大学语音学研究所(现由德国埃森大学医院托管) |
| 官方主页 | stimmdb.coli.uni-saarland.de |
| 下载地址 | zenodo.org/records/16874898 |
| DOI | 10.5281/zenodo.16258834(概念 DOI)/10.5281/zenodo.16874898(v2 版本 DOI) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 命名规范、标签结构化、双通道信号齐全;但无官方数据划分、无预处理脚本、原始 .nsp 需自行转换且存在少量损坏文件(扣分项) |
| 页面状态 | published |
§0 E-E-A-T 审核与免责
医学审核声明:本页面的医学背景(§2)、偏倚与伦理分析(§7)由千方病案医学编辑部交叉审核。编辑部依据 ICD-11 官方编码、原始数据集论文(Pützer & Koreman 1997;Pützer & Barry 2008)与同行评审文献对嗓音医学表述进行核对。
数据工程审核声明:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。核对依据为官方数据库站点、Zenodo 归档页与社区工具(sbvoicedb)的公开文档。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。SVD 以 CC BY 4.0 许可开放分发,使用者须在成果中完整署名数据集作者与来源(见 §9 引用指南),并尊重患者嗓音数据的敏感性——禁止任何形式的说话人重识别或司法/监控用途。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? 萨尔布吕肯病理性嗓音数据库(Saarbrücken Voice Database,SVD)是一个由德国萨尔大学前语音学研究所创建、现由埃森大学医院托管的病理性嗓音语料库。它收录了约 2,225 名说话人在隔音室内的持续元音与句子录音——其中约 1,356 人患有各类发声障碍,869 人为嗓音健康对照。每段录音同时采集麦克风声学信号与电声门图(EGG)生理信号,构成"声音振动 + 声带振动"的双模态记录。
为什么重要? 全球约 25% 的人受嗓音障碍困扰,而传统诊断依赖喉镜等侵入式检查与医生的主观听感知觉。SVD 是世界上规模最大、类别最全的病理嗓音公开数据库之一,覆盖 71 类发声障碍,且以 CC BY 4.0 完全开放下载,是嗓音病理自动检测(AVDD)领域近二十年来被反复使用的"事实基准"。
我能用它做什么? 你可以训练健康/病理二分类器或多类病理分类器,研究抖动(jitter)、微光(shimmer)、倒谱特征等声学参数在不同喉部疾病中的表现,用 EGG 通道分析声带接触动力学,或在病理嗓音上做自监督预训练。它能支撑论文实验、算法竞赛、语音医学教学与临床辅助工具的原型验证——但离真正的临床落地,还隔着外部验证与前瞻性试验的距离。
§1.1 摘要
SVD 由 Pützer、Koreman 与 Barry 等人在德国研究基金会(DFG)资助下于 20 世纪 90 年代中期开始建设,1997 年以论文《A German Database of Patterns of Pathological Vocal Fold Vibration》(Phonus 3)首次公开发表,2008 年形成包含 2,200 余人录音的 v2 版本并归档于 Zenodo。采集协议为:每个录音会话内,受试者依次发出持续元音 [i:]、[a:]、[u:] 的正常音高、高音、低音三种变体,随后发出升调与降调变体,最后朗读一句德语 “Guten Morgen, wie geht es Ihnen?”;所有任务以头戴电容麦克风(Beyerdynamic NEM 192.15)与便携式电声门图仪(Laryngograph)同步采集,经 Computerized Speech Lab(CSL 4300B)以 50 kHz、16-bit 量化。数据库按说话人组织目录,文件名以"元音_音高"编码(如 a_n、a_h、a_l),诊断标签由临床专家验证,健康对照与病理人群均可按性别、年龄、诊断类别筛选。全库以 CC BY 4.0 开放,Zenodo v2 档案共 38.1 GB。
§1.2 战略价值
维度一:临床 AI 的稀缺双模态。 病理嗓音研究长期受制于"只有声音、没有生理参照"的困境——声学特征(如 jitter、shimmer)反映的是声带振动的间接结果,而 SVD 的 EGG 通道直接记录声带接触的阻抗变化。这意味着研究者可以在同一时点上对齐声学信号与声门生理信号,做跨模态融合建模或多模态互相验证。2026 年发表于 Journal of Voice 的多模态研究显示,融合 voice 与 EGG 特征可将特定病理(喉炎、白斑、痉挛性发声障碍)的分类准确率推至 89%(RF 分类器),高于仅用声学特征的对照管线。
维度二:开放许可下的基准地位。 与多数需要注册、签署协议甚至付费的语音医学语料不同,SVD 以 CC BY 4.0 开放,且每个录音会话协议高度标准化(固定元音、固定音高条件、固定句子)。这一"协议即接口"的设计让全球数十项研究在同一批元音-音高条件下比较结果,使 SVD 成为嗓音病理检测论文里最常见的基准之一。对工业界而言,它是构建嗓音健康筛查原型的第一落点;对学界而言,它是新特征、新架构(自监督、层次分类)的试金石。
维度三:协议标准化的教学与可复现性价值。 每个会话严格执行"3 元音 × 3 音高 + 升降变调 + 固定句子"的协议,配合单一设备链与隔音环境,使 SVD 成为讲授"录音协议如何决定分析边界"的理想案例:学生可以在同一说话人内观察音高条件对 F0、jitter 等特征的影响幅度,再对比文献中因协议口径不一而无法比较的结果表——这是任何合成数据都替代不了的实证教材。
§1.3 同类数据集横向对比
| 数据集 | 语言/地区 | 说话人规模 | 模态 | 标注粒度 | 差异化 |
|---|---|---|---|---|---|
| Saarbrücken Voice Database | 德语/德国 | 约 2,225 人(1,356 病理 + 869 健康) | 声学 + EGG 双通道持续元音与句子 | 71 类发声障碍诊断 | 类别最全、双模态、CC BY 4.0 完全开放 |
| COPAS | 荷兰语/荷兰 | 197 病理 + 122 对照 | 自发与朗读语音 | 88 类病理类别 | 含自发语音,适合语流病理研究 |
| EasyCall | 意大利语/意大利 | 2,424 对照 + 3,131 患者 | 朗读语音 | 神经退行性疾病(PD、ALS 等) | 聚焦神经退行性构音障碍,电话信道 |
| NeuroVoz | 西班牙语/西班牙 | 112 人(54 PD + 58 对照) | 自发、朗读与跟读 | 帕金森病 | 小而精的 PD 语音纵向研究起点 |
| EWA-DB | 斯洛伐克语/斯洛伐克 | 1,122 人(896 对照 + 226 患者) | 自发与朗读 | PD、轻度认知障碍、阿尔茨海默病 | 覆盖认知-言语共病谱系 |
对比数据来源:神经退行性语音综述(arXiv 2501.03536,2025 年检索)。各库采集协议、信道与任务不同,规模数字不可直接比较。
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 1997 年 | 首篇论文发表 | Pützer & Koreman 在 Phonus 3(143-153 页)首次描述数据库;描述性数据归档于 Zenodo(DOI 10.5281/zenodo.16258835) |
| 2008 年 | v2 归档于 Zenodo | 规模超 2,200 人;Pützer & Barry 在 Clinical Linguistics & Phonetics 发表声学维度分析;v2 档案 38.1 GB(DOI 10.5281/zenodo.16874898) |
| 2020s | 托管迁移与检索器上线 | 数据库移交埃森大学医院托管,官网提供按性别/诊断筛选的说话人检索器与直链下载 |
| 截至 2026-09 | 无更新版本 | Zenodo 上 v2 仍为最新版本 |
§1.5 典型应用场景
- 健康/病理嗓音二分类:用持续元音的高音、正常音、低音变体训练筛查器,是嗓音病理检测文献的标准开局任务;自监督特征 + 前馈分类头在 SVD 全病理集上已达 93.36% 准确率(Ribas et al., IEEE Access 2023)。
- 71 类病理多分类与层次分类:先分"器质性/功能性/神经性"再细分具体诊断,模拟喉科鉴别诊断的决策树(Tirronen et al., IEEE OJSP 2023)。
- 声学参数-疾病映射研究:以 jitter、shimmer、HNR、倒谱系数等特征检验哪些参数对哪类喉部病变最敏感,辅助嗓音分析的仪器化维度(Pützer & Barry 2008 的原始命题)。
- EGG 声门动力学建模:利用同步 EGG 通道研究声带接触商(contact quotient)、闭合不全等生理指标与嗓音质量的关系。
- 病理语音自监督预训练:以病理嗓音为语料做 SSL 预训练,再迁移到低资源病理检测任务(自监督表示在 SVD 上较传统基线提升 15.62 个百分点)。
§2 医学背景
§2.1 ICD-11 编码映射表
SVD 的原生诊断标签为德语自由文本(如 Rekurrensparese、Phonationsknötchen),未内置国际编码。下表将其中最具代表性的标签映射到 ICD-11(MMS 2025-01 版),供跨库分析与论文写作使用。
| SVD 诊断标签(德语) | 中文释义 | ICD-11 编码 | ICD-11 名称 |
|---|---|---|---|
| Rekurrensparese | 喉返神经麻痹 | CA0H.0 | 声带或喉麻痹(Paralysis of vocal cords or larynx) |
| Polyp / Cyste | 声带息肉/囊肿 | CA0H.1 | 声带或喉息肉(Polyp of vocal cord or larynx) |
| Phonationsknötchen | 声带结节(歌唱结节) | CA0H.2 | 声带结节(Nodules of vocal cords) |
| Reinke Ödem | Reinke 水肿 | CA0H.3 | 喉水肿(Oedema of larynx) |
| Laryngitis | 喉炎 | CA05.0 / CA06.0 | 溃疡性喉炎/急性梗阻性喉炎(按临床表型细分) |
| Carcinoma in situ | 原位癌 | 2E70 | 呼吸系统原位癌区块(喉部原位癌归此区块) |
| Amyotrophe Lateralsklerose | 肌萎缩侧索硬化 | 8A60.0 | 肌萎缩侧索硬化(神经肌肉章节) |
| Morbus Parkinson | 帕金森病 | 8A00.0 | 帕金森病(运动障碍章节) |
CA0H 系列编码引自 ICD-11 MMS “声带或喉疾病(未在他处分类)” 区块(2025-01 版)。ALS 与 PD 编码为喉外系统性疾病——SVD 保留此类神经源性发声障碍录音,其嗓音异常属于继发声学表现。
§2.2 疾病简介与流行病学
嗓音障碍(Voice Disorders / Dysphonia) 是指嗓音的音质、音高、响度或共振偏离个体正常基线的状态,可由声带器质性病变(息肉、结节、囊肿、水肿、肿瘤、麻痹)、功能性滥用(过度用力发声、心理性失声)或神经系统疾病(帕金森病、ALS、痉挛性发声障碍)引起。流行病学层面,全球约 25% 的人受嗓音障碍影响(Journal of Voice 2026 引述),教师、歌手、客服等高声负荷职业人群风险显著升高。喉炎、声带息肉与声带结节是嗓音门诊最常见的良性病变谱系;声带麻痹则多与甲状腺手术、纵隔肿瘤或特发性神经病变相关。
SVD 的病理谱系恰好横跨这三大机制:器质性类(Polyp、Phonationsknötchen、Laryngitis、Reinke Ödem、各型喉部肿瘤)、功能性类(Hyperfunktionelle Dysphonie、Hypofunktionelle Dysphonie、Psychogene Dysphonie)与神经源性类(Rekurrensparese、Morbus Parkinson、ALS、痉挛性发声障碍)。此外,库中还保留了术后状态录音(如 Chordektomie 声带切除、Frontolaterale Teilresektion 部分切除)——这些录音反映的是"术后嗓音"而非活动性疾病,分析时须当作独立标签层处理。
§2.3 临床任务定义
| 任务 | 定义 | SVD 支撑方式 |
|---|---|---|
| 筛查(Screening) | 在人群中快速判别嗓音是否异常 | 健康 vs 病理二分类,任取单一元音/音高条件即可成任务 |
| 鉴别诊断(Diagnosis) | 判断嗓音异常属于哪类疾病 | 71 类多分类或"机制大类→具体诊断"层次分类 |
| 分级(Grading) | 量化嗓音嘶哑严重程度 | 声学参数(jitter/shimmer/HNR)与诊断亚组的关联分析 |
| 预后/随访(Prognosis) | 术后或治疗后的嗓音恢复评估 | 术后状态录音与病变组、健康组的对比分析 |
临床金标准为喉镜/频闪喉镜下的形态学观察结合耳鼻喉科医生的听感知觉评估( perceptual judgment)。SVD 的价值在于把"形态学金标准"的结论以声学与 EGG 双通道信号的形式固化下来,使机器可以学习"形态学异常在信号中长什么样"。
§2.4 患者人群画像
| 属性 | 内容 |
|---|---|
| 来源机构 | 萨尔布吕肯及周边地区医院喉科门诊与社区招募(德国萨尔州) |
| 采集机构 | 前萨尔大学语音学研究所(DFG 资助项目) |
| 年龄范围 | 18-65 岁(Pützer & Barry 2008 分析样本口径) |
| 均值年龄 | "正常"组约 38 岁,病理组约 41 岁(2008 年论文口径) |
| 性别分布 | 健康 433 男 / 436 女;病理 629 男 / 727 女(2025 年综述引用官网口径) |
| 地域/语言 | 德国、德语母语者 |
| 疾病谱 | 71 类发声障碍(器质性、功能性、神经源性及术后状态) |
§2.5 临床价值
对临床而言,SVD 支撑的价值链是"筛查→分诊→辅助诊断":嗓音筛查工具可以在基层或远程场景中给出"建议转诊喉科"的提示,降低喉镜资源的无效占用;在喉科内部,声学-生理特征组合可以成为频闪喉镜之外的第二证据源。对工程而言,EGG 通道提供了一个不依赖录音环境的生理参照系,是研究"声学特征漂移而声带动力学稳定"这类现象的天然实验场。对教学而言,71 类诊断×3 元音×多音高条件的组合,构成了喉科与语音病理学训练中少见的系统化听感知觉素材库。
§2.6 标注金标准
| 维度 | 内容 |
|---|---|
| 金标准划分 | 每位说话人的诊断结论(临床验证的疾病模式标注) |
| 标注方式 | 喉科临床诊断 + 语音学专家复核(官网称 “validated annotations by clinical experts”) |
| 标注者资质 | 耳鼻喉科/语音医学临床医师与前语音学研究所研究人员 |
| 标注性质 | 类别级标签(说话人级),附性别、年龄等人口学元数据 |
| 已知限制 | 标注者间一致性 Kappa 未随库公开;标签为单一主诊断,多病共存信息未编码 |
§3 数据集规格
§3.1 模态详情
声学通道(麦克风):隔音室内头戴电容麦克风(Beyerdynamic NEM 192.15)采集的声压信号,固定唇距以消除头部移动带来的幅度漂移;原始 .nsp 容器(Kay CSL 格式),50 kHz、16-bit。持续元音段约 1-2 秒。
生理通道(EGG):便携式电声门图仪(Laryngograph Ltd)通过颈部电极测量声带闭合时的跨声门阻抗变化,与声学通道经 CSL 4300B 同步采样、同码率量化。EGG 反映声带接触动力学,对接触性病变(结节、息肉、接触性肉芽肿)尤为敏感,且不受麦克风距离与房间混响影响。
语言通道(句子):每会话附带一句德语朗读 “Guten Morgen, wie geht es Ihnen?”,为语流条件下的病理线索(音段协同发音、韵律)提供素材。
§3.2 按子集样本数
| 子集 | 说话人数 | 占比 | 说明 |
|---|---|---|---|
| 健康对照 | 869 | 约 39% | 男 433 / 女 436,性别基本均衡 |
| 发声障碍患者 | 1,356 | 约 61% | 男 629 / 女 727,跨 71 类诊断 |
| 合计 | 约 2,225 | 100% | 官网检索器口径;另有 2,043 个录音会话有完整数据 |
各病理亚类的说话人数未随库公开精确值;Zenodo 按诊断分包的压缩体积是类别体量的代理指标(见 §4.2)。
§3.3 数据格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 声学信号 | .nsp(Kay CSL 专有二进制) | 需转换为 WAV 才能被主流音频库读取;Zenodo 提供官方转换工具 |
| 电声门图信号 | .egg | 与 .nsp 同名成对存放 |
| 元数据 | 数据库表/CSV + 官网检索器 | 说话人 ID、性别、年龄、诊断、录音类型 |
| 转换后音频 | WAV | 50 kHz / 16-bit PCM |
§3.4 存储大小
Zenodo v2 档案总计 38.1 GB:全量数据包 data.zip 为 17.9 GB,健康对照包 healthy.zip 为 6.0 GB,其余为约 70 个按诊断分包的病理压缩包。代表性分包明细:
| 分包 | 大小 | 分包 | 大小 |
|---|---|---|---|
| data.zip(全量) | 17.9 GB | Dysphonie(发声障碍伞形类) | 861.9 MB |
| healthy.zip(健康对照) | 6.0 GB | Psychogene Dysphonie(心理性) | 780.7 MB |
| Rekurrensparese(喉返神经麻痹) | 1.9 GB | Balbuties(口吃) | 161.1 MB |
| Hyperfunktionelle Dysphonie | 1.9 GB | Morbus Down(唐氏综合征) | 9.0 MB |
| Laryngitis(喉炎) | 1.2 GB | Morbus Parkinson(帕金森病) | 5.5 MB |
仅需健康/病理二分类实验时,可只下载 data.zip 与 healthy.zip(合计 23.9 GB);做特定病理研究时按分包增量下载即可。
§3.5 标注方式
说话人级类别标注:每位说话人一个主诊断标签(或"正常嗓音"),由喉科临床诊断链路产生并经语音学专家复核。标注不包含逐帧音段切分、GRBAS 感知觉评分或逐次会话的严重度分级——这些需要研究者自行引入或自行标注。
§3.6 标注者资质与一致性
标注由具备喉科临床资质的医师与前语音学研究所的研究人员(Pützer、Barry、Koreman)共同完成,属于"临床诊断即标注"的高资质链路。但标注者间一致性指标(如 Kappa)未随库公开,复现者应把标签视为"临床结论"而非"双盲共识标注"。
§3.7 采集周期
数据库由 DFG 资助、于 20 世纪 90 年代中期启动建设:1997 年发表首篇描述论文,至 2008 年规模超过 2,200 人并形成 Zenodo v2 归档。精确的逐年采集量未公开;使用时应将全部录音视为"同一代录音室技术"(CSL 4300B + 同型麦克风 + 同型 EGG 仪)下的同质设备链。
§3.8 地域覆盖
全部录音来自德国萨尔州(萨尔布吕肯及周边),说话人为德语母语者。跨语言、跨口音的泛化性需要外部数据验证,SVD 自身不提供地域多样性。
§3.9 设备规格
| 组件 | 型号/参数 |
|---|---|
| 麦克风 | Beyerdynamic NEM 192.15 头戴电容麦克风(固定唇距) |
| EGG 仪 | Portable Laryngograph(Laryngograph Ltd) |
| 采集工作站 | Computerized Speech Lab(CSL 4300B) |
| 采样率/位深 | 50 kHz / 16-bit(声学与 EGG 同步) |
| 环境 | 隔音室(sound-treated room) |
§3.10 深度溯源链
德国研究基金会(DFG,资助方)→ 前萨尔大学语音学研究所(创建与采集,Pützer/Koreman/Barry)→ Zenodo(v2 归档,38.1 GB,2008 年,DOI 10.5281/zenodo.16874898)→ 埃森大学医院(现托管与维护,Hosch)→ 官网检索器与 qianfanghub 等次级文档。每一环均有公开可查的机构署名,溯源链完整。
§4 数据结构
§4.0 目录树
数据解压后按说话人组织目录,每个说话人目录下分 vowels(元音任务)与 sentnces(句子任务,官方拼写即少一个 e)两个子目录,声学文件 .nsp 与电声门图文件 .egg 同名成对存放:
svd/
├── data/ # 病理 + 健康全量(data.zip,17.9 GB)
│ ├── 1/
│ │ ├── sentnces/ # 句子任务(官方目录名拼写即如此)
│ │ │ ├── 1-phrase.nsp # 句子声学信号
│ │ │ └── 1-phrase-egg.egg # 句子 EGG 信号
│ │ └── vowels/
│ │ ├── 1-a_n.nsp # 元音 /a:/ 正常音高(a_n)
│ │ ├── 1-a_n-egg.egg # 对应 EGG
│ │ ├── 1-a_h.nsp # 元音 /a:/ 高音(a_h)
│ │ ├── 1-a_l.nsp # 元音 /a:/ 低音(a_l)
│ │ ├── 1-i_n.nsp # 元音 /i:/ 正常音高(i_n)
│ │ ├── 1-u_n.nsp # 元音 /u:/ 正常音高(u_n)
│ │ └── ... # 每个任务均有 .nsp + .egg 成对文件
│ ├── 2/
│ │ ├── sentnces/
│ │ └── vowels/
│ └── ... # 约 2,043 个会话目录
└── healthy/ # 健康对照包(healthy.zip,6.0 GB,结构同上)
utterance 编码规则为 {元音}_{音高}:元音 ∈ a / i / u,音高 ∈ n(normal)/ h(high)/ l(low);升降调变体在元音文件中另有编码。句子文件统一为 {id}-phrase。
§4.1 DAIMS 8 列字段字典
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| speaker_id | Integer | 说话人唯一标识,即目录名 | 1 | 划分时防泄漏分组键 | 无 | 无 | 1-2,225 区间非连续 |
| gender | Text | 性别(德语 w=m/f 缩写) | w | 性别分层建模、公平性分析 | 无 | 部分记录缺失 | w / m |
| age | Integer | 录音时年龄(岁) | 41 | 年龄配对、偏倚分析 | 自报或病历记录误差 | 缺失即无该值 | 18-65 为主 |
| pathology | Text | 主诊断标签(德语自由文本) | Rekurrensparese | 分类任务标签 | 临床诊断链路 | 无 | 约 71 类 + 正常嗓音 |
| recording_type | Text | 嗓音分类一级标签 | pathological | 二分类标签 | 无 | 无 | normal / pathological |
| utterance | Text | 录音任务编码 | a_h | 条件筛选(元音×音高) | 无 | 无 | a/i/u × n/h/l 等组合 |
| file_acoustic | Text | 声学信号文件路径 | 1-a_h.nsp | 模型输入定位 | 需防 EGG 互换(坑点 2) | 无 | .nsp 二进制 |
| file_egg | Text | EGG 信号文件路径 | 1-a_h-egg.egg | 声门生理分析 | 同上 | 无 | .egg 文本 |
§4.2 标签分布
标签体系为两级:一级"正常嗓音 vs 病理嗓音"(官网检索器的 phonatory classification),二级为约 71 个德语诊断标签。二级分布呈显著长尾:
| 诊断类别(德语) | 分包体积(代理指标) | 机制大类 |
|---|---|---|
| Rekurrensparese(喉返神经麻痹) | 1.9 GB | 神经源性 |
| Hyperfunktionelle Dysphonie(过度功能性发声障碍) | 1.9 GB | 功能性 |
| Laryngitis(喉炎) | 1.2 GB | 器质性-炎症 |
| Funktionelle Dysphonie(功能性发声障碍) | 938.9 MB | 功能性 |
| Dysphonie(发声障碍,伞形类) | 861.9 MB | 混合 |
| Kontaktpachydermie(接触性厚皮病) | 618.7 MB | 器质性 |
| Reinke Ödem(Reinke 水肿) | 576.1 MB | 器质性 |
| Chordektomie(声带切除术后) | 486.8 MB | 术后状态 |
| Morbus Parkinson(帕金森病) | 5.5 MB | 神经源性 |
| Chondrom(软骨瘤) | 6.5 MB | 器质性-肿瘤 |
分包体积为 Zenodo v2 压缩包大小,仅作类别体量的相对代理,不等于原始波形总量比例。最小与最大类之间相差约 300 倍。
§4.3 关键统计
- 说话人:约 2,225 名(1,356 病理 + 869 健康),性别合计 1,062 男 / 1,163 女。
- 录音会话:2,043 个(社区工具 sbvoicedb 的 number_of_all_sessions 恒定值)。
- 每会话任务:3 元音 × 3 音高(正常/高/低)+ 升/降调变体 + 1 句德语句子;每任务同时落盘声学与 EGG 双文件。
- 采样规格:50 kHz、16-bit,双通道(麦克风 + EGG)。
- 诊断类别:约 71 类,长尾分布(见 §4.2)。
规模量级估算(仅供工程规划):以 2,043 个会话 × 每会话约 12 个录音任务(9 元音 + 变调 + 句子)× 双通道(声学 + EGG)估算,全库约 4.9 万个录音文件;按元音 1-2 s、句子 2-3 s 折算,纯元音频约 8-17 小时、加句子与变调约 15-25 小时。该估算由协议结构推导,官方未公布逐文件清单,实施时请以实际解压结果为准。
§4.4 数据层级
说话人(speaker,约 2,225)
└── 录音会话(session,2,043 个;部分说话人无完整会话数据)
└── 录音任务(utterance task:元音×音高 / 句子)
├── 声学信号文件(.nsp,麦克风)
└── 生理信号文件(.egg,EGG)
分析的最小独立单位是"录音任务",标签的单位是"说话人"。任何把任务当独立样本的实验都必须在说话人层面做划分。
§4.5 缺失值与信息性缺失
SVD 无显式的"信息性缺失编码"。需要注意的缺失模式有三类:其一,部分说话人年龄缺失(元数据中无值即代表缺失);其二,2,225 名说话人与 2,043 个会话之间约 180 个说话人缺少完整会话数据(不同文献统计口径亦存在 2,041-2,255 的出入,见 §7.1);其三,少数文件存在损坏或声学/EGG 通道互换的已知问题(见坑点 2),建议用社区工具 sbvoicedb(内置修复清单)或自行校验文件时长与信噪比后使用。
# 缺失与异常的三重自检:入库前跑一遍,输出剔除清单
import numpy as np
import soundfile as sf
def audit_file(wav_path, sr_expected=50000, min_seconds=0.3):
"""返回 (is_valid, reason):时长、采样率、静音三查"""
try:
wav, sr = sf.read(wav_path, dtype="float32")
except Exception as e: # 损坏文件(坑点 2)
return False, f"unreadable:{e}"
dur = len(wav) / sr
if sr != sr_expected:
return False, f"unexpected_sr:{sr}"
if dur < min_seconds:
return False, f"too_short:{dur:.2f}s"
if float(np.sqrt(np.mean(wav ** 2))) < 1e-4:
return False, "near_silence"
return True, "ok"
# 用法:对 manifest.csv 中每个 nsp_path 逐个 audit_file,
# 剔除项写入 audit_rejects.csv 随数据版本一并提交(见 §6.10)。
§5 数据划分与使用建议
§5.1 官方划分
官方未提供任何训练/验证/测试划分。数据库的设计单位是"说话人×诊断",而非机器学习实验协议——划分完全由使用者自行构建。
§5.2 社区惯例划分
| 惯例 | 做法 | 出处 |
|---|---|---|
| 随机 75/25 | 按录音(非说话人)随机 75% 训练 / 25% 测试 | 多项声学特征研究(如多倒谱投影研究) |
| K 折交叉验证 | 全库 KFCV,逐折重划 | 特征工程类论文常见 |
| 性别分模型 | 男、女各自建模与评估 | ACOTB 基准:性别专用模型一致优于混合性别模型 |
| 元音/音高条件化 | 固定单一元音与音高条件构建二分类任务 | 120 个 vowel×pitch×sex 因子组合基准 |
§5.3 数据泄漏风险(重点)
- 说话人跨划分泄漏(最致命):每名说话人贡献多达 10+ 条录音(9 元音 + 变调 + 句子),同一个人的声音特征高度相关。若按录音随机划分,同一说话人会同时出现在训练与测试集,测试分数虚高。必须按 speaker_id 做 GroupShuffleSplit / GroupKFold。
- 跨元音泄漏:同一说话人同一音高下 a/i/u 三条录音几乎等价;即使按"任务"划分也等于泄漏。
- 句子与元音混划分:句子录音与元音录音来自同一说话人,两者只能同时属于同一侧。
- 性别×音高混杂导致的伪提升:模型可能学到"性别/音高"而非"病理"。女声高音 /a_h/ 的 F0 与男声正常音重叠,混合性别训练会让模型沿 F0 走捷径——按性别分层划分或分层评估可暴露该效应。
§5.4 划分策略建议
推荐的默认协议:按 speaker_id 分组、按"诊断大类×性别"分层,70/10/20 划分(训练/验证/测试);71 类长尾下,建议主报告二分类与"机制大类(器质性/功能性/神经源性)三分类",并单列"每类样本数"附录。
# 双重分层 + 说话人分组的划分实现骨架
from sklearn.model_selection import train_test_split
def stratified_group_split(manifest, label_col="mechanism",
seed=42):
"""先在每个 (标签×性别) 层内对说话人排序,再按组切分"""
speaker_tbl = (manifest.groupby("speaker_id")
.agg(label=(label_col, "first"),
gender=("gender", "first"))
.reset_index())
train_ids, temp_ids = train_test_split(
speaker_tbl["speaker_id"], test_size=0.30,
stratify=speaker_tbl["label"] + "_" + speaker_tbl["gender"],
random_state=seed)
temp_tbl = speaker_tbl[speaker_tbl["speaker_id"].isin(temp_ids)]
val_ids, test_ids = train_test_split(
temp_tbl["speaker_id"], test_size=0.667,
stratify=temp_tbl["label"] + "_" + temp_tbl["gender"],
random_state=seed)
return (manifest[manifest["speaker_id"].isin(train_ids)],
manifest[manifest["speaker_id"].isin(val_ids)],
manifest[manifest["speaker_id"].isin(test_ids)])
划分清单落盘为 JSON 并纳入数据版本(见 §6.10),同一实验系列内禁止重新划分。
§5.5 交叉验证建议
采用 GroupKFold(组 = speaker_id,K=5),每折内监控各类别至少 1 个测试样本;对极小类(<10 名说话人)不做类内评估,改入"其他"桶或仅报告二分类结果。
§5.6 外部验证建议
训练集若仅用 SVD,强烈建议在至少一个非德国、非 CSL 设备链的数据集(如 COPAS、NeuroVoz)上做零样本或微调外部验证;论文报告时注明元音条件与性别口径,避免与历史文献直接比较。
§6 AI 就绪指南
§6.0 云端快速启动
SVD 托管于 Zenodo,无需注册即可用 wget 直拉。以下命令下载健康对照包(6.0 GB)与全量包(17.9 GB)中的首个:
# 环境:任何可访问 Zenodo 的 Linux/云主机
# 下载 healthy.zip(6.0 GB)与 data.zip(17.9 GB)
wget -c https://zenodo.org/records/16874898/files/healthy.zip
wget -c https://zenodo.org/records/16874898/files/data.zip
# 校验 MD5(healthy.zip 应为 67789ec89a161ce26d562719bc8d1aaa)
md5sum healthy.zip
§6.1 快速上手
# ============================================================
# 目录结构预期(data_root 拼接关系):
# data_root/
# ├── data/1/vowels/1-a_n.nsp ... data/2043/...
# └── healthy/1/vowels/...
# 最小可用子集:healthy/ + data/ 中的任一病理分包 zip 解压后
# 即可构建二分类实验;无需下载全部 38.1 GB。
# 注意:.nsp 为 Kay CSL 专有格式,需先转换(见 §6.2)。
# ============================================================
from pathlib import Path
data_root = Path("/data/svd") # 解压根目录
healthy_dir = data_root / "healthy" # 健康对照目录
pathology_dir = data_root / "data" # 病理目录(按说话人编号)
def list_pairs(speaker_dir):
"""返回某说话人目录下全部 (nsp, egg) 成对文件"""
pairs = []
for nsp in sorted(speaker_dir.rglob("*.nsp")):
egg = nsp.with_name(nsp.stem + "-egg.egg")
if egg.exists():
pairs.append((nsp, egg))
return pairs
# 示例:枚举说话人 1 的全部成对录音
for nsp_path, egg_path in list_pairs(pathology_dir / "1"):
print(nsp_path.name, "<->", egg_path.name)
§6.2 数据获取
| 获取项 | 方式 | 大小 | 说明 |
|---|---|---|---|
| 全量归档 | Zenodo record 16874898 | 38.1 GB | 约 70 个按诊断分包 zip + data.zip + healthy.zip |
| 二分类最小集 | data.zip + healthy.zip | 23.9 GB | 病理全量 + 健康对照 |
| 单病理增量 | 按诊断 zip 按需下载 | 5.5 MB-1.9 GB | sbvoicedb 支持按病理增量下载 |
| .nsp 转换工具 | Zenodo 页面官方链接 | 小 | .nsp → WAV |
# 用社区工具 sbvoicedb 增量获取(自动下载 + 修复已知损坏文件)
pip install sbvoicedb
python - << 'PY'
from sbvoicedb import SbVoiceDb
db = SbVoiceDb("/data/svd_sqlite") # 自动下载元数据并建 SQLite 索引
print(f"会话总数: {db.number_of_all_sessions}") # 恒为 2043
print(f"已下载会话: {db.number_of_sessions_downloaded}")
print(f"说话人数: {db.get_speaker_count()}")
print(f"录音条数: {db.get_recording_count()}")
PY
§6.3 预处理全流程
SVD 的原始 .nsp 需先转 WAV;转换后的标准链路是:读取 → 静音裁剪 → 重采样 → 特征提取(声学 + EGG 双通道)。以下为可运行的完整管线:
# 依赖:pip install numpy scipy soundfile librosa
import numpy as np
import soundfile as sf
import librosa
SR_NATIVE = 50000 # SVD 原生采样率 50 kHz
SR_TARGET = 16000 # 下采样到 16 kHz 供深度模型使用
def load_wav(path, target_sr=SR_TARGET):
"""读取 WAV,重采样,返回 float32 单声道"""
wav, sr = sf.read(path, dtype="float32", always_2d=True)
wav = wav.mean(axis=1) # 立体声混合为单声道
if sr != target_sr:
wav = librosa.resample(wav, orig_sr=sr, target_sr=target_sr)
return wav
def trim_silence(wav, top_db=30):
"""按能量裁剪首尾静音(元音段理论约 1-2 s,超长即异常)"""
intervals = librosa.effects.split(wav, top_db=top_db)
if len(intervals) == 0:
return wav
start, end = intervals[0][0], intervals[-1][1]
return wav[start:end]
def acoustic_features(wav, sr=SR_TARGET):
"""经典声学特征组:MFCC + 基频 + 能量统计"""
mfcc = librosa.feature.mfcc(y=wav, sr=sr, n_mfcc=20)
f0, voiced, _ = librosa.pyin(wav, fmin=60, fmax=600, sr=sr)
f0_stats = np.nanmean(f0) if np.any(voiced) else 0.0
return {
"mfcc_mean": mfcc.mean(axis=1),
"mfcc_std": mfcc.std(axis=1),
"f0_mean": f0_stats,
"rms": float(np.sqrt(np.mean(wav ** 2))),
}
def read_egg(path):
"""
读取 .egg 文本格式 EGG 信号。
注意坑点 2:库中存在声学/EGG 通道互换的已知问题,
转换后务必先画波形确认 EGG(周期性阻抗曲线)与声学
(宽带噪声状)形态没有被对调。
"""
data = np.loadtxt(path, skiprows=1) # 按官方 .egg 文本格式调整
return data # 第一列时间戳,第二列阻抗
wav = load_wav("/data/svd/healthy/1/vowels/1-a_n.wav")
wav_t = trim_silence(wav)
print(acoustic_features(wav_t))
EGG 通道进阶处理(声门动力学):
def egg_contact_features(egg, sr, cycle_min_hz=60, cycle_max_hz=600):
"""
EGG 接触动力学近似特征:
以过零周期估计 F0(degg 峰值间隔),计算接触商近似值。
正式研究请使用专业工具(如 VoiceSauce / EggWorks)。
"""
egg = egg - egg.mean()
peak_thr = 0.5 * np.max(np.abs(egg))
peaks = np.where((egg[:-1] < peak_thr) & (egg[1:] >= peak_thr))[0]
if len(peaks) < 3:
return {"egg_f0": 0.0, "egg_ci": 0.0}
periods = np.diff(peaks) / sr
f0 = 1.0 / periods.mean()
# 接触商近似:每周期内 |egg| > 40% 峰值的时间占比
above = np.abs(egg) > 0.4 * np.max(np.abs(egg))
return {"egg_f0": float(f0), "egg_ci": float(above.mean())}
§6.3b 嗓音微时序特征(jitter / shimmer)
jitter 与 shimmer 是嗓音病理文献的经典判别特征:jitter 度量相邻基音周期的频率扰动,shimmer 度量相邻周期的幅度扰动。SVD 的持续元音(每个超过 20-30 个基音周期,满足经典分析的最低要求)正为此类特征而生。以下给出无外部依赖的近似实现(正式研究建议用 Praat/VoiceSauce):
import numpy as np
def estimate_f0_series(wav, sr, fmin=60, fmax=600):
"""基于自相关的逐帧 F0 轨迹(帧长 40 ms,帧移 10 ms)"""
frame, hop = int(0.04 * sr), int(0.01 * sr)
f0s = []
for start in range(0, len(wav) - frame, hop):
seg = wav[start:start + frame]
seg = seg - seg.mean()
if np.sqrt((seg ** 2).mean()) < 1e-4: # 静音帧跳过
continue
ac = np.correlate(seg, seg, mode="full")[frame - 1:]
lo, hi = int(sr / fmax), int(sr / fmin)
if hi >= len(ac):
continue
lag = lo + int(np.argmax(ac[lo:hi]))
f0s.append(sr / lag)
return np.array(f0s)
def jitter_local(f0s):
"""local jitter:相邻周期差的平均绝对值 / 平均周期"""
if len(f0s) < 3:
return 0.0
return float(np.mean(np.abs(np.diff(f0s))) / np.mean(f0s))
def shimmer_local(wav, sr):
"""local shimmer:逐帧峰值幅度的相对扰动(近似实现)"""
frame, hop = int(0.04 * sr), int(0.01 * sr)
peaks = []
for start in range(0, len(wav) - frame, hop):
seg = wav[start:start + frame]
peaks.append(np.max(np.abs(seg)))
peaks = np.array(peaks)
if len(peaks) < 3:
return 0.0
return float(np.mean(np.abs(np.diff(peaks))) / np.mean(peaks))
f0s = estimate_f0_series(wav_t, SR_TARGET)
print(f"F0 = {np.mean(f0s):.1f} Hz, jitter = {jitter_local(f0s):.4f}, "
f"shimmer = {shimmer_local(wav_t, SR_TARGET):.4f}")
使用提示:SVD 元音为 50 kHz 高采样率,直接在原始采样率上算自相关开销大;先降采样到 16 kHz 再估计 F0 精度即可满足 60-600 Hz 范围。病理组的 jitter/shimmer 通常显著高于健康组,但注意坑点 4——F0 本身受性别与音高条件支配,特征分析必须在"同性别×同音高"切片内比较。
§6.4 PyTorch DataLoader 完整代码
# ============================================================
# 依赖:pip install torch torchaudio pandas scikit-learn
# 约定:已用 §6.2 工具把所需 .nsp 批量转为 .wav,
# 并生成 manifest.csv(列:nsp_path, egg_path, label,
# speaker_id, gender, utterance)
# 标签:healthy=0,pathological=1(二分类示例)
# 划分:按 speaker_id 分组(防泄漏,见 §5.3)
# ============================================================
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import GroupShuffleSplit
class SVDDataset(Dataset):
"""SVD 二分类数据集:单文件 wav -> 定长 log-mel 片段"""
def __init__(self, manifest, sr=16000, n_mels=64,
crop_seconds=1.0, train=True):
self.df = manifest.reset_index(drop=True)
self.sr, self.n_mels = sr, n_mels
self.crop = int(crop_seconds * sr)
self.train = train
def __len__(self):
return len(self.df)
def __getitem__(self, idx):
row = self.df.iloc[idx]
wav, sr = torchaudio.load(row["nsp_path"])
wav = wav.mean(dim=0) # 单声道
if sr != self.sr:
wav = torchaudio.functional.resample(wav, sr, self.sr)
# 定长裁剪/补零:元音 1-2 s,取 1 s 窗口
if wav.numel() >= self.crop:
start = torch.randint(0, wav.numel() - self.crop, (1,)) \
if self.train else torch.tensor(0)
wav = wav[start:start + self.crop]
else:
wav = torch.nn.functional.pad(
wav, (0, self.crop - wav.numel()))
mel = torchaudio.transforms.MelSpectrogram(
sample_rate=self.sr, n_mels=self.n_mels)(wav)
logmel = torch.log(mel + 1e-6)
return logmel, torch.tensor(row["label"], dtype=torch.long)
def make_loaders(csv_path, batch_size=32):
df = pd.read_csv(csv_path)
gss = GroupShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
tr_idx, te_idx = next(gss.split(
df, groups=df["speaker_id"])) # 组=说话人
tr, te = df.iloc[tr_idx], df.iloc[te_idx]
return (DataLoader(SVDDataset(tr, train=True), batch_size,
shuffle=True, num_workers=4),
DataLoader(SVDDataset(te, train=False), batch_size),
tr, te)
train_loader, test_loader, tr_df, te_df = make_loaders("manifest.csv")
# 极简 CNN 基线
import torch.nn as nn
class MelCNN(nn.Module):
def __init__(self, n_mels=64, n_classes=2):
super().__init__()
self.net = nn.Sequential(
nn.Conv2d(1, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
nn.Conv2d(16, 32, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
nn.AdaptiveAvgPool2d(1), nn.Flatten(),
nn.Linear(32, n_classes))
def forward(self, x):
return self.net(x.unsqueeze(1))
model = MelCNN()
opt = torch.optim.Adam(model.parameters(), lr=1e-3)
crit = nn.CrossEntropyLoss()
for epoch in range(5):
model.train()
for x, y in train_loader:
opt.zero_grad()
loss = crit(model(x), y)
loss.backward()
opt.step()
print(f"epoch {epoch} loss {loss.item():.4f}")
§6.5 坑点 8 个(SVD 真实特有失败模式)
⚠️ 坑点 1:原始 .nsp 专有格式无法直接读取(分类:工程陷阱)
问题:SVD 声学信号以 Kay Computerized Speech Lab 的 .nsp 二进制容器分发,主流音频库(soundfile、librosa、torchaudio)均不支持,直接
sf.read会抛出格式错误。
症状:报错fmt not recognised,或把 .nsp 当作原始 PCM 读取后得到白噪声般的乱码波形。
解决:
- 简单方法:使用 Zenodo 归档页官方链接提供的 nsp→wav 转换工具批量转换后再入库。
- 进阶方法:用
sbvoicedb(PyPI)读取,它直接把 .nsp/.egg 解析为 NumPy 数组并顺手修复已知损坏文件。- SOTA 方法:在 DVC/Makefile 管线中固化"下载→转换→MD5 校验→特征缓存"四步,转换产物按 utterance 编码命名以保证幂等。
参考:https://zenodo.org/records/16874898 (官方转换工具);https://pypi.org/project/sbvoicedb/
⚠️ 坑点 2:声学/EGG 通道互换与损坏文件(分类:工程陷阱)
问题:库中存在少量已知问题文件——损坏的 .nsp,以及声学信号与 EGG 信号被对调的成对文件。社区工具 sbvoicedb 的文档明确声明其内置 “Fixes known errors in the dataset (i.e., corrupted files and swapping of acoustic/EGG data)”。
症状:EGG 通道上出现宽带噪声状波形而声学通道呈现规则的周期性阻抗曲线;或某文件解码后时长/幅度远超同类。多模态模型的 EGG 分支性能莫名劣于随机基线。
解决:
- 简单方法:对所有文件做通道形态学自检——计算信号的高频能量占比与周期性自相关峰值,互换样本自动剔除。
- 进阶方法:直接采用 sbvoicedb 的修复清单,加载时跳过其标记的问题文件并记录剔除日志。
- SOTA 方法:建立数据版本卡(DVC),把"问题文件清单"作为数据集版本的一部分随模型发布,保证论文结果可复现。
参考:https://pypi.org/project/sbvoicedb/
⚠️ 坑点 3:同一说话人多录音跨划分泄漏(分类:数据泄漏)
问题:每名说话人贡献最多 10+ 条录音(3 元音 × 3 音高 + 变调 + 句子,各配声学与 EGG),按录音随机划分会让同一人的录音同时进入训练与测试集。
症状:二分类准确率轻松超过 95%,但换一个数据集立刻塌方;按说话人分组重划后分数大幅下跌。
解决:
- 简单方法:以 speaker_id 为组做 GroupShuffleSplit,训练/测试集说话人零交集。
- 进阶方法:GroupKFold(K=5)+ 按"诊断大类×性别"分层,保证每折类别覆盖。
- SOTA 方法:采用"说话人留出 + 外部数据集验证"双闸门,并公开划分脚本与说话人清单。
参考:§5.3;ACOTB 因子组合基准(periodicos.univali.br/index.php/acotb/article/view/22207)
⚠️ 坑点 4:性别×音高混杂让模型走 F0 捷径(分类:偏倚陷阱)
问题:女声高音 /a_h/ 的基频与男声正常音高度重叠,混合性别训练时模型可能把"F0 区间"当作病理线索的代理变量,学到性别而非疾病。
症状:消融实验中移除病理相关特征后性能几乎不降;性别子集评估出现显著不对称(男声 AUC 远高于女声)。ACOTB 基准显示性别专用模型一致优于混合性别模型。
解决:
- 简单方法:男、女分别训练与评估,报告分性别指标。
- 进阶方法:训练时做 F0 归一化(如按说话人内音高条件 z-score),或在特征集中显式加入 F0 并做对抗性解耦。
- SOTA 方法:按"性别×音高条件"构建因子化基准(如 ACOTB 的 120 任务矩阵),逐格报告 AUC,暴露条件级偏倚。
参考:https://periodicos.univali.br/index.php/acotb/article/view/22207
⚠️ 坑点 5:71 类诊断长尾分布(分类:偏倚陷阱)
问题:诊断类别从体量最大的 Rekurrensparese(分包 1.9 GB)到 Morbus Parkinson(5.5 MB)相差约 300 倍,多数类别只有极少数说话人。
症状:多分类训练中宏平均 F1 远低于微平均;小类准确率接近 0;过采样后小类在验证集上抖动剧烈。
解决:
- 简单方法:主报告二分类 + “机制大类"三分类(器质性/功能性/神经源性),小类并入"其他”。
- 进阶方法:层次分类——先分机制大类再细分(IEEE OJSP 2023 的做法),小类只在高层粒度上参与训练。
- SOTA 方法:类平衡损失(focal loss + logit adjustment)+ 每类最低说话人数门槛(如 <10 人不入多分类头),并在论文中公开每类样本数。
参考:https://zenodo.org/records/16874898 ;Tirronen et al., IEEE OJSP 2023, DOI 10.1109/ojsp.2023.3242862
⚠️ 坑点 6:伞形类别与具体诊断并存的标签层级混乱(分类:标签理解)
问题:“Dysphonie”(分包 861.9 MB)既是独立分包又与其他具体诊断(如 Funktionelle Dysphonie 938.9 MB、Hypofunktionelle Dysphonie)语义重叠,形成"父类当子类用"的标签树。
症状:把所有 zip 解压后按目录名打标签,出现样本同时可归入两个类别的冲突;混淆矩阵中 Dysphonie 行大量误分。
解决:
- 简单方法:以官网检索器返回的每说话人唯一标签为准,zip 目录名仅作文件索引,不作标签源。
- 进阶方法:构建"伞形类→具体诊断"映射表,把 Dysphonie 显式映射为父节点,训练时只用叶子标签。
- SOTA 方法:用 ICD-11 映射(见 §2.1)把德语自由文本标签规范化为国际编码,再按编码树做层次分类。
参考:§2.1;https://stimmdb.coli.uni-saarland.de/
⚠️ 坑点 7:术后状态录音混入"病理"标签(分类:标签理解)
问题:Chordektomie(声带切除术后,486.8 MB)、Frontolaterale Teilresektion(334.5 MB)等"术后状态"目录在形式上属于病理嗓音,但反映的是解剖结构改变后的代偿性发声,而非活动性疾病。
症状:二分类模型把"术后嗓音"与"病变嗓音"混为一类后,特征重要性被手术效应主导;跨库迁移时(目标库无术后类)分布不匹配。
解决:
- 简单方法:把术后类从病理二分类中整体剔除,或单独作为第三类。
- 进阶方法:在标签体系里加"状态轴"(健康/活动性病变/术后代偿),与"疾病轴"正交编码。
- SOTA 方法:报告剔除与保留术后类两套结果,检验模型对标签语义选择的敏感性。
参考:https://zenodo.org/records/16874898
⚠️ 坑点 8:官方目录拼写与文件命名陷阱(分类:工程陷阱)
问题:句子任务目录的官方拼写是
sentnces(少一个 e),utterance 编码为a_n/a_h/a_l等缩写;升降调变体编码与普通音高编码易混淆,粗暴的 glob 规则会漏文件或错配。
症状:按sentences搜目录返回空集;把升降调录音当作 normal 音高统计,音高条件实验的元数据错位。
解决:
- 简单方法:文件枚举一律用
rglob("*.nsp")后按正则^(\d+)-(a|i|u)_(n|h|l)$解析,不信任目录拼写。- 进阶方法:用 sbvoicedb 的 ORM(pathologies / speakers / recording_sessions / recordings 四表)代替文件系统遍历,utterance 过滤直接用
Recording.utterance.in_(("a_n","i_n"))。- SOTA 方法:入库时把原始文件名解析结果物化为 manifest.csv,并做与官网检索器的交叉校验(说话人数 2,225、会话数 2,043 对齐)。
参考:https://pypi.org/project/sbvoicedb/
§6.6 数据增强
| 策略 | 安全性 | 说明 |
|---|---|---|
| SpecAugment(时频遮蔽) | ✅ 安全 | 不改变标签语义,提升鲁棒性 |
| 音量/增益扰动 | ✅ 安全 | 模拟录音通道差异;注意保持 EGG/声学同步增益一致 |
| 背景噪声叠加(低 SNR 起步) | ✅ 安全 | 模拟临床环境;噪声类型应来自真实医院底噪 |
| 时间拉伸(time-stretch) | ⚠️ 慎用 | 轻度(±5%)尚可,会扰动 jitter 类微时序特征 |
| 变调(pitch-shift) | ❌ 危险 | 音高本身就是条件变量(坑点 4),变调直接破坏音高标签 |
| 随机重采样伪造音高 | ❌ 危险 | 同上,且让性别×音高混杂更严重 |
| Mixup 跨类别 | ⚠️ 慎用 | 跨病理类的语音混合缺乏临床语义,仅建议健康↔病理同性别内使用 |
§6.7 模型推荐
| 任务 | 推荐模型 | 理由 |
|---|---|---|
| 二分类(快速基线) | MFCC + SVM / XGBoost | 文献主基线;ACOTB 显示 XGBoost/SVM 中位 AUC≈0.80 |
| 二分类(高精度) | 自监督 SSL 特征 + 前馈分类头 | Ribas 2023 在全病理集 phrases 达 93.36% |
| 多分类(71 类) | 层次分类(大类→亚类) | 匹配标签树,缓解长尾(IEEE OJSP 2023) |
| 多模态 | 声学 + EGG 特征早融合 + RF/SVM | J Voice 2026:RF 89%(喉炎/白斑/痉挛性发声障碍) |
| 预训练 | 病理嗓音 SSL(wav2vec/HuBERT 微调族) | 域内预训练对低资源病理检测增益显著 |
§6.8 硬件需求
| 场景 | 配置 | 说明 |
|---|---|---|
| 特征工程 + 经典模型 | 8 GB 内存 CPU 即可 | 50 kHz→16 kHz 重采样与 MFCC 提取毫秒级 |
| CNN/SSL 微调 | 单张 12 GB 显存 GPU(如 RTX 4070 级) | 1 s log-mel 输入,batch 32 |
| 全库 SSL 预训练 | 单张 24 GB+ 显存 GPU 或多卡 | 数千小时级音频,建议分元音条件分桶 |
| 存储 | 200 GB SSD | 38.1 GB 归档 + 解压 + WAV 转换产物 + 特征缓存 |
§6.9 评估指标代码
from sklearn.metrics import (roc_auc_score, f1_score,
balanced_accuracy_score)
import numpy as np
def evaluate(y_true, y_score):
"""y_score: 正类概率。SVD 长尾下必须看 AUC 与宏平均。"""
y_pred = (np.asarray(y_score) >= 0.5).astype(int)
return {
"AUC": roc_auc_score(y_true, y_score),
"F1_macro": f1_score(y_true, y_pred, average="macro"),
"F1_micro": f1_score(y_true, y_pred, average="micro"),
"BalancedAcc": balanced_accuracy_score(y_true, y_pred),
}
§6.10 MLOps 笔记
- 数据版本化:把 Zenodo v2 的 MD5 清单 + 修复剔除清单(坑点 2)纳入 DVC,任何模型发布都附带数据指纹。
- 划分即资产:speaker 级划分清单随代码入库(JSON),杜绝"重跑划分"导致的结果漂移。
- 条件维度登记:实验记录必须登记元音、音高、性别三条件,任何指标缺条件标注即不可比。
- 监控漂移:上线后的嗓音筛查工具应监控输入 F0 分布与信噪比分布,SVD 单一设备链的训练数据对真实施诊麦克风最敏感。
§7 质量评估与局限性
§7.1 已知偏倚与问题
| 类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 规模口径漂移 | 不同文献对说话人/录音数的统计存在 2,041-2,255 的出入(官网 2,225、sbvoicedb 会话 2,043、J Voice 2026 样本 2,041、2025 年综述 2,255) | 中 | 论文中固定单一口径(建议官网 2,225)并注明来源与检索日期 |
| 类别长尾 | 71 类诊断体量相差约 300 倍,多数类别说话人极少 | 高 | 二分类/大类三分类为主任务;层次分类;类平衡损失 |
| 性别×音高混杂 | 女声高音 F0 与男声正常音重叠,混合建模学入性别捷径 | 高 | 性别分模型或因子化基准逐格报告 |
| 地域单一 | 全部说话人为德国萨尔州德语母语者 | 中 | 外部数据集(COPAS、NeuroVoz 等)验证 |
| 设备链单一 | 单一录音室、单一麦克风/EGG/CSL 型号,跨度约一代设备 | 中 | 上线前用多通道真实设备数据做域自适应 |
| 数据质量问题 | 少量损坏文件与声学/EGG 通道互换 | 低-中 | 使用 sbvoicedb 修复清单或自行形态学自检 |
| 年代偏移 | 录音采集于 20 世纪 90 年代至 2008 年前,人群与临床实践已变化 | 中 | 视为"历史基准",前瞻结论需当代数据复检 |
§7.2 标注质量
标注链路为喉科临床诊断 + 语音学专家复核,属于高资质单源标注;未公开标注者间一致性,未附逐样本的感知觉评分(GRBAS 等)。两个直接后果:其一,标签噪声水平无法从库内量化,只能在下游任务中以"标签噪声鲁棒训练"兜底;其二,一切以 SVD 标签为"真值"的实验,其上限是临床诊断的准确度——频闪喉镜与临床随访之外的误诊会原样进入标签。
§7.3 泛化性
| 部署场景 | 失效风险 | 证据 |
|---|---|---|
| 跨语言(非德语人群) | 高 | 元音条件虽语言中立,但共振峰与发声习惯存在语言差异;库内无跨语言证据 |
| 跨麦克风/信道 | 高 | 训练数据全部来自同一录音室设备链;真实诊所/手机麦克风域差未在库内覆盖 |
| 跨年龄(儿童、老年) | 高 | 主分析样本 18-65 岁(2008 论文口径),儿童录音稀少 |
| 跨病理谱系(库外疾病) | 中 | 71 类之外的疾病(如喉外肿瘤)无样本 |
| 纵向随访 | 高 | 每人单会话为主,无重复测量结构 |
§7.4 伦理与合规
SVD 是患者录音以开放许可公开发布的少数案例,伦理维度需要专门对待:
- 知情同意的时代局限:录音采集于 20 世纪 90 年代至 2008 年前后,当时的知情同意实践与今日 GDPR 标准存在代差;发布方(前萨尔大学语音学研究所、现托管方埃森大学医院)以 CC BY 4.0 公开发布,视为机构层面的合规决定,但下游使用者应知悉这一历史背景。
- 嗓音是生物识别特征:人声可被用于说话人识别,病理嗓音更携带高敏感健康信息。虽然分发的元数据不含姓名、住址等直接标识符,但理论上仍存在声纹再识别风险。CC BY 4.0 并不免除使用者的伦理责任:禁止任何说话人重识别、禁止司法/监控用途应作为使用伦理底线。
- 下游许可链:CC BY 4.0 允许商用与再分发,唯一硬性义务是完整署名(见 §9 引用指南);衍生数据集(如含 SVD 音频的再发布)须同样以 CC BY 4.0 并附带原出处声明。
- AI 训练的合规建议:训练成果发布时应声明数据来源与许可;产品化(如嗓音筛查 App)时须按医疗器械软件(SaMD)法规另行评估,SVD 的开放不等于临床可用性背书。
§7.5 公平性
性别维度上,健康对照(433 男/436 女)基本均衡,但具体病理类别内部存在性别倾斜(如某些类别男声居多);年龄维度集中于中青年成人;地域维度单一。使用公平性仪表盘(分性别/年龄/类别三切片指标)是最低要求;对医疗部署而言,还应评估跨社会经济与跨语言群体的表现差距——SVD 自身无法回答,只能靠外部验证补足。
§7.6 数据漂移
SVD 作为静态封闭基准无内部漂移问题;漂移发生在"部署侧":真实施诊环境的麦克风、房间混响、说话人姿势与库内隔音室条件差异显著。建议在生产管线中持续监控输入分布(F0、信噪比、时长),并准备域自适应(微调、特征白化)预案。
§7.7 DAIMS 数据就绪度 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式可用性 | ⚠️ | 元数据可整理为宽表,但需自行从官网检索器/数据库导出 |
| 2 | 唯一标识 | ✅ | speaker_id 目录级唯一,录音文件名含说话人编号 |
| 3 | 特殊字符处理 | ⚠️ | 德语诊断标签含变音符(Ö/ü),跨系统处理需 UTF-8 规范 |
| 4 | 重复行 | ✅ | 说话人级目录结构天然去重 |
| 5 | 缺失编码 | ⚠️ | 无显式缺失编码,年龄等字段缺失以"无值"呈现 |
| 6 | 标签标识 | ✅ | 一级 normal/pathological + 二级诊断,两级清晰 |
| 7 | 罕见类分组 | ❌ | 官方未提供罕见类合并建议,71 类长尾需自行处理 |
| 8 | 偏倚评估 | ⚠️ | 偏倚(性别/地域/年代)可从元数据推断,官方未附评估报告 |
| 9 | 数据字典 | ⚠️ | 文件命名规则有文档,但无正式机器可读数据字典 |
| 10 | 信息性缺失解释 | ❌ | 缺失模式(约 180 名说话人无完整会话)官方未解释 |
| 11 | 设备记录 | ✅ | 麦克风/EGG/CSL 型号与采样参数在论文中有完整记载 |
| 12 | 共线性 | ⚠️ | 元音×音高×性别条件高度结构化,特征工程需防共线 |
| 13 | 编码映射 | ⚠️ | 德语诊断无内置 ICD/SNOMED 映射,需自行构建(见 §2.1) |
| 14 | 时间戳处理 | ⚠️ | 无逐录音时间戳;采集年代仅锚定于论文与归档年份 |
| 15 | 划分建议 | ❌ | 官方无任何划分,社区口径不一(75/25 随机为主) |
| 16 | 泄漏讨论 | ⚠️ | 文献普遍按录音随机划分存在泄漏隐患,需使用者自查 |
| 17 | 标签分布 | ⚠️ | 一级分布公开(869/1,356),二级每类精确人数未公开 |
| 18 | 测量偏倚 | ✅ | 单设备链 + 固定协议使测量误差同质化、可建模 |
| 19 | 外部验证建议 | ✅ | 双模态与多语言生态提供了清晰的外部验证路径 |
| 20 | 版本记录 | ✅ | Zenodo v2 + 概念 DOI,版本可追溯 |
| 21 | 预处理脚本 | ❌ | 官方仅提供 nsp→wav 转换工具,无全流程脚本 |
| 22 | 合规要求 | ✅ | CC BY 4.0 单一许可,义务清晰(署名) |
| 23 | 多模态对齐 | ⚠️ | 声学与 EGG 同步采样,但配对文件存在少量互换问题(坑点 2) |
| 24 | 去标识化 | ⚠️ | 元数据无直接标识符,但嗓音本身具有可识别性,未附正式去标识化声明 |
DAIMS 评分:12.5 / 24
评分解读:SVD 在"标识唯一性、设备与版本记录、许可清晰度"三项上表现优秀,体现了 1990 年代实验室语料库的工程严谨;失分集中在"机器学习基础设施"——无官方划分、无预处理脚本、无机器可读数据字典、罕见类与缺失模式无官方指引。这符合其"科研语料库而非 ML 基准"的历史定位。
对你意味着什么:第一,把它当作"高质量原始信号 + 清晰标签"的素材库,而不是开箱即用的 ML 数据集——预留 1-2 周工程时间完成 nsp 转换、清单构建与划分设计。第二,所有指标必须绑定"说话人分组 + 元音/音高/性别条件"再报告,否则与任何文献都不可比。第三,多分类目标请降维到机制大类或采用层次分类,71 类全展开在当前样本量下不现实。第四,任何临床叙事(筛查、辅助诊断)都需要外部验证与前瞻设计,SVD 的角色是方法学训练场。
§7.8 外部验证现状
截至 2026-09 检索,公开文献中尚未见"SVD 训练 → 外部库测试"的完整跨库外部验证报告;§8.1 所列高分结果(含 93.36%)均为 SVD 库内评估。这一空白本身是重要的使用信息:SVD 的外部效度是未被文献解决的问题,引用库内成绩时不得表述为临床性能。
可行的外部验证路径有三条:其一,语言迁移——在 COPAS(荷兰语,含自发语音)或 NeuroVoz(西班牙语 PD 语音)上评估持续元音训练的筛查器,检验"元音条件语言中立"假设;其二,疾病谱迁移——将神经源性亚组(Parkinson、ALS、痉挛性发声障碍)的模型迁移到神经退行性语音库(EasyCall、EWA-DB),检验机制大类而非具体诊断的可迁移性;其三,信道迁移——用真实诊所或移动设备录音做前瞻性小规模验证,检验单一录音室设备链(坑点 1 背景下最关键的落地风险)。三条路径的共同前提是按 §5.3 的说话人分组协议执行。
§8 基准性能与生态
§8.1 代表性结果排行
以下结果取自公开同行评审文献。注意:各工作的子集口径(元音条件、性别、病理范围)、划分方式与指标定义不同,数值不可直接横向比较,仅呈现量级与趋势。
| 排名 | 模型/方法 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | SSL 表示 + DNN 分类头 | 93.36%(phrases,全病理集) | 2023 | 自监督时序表征 + Class-Token Transformer | Ribas, S. et al., 2023, IEEE Access. IEEE | 未公开 |
| 2 | 声学+EGG 多模态 RF | 89%(喉炎/白斑/痉挛性发声障碍四分类) | 2026 | 模糊熵特征选择 + 时/频/倒谱特征融合 | Shanmugasundaram, G. & Ebenezer, P., 2026, Journal of Voice. DOI 10.1016/j.jvoice.2026.02.015 | 未公开 |
| 3 | VGGish-SVM 混合 | 82.45%(男声二分类) | — | 预训练谱图嵌入 + 经典分类器集成 | Hybrid approach for binary and multi-class classification of voice disorders(发表年以原文为准), Dysphonia (Springer Medicine) | 未公开 |
| 4 | XGBoost/SVM 因子化基准 | AUC 0.866(最佳单格;约 120 任务中位 AUC≈0.80) | — | 120 个 vowel×pitch×sex 任务矩阵 + 特征重要性 | Vocal Pathology Recognition Using Acoustic Features(发表年以原文为准), ACOTB (UNIVALI) | 未公开 |
| 5 | 层次多分类 | 多类(自监督 + 声门特征) | 2023 | 层次分类树 + 自监督表示 | Tirronen, S., Kadiri, S. R. & Alku, P., 2023, IEEE Open Journal of Signal Processing. DOI 10.1109/ojsp.2023.3242862 | 未公开 |
历史基线参照:在包含全部病理类别的严格口径下,2023 年之前的最高公开成绩为 80.71%(phrases)与 82.8%(元音 /aiu/),此后 SSL 方法将其推进约 10 个百分点以上。
§8.2 SOTA 总结与选型建议
嗓音病理检测在 SVD 上的技术演进路径清晰:手工声学特征(jitter/shimmer/倒谱)+ 经典分类器(1990s-2010s)→ 谱图 + 预训练嵌入(VGGish/wav2vec 时代)→ 自监督端到端(2023+)。选型建议:以"特征 + SVM/XGBoost"为可解释基线,以"SSL 表示 + 轻量分类头"为性能目标,多模态(+EGG)作为增益项而非默认项——EGG 分支的收益集中在接触性病变亚组。
§8.3 评测协议建议
统一协议应包含以下要素,缺任何一项都会让结果失去可比性:
- 划分:说话人分组(GroupShuffleSplit 或 GroupKFold,K=5),训练/验证/测试零说话人交集,并公开划分清单。
- 条件清单:登记所用的元音(a/i/u/全部)、音高(n/h/l/升降/全部)与性别(男/女/混合)三条件,与历史文献口径对齐。
- 指标:AUC 与宏平均 F1 为主指标;二分类附敏感度/特异度;多分类附每类支持数。
- 粒度:二分类与机制大类三分类双粒度报告;71 类全展开结果放附录。
- 基线:至少与"MFCC+SVM"和"SSL 表示 + 线性分类头"两条公开基线比较。
- 外部验证声明:明确说明评估是否为库内评估(见 §7.8),禁止把库内成绩表述为临床性能。
§8.4 相关数据集
| 数据集 | 语言 | 规模 | 与 SVD 的关系 |
|---|---|---|---|
| COPAS | 荷兰语 | 197 病理 + 122 对照 | 自发语音补充,跨库外部验证首选之一 |
| EasyCall | 意大利语 | 5,555 人 | 神经退行性疾病谱系的电话信道对照 |
| NeuroVoz | 西班牙语 | 112 人 | PD 语音跨语言验证 |
| EWA-DB | 斯洛伐克语 | 1,122 人 | 认知-言语共病谱系扩展 |
| Kay Elemetrics 声学嗓音库 | 英语 | 商用授权 | 同类持续元音病理库,常与 SVD 并列引用 |
§8.5 关键论文 Top 5
- Pützer, M. & Koreman, J. (1997). A German Database of Patterns of Pathological Vocal Fold Vibration. Phonus 3, 143-153. — 数据库的奠基性描述,采集协议与设计目标的第一手来源。
- Pützer, M. & Barry, W. J. (2008). Instrumental dimensioning of normal and pathological phonation using acoustic measurements. Clinical Linguistics & Phonetics 22(6), 407-420. DOI 10.1080/02699200701830869. — 用库内 1,068 名说话人论证声学维度化对正常/病理分类的效力与边界。
- Ribas, S. et al. (2023). Automatic Voice Disorder Detection Using Self-Supervised Representations. IEEE Access. — 在全病理集口径上把 SVD 成绩推至 93.36%,确立 SSL 路线。
- Tirronen, S., Kadiri, S. R. & Alku, P. (2023). Hierarchical multi-class classification of voice disorders using self-supervised models and glottal features. IEEE Open Journal of Signal Processing 4, 80-88. DOI 10.1109/ojsp.2023.3242862. — 层次分类 + 声门特征应对 71 类长尾的代表性方案。
- Shanmugasundaram, G. & Ebenezer, P. (2026). Multimodal Voice Pathology Detection With Voice Signal and Integrated Electroglottographic (EGG) Signal From the Saarbrücken Voice Database. Journal of Voice. DOI 10.1016/j.jvoice.2026.02.015. — 兑现 EGG 双模态价值的最新证据(RF 89%)。
§8.6 社区活跃度
SVD 的社区形态偏"学术引用型"而非"代码迭代型":官网检索器持续可访问,Zenodo 归档稳定;社区工具以 sbvoicedb(PyPI,含下载/修复/ORM)为代表,多个语音信号处理库(如 loqa-voice-dsp)把 SVD 列为内置测试数据来源。没有官方排行榜或竞赛轨道,复现依赖论文附录与个人仓库。
活跃度的三个信号值得注意:其一,2023-2026 年仍有新作把 SVD 作为主基准(IEEE Access 2023、IEEE OJSP 2023、Journal of Voice 2026),说明库的学术生命周期远超一般语料;其二,下游衍生数据集(如含 GRBAS 标签的再标注集)开始出现,说明标签层有再利用价值;其三,社区工具主动承担了错误修复(损坏文件、通道互换),官方与社区形成了事实上的分工——使用者应默认采用社区修复清单而非原始解压结果。
§8.7 生态快照
| 资源 | 类型 | 链接 | 状态(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| 官方数据库站点 | 官网检索器 | https://stimmdb.coli.uni-saarland.de/ | 在线 | 按性别/诊断筛选说话人、核对标签 |
| Zenodo v2 归档 | 数据托管 | https://zenodo.org/records/16874898 | 在线 | 38.1 GB 全量下载 + 官方 nsp→wav 工具 |
| sbvoicedb | Python 工具 | https://pypi.org/project/sbvoicedb/ | 可安装 | 元数据索引、按需增量下载、已知错误修复 |
| Phonus 3 论文 | 原始文献 | https://doi.org/10.5281/zenodo.16258835 | 开放 | 采集协议与设计的第一手描述 |
| arXiv 2501.03536 | 综述 | https://arxiv.org/html/2501.03536v2 | 开放 | SVD 在神经退行性语音数据集版图中的定位与精确人口学数字 |
§5.7 元数据获取与宽表构建
官网检索器与 Zenodo 分包提供标签,但机器可读的完整元数据表需自行构建。推荐用 sbvoicedb 把 SQLite 四表(pathologies / speakers / recording_sessions / recordings)导出为扁平宽表:
# 依赖:pip install sbvoicedb pandas
# 产出:manifest.csv —— 划分、建模、公平性切片的统一底表
import pandas as pd
from sbvoicedb import SbVoiceDb
db = SbVoiceDb("/data/svd_sqlite") # 元数据自动下载建库
rows = []
for spk in db.iter_speakers():
rows.append({
"speaker_id": spk.id,
"gender": spk.gender, # w / m
"age": getattr(spk, "age", None), # 部分缺失
"pathology": getattr(spk, "pathology_name", "healthy"),
})
speakers = pd.DataFrame(rows)
# 二分类标签:正常嗓音 vs 病理嗓音
speakers["label"] = (speakers["pathology"] != "healthy").astype(int)
# 机制大类(举例):可按 §2.1 的 ICD-11 映射扩展
FUNC = {"Funktionelle Dysphonie", "Hyperfunktionelle Dysphonie",
"Hypofunktionelle Dysphonie", "Psychogene Dysphonie"}
def mech(row):
if row["pathology"] == "healthy":
return "healthy"
return "functional" if row["pathology"] in FUNC else "organic_neuro"
speakers["mechanism"] = speakers.apply(mech, axis=1)
print(speakers["label"].value_counts())
print(speakers["gender"].value_counts())
speakers.to_csv("manifest.csv", index=False)
宽表建成后,§6.4 的 DataLoader、§5.4 的分层划分与 §7.5 的公平性切片都复用同一份 manifest.csv,避免多处口径漂移。
§9 相关资源与引用
§9.1 官方资源
| 资源 | 说明 |
|---|---|
| 官方数据库站点 | 数据库主页,含说话人检索器与协议说明 |
| Zenodo v2 归档 | 全量 38.1 GB 下载,含约 70 个诊断分包与官方 nsp→wav 转换工具 |
| 数据集概念 DOI | 引用数据集时使用的概念 DOI(自动指向最新版本) |
| 原始论文归档 | Pützer & Koreman 1997(Phonus 3)的 Zenodo 存档,含 17.9 GB data.zip |
| sbvoicedb 工具 | 社区维护的下载/索引/修复工具(PyPI) |
| arXiv 2501.03536 综述 | 神经退行性语音数据集综述,含 SVD 精确人口学数字与同类库对比 |
| ACOTB 因子化基准 | 120 个 vowel×pitch×sex 二分类任务的因子化基准 |
| 旧版帮助页 | stimmdatenbank.coli.uni-saarland.de 域名下的 help_en.php4(文献中仍被引用,访问以官网为准) |
§9.2 BibTeX 完整引用
@article{puetzer1997german,
author = {P{\"u}tzer, Manfred and Koreman, Jacques},
title = {A {G}erman Database of Patterns of Pathological Vocal Fold Vibration},
journal = {Phonus: Research Report of the Institute of Phonetics,
Saarland University},
volume = {3},
pages = {143--153},
year = {1997},
note = {Saarbr{\"u}cken Voice Database; data archived on Zenodo,
DOI 10.5281/zenodo.16258835}
}
@article{puetzer2008instrumental,
author = {P{\"u}tzer, Manfred and Barry, William J.},
title = {Instrumental dimensioning of normal and pathological
phonation using acoustic measurements},
journal = {Clinical Linguistics \& Phonetics},
volume = {22},
number = {6},
pages = {407--420},
year = {2008},
doi = {10.1080/02699200701830869}
}
@dataset{svd2008zenodo,
author = {P{\"u}tzer, Manfred and Barry, William J.},
title = {Saarbruecken Voice Database},
year = {2008},
publisher = {Zenodo},
version = {v2},
doi = {10.5281/zenodo.16874898},
url = {https://zenodo.org/records/16874898},
note = {Hosted by Essen University Hospital; licensed CC BY 4.0}
}
§9.3 引用指南
- 用数据做实验:至少引用
puetzer1997german(设计)与svd2008zenodo(具体版本),二者缺一不可——前者回答"这是什么",后者回答"你用的是哪一版"。 - 用声学方法学:涉及持续元音分析与正常/病理维度化的论证,请一并引用
puetzer2008instrumental。 - 引用二级分析:本文档中的规模数字(2,225 名说话人等)与协议描述以官网与上述论文为准;Zenodo 分包体积等仓库状态信息随时间变化,引用时注明检索日期(本页截至 2026-09)。
- 再分发义务:CC BY 4.0 要求完整署名原作者(Pützer、Barry、Koreman)与许可链接;对 SVD 音频的任何再发布需保留同一许可。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 项目 | 说明 |
|---|---|
| 生产模型 | 千方病案医数集生产管线所配大语言模型(多模态文本模型) |
| 用途 | 档案页正文撰写、结构化数据(frontmatter/JSON-LD)生成、表格归纳 |
| 检索增强 | 事实性内容基于 2026-09 的 6 次 WebSearch 检索与 1 次官网 WebFetch 结果 |
§10.2 AI 参与范围
AI 参与了本页全部章节的初稿撰写与格式规范化;事实数字逐条对照检索来源(FACTS 清单)核录;ICD-11 编码核对以 ICD-11 MMS 官方区块检索结果为准。正文中的代码示例由 AI 生成,未经在本机数据上的端到端运行验证,使用者应按 §0 技术免责声明自行验证。
§10.3 输入来源列表
- Saarbrücken Voice Database 官方站点(stimmdb.coli.uni-saarland.de),检索于 2026-09。
- Saarbruecken Voice Database, Zenodo record 16874898, v2(2008)。
- Saarbruecken Voice Database, DOI 10.5281/zenodo.16258834(概念 DOI 页)。
- Pützer, M. & Koreman, J. (1997). A German Database of Patterns of Pathological Vocal Fold Vibration. Phonus 3, 143-153. DOI 10.5281/zenodo.16258835。
- Pützer, M. & Barry, W. J. (2008). Instrumental dimensioning of normal and pathological phonation using acoustic measurements. Clinical Linguistics & Phonetics 22(6), 407-420. DOI 10.1080/02699200701830869。
- Ribas, S. et al. (2023). Automatic Voice Disorder Detection Using Self-Supervised Representations. IEEE Access(勒芒大学发布页)。
- Shanmugasundaram, G. & Ebenezer, P. (2026). Multimodal Voice Pathology Detection With Voice Signal and Integrated Electroglottographic (EGG) Signal From the Saarbrücken Voice Database. Journal of Voice. DOI 10.1016/j.jvoice.2026.02.015。
- A hybrid approach for binary and multi-class classification of voice disorders using a pre-trained model and ensemble classifiers. Dysphonia(Springer Medicine 页)。
- Vocal Pathology Recognition Using Acoustic Features. ACOTB(UNIVALI 期刊页)。
- Tirronen, S., Kadiri, S. R. & Alku, P. (2023). Hierarchical multi-class classification of voice disorders using self-supervised models and glottal features. IEEE Open Journal of Signal Processing 4, 80-88. DOI 10.1109/ojsp.2023.3242862。
- Overview of Automatic Speech Analysis and Technologies for Neurodegenerative Disorders. arXiv 2501.03536(SVD 人口学数字与同类数据集对比)。
- sbvoicedb 0.6.0, PyPI(目录结构、会话总数、已知错误修复声明)。
- An Experimental Analysis on Multicepstral Projection Representation Strategies for Dysphonia Detection. MDPI Signals(50 kHz/16-bit 与录音协议细节)。
- ICD-11 MMS(2025-01):Diseases of vocal cords or larynx, not elsewhere classified(CA0H 区块编码)。
- Labeled Voice Audio Dataset, Zenodo record 17080420(SVD 的 CC BY 4.0 许可与引用格式的第三方确认)。
- loqa-voice-dsp crate 文档(lib.rs):SVD 健康对照 851 名/病理 1,002 名口径与 CC BY 4.0 确认。
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11 映射、流行病学) | 千方病案医学编辑部 | 对照 ICD-11 MMS 区块检索结果与同行评审文献逐条核对 | ✅ 已通过/已验证 |
| §3 数据集规格(规模、设备、格式) | 千方病案医学编辑部 | 对照官网、Zenodo 归档页与 Pützer & Barry 2008 原文核对 | ✅ 已通过/已验证 |
| §4 DAIMS 数据字典与目录树 | 医疗 AI 数据工程师 | 对照 sbvoicedb 文档与 PyPI 示例核对字段与命名规则 | ✅ 已通过/已验证 |
| §5 划分策略与泄漏分析 | 医疗 AI 数据工程师 | 对照社区基准(ACOTB、MDPI)划分惯例复核 | ✅ 已通过/已验证 |
| §6 预处理 Pipeline 与 8 个坑点 | 医疗 AI 数据工程师 | 坑点逐条溯源至官方工具文档/论文 limitations | ✅ 已通过/已验证 |
| §7 DAIMS 24 项与偏倚分析 | 千方病案医学编辑部 | 与 §7.1 偏倚表、§5、§6 交叉一致性复核 | ✅ 已通过/已验证 |
| §8 基准数字与完整引用 | 千方病案医学编辑部 | 对照各论文原始发布页核对数字与 DOI | ✅ 已通过/已验证 |
| §9 BibTeX 与引用指南 | 千方病案医学编辑部 | 与 Zenodo/DOI 元数据逐字段核对 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
本页正文各章节初稿均由 AI 生成,经上表所列人工审核链路逐模块核对后发布;代码示例为 AI 生成内容(见 §10.2),适用技术免责声明。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
§C 结构化数据(JSON-LD)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- icbhi-2017 — 共享标签:生理信号 / 医学影像 / 语音信号
- covid-19-sounds — 共享标签:生理信号 / 医学影像 / 语音信号
- hls-cmds — 共享标签:生理信号 / 语音信号
- physionet-cinc-2016 — 共享标签:生理信号 / 语音信号
- coughvid — 共享标签:生理信号 / 语音信号
- coswara — 共享标签:生理信号 / 语音信号
- bcnb — 共享标签:医学影像 / 病理图像
- cytoimagenet — 共享标签:医学影像 / 病理图像
- ocelot — 共享标签:医学影像 / 病理图像
- sicapv2 — 共享标签:医学影像 / 病理图像
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
