Hub 文件
音訊資料集
並獲得增強的文件體驗
開始使用
音訊資料集
本指南將向您展示如何使用音訊檔案配置資料集倉庫。您可以在此音訊資料集示例集合中找到相應的倉庫示例。
具有受支援結構和檔案格式的資料集在其 Hub 頁面上會自動擁有資料集檢視器。
只要您在元資料檔案(metadata.csv/metadata.jsonl/metadata.parquet)中包含此資訊,有關音訊檔案的額外資訊(例如轉錄)將自動載入。
或者,音訊檔案可以是 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"}對於更大的資料集,或者如果您對高階資料檢索功能感興趣,可以使用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
請注意,為了方便使用者並啟用資料集檢視器,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 格式,或共享原始音訊檔案(可選包含元資料檔案)。