Spaces:
Running
on
Zero
Running
on
Zero
# 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. | |