forked from danielkrause/DCASE2022-data-generator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample_script_DCASE2022.py
68 lines (52 loc) · 2.64 KB
/
example_script_DCASE2022.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import sys
import numpy as np
from db_config import DBConfig
from metadata_synthesizer import MetadataSynthesizer
from audio_synthesizer import AudioSynthesizer
from audio_mixer import AudioMixer
import pickle
from generation_parameters import get_params
##############
############## THIS IS AN EXEMPLARY SCRIPT GENERATING DATA
############## SIMILAR TO THE DCASE2022 dataset
##############
# use parameter set defined by user
task_id = '1'
params = get_params(task_id)
### Create database config based on params (e.g. filelist name etc.)
db_config = DBConfig(params)
rooms2fold = [x for x in db_config._rooms2fold]
# LOAD DB-config which is already done
db_handler = open('db_config_fsd.obj','rb')
db_config = pickle.load(db_handler)
db_config._rooms2fold = rooms2fold
db_handler.close()
file = open("rirdata_dict.pkl",'rb')
db_config._rirdata = pickle.load(file)
file.close()
#create mixture synthesizer class
noiselessSynth = MetadataSynthesizer(db_config, params, 'target_noiseless')
#create mixture targets
mixtures_target, mixture_setup_target, foldlist_target = noiselessSynth.create_mixtures()
#calculate statistics and create metadata structure
metadata, stats = noiselessSynth.prepare_metadata_and_stats()
#write metadata to text files
noiselessSynth.write_metadata()
if not params['audio_format'] == 'both': # create a dataset of only one data format (FOA or MIC)
#create audio synthesis class and synthesize audio files for given mixtures
noiselessAudioSynth = AudioSynthesizer(params, mixtures_target, mixture_setup_target, db_config, params['audio_format'])
noiselessAudioSynth.synthesize_mixtures()
#mix the created audio mixtures with background noise
audioMixer = AudioMixer(params, db_config, mixtures_target, mixture_setup_target, params['audio_format'], 'target_noisy')
audioMixer.mix_audio()
else:
#create audio synthesis class and synthesize audio files for given mixtures
noiselessAudioSynth = AudioSynthesizer(params, mixtures_target, mixture_setup_target, db_config, 'foa')
noiselessAudioSynth.synthesize_mixtures()
noiselessAudioSynth2 = AudioSynthesizer(params, mixtures_target, mixture_setup_target, db_config, 'mic')
noiselessAudioSynth2.synthesize_mixtures()
#mix the created audio mixtures with background noise
audioMixer = AudioMixer(params, db_config, mixtures_target, mixture_setup_target, 'foa', 'target_noisy')
audioMixer.mix_audio()
audioMixer2 = AudioMixer(params, db_config, mixtures_target, mixture_setup_target, 'mic', 'target_noisy')
audioMixer2.mix_audio()