Datasets documentation

Ses verilerini yükle

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

Ses verilerini yükle

Audio özelliğini kullanarak bir ses veri seti yükleyebilirsiniz; bu özellik, örnekleri eriştiğinizde ses dosyalarını otomatik olarak çözer ve yeniden örnekler. Ses çözme işlemi, altta FFmpeg C kütüphanesini kullanan torchcodec python paketine dayanır.

Kurulum

Ses veri setleriyle çalışmak için audio bağımlılıklarının yüklü olması gerekir. Nasıl yükleneceğini öğrenmek için kurulum kılavuzuna göz atın.

Yerel dosyalar

Ses dosyalarınızın yollarını kullanarak kendi veri setinizi yükleyebilirsiniz. Ses dosyası yollarından oluşan bir sütunu alıp Audio özelliğine dönüştürmek için cast_column() işlevini kullanın:

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

AudioFolder

Bir AudioFolder veri seti oluşturucusu ile de veri seti yükleyebilirsiniz. Özel bir dataloader yazmayı gerektirmez; bu da onu, birkaç bin ses dosyası içeren ses veri setlerini hızlı bir şekilde oluşturmak ve yüklemek için kullanışlı kılar.

Metadata içeren AudioFolder

Ses dosyalarınızı meta veri bilgisiyle ilişkilendirmek için veri setinizin bir metadata.csv dosyasına sahip olduğundan emin olun. Veri seti yapınız şu şekilde görünebilir:

folder/train/metadata.csv
folder/train/first_audio_file.mp3
folder/train/second_audio_file.mp3
folder/train/third_audio_file.mp3

metadata.csv dosyanızın, ses dosyalarını ilgili metadata ile ilişkilendiren bir file_name sütunu olmalıdır. Örnek bir metadata.csv dosyası aşağıdaki gibi görünebilir:

file_name,transcription
first_audio_file.mp3,znowu się duch z ciałem zrośnie w młodocianej wstaniesz wiosnie i możesz skutkiem tych leków umierać wstawać wiek wieków dalej tam były przestrogi jak siekać głowę jak nogi
second_audio_file.mp3,już u źwierzyńca podwojów król zasiada przy nim książęta i panowie rada a gdzie wzniosły krążył ganek rycerze obok kochanek król skinął palcem zaczęto igrzysko
third_audio_file.mp3,pewnie kędyś w obłędzie ubite minęły szlaki zaczekajmy dzień jaki poślemy szukać wszędzie dziś jutro pewnie będzie posłali wszędzie sługi czekali dzień i drugi gdy nic nie doczekali z płaczem chcą jechać dali

AudioFolder, ses verilerini yükler ve metadata.csv içindeki metinleri içeren bir transcription sütunu oluşturur:

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_name")
>>> # OR locally:
>>> dataset = load_dataset("/path/to/folder")

Yerel veri kümeleri için bu, load_dataset() içinde audiofolder'ı ve dizini data_dir içinde elle geçirmeye eşdeğerdir:

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

Metadata ayrıca JSON Lines olarak da belirtilebilir; bu durumda metadata dosyasının adı olarak metadata.jsonl kullanılır. Bu format, sütunlardan birinin karmaşık olduğu (ör. float listesi) durumlarda, ayrıştırma hatalarını önlemek veya karmaşık değerleri metin olarak okumaktan kaçınmak için faydalıdır.

Üstveri dosyasındaki bilgileri yok saymak için load_dataset() içinde drop_metadata=True değerini ayarlayın:

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_with_metadata", drop_metadata=True)

Bir metadata dosyanız yoksa, AudioFolder etiket adını dizin adından otomatik olarak çıkarır. Otomatik olarak oluşturulan etiketleri kaldırmak istiyorsanız, drop_labels=True olarak ayarlayın. Bu durumda, veri setiniz yalnızca bir ses sütunu içerecektir:

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_without_metadata", drop_labels=True)

Son olarak filters argümanı, etikete veya meta verilerdeki bir koşula dayalı olarak veri setinin yalnızca bir alt kümesini yüklemenizi sağlar. Bu, meta veriler Parquet formatındaysa özellikle faydalıdır, çünkü bu format hızlı filtrelemeyi mümkün kılar. Varsayılan olarak veri seti filtrelemeden önce tamamen indirildiği için, bu argümanı streaming=True ile kullanmanız da önerilir.

>>> filters = [("label", "=", 0)]
>>> dataset = load_dataset("username/dataset_name", streaming=True, filters=filters)

Kendi AudioFolder veri setinizi oluşturmaya ilişkin daha fazla bilgi için Ses veri seti oluşturma kılavuzuna göz atın.

Herhangi bir tür veri setinin nasıl yükleneceğine dair bir kılavuz için genel yükleme kılavuzuna göz atın.

Ses kod çözme

Varsayılan olarak, bir veri setinde gezinirken ses dosyaları AudioDecoder nesneleri olarak sıralı biçimde çözümlenir. Ancak çok iş parçacıklı (multithreaded) çözümleme kullanarak veri setini önemli ölçüde hızlandırmak mümkündür:

>>> import os
>>> num_threads = num_threads = min(32, (os.cpu_count() or 1) + 4)
>>> dataset = dataset.decode(num_threads=num_threads)
>>> for example in dataset:  # up to 20 times faster !
...     ...

Çok iş parçacıklı işlemi num_threads parametresiyle etkinleştirebilirsiniz. Bu, uzaktan veri akışını hızlandırmak için özellikle faydalıdır. Ancak hızlı disklerdeki yerel veriler için num_threads=0 değerinden daha yavaş olabilir.

NumPy dizileri olarak çözülen görsellerle ilgilenmiyorsanız ve bunun yerine yol/baytlara erişmek istiyorsanız, çözümlemeyi devre dışı bırakabilirsiniz:

>>> dataset = dataset.decode(False)

Not: IterableDataset.decode() şu anda yalnızca akış veri setleri için kullanılabilir.

Update on GitHub