44from torchaudio .datasets import iemocap
55from torchaudio_unittest .common_utils import get_whitenoise , save_wav , TempDirMixin , TorchaudioTestCase
66
7- LABELS = ["neu" , "hap" , "ang" , "sad" , "exc" , "xxx" ]
7+ LABELS = ["neu" , "hap" , "ang" , "sad" , "exc" , "fru" , " xxx" ]
88SAMPLE_RATE = 16000
99
1010
@@ -21,8 +21,6 @@ def _save_wav(filepath: str, seed: int):
2121
2222def _save_label (label_folder : str , filename : str , wav_stem : str ):
2323 label = random .choice (LABELS )
24- if label == "exc" :
25- label = "hap"
2624 line = f"[xxx]\t { wav_stem } \t { label } \t [yyy]"
2725 filepath = os .path .join (label_folder , filename )
2826
@@ -40,19 +38,22 @@ def _get_samples(dataset_dir: str, session: int):
4038 os .makedirs (wav_folder , exist_ok = True )
4139 os .makedirs (label_folder , exist_ok = True )
4240
43- samples = []
4441 wav_stems = []
4542 for i in range (5 ):
4643 for g in ["F" , "M" ]:
47- speaker = f"Ses0{ session } { g } "
48- subfolder = f"{ speaker } _impro0{ i } "
49- subfolder_path = os .path .join (wav_folder , subfolder )
50- os .makedirs (subfolder_path , exist_ok = True )
51-
52- for j in range (5 ):
53- wav_stem = f"{ subfolder } _F00{ j } "
54- wav_stems .append (wav_stem )
55-
44+ for utt in ["impro" , "script" ]:
45+ speaker = f"Ses0{ session } { g } "
46+ subfolder = f"{ speaker } _{ utt } 0{ i } "
47+ subfolder_path = os .path .join (wav_folder , subfolder )
48+ os .makedirs (subfolder_path , exist_ok = True )
49+
50+ for j in range (5 ):
51+ wav_stem = f"{ subfolder } _F00{ j } "
52+ wav_stems .append (wav_stem )
53+
54+ all_samples = []
55+ impro_samples = []
56+ script_samples = []
5657 wav_stems = sorted (wav_stems )
5758 for wav_stem in wav_stems :
5859 subfolder = wav_stem [:- 5 ]
@@ -64,31 +65,43 @@ def _get_samples(dataset_dir: str, session: int):
6465 if label == "xxx" :
6566 continue
6667 sample = (wav , SAMPLE_RATE , wav_stem , label , speaker )
67- samples .append (sample )
68+ all_samples .append (sample )
69+
70+ if "impro" in subfolder :
71+ impro_samples .append (sample )
72+ else :
73+ script_samples .append (sample )
6874
69- return samples
75+ return all_samples , script_samples , impro_samples
7076
7177
7278def get_mock_dataset (dataset_dir : str ):
7379 os .makedirs (dataset_dir , exist_ok = True )
7480
75- samples = []
81+ all_samples = []
82+ script_samples = []
83+ impro_samples = []
7684 for session in range (1 , 4 ):
77- samples += _get_samples (dataset_dir , session )
78- return samples
85+ samples = _get_samples (dataset_dir , session )
86+ all_samples += samples [0 ]
87+ script_samples += samples [1 ]
88+ impro_samples += samples [2 ]
89+ return all_samples , script_samples , impro_samples
7990
8091
8192class TestIemocap (TempDirMixin , TorchaudioTestCase ):
8293 root_dir = None
8394 backend = "default"
8495
85- samples = []
96+ all_samples = []
97+ script_samples = []
98+ impro_samples = []
8699
87100 @classmethod
88101 def setUpClass (cls ):
89102 cls .root_dir = cls .get_base_temp_dir ()
90103 dataset_dir = os .path .join (cls .root_dir , "IEMOCAP" )
91- cls .samples = get_mock_dataset (dataset_dir )
104+ cls .all_samples , cls . script_samples , cls . impro_samples = get_mock_dataset (dataset_dir )
92105
93106 def _testIEMOCAP (self , dataset , samples ):
94107 num_samples = 0
@@ -98,6 +111,14 @@ def _testIEMOCAP(self, dataset, samples):
98111
99112 assert num_samples == len (samples )
100113
101- def testIEMOCAPDataset (self ):
114+ def testIEMOCAPFullDataset (self ):
102115 dataset = iemocap .IEMOCAP (self .root_dir )
103- self ._testIEMOCAP (dataset , self .samples )
116+ self ._testIEMOCAP (dataset , self .all_samples )
117+
118+ def testIEMOCAPScriptedDataset (self ):
119+ dataset = iemocap .IEMOCAP (self .root_dir , utterance_type = "scripted" )
120+ self ._testIEMOCAP (dataset , self .script_samples )
121+
122+ def testIEMOCAPImprovisedDataset (self ):
123+ dataset = iemocap .IEMOCAP (self .root_dir , utterance_type = "improvised" )
124+ self ._testIEMOCAP (dataset , self .impro_samples )
0 commit comments