Please visit the official webpage of the DCASE 2022 Challenge for details missing in this repo.
As the baseline method for the SELD task, we use the SELDnet method studied in the following papers, with Multiple Activity-Coupled Cartesian Direction of Arrival (Multi-ACCDOA) representation as the output format. Specifically for the microphone version of the dataset, we have added support of the SALSA-lite features. If you are using this baseline method or the datasets in any format, then please consider citing the following papers. If you want to read more about generic approaches to SELD then check here.
In comparison to the SELDnet studied in [1], we have changed the output format to Multi-ACCDOA [2] to support detection of multiple instances of the same class overlapping. Additionally, we use SALSA-lite [3] features for the microphone version of the dataset, this is to overcome the poor performance of GCC features in the presence of multiple overlapping sound events.
The final SELDnet architecture is as shown below. The input is the multichannel audio, from which the different acoustic features are extracted based on the input format of the audio. Based on the chosen dataset (FOA or MIC), the baseline method takes a sequence of consecutive feature-frames and predicts all the active sound event classes for each of the input frame along with their respective spatial location, producing the temporal activity and DOA trajectory for each sound event class. In particular, a convolutional recurrent neural network (CRNN) is used to map the frame sequence to a Multi-ACCDOA sequence output which encodes both sound event detection (SED) and direction of arrival (DOA) estimates in the continuous 3D space as a multi-output regression task. Each sound event class in the Multi-ACCDOA output is represented by three regressors that estimate the Cartesian coordinates x, y and z axes of the DOA around the microphone. If the vector length represented by x, y and z coordinates are greater than 0.5, the sound event is considered to be active, and the corresponding x, y, and z values are considered as its predicted DOA.
The figure below visualizes the SELDnet input and outputs for one of the recordings in the dataset. The horizontal-axis of all sub-plots for a given dataset represents the same time frames, the vertical-axis for spectrogram sub-plot represents the frequency bins, vertical-axis for SED reference and prediction sub-plots represents the unique sound event class identifier, and for the DOA reference and prediction sub-plots, it represents the distances along the Cartesian axes. The figures represents each sound event class and its associated DOA outputs with a unique color. Similar plot can be visualized on your results using the provided script.
Similar to previous editions of the challenge, the participants can choose either or both the versions or the datasets,
These datasets contain recordings from an identical scene, with Ambisonic version providing four-channel First-Order Ambisonic (FOA) recordings while Microphone Array version provides four-channel directional microphone recordings from a tetrahedral array configuration. Both the datasets, consists of a development and evaluation set. All participants are expected to use the fixed splits provided in the baseline method for reporting the development scores. The evaluation set will be released at a later point.
More details on the recording procedure and dataset can be read on the DCASE 2021 task webpage.
The development dataset can be downloaded from the link - Sony-TAu Realistic Spatial Soundscapes 2022 (STARSS22)
This repository consists of multiple Python scripts forming one big architecture used to train the SELDnet.
batch_feature_extraction.py
is a standalone wrapper script, that extracts the features, labels, and normalizes the training and test split features for a given dataset. Make sure you update the location of the downloaded datasets before.parameter.py
script consists of all the training, model, and feature parameters. If a user has to change some parameters, they have to create a sub-task with unique id here. Check code for examples.cls_feature_class.py
script has routines for labels creation, features extraction and normalization.cls_data_generator.py
script provides feature + label data in generator mode for training.seldnet_model.py
script implements the SELDnet architecture.SELD_evaluation_metrics.py
script implements the metrics for joint evaluation of detection and localization.train_seldnet.py
is a wrapper script that trains the SELDnet. The training stops when the SELD error (check paper) stops improving.cls_compute_seld_results.py
script computes the metrics results on your DCASE output format files. You can switch between using polar or Cartesian based scoring. Ideally both should give identical results.Additionally, we also provide supporting scripts that help analyse the results.
visualize_seldnet_output.py
script to visualize the SELDnet outputThe provided codebase has been tested on python 3.8.11 and torch 1.10.0
In order to quickly train SELDnet follow the steps below.
For the chosen dataset (Ambisonic or Microphone), download the respective zip file. This contains both the audio files and the respective metadata. Unzip the files under the same 'base_folder/', ie, if you are Ambisonic dataset, then the 'base_folder/' should have two folders - 'foa_dev/' and 'metadata_dev/' after unzipping.
Now update the respective dataset name and its path in parameter.py
script. For the above example, you will change dataset='foa'
and dataset_dir='base_folder/'
. Also provide a directory path feat_label_dir
in the same parameter.py
script where all the features and labels will be dumped.
Extract features from the downloaded dataset by running the batch_feature_extraction.py
script. Run the script as shown below. This will dump the normalized features and labels in the feat_label_dir
folder. The python script allows you to compute all possible features and labels. You can control this by editing the parameter.py
script before running the batch_feature_extraction.py
script.
python3 batch_feature_extraction.py
python3 batch_feature_extraction.py 3
python3 batch_feature_extraction.py 7
Finally, you can now train the SELDnet using the default parameters using
python3 train_seldnet.py
Additionally, you can add/change parameters by using a unique identifier \<task-id> in if-else loop as seen in the parameter.py
script and call them as following. Where \<job-id> is a unique identifier which is used for output filenames (models, training plots). You can use any number or string for this.
python3 train_seldnet.py <task-id> <job-id>
In order to get baseline results on the development set for Microphone array recordings using SALSA-lite features and Multi-ACCDOA labels, you can run the following command
python3 train_seldnet.py 7
Similarly, for Microphone array recordings using GCC-PHAT features and Multi-ACCDOA labels, run the following command
python3 train_seldnet.py 6
Finally, for Ambisonic format baseline results, run the following command
python3 train_seldnet.py 3
By default, the code runs in quick_test = True
mode. This trains the network for 2 epochs on only 2 mini-batches. Once you get to run the code sucessfully, set quick_test = False
in parameter.py
script and train on the entire data.
As the SELD evaluation metric we employ the joint localization and detection metrics proposed in [1], with extensions from [2] to support multi-instance scoring of the same class.
There are in total four metrics that we employ in this challenge. The first two metrics are more focused on the detection part, also referred as the location-aware detection, corresponding to the error rate (ER20°) and F-score (F20°) in one-second non-overlapping segments. We consider the prediction to be correct if the prediction and reference class are the same, and the distance between them is below 20°. The next two metrics are more focused on the localization part, also referred as the class-aware localization, corresponding to the localization error (LECD) in degrees, and a localization Recall (LRCD) in one-second non-overlapping segments, where the subscript refers to classification-dependent. Unlike the location-aware detection, we do not use any distance threshold, but estimate the distance between the correct prediction and reference.
The key difference in metrics with previous editions of the challenge is that this year we use the macro mode of computation. We first compute the above four metrics for each of the sound class, and then average them to get the final system performance.
The evaluation metric scores for the test split of the development dataset is given below.
Dataset | ER20° | F20° | LECD | LRCD |
---|---|---|---|---|
Ambisonic (FOA + Multi-ACCDOA) | 0.71 | 21.0 % | 29.3° | 46.0 % |
Microphone Array (MIC-GCC + Multi-ACCDOA) | 0.71 | 18.0 % | 32.2° | 47.0 % |
Note: The reported baseline system performance is not exactly reproducible due to varying setups. However, you should be able to obtain very similar results.
visualize_seldnet_output.py
scriptFor more information on the submission file formats check the website
This repo and its contents have the MIT License.