Hugging Face's logo
加入 Hugging Face 社区

并获得增强版文档体验

开始使用

音频数据集

本指南将向您展示如何使用音频文件配置您的数据集存储库。您可以在此 音频数据集示例集合 中找到相应的存储库示例。

具有支持结构和 文件格式 的数据集在 Hub 上的页面上会自动拥有数据集查看器。


只要您在元数据文件 (metadata.csv/metadata.jsonl) 中包含这些信息,关于您的音频文件的其他信息(如转录)就会自动加载。

或者,音频文件可以是 Parquet 文件或遵循 WebDataset 格式的 TAR 档案。

仅音频文件

如果您的数据集仅包含一个带有音频的列,您可以简单地将音频文件存储在根目录中

my_dataset_repository/
├── 1.wav
├── 2.wav
├── 3.wav
└── 4.wav

或在子目录中

my_dataset_repository/
└── audio
    ├── 1.wav
    ├── 2.wav
    ├── 3.wav
    └── 4.wav

同时支持多种 格式,包括 AIFF、FLAC、MP3、OGG 和 WAV。

my_dataset_repository/
└── audio
    ├── 1.aiff
    ├── 2.ogg
    ├── 3.mp3
    └── 4.flac

如果您有多个拆分,您可以将音频文件放入相应命名的目录中

my_dataset_repository/
├── train
│   ├── 1.wav
│   └── 2.wav
└── test
    ├── 3.wav
    └── 4.wav

有关更多信息和通过拆分组织数据的其他方法,请参阅 文件名和拆分

附加列

如果您想包含关于数据集的其他信息,例如转录,请将其作为存储库中的 metadata.csv 文件添加。这使您可以快速创建用于不同音频任务的数据集,例如 文本转语音自动语音识别

my_dataset_repository/
├── 1.wav
├── 2.wav
├── 3.wav
├── 4.wav
└── metadata.csv

您的 metadata.csv 文件必须包含一个 file_name 列,该列将图像文件与其元数据链接起来

file_name,animal
1.wav,cat
2.wav,cat
3.wav,dog
4.wav,dog

您也可以使用 JSONL 文件 metadata.jsonl

{"file_name": "1.wav","text": "cat"}
{"file_name": "2.wav","text": "cat"}
{"file_name": "3.wav","text": "dog"}
{"file_name": "4.wav","text": "dog"}

相对路径

元数据文件必须位于与它链接的音频文件相同的目录中,或者位于任何父目录中,例如在这个例子中

my_dataset_repository/
└── test
    ├── audio
    │   ├── 1.wav
    │   ├── 2.wav
    │   ├── 3.wav
    │   └── 4.wav
    └── metadata.csv

在这种情况下,file_name 列必须是音频文件的完整相对路径,而不仅仅是文件名

file_name,animal
audio/1.wav,cat
audio/2.wav,cat
audio/3.wav,dog
audio/4.wav,dog

元数据文件不能放在带有音频文件的目录的子目录中。

在本例中,test 目录用于设置训练拆分的名称。有关更多信息,请参阅 文件名和拆分

音频分类

对于音频分类数据集,您也可以使用一个简单的设置:使用目录来命名音频类别。将您的音频文件存储在类似于以下目录结构中

my_dataset_repository/
├── cat
│   ├── 1.wav
│   └── 2.wav
└── dog
    ├── 3.wav
    └── 4.wav

使用此结构创建的数据集包含两列:audiolabel(值分别为 catdog)。

您也可以提供多个拆分。为此,您的数据集目录应具有以下结构(有关更多信息,请参阅 文件名和拆分

my_dataset_repository/
├── test
│   ├── cat
│   │   └── 2.wav
│   └── dog
│       └── 4.wav
└── train
    ├── cat
    │   └── 1.wav
    └── dog
        └── 3.wav

您可以在 YAML 配置 中禁用自动添加 label 列。如果您的目录名称没有特殊含义,请在 README 标题中设置 drop_labels: true

configs:
  - config_name: default  # Name of the dataset subset, if applicable.
    drop_labels: true

大规模数据集

WebDataset 格式

WebDataset 格式非常适合大型音频数据集(例如,请参阅 AlienKevin/sbs_cantonese)。它由包含音频文件及其元数据的 TAR 档案组成,并针对流式传输进行了优化。如果您有大量的音频文件并希望获得用于大规模训练的流式数据加载器,它将非常有用。

my_dataset_repository/
├── train-0000.tar
├── train-0001.tar
├── ...
└── train-1023.tar

要制作 WebDataset TAR 档案,请创建一个包含要存档的音频文件和元数据文件的目录,并使用例如 tar 命令创建 TAR 档案。每个档案的通常大小通常约为 1GB。确保每个音频文件和元数据对共享相同的文件前缀,例如

train-0000/
├── 000.flac
├── 000.json
├── 001.flac
├── 001.json
├── ...
├── 999.flac
└── 999.json

请注意,为了方便用户并启用 数据集查看器,Hub 中托管的每个数据集都会自动转换为 Parquet 格式,上限为 5GB。有关详细信息,请参阅 Parquet 格式 文档。

Parquet 格式

您可以将所有内容嵌入到 Parquet 文件中,而不是将音频文件和元数据作为单个文件上传。如果您有大量的音频文件,想要嵌入多个音频列,或者想要在同一个文件中存储有关音频的更多信息,这将非常有用。Parquet 还可以用于存储 JSON/CSV 不支持的原始字节等数据。

my_dataset_repository/
└── train.parquet

音频列的类型为 struct,包含一个用于音频数据的二进制字段 "bytes" 和一个用于图像文件名或路径的字符串字段 "path"。您应该在 README 标头中的 YAML 中直接指定列的特征类型,例如

dataset_info:
  features:
  - name: audio
    dtype: audio
  - name: caption
    dtype: string

或者,您可以使用 datasets 库创建包含音频数据的 Parquet 文件,方法是将列类型设置为 Audio() 并使用 .to_parquet(...) 方法或 .push_to_hub(...)。您可以在 datasets 中找到有关加载音频数据集的指南 此处

< > 在 GitHub 上更新