Hub 文件

音訊資料集

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

音訊資料集

本指南將向您展示如何使用音訊檔案配置資料集倉庫。您可以在此音訊資料集示例集合中找到相應的倉庫示例。

具有受支援結構和檔案格式的資料集在其 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

使用此結構建立的資料集包含兩列: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

可以使用 pandasdatasets 庫建立包含音訊資料的 Parquet 檔案。要在 pandas 中建立包含音訊資料的 Parquet 檔案,您可以使用 pandas-audio-methodsdf.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 格式,或共享原始音訊檔案(可選包含元資料檔案)。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.