- 数据集
- 语音
【免费下载链接】IndicVoices
IndicVoices是目前覆盖印度 22 种语言、23.7K 小时自然语音的开源多语言语音数据集。对做 ASR(自动语音识别)和数据集构建的新手来说,最常被问到的一个问题是:同一条样本为什么会同时带有verbatim、normalized和unsanitized三类文本字段?它们有什么区别?该选哪个做训练标签?本文带你一次性读懂 IndicVoices 的文本规范化设计。
1 分钟认识 IndicVoices
| 关键指标 | 数据 |
|---|---|
| 覆盖语言 | 22 种印度宪法第八案历语言(Hindi、Tamil、Bengali、Urdu 等) |
| 语音总量 | 23.7K 小时(朗读 8% + 即兴 76% + 对话 15%) |
| 说话人 | 约 51K 人,覆盖 400+ 个印度区 |
| 已转写字数 | 11.2K 小时已完成转录 |
| 许可证 | CC BY 4.0 |
数据集以「语言目录 + Parquet 分片」的形式组织,例如 Hindi 语料存放在 hindi/ 目录下,训练集包含 hindi/train-00000-of-00082.parquet 等 82 个分片。完整字段定义可查阅 README.md 中的dataset_info元数据块,以及自动生成的 dataset_infos.json。
一条样本,四份文本:字段全景图
打开任意语言目录(如 assamese/)中的 Parquet 分片,你会发现同一条音频记录同时携带了 4 个文本类字段:
| 字段名 | 一句话含义 | 处理阶段 |
|---|---|---|
unsanitized_verbatim | 清洗前的逐字转写 | 原始阶段 |
unsanitized_normalized | 清洗前的规范化转写 | 原始阶段 |
verbatim | 清洗后的逐字转写("人说了什么") | 精修阶段 |
normalized | 清洗后的规范化转写("音频听起来像什么") | 训练阶段 |
此外还有text(训练用主文本)、duration、lang、speaker_id、scenario、task_name、gender、age_group以及verification_report(质检报告)等字段,完整字段清单见 dataset_infos.json。
逐字转写(verbatim):忠实还原"人说了什么"
verbatim记录的是一字不差的口语内容:
- 保留说话人的口头禅、重复、自我修正(比如说到一半换了一个词);
- 保留语言混用(code-switching,如印地语句子中夹杂英语词);
- 保留方言表达和口语语法,不做"书面化"改写。
它是研究口语现象、语言多样性分析、构建口语语料库的首选字段,因为任何"美化"都会丢失真实的语言使用信息。
规范化文本(normalized):让标签对齐"耳朵听到的"
normalized字段则做了系统性的书写规范化,核心原则是文本要与音频的发音一一对应,常见做法包括:
- 数字展开:
"3G"→"three G"这类缩写还原,让字符数与读音匹配; - 统一标点与大小写,去掉对发音无贡献的符号;
- 对专有名词、缩写做一致的展开规则。
🎯 训练 ASR 模型时(IndicVoices 官方训练的首个覆盖 22 种语言的 IndicASR 模型即基于此类标签),normalized是更合适的目标文本,因为它消除了"写法多样、读法相同"带来的标注噪声。
unsanitized 双字段:可追溯的"底稿"
前缀unsanitized表示清洗流程介入之前的原始状态:
unsanitized_verbatim:标注员最初提交的逐字转写底稿;unsanitized_normalized:最初提交的规范化底稿。
保留"底稿"的价值在于:
- 质量审计:可与清洗后版本逐条 diff,评估清洗规则改了什么、改得对不对;
- 质检闭环:配合
verification_report字段,能回溯每条样本的审核记录; - 研究价值:清洗规则的副作用(误删、误改)分析必须依赖原始底稿。
这种"原始 + 精修"双轨设计,是高质量开源语音数据集的通行规范。
选型速查表:我该用哪个字段?
| 你的目标 | 推荐字段 |
|---|---|
| 训练 ASR / TTS 等发音相关模型 | normalized(或主字段text) |
| 口语现象、方言、code-switching 研究 | verbatim |
| 数据清洗规则审计与质量回溯 | unsanitized_*+verification_report |
| 发布/引用数据集的示例展示 | verbatim(最贴近真实语料) |
一句话总结:研究语言用 verbatim,训练模型用 normalized,审计质量看 unsanitized。
如何快速查看这些字段
使用 Pythondatasets库即可按语言加载并抽查(以下为官方推荐的加载方式,config替换为目标语言名):
from datasets import load_dataset dataset = load_dataset("ai4bharat/IndicVoices", "hindi", split="valid") print(dataset[0]) # 查看 verbatim / normalized / unsanitized_* 等全部字段也支持streaming=True流式读取,内存开销更小。如果你直接使用本仓库的 Parquet 分片(如 tamil/train-00000-of-00118.parquet),用 pandas 的read_parquet打开后,字段名与上面表格完全一致。
各语言数据规模一览(节选)
| 语言 | 训练集样本数 | 验证集样本数 | 训练分片数 |
|---|---|---|---|
| Hindi | 445,160 | 5,530 | 82 |
| Tamil | 422,963 | 5,276 | 118 |
| Odia | 394,263 | 5,245 | 80 |
| Punjabi | 387,502 | 4,036 | 97 |
| Malayalam | 339,508 | 4,524 | 78 |
| Bengali | 335,367 | 4,009 | 96 |
| Assamese | 469,187 | 5,062 | 112 |
完整 22 种语言的样本数与字节数均可在 README.md 的splits配置中查到;每种语言均提供train与valid两个 split,目录命名遵循train-XXXXX-of-NNNNN.parquet规则。
常见问题 FAQ
Q1:text字段和normalized是什么关系?text是数据集对外暴露的主转写文本,直接用于训练管线;normalized是其规范化过程的显式字段,二者口径一致,便于你单独引用规范版文本。
Q2:为什么样本里同时保留 4 份文本,不嫌浪费吗?文本字段占空间极小(音频才是大头)。冗余换来的是全流程可追溯——这也是 IndicVoices 能被用于训练 IndicASR 这样的旗舰模型的关键质量保障。
Q3:完整录音文件在哪里?数据集分片内为切片后的音频;完整时长录音由官方以v1–v5增量压缩包形式单独提供,获取方式见 README.md 的 "Accessing Full-Length Audio Files" 一节。
结语
IndicVoices 的文本字段设计看似"重复",实则是一条清晰的流水线:unsanitized(原始底稿)→ verbatim(忠实精修)→ normalized(发音对齐)。理解这三层差异,不仅帮你正确选择训练标签,也为自建多语言语音数据集提供了一套可直接复用的规范化范式。
参考资料:README.md、dataset_infos.json、各语言数据目录(hindi/、tamil/、bengali/ 等 22 个)。
- 数据集
- 语音
【免费下载链接】IndicVoices
相关推荐
Kita Html 异步组件深度解析:Suspense 和错误边界实战
Kita Html 异步组件深度解析:Suspense 和错误边界实战 Kita Html 是一个超级快速的 JSX 运行时,用于生成可在任何地方工作的 HTM
urql Graphcache 规范化缓存(Normalized Caching)深入指南
urql Graphcache 规范化缓存(Normalized Caching)深入指南 GraphQL 查询天然以"去规范化"的树形 JSON 返回数据,而
前端终极指南:Notepad--文本对比算法揭秘与高效差异检测实现
终极指南:Notepad 文本对比算法揭秘与高效差异检测实现 在当今软件开发与文本编辑的日常工作中,文件内容对比已成为程序员不可或缺的核心功能。作为一款来自中国
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考