Hub 文档
音频数据集
并获得增强的文档体验
开始使用
音频数据集
本指南将向您展示如何使用音频文件配置数据集仓库。您可以在此音频数据集示例集合中找到随附的仓库示例。
具有受支持的结构和文件格式的数据集在其 Hub 页面上自动具有 Dataset Viewer。
只要您将此信息包含在元数据文件 (metadata.csv
/metadata.jsonl
/metadata.parquet
) 中,关于您的音频文件的其他信息(例如转录)就会自动加载。
或者,音频文件可以采用 Parquet 文件或 TAR 归档文件,遵循 WebDataset 格式。
仅音频文件
如果您的数据集仅包含一列音频,您可以简单地将音频文件存储在根目录
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"}
对于更大的数据集,或者如果您对高级数据检索功能感兴趣,则可以使用 Parquet 文件 metadata.parquet
。
相对路径
元数据文件必须位于与其链接的音频文件相同的目录中,或位于任何父目录中,例如在此示例中
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
元数据文件不能放在包含音频文件的目录的子目录中。
更一般而言,任何名为 file_name
或 *_file_name
的列都应包含音频文件的完整相对路径。
在此示例中,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
请注意,为了用户方便并启用Dataset Viewer,托管在 Hub 中的每个数据集都会自动转换为 Parquet 格式,最大 5GB。在Parquet 格式文档中阅读更多相关信息。
Parquet 格式
您可以将所有内容嵌入到 Parquet 文件中,而不是上传音频文件和元数据作为单独的文件。如果您有大量音频文件、想要嵌入多个音频列或想要在同一文件中存储有关音频的其他信息,这将非常有用。Parquet 也适用于存储原始字节等 JSON/CSV 不支持的数据。
my_dataset_repository/ └── train.parquet
可以使用 pandas
或 datasets
库创建带有音频数据的 Parquet 文件。要在 pandas
中创建带有音频数据的 Parquet 文件,您可以使用 pandas-audio-methods 和 df.to_parquet()
。在 datasets
中,您可以将列类型设置为 Audio()
并使用 ds.to_parquet(...)
方法或 ds.push_to_hub(...)
。您可以在此处找到有关在 datasets
中加载音频数据集的指南。
或者,您可以手动设置使用其他工具创建的 Parquet 的音频类型。首先,确保您的音频列的类型为 struct,其中包含用于音频数据的二进制字段 "bytes"
和用于音频文件名称或路径的字符串字段 "path"
。然后,您应该直接在 README 标头的 YAML 中指定列的特征类型,例如
dataset_info:
features:
- name: audio
dtype: audio
- name: caption
dtype: string
请注意,建议 Parquet 用于小型音频文件(每个音频文件 <1MB)和小行组(每个行组 100 行,这是 datasets
用于音频的行数)。对于较大的音频文件,建议使用 WebDataset 格式,或共享原始音频文件(可选地带有元数据文件)。