Datasets documentation
Tạo một bộ dữ liệu âm thanh
Tạo một bộ dữ liệu âm thanh
Bạn có thể chia sẻ một tập dữ liệu với nhóm của mình hoặc với bất kỳ ai trong cộng đồng bằng cách tạo một kho dữ liệu trên Hugging Face Hub:
from datasets import load_dataset
dataset = load_dataset("<username>/my_dataset")Có một số phương pháp để tạo và chia sẻ bộ dữ liệu âm thanh:
Tạo một tập dữ liệu âm thanh từ các tệp cục bộ bằng python với Dataset.push_to_hub(). Đây là một cách đơn giản, chỉ cần vài bước trong python.
Tạo kho dữ liệu âm thanh bằng trình tạo
AudioFolder. Đây là giải pháp không cần viết mã để nhanh chóng tạo bộ dữ liệu âm thanh với hàng nghìn tệp âm thanh.
Bạn có thể kiểm soát quyền truy cập vào bộ dữ liệu của mình bằng cách yêu cầu người dùng chia sẻ thông tin liên hệ trước. Xem hướng dẫn Gated datasets để biết thêm thông tin về cách bật tính năng này trên Hub.
Tệp cục bộ
Bạn có thể tải bộ dữ liệu của riêng mình bằng cách sử dụng đường dẫn đến các tệp âm thanh. Sử dụng hàm cast_column() để lấy một cột chứa đường dẫn tệp âm thanh và chuyển đổi nó thành đặc trưng 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>Sau đó, tải bộ dữ liệu lên Hugging Face Hub bằng Dataset.push_to_hub():
audio_dataset.push_to_hub("<username>/my_dataset")Điều này sẽ tạo một kho dữ liệu chứa bộ dữ liệu âm thanh của bạn:
my_dataset/
├── README.md
└── data/
└── train-00000-of-00001.parquetAudioFolder
AudioFolder là một trình xây dựng bộ dữ liệu được thiết kế để nhanh chóng nạp một bộ dữ liệu âm thanh gồm vài nghìn tệp âm thanh mà không yêu cầu bạn phải viết bất kỳ mã nào.
💡 Xem Hierarchie mẫu Split để tìm hiểu thêm về cách
AudioFoldertạo các phần chia dataset dựa trên cấu trúc kho dataset của bạn.
AudioFolder tự động suy luận nhãn lớp của bộ dữ liệu dựa trên tên thư mục. Hãy lưu bộ dữ liệu của bạn trong cấu trúc thư mục như sau:
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.mp3Nếu bộ dữ liệu tuân theo cấu trúc AudioFolder, bạn có thể tải nó trực tiếp bằng load_dataset():
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_name")Điều này tương đương với việc truyền audiofolder thủ công trong load_dataset() và thư mục trong data_dir:
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")Bạn cũng có thể sử dụng audiofolder để tải các bộ dữ liệu liên quan đến nhiều phần chia (splits). Để làm điều này, thư mục bộ dữ liệu của bạn nên có cấu trúc sau:
folder/train/dog/golden_retriever.mp3
folder/train/cat/maine_coon.mp3
folder/test/dog/german_shepherd.mp3
folder/test/cat/bengal.mp3Nếu tất cả các tệp âm thanh nằm trong một thư mục duy nhất hoặc không cùng cấp trong cấu trúc thư mục, cột
labelsẽ không được thêm tự động. Nếu bạn cần cột này, hãy đặtdrop_labels=Falsemột cách tường minh.
Nếu có thêm thông tin bạn muốn bao gồm về bộ dữ liệu của mình, chẳng hạn như chú thích văn bản hoặc hộp bao quanh, hãy thêm chúng dưới dạng tệp metadata.csv trong thư mục của bạn. Điều này cho phép bạn nhanh chóng tạo các bộ dữ liệu cho các tác vụ thị giác máy tính khác nhau như chú thích văn bản hoặc phát hiện đối tượng. Bạn cũng có thể sử dụng tệp JSONL metadata.jsonl hoặc tệp Parquet metadata.parquet.
folder/train/metadata.csv
folder/train/0001.mp3
folder/train/0002.mp3
folder/train/0003.mp3Bạn cũng có thể nén các tệp âm thanh của mình, và trong trường hợp này mỗi tệp zip phải chứa cả các tệp âm thanh và dữ liệu mô tả
folder/train.zip
folder/test.zip
folder/validation.zipTệp metadata.csv của bạn phải có trường file_name hoặc *_file_name để liên kết các tệp âm thanh với metadata của chúng:
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 fileshoặc sử dụng 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"}Ở đây, file_name phải là tên của tệp âm thanh nằm cạnh tệp metadata. Nói chung hơn, nó phải là đường dẫn tương đối từ thư mục chứa metadata đến tệp âm thanh.
Bạn có thể trỏ đến nhiều hơn một tệp âm thanh trong mỗi hàng của bộ dữ liệu, chẳng hạn như khi cả đầu vào và đầu ra của bạn đều là tệp âm thanh:
{"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"}Bạn cũng có thể định nghĩa các danh sách tệp âm thanh. Trong trường hợp đó, bạn cần đặt tên trường là file_names hoặc *_file_names. Dưới đây là một ví dụ:
{"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
Định dạng WebDataset dựa trên các tệp lưu trữ TAR và phù hợp cho các bộ dữ liệu âm thanh lớn. Thật vậy, bạn có thể nhóm các tệp âm thanh của mình vào các tệp lưu trữ TAR (ví dụ: 1GB tệp âm thanh cho mỗi tệp lưu trữ TAR) và có hàng nghìn tệp lưu trữ TAR:
folder/train/00000.tar
folder/train/00001.tar
folder/train/00002.tar
...Trong kho lưu trữ, mỗi ví dụ được tạo thành từ các tệp chia sẻ cùng một tiền tố:
e39871fd9fd74f55.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.mp3
f18b91585c4d3f3e.json
ede6e66b2fb59aab.mp3
ede6e66b2fb59aab.json
ed600d57fcee4f94.mp3
ed600d57fcee4f94.json
...Bạn có thể đặt tệp âm thanh của mình cùng nhãn/mô tả/hộp bao (bounding boxes) bằng cách sử dụng tệp JSON hoặc tệp văn bản, chẳng hạn.
Nạp WebDataset của bạn và nó sẽ tạo ra một cột cho mỗi hậu tố tệp (ở đây là “mp3” và “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"}Bạn cũng có thể có nhiều tệp âm thanh cho mỗi ví dụ như sau:
e39871fd9fd74f55.input.mp3
e39871fd9fd74f55.output.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.input.mp3
f18b91585c4d3f3e.output.mp3
f18b91585c4d3f3e.json
...Để biết thêm chi tiết về định dạng WebDataset và thư viện python, vui lòng xem tài liệu WebDataset.
Update on GitHub