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