Datasets 文件
建立音訊資料集
並獲得增強的文件體驗
開始使用
建立音訊資料集
您可以透過在 Hugging Face Hub 上建立一個數據集倉庫,與您的團隊或社群中的任何人分享資料集。
from datasets import load_dataset
dataset = load_dataset("<username>/my_dataset")
有幾種方法可以建立和分享音訊資料集。
在 Python 中使用 Dataset.push_to_hub() 從本地檔案建立一個音訊資料集。這是一個簡單的方法,只需在 Python 中完成幾個步驟。
使用
AudioFolder
構建器建立一個音訊資料集倉庫。這是一個無程式碼解決方案,用於快速建立一個包含數千個音訊檔案的資料集。
您可以透過要求使用者先分享他們的聯絡資訊來控制對您資料集的訪問。有關如何在 Hub 上啟用此功能的更多資訊,請檢視訪問控制資料集指南。
本地檔案
您可以使用音訊檔案的路徑載入您自己的資料集。使用 cast_column() 函式獲取一個包含音訊檔案路徑的列,並將其轉換為 Audio 特徵。
>>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", "path/to/audio_2", ..., "path/to/audio_n"]}).cast_column("audio", Audio())
>>> audio_dataset[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>
然後使用 Dataset.push_to_hub() 將資料集上傳到 Hugging Face Hub。
audio_dataset.push_to_hub("<username>/my_dataset")
這將建立一個包含您音訊資料集的資料集倉庫。
my_dataset/
├── README.md
└── data/
└── train-00000-of-00001.parquet
AudioFolder
AudioFolder
是一個數據集構建器,旨在快速載入包含數千個音訊檔案的資料集,而無需編寫任何程式碼。
💡 檢視拆分模式層次結構,瞭解更多關於 AudioFolder
如何根據您的資料集倉庫結構建立資料集拆分的資訊。
AudioFolder
會根據目錄名稱自動推斷您資料集的類別標籤。將您的資料集儲存在如下的目錄結構中:
folder/train/dog/golden_retriever.mp3
folder/train/dog/german_shepherd.mp3
folder/train/dog/chihuahua.mp3
folder/train/cat/maine_coon.mp3
folder/train/cat/bengal.mp3
folder/train/cat/birman.mp3
如果資料集遵循 AudioFolder
結構,那麼您可以直接使用 load_dataset() 載入它。
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_name")
這等同於在 load_dataset() 中手動傳入 audiofolder
並在 data_dir
中傳入目錄。
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")
您也可以使用 audiofolder
來載入包含多個拆分的資料集。為此,您的資料集目錄應具有以下結構:
folder/train/dog/golden_retriever.mp3
folder/train/cat/maine_coon.mp3
folder/test/dog/german_shepherd.mp3
folder/test/cat/bengal.mp3
如果所有音訊檔案都包含在單個目錄中,或者它們不在同一級別的目錄結構中,label
列將不會被自動新增。如果您需要它,請顯式設定 drop_labels=False
。
如果您想包含關於資料集的額外資訊,例如文字字幕或邊界框,請在您的資料夾中新增一個 metadata.csv
檔案。這使您可以快速為不同的計算機視覺任務(如文字字幕或目標檢測)建立資料集。您也可以使用 JSONL 檔案 metadata.jsonl
或 Parquet 檔案 metadata.parquet
。
folder/train/metadata.csv
folder/train/0001.mp3
folder/train/0002.mp3
folder/train/0003.mp3
您也可以壓縮您的音訊檔案,在這種情況下,每個壓縮檔案應同時包含音訊檔案和元資料。
folder/train.zip
folder/test.zip
folder/validation.zip
您的 metadata.csv
檔案必須有一個 file_name
或 *_file_name
欄位,該欄位將音訊檔案與其元資料鏈接起來。
file_name,additional_feature
0001.mp3,This is a first value of a text feature you added to your audio files
0002.mp3,This is a second value of a text feature you added to your audio files
0003.mp3,This is a third value of a text feature you added to your audio files
或使用 metadata.jsonl
{"file_name": "0001.mp3", "additional_feature": "This is a first value of a text feature you added to your audio files"}
{"file_name": "0002.mp3", "additional_feature": "This is a second value of a text feature you added to your audio files"}
{"file_name": "0003.mp3", "additional_feature": "This is a third value of a text feature you added to your audio files"}
這裡的 file_name
必須是元資料檔案旁邊的音訊檔案的名稱。更一般地,它必須是從包含元資料的目錄到音訊檔案的相對路徑。
在您的資料集中,每行指向多個音訊檔案是可能的,例如,如果您的輸入和輸出都是音訊檔案。
{"input_file_name": "0001.mp3", "output_file_name": "0001_output.mp3"}
{"input_file_name": "0002.mp3", "output_file_name": "0002_output.mp3"}
{"input_file_name": "0003.mp3", "output_file_name": "0003_output.mp3"}
您還可以定義音訊檔案列表。在這種情況下,您需要將欄位命名為 file_names
或 *_file_names
。這是一個例子:
{"recordings_file_names": ["0001_r0.mp3", "0001_r1.mp3"], label: "same_person"}
{"recordings_file_names": ["0002_r0.mp3", "0002_r1.mp3"], label: "same_person"}
{"recordings_file_names": ["0003_r0.mp3", "0003_r1.mp3"], label: "different_person"}
WebDataset
WebDataset 格式基於 TAR 歸檔,適用於大型音訊資料集。實際上,您可以將音訊檔案分組到 TAR 歸檔中(例如每個 TAR 歸檔 1GB 的音訊檔案),並擁有數千個 TAR 歸檔。
folder/train/00000.tar
folder/train/00001.tar
folder/train/00002.tar
...
在歸檔檔案中,每個示例由共享相同字首的檔案組成
e39871fd9fd74f55.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.mp3
f18b91585c4d3f3e.json
ede6e66b2fb59aab.mp3
ede6e66b2fb59aab.json
ed600d57fcee4f94.mp3
ed600d57fcee4f94.json
...
例如,您可以使用 JSON 或文字檔案來存放音訊檔案的標籤/字幕/邊界框。
載入您的 WebDataset,它會為每個檔案字尾(此處為“mp3”和“json”)建立一列。
>>> from datasets import load_dataset
>>> dataset = load_dataset("webdataset", data_dir="/path/to/folder", split="train")
>>> dataset[0]["json"]
{"transcript": "Hello there !", "speaker": "Obi-Wan Kenobi"}
每個示例也可以有多個音訊檔案,如下所示:
e39871fd9fd74f55.input.mp3
e39871fd9fd74f55.output.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.input.mp3
f18b91585c4d3f3e.output.mp3
f18b91585c4d3f3e.json
...
有關 WebDataset 格式和 Python 庫的更多詳情,請查閱 WebDataset 文件。
< > 在 GitHub 上更新