Hub documentation

Jeu de données audio

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Jeu de données audio

Ce guide vous montre comment configurer votre dépôt de jeu de données avec des fichiers audio. Vous trouverez des exemples de dépôts accompagnants dans cette collection d’exemples de jeux de données audio.

Un jeu de données doté d'une structure prise en charge et de formats de fichiers appropriés dispose automatiquement d'un visualiseur de jeu de données sur sa page du Hub.


Des informations supplémentaires sur vos fichiers audio, telles que des transcriptions, sont chargées automatiquement dès lors que vous incluez ces informations dans un fichier de métadonnées (metadata.csv/metadata.jsonl/metadata.parquet).

Alternativement, les fichiers audio peuvent être stockés dans des fichiers Parquet ou dans des archives TAR suivant le format WebDataset.

Fichiers audio uniquement

Si votre jeu de données ne comporte qu'une seule colonne contenant de l'audio, vous pouvez simplement stocker vos fichiers audio à la racine :

my_dataset_repository/
├── 1.wav
├── 2.wav
├── 3.wav
└── 4.wav

ou dans un sous-répertoire :

my_dataset_repository/
└── audio
    ├── 1.wav
    ├── 2.wav
    ├── 3.wav
    └── 4.wav

Plusieurs formats sont pris en charge simultanément, notamment AIFF, FLAC, MP3, OGG et WAV.

my_dataset_repository/
└── audio
    ├── 1.aiff
    ├── 2.ogg
    ├── 3.mp3
    └── 4.flac

Si vous avez plusieurs splits, vous pouvez placer vos fichiers audio dans des répertoires nommés en conséquence :

my_dataset_repository/
├── train
│   ├── 1.wav
│   └── 2.wav
└── test
    ├── 3.wav
    └── 4.wav

Voir Noms de fichiers et splits pour plus d’informations et d’autres façons d’organiser les données par splits.

Colonnes supplémentaires

Si vous souhaitez inclure des informations supplémentaires sur votre jeu de données, comme la transcription, ajoutez-les sous forme de fichier metadata.csv dans votre dépôt. Cela vous permet de créer rapidement des jeux de données pour différentes tâches audio, comme la synthèse vocale ou la reconnaissance automatique de la parole.

my_dataset_repository/
├── 1.wav
├── 2.wav
├── 3.wav
├── 4.wav
└── metadata.csv

Votre fichier metadata.csv doit contenir une colonne file_name qui associe les fichiers d’images à leurs métadonnées :

file_name,animal
1.wav,cat
2.wav,cat
3.wav,dog
4.wav,dog

Vous pouvez également utiliser un fichier 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"}

Et pour des jeux de données plus volumineux ou si vous êtes intéressé par des fonctionnalités avancées de récupération de données, vous pouvez utiliser un fichier Parquet metadata.parquet.

Chemins relatifs

Le fichier de métadonnées doit se trouver soit dans le même répertoire que les fichiers audio auxquels il est lié, soit dans un répertoire parent, comme dans cet exemple :

my_dataset_repository/
└── test
    ├── audio
    │   ├── 1.wav
    │   ├── 2.wav
    │   ├── 3.wav
    │   └── 4.wav
    └── metadata.csv

Dans ce cas, la colonne file_name doit contenir un chemin relatif complet vers les fichiers audio, et non simplement le nom du fichier :

file_name,animal
audio/1.wav,cat
audio/2.wav,cat
audio/3.wav,dog
audio/4.wav,dog

Les fichiers de métadonnées ne peuvent pas être placés dans des sous-répertoires d'un répertoire contenant les fichiers audio.

Plus généralement, toute colonne nommée file_name ou *_file_name doit contenir le chemin relatif complet vers les fichiers audio.

Dans cet exemple, le répertoire test est utilisé pour définir le nom de la partition d'entraînement. Consultez Noms de fichiers et partitions pour plus d'informations.

Classification audio

Pour les jeux de données de classification audio, vous pouvez également utiliser une configuration simple : utilisez des répertoires pour nommer les classes audio. Stockez vos fichiers audio dans une structure de répertoires comme :

my_dataset_repository/
├── cat
│   ├── 1.wav
│   └── 2.wav
└── dog
    ├── 3.wav
    └── 4.wav

