音频数据集
本指南将向您展示如何使用音频文件配置您的数据集存储库。您可以在此 音频数据集示例集合 中找到相应的存储库示例。
具有支持结构和 文件格式 的数据集在 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
使用此结构创建的数据集包含两列:audio
和 label
(值分别为 cat
和 dog
)。
您也可以提供多个拆分。为此,您的数据集目录应具有以下结构(有关更多信息,请参阅 文件名和拆分)
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
中找到有关加载音频数据集的指南 此处。