|
# AudioCraft datasets |
|
|
|
Our dataset manifest files consist in 1-json-per-line files, potentially gzipped, |
|
as `data.jsons` or `data.jsons.gz` files. This JSON contains the path to the audio |
|
file and associated metadata. The manifest files are then provided in the configuration, |
|
as `datasource` sub-configuration. A datasource contains the pointers to the paths of |
|
the manifest files for each AudioCraft stage (or split) along with additional information |
|
(eg. maximum sample rate to use against this dataset). All the datasources are under the |
|
`dset` group config, with a dedicated configuration file for each dataset. |
|
|
|
## Getting started |
|
|
|
### Example |
|
|
|
See the provided example in the directory that provides a manifest to use the example dataset |
|
provided under the [dataset folder](../dataset/example). |
|
|
|
The manifest files are stored in the [egs folder](../egs/example). |
|
|
|
```shell |
|
egs/ |
|
example/data.json.gz |
|
``` |
|
|
|
A datasource is defined in the configuration folder, in the dset group config for this dataset |
|
at [config/dset/audio/example](../config/dset/audio/example.yaml): |
|
|
|
```shell |
|
# @package __global__ |
|
|
|
datasource: |
|
max_sample_rate: 44100 |
|
max_channels: 2 |
|
|
|
train: egs/example |
|
valid: egs/example |
|
evaluate: egs/example |
|
generate: egs/example |
|
``` |
|
|
|
For proper dataset, one should create manifest for each of the splits and specify the correct path |
|
to the given manifest in the datasource for each split. |
|
|
|
Then, using a dataset through the configuration can be done pointing to the |
|
corresponding dataset configuration: |
|
```shell |
|
dset=<dataset_name> # <dataset_name> should match the yaml file name |
|
|
|
# for example |
|
dset=audio/example |
|
``` |
|
|
|
### Creating manifest files |
|
|
|
Assuming you want to create manifest files to load with AudioCraft's AudioDataset, you can use |
|
the following command to create new manifest files from a given folder containing audio files: |
|
|
|
```shell |
|
python -m audiocraft.data.audio_dataset <path_to_dataset_folder> egs/my_dataset/my_dataset_split/data.jsonl.gz |
|
|
|
# For example to generate the manifest for dset=audio/example |
|
# note: we don't use any split and we don't compress the jsonl file for this dummy example |
|
python -m audiocraft.data.audio_dataset dataset/example egs/example/data.jsonl |
|
|
|
# More info with: python -m audiocraft.data.audio_dataset --help |
|
``` |
|
|
|
## Additional information |
|
|
|
### MusicDataset and metadata |
|
|
|
The MusicDataset is an AudioDataset with additional metadata. The MusicDataset expects |
|
the additional metadata to be stored in a JSON file that has the same path as the corresponding |
|
audio file, but with a `.json` extension. |
|
|
|
### SoundDataset and metadata |
|
|
|
The SoundDataset is an AudioDataset with descriptions metadata. Similarly to the MusicDataset, |
|
the SoundDataset expects the additional metadata to be stored in a JSON file that has the same |
|
path as the corresponding audio file, but with a `.json` extension. Additionally, the SoundDataset |
|
supports an additional parameter pointing to an extra folder `external_metadata_source` containing |
|
all the JSON metadata files given they have the same filename as the audio file. |
|
|