ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

IndicVoices文本规范化揭秘:verbatim、normalized与unsanitized差异完整指南

IndicVoices文本规范化揭秘:verbatim、normalized与unsanitized差异完整指南
  • 数据集
  • 语音

【免费下载链接】IndicVoices

项目地址:https://ai.gitcode.com/hf_mirrors/ai4bharat/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:最初提交的规范化底稿。

保留"底稿"的价值在于:

  1. 质量审计:可与清洗后版本逐条 diff,评估清洗规则改了什么、改得对不对;
  2. 质检闭环:配合verification_report字段,能回溯每条样本的审核记录;
  3. 研究价值:清洗规则的副作用(误删、误改)分析必须依赖原始底稿。

这种"原始 + 精修"双轨设计,是高质量开源语音数据集的通行规范。

选型速查表:我该用哪个字段?

你的目标推荐字段
训练 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打开后,字段名与上面表格完全一致。

各语言数据规模一览(节选)

语言训练集样本数验证集样本数训练分片数
Hindi445,1605,53082
Tamil422,9635,276118
Odia394,2635,24580
Punjabi387,5024,03697
Malayalam339,5084,52478
Bengali335,3674,00996
Assamese469,1875,062112

完整 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

项目地址:https://ai.gitcode.com/hf_mirrors/ai4bharat/IndicVoices
点击查看免费下载
上一篇:Flexprice 租户自定义货币(Tenant Custom Currency)设计全解:记账本位币与法币投影的分离架构
下一篇:空间数据分析终极指南:R的sp包与Python的scipy-spatial对比详解

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进