Datasets documentation

Buat dataset audio

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Buat dataset audio

Anda dapat membagikan dataset dengan tim Anda atau dengan siapa pun di komunitas dengan membuat repositori dataset di Hugging Face Hub:

from datasets import load_dataset

dataset = load_dataset("<username>/my_dataset")

Terdapat beberapa metode untuk membuat dan membagikan dataset audio:

  • Buat dataset audio dari file lokal di python dengan Dataset.push_to_hub(). Ini adalah cara mudah yang hanya membutuhkan beberapa langkah di python.

  • Buat repositori dataset audio dengan builder AudioFolder. Ini adalah solusi tanpa kode untuk dengan cepat membuat dataset audio dengan beberapa ribu file audio.

Anda dapat mengontrol akses ke dataset Anda dengan meminta pengguna untuk membagikan informasi kontak mereka terlebih dahulu. Lihat panduan Gated datasets untuk informasi lebih lanjut tentang cara mengaktifkan fitur ini di Hub.

File lokal

Anda dapat memuat dataset Anda sendiri menggunakan path ke file audio Anda. Gunakan fungsi cast_column() untuk mengambil kolom berisi path file audio, lalu mengubahnya menjadi fitur 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>

Lalu unggah dataset ke Hugging Face Hub menggunakan Dataset.push_to_hub():

audio_dataset.push_to_hub("<username>/my_dataset")

Hal ini akan membuat repositori dataset yang berisi dataset audio Anda:

my_dataset/
├── README.md
└── data/
    └── train-00000-of-00001.parquet

AudioFolder

AudioFolder adalah pembangun dataset yang dirancang untuk memuat dataset audio dengan ribuan file audio secara cepat tanpa mengharuskan Anda menulis kode apa pun.

💡 Lihat hierarki pola Split untuk mempelajari lebih lanjut tentang bagaimana AudioFolder membuat split dataset berdasarkan struktur repositori dataset Anda.

AudioFolder secara otomatis menyimpulkan label kelas dari dataset Anda berdasarkan nama direktori. Simpan dataset Anda dalam struktur direktori seperti:

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

Jika dataset mengikuti struktur AudioFolder, maka Anda dapat memuatnya langsung dengan load_dataset():

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_name")

Ini setara dengan meneruskan audiofolder secara manual di load_dataset() dan direktori di data_dir:

>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")

Anda juga dapat menggunakan audiofolder untuk memuat dataset yang melibatkan beberapa split. Untuk melakukannya, direktori dataset Anda harus memiliki struktur berikut:

folder/train/dog/golden_retriever.mp3
folder/train/cat/maine_coon.mp3
folder/test/dog/german_shepherd.mp3
folder/test/cat/bengal.mp3

Jika semua file audio berada dalam satu direktori atau tidak berada pada level struktur direktori yang sama, kolom label tidak akan ditambahkan secara otomatis. Jika Anda membutuhkannya, tetapkan drop_labels=False secara eksplisit.

Jika ada informasi tambahan yang ingin Anda sertakan tentang dataset Anda, seperti teks caption atau bounding box, tambahkan sebagai file metadata.csv di folder Anda. Hal ini memungkinkan Anda dengan cepat membuat dataset untuk berbagai tugas computer vision seperti text captioning atau object detection. Anda juga dapat menggunakan file JSONL metadata.jsonl atau file Parquet metadata.parquet.

folder/train/metadata.csv
folder/train/0001.mp3
folder/train/0002.mp3
folder/train/0003.mp3

Anda juga dapat mengompres file audio Anda, dan dalam hal ini setiap file zip harus berisi file audio dan metadata

folder/train.zip
folder/test.zip
folder/validation.zip

File metadata.csv Anda harus memiliki field file_name atau *_file_name yang menghubungkan file audio dengan metadata-nya:

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

atau menggunakan 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"}

Di sini, file_name harus berupa nama file audio yang berada di samping file metadata. Secara lebih umum, ini harus berupa path relatif dari direktori yang berisi metadata ke file audio.

Anda dapat menunjuk ke lebih dari satu audio di setiap baris dalam dataset Anda, misalnya jika input dan output Anda sama-sama berupa file audio:

{"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"}

Anda juga dapat mendefinisikan daftar file audio. Dalam hal itu, Anda perlu menamai field file_names atau *_file_names. Berikut adalah contohnya:

{"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

Format WebDataset didasarkan pada arsip TAR dan cocok untuk dataset audio besar. Anda dapat mengelompokkan file audio Anda ke dalam arsip TAR (misalnya 1GB file audio per arsip TAR) dan memiliki ribuan arsip TAR:

folder/train/00000.tar
folder/train/00001.tar
folder/train/00002.tar
...

Di arsip, setiap contoh terdiri dari file-file yang berbagi prefiks yang sama:

e39871fd9fd74f55.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.mp3
f18b91585c4d3f3e.json
ede6e66b2fb59aab.mp3
ede6e66b2fb59aab.json
ed600d57fcee4f94.mp3
ed600d57fcee4f94.json
...

Anda dapat menyimpan label/keterangan/kotak batas file audio Anda menggunakan file JSON atau teks, misalnya.

Muat WebDataset Anda dan akan dibuat satu kolom per akhiran file (di sini “mp3” dan “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"}

Anda juga dapat memiliki beberapa file audio per contoh seperti ini:

e39871fd9fd74f55.input.mp3
e39871fd9fd74f55.output.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.input.mp3
f18b91585c4d3f3e.output.mp3
f18b91585c4d3f3e.json
...

Untuk detail lebih lanjut tentang format WebDataset dan pustaka python, silakan periksa dokumentasi WebDataset.

Update on GitHub