Le jeu de données créé avec cette structure contient deux colonnes : audio et label (avec les valeurs cat et dog).

Vous pouvez également fournir plusieurs splits. Pour ce faire, votre répertoire de jeu de données doit avoir la structure suivante (voir Noms de fichiers et splits pour plus d’informations) :

my_dataset_repository/
├── test
│   ├── cat
│   │   └── 2.wav
│   └── dog
│       └── 4.wav
└── train
    ├── cat
    │   └── 1.wav
    └── dog
        └── 3.wav

Vous pouvez désactiver cette ajout automatique de la colonne label dans la configuration YAML. Si les noms de vos répertoires n’ont pas de signification particulière, définissez drop_labels: true dans l’en-tête du README :

configs:
  - config_name: default  # Name of the dataset subset, if applicable.
    drop_labels: true

Jeux de données à grande échelle

Format WebDataset

Le format WebDataset est bien adapté aux jeux de données audio de grande envergure (voir par exemple AlienKevin/sbs_cantonese). Il se compose d'archives TAR contenant des fichiers audio et leurs métadonnées, et est optimisé pour le streaming. Il est utile si vous disposez d'un grand nombre de fichiers audio et pour obtenir des chargeurs de données en streaming pour l'entraînement à grande échelle.

my_dataset_repository/
├── train-0000.tar
├── train-0001.tar
├── ...
└── train-1023.tar

Pour créer une archive TAR WebDataset, créez un répertoire contenant les fichiers audio et les fichiers de métadonnées à archiver, puis créez l'archive TAR à l'aide, par exemple, de la commande tar. La taille habituelle par archive est généralement d'environ 1 Go. Assurez-vous que chaque paire de fichier audio et de métadonnées partage le même préfixe de fichier, par exemple :

train-0000/
├── 000.flac
├── 000.json
├── 001.flac
├── 001.json
├── ...
├── 999.flac
└── 999.json

Notez que, pour la commodité des utilisateurs et afin de permettre le Dataset Viewer, chaque jeu de données hébergé sur le Hub est automatiquement converti au format Parquet jusqu'à 5 Go. En savoir plus à ce sujet dans la documentation du Parquet format.

Format Parquet

Plutôt que de téléverser les fichiers audio et les métadonnées en tant que fichiers individuels, vous pouvez intégrer l’ensemble dans un fichier Parquet. Cela est utile si vous disposez d’un grand nombre de fichiers audio, si vous souhaitez intégrer plusieurs colonnes audio, ou si vous voulez stocker des informations supplémentaires sur l’audio dans le même fichier. Parquet est également pratique pour stocker des données telles que des octets bruts, ce qui n’est pas pris en charge par JSON/CSV.

my_dataset_repository/
└── train.parquet

Les fichiers Parquet contenant des données audio peuvent être créés à l'aide de pandas ou de la bibliothèque datasets. Pour créer des fichiers Parquet avec des données audio dans pandas, vous pouvez utiliser pandas-audio-methods et df.to_parquet(). Dans datasets, vous pouvez définir le type de colonne sur Audio() et utiliser la méthode ds.to_parquet(...) ou ds.push_to_hub(...). Vous trouverez un guide sur le chargement des jeux de données audio dans datasets ici.

Vous pouvez également définir manuellement le type audio des fichiers Parquet créés à l’aide d’autres outils. Assurez-vous d’abord que vos colonnes audio sont de type struct, avec un champ binaire "bytes" pour les données audio et un champ chaîne "path" pour le nom ou le chemin du fichier audio. Vous devez ensuite spécifier les types de fonctionnalités des colonnes directement dans le YAML de l’en-tête du README, par exemple :

dataset_info:
  features:
  - name: audio
    dtype: audio
  - name: caption
    dtype: string

Notez que Parquet est recommandé pour les petits fichiers audio (<1 Mo par fichier audio) et les petits groupes de lignes (100 lignes par groupe de lignes, ce que datasets utilise pour l’audio). Pour les fichiers audio plus volumineux, il est recommandé d’utiliser le format WebDataset, ou de partager les fichiers audio d’origine (éventuellement avec des fichiers de métadonnées).

Update on GitHub