Datasets documentation
Créer un jeu de données audio
Créer un jeu de données audio
Vous pouvez partager un jeu de données avec votre équipe ou avec n’importe qui dans la communauté en créant un dépôt de jeu de données sur le Hugging Face Hub :
from datasets import load_dataset
dataset = load_dataset("<username>/my_dataset")Plusieurs méthodes permettent de créer et de partager un jeu de données audio :
Créez un jeu de données audio à partir de fichiers locaux en python avec Dataset.push_to_hub(). C’est une méthode simple qui ne nécessite que quelques étapes en python.
Créez un dépôt de jeu de données audio avec le constructeur
AudioFolder. Il s’agit d’une solution sans code pour créer rapidement un jeu de données audio contenant plusieurs milliers de fichiers audio.
Vous pouvez contrôler l'accès à votre jeu de données en exigeant que les utilisateurs partagent d'abord leurs coordonnées. Consultez le guide Gated datasets pour plus d'informations sur la manière d'activer cette fonctionnalité sur le Hub.
Fichiers locaux
Vous pouvez charger votre propre jeu de données en utilisant les chemins d’accès à vos fichiers audio. Utilisez la fonction cast_column() pour prendre une colonne de chemins d’accès aux fichiers audio et la convertir en fonctionnalité 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>Ensuite, téléchargez le jeu de données sur le Hugging Face Hub à l'aide de Dataset.push_to_hub() :
audio_dataset.push_to_hub("<username>/my_dataset")Cela créera un dépôt de jeu de données contenant votre jeu de données audio :
my_dataset/
├── README.md
└── data/
└── train-00000-of-00001.parquetAudioFolder
AudioFolder est un constructeur de jeu de données conçu pour charger rapidement un jeu de données audio contenant plusieurs milliers de fichiers audio, sans qu'il soit nécessaire d'écrire du code.
💡 Consultez la hiérarchie des motifs de partitionnement pour en savoir plus sur la manière dont
AudioFoldercrée des partitions de jeu de données en fonction de la structure de votre dépôt de jeu de données.
AudioFolder infère automatiquement les étiquettes de classes de votre jeu de données en fonction du nom du répertoire. Stockez votre jeu de données dans une structure de répertoires de la forme :
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.mp3Si le jeu de données suit la structure AudioFolder, vous pouvez le charger directement avec load_dataset() :
>>> from datasets import load_dataset
>>> dataset = load_dataset("username/dataset_name")Cela équivaut à passer audiofolder manuellement dans load_dataset() et le répertoire dans data_dir :
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")Vous pouvez également utiliser audiofolder pour charger des jeux de données impliquant plusieurs splits. Pour ce faire, le répertoire de votre jeu de données doit avoir la structure suivante :
folder/train/dog/golden_retriever.mp3
folder/train/cat/maine_coon.mp3
folder/test/dog/german_shepherd.mp3
folder/test/cat/bengal.mp3Si tous les fichiers audio sont contenus dans un seul répertoire ou s’ils ne sont pas au même niveau de la structure de répertoires, la colonne
labelne sera pas ajoutée automatiquement. Si vous en avez besoin, définissez explicitementdrop_labels=False.
Si vous souhaitez inclure des informations supplémentaires sur votre jeu de données, comme des légendes de texte ou des boîtes englobantes, ajoutez-les sous forme de fichier metadata.csv dans votre dossier. Cela vous permet de créer rapidement des jeux de données pour différentes tâches de vision par ordinateur, comme la légende de texte ou la détection d’objets. Vous pouvez également utiliser un fichier JSONL metadata.jsonl ou un fichier Parquet metadata.parquet.
folder/train/metadata.csv
folder/train/0001.mp3
folder/train/0002.mp3
folder/train/0003.mp3Vous pouvez également compresser vos fichiers audio en archive zip, auquel cas chaque archive doit contenir à la fois les fichiers audio et les métadonnées
folder/train.zip
folder/test.zip
folder/validation.zipVotre fichier metadata.csv doit contenir un champ file_name ou *_file_name qui associe les fichiers audio à leurs métadonnées :
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 filesou en utilisant 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"}Ici, file_name doit être le nom du fichier audio situé à côté du fichier de métadonnées. Plus généralement, il doit s’agir du chemin relatif depuis le répertoire contenant les métadonnées jusqu’au fichier audio.
Il est possible de pointer vers plusieurs fichiers audio dans chaque ligne de votre jeu de données, par exemple si votre entrée et votre sortie sont des fichiers 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"}Vous pouvez également définir des listes de fichiers audio. Dans ce cas, vous devez nommer le champ file_names ou *_file_names. Voici un exemple :
{"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
Le format WebDataset est basé sur des archives TAR et convient aux grands jeux de données audio. En effet, vous pouvez regrouper vos fichiers audio dans des archives TAR (par exemple 1 Go de fichiers audio par archive TAR) et disposer de milliers d’archives TAR :
folder/train/00000.tar
folder/train/00001.tar
folder/train/00002.tar
...Dans les archives, chaque exemple est constitué de fichiers partageant le même préfixe :
e39871fd9fd74f55.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.mp3
f18b91585c4d3f3e.json
ede6e66b2fb59aab.mp3
ede6e66b2fb59aab.json
ed600d57fcee4f94.mp3
ed600d57fcee4f94.json
...Vous pouvez placer vos fichiers audio, étiquettes, légendes et boîtes englobantes dans des fichiers JSON ou texte, par exemple.
Chargez votre WebDataset et il créera une colonne par suffixe de fichier (ici « mp3 » et « 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"}Il est également possible d’avoir plusieurs fichiers audio par exemple, comme ceci :
e39871fd9fd74f55.input.mp3
e39871fd9fd74f55.output.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.input.mp3
f18b91585c4d3f3e.output.mp3
f18b91585c4d3f3e.json
...Pour plus de détails sur le format WebDataset et la bibliothèque python, veuillez consulter la documentation WebDataset.
Update on GitHub