18
18
19
19
import csv
20
20
import os
21
+ import shutil
21
22
import unittest
22
23
23
24
import numpy as np
24
25
from scipy .io import wavfile
25
-
26
26
import tensorflow .compat .v2 as tf
27
27
from tensorflow_examples .lite .model_maker .core .data_util import audio_dataloader
28
28
from tensorflow_examples .lite .model_maker .core .task .model_spec import audio_spec
@@ -106,7 +106,7 @@ class Base(tf.test.TestCase):
106
106
def _get_folder_path (self , sub_folder_name ):
107
107
folder_path = os .path .join (self .get_temp_dir (), sub_folder_name )
108
108
if os .path .exists (folder_path ):
109
- return
109
+ shutil . rmtree ( folder_path )
110
110
tf .compat .v1 .logging .info ('Test path: %s' , folder_path )
111
111
os .mkdir (folder_path )
112
112
return folder_path
@@ -117,7 +117,7 @@ def _get_folder_path(self, sub_folder_name):
117
117
class LoadFromESC50Test (Base ):
118
118
119
119
def test_from_esc50 (self ):
120
- folder_path = self ._get_folder_path ('test_examples_helper ' )
120
+ folder_path = self ._get_folder_path ('test_from_esc50 ' )
121
121
122
122
headers = [
123
123
'filename' , 'fold' , 'target' , 'category' , 'esc10' , 'src_file' , 'take'
@@ -215,7 +215,7 @@ def fullpath(name):
215
215
class LoadFromFolderTest (Base ):
216
216
217
217
def test_spec (self ):
218
- folder_path = self ._get_folder_path ('test_examples_helper ' )
218
+ folder_path = self ._get_folder_path ('test_spec ' )
219
219
write_sample (folder_path , 'unknown' , '2s.wav' , 44100 , 2 , value = 1 )
220
220
221
221
spec = audio_spec .YAMNetSpec ()
@@ -231,6 +231,40 @@ def test_no_audio_files_found(self):
231
231
spec = MockSpec (model_dir = folder_path )
232
232
audio_dataloader .DataLoader .from_folder (spec , folder_path )
233
233
234
+ def test_failed_librosa_imoprt (self ):
235
+ # Temporarily disable resampling.
236
+ audio_dataloader .ENABLE_RESAMPLE = False
237
+
238
+ # Pretend a real import failure.
239
+ try :
240
+ import inexistent_package # pylint: disable=g-import-not-at-top,unused-import
241
+ except (OSError , ImportError ) as e :
242
+ audio_dataloader .error_import_librosa = e
243
+
244
+ try :
245
+ folder_path = self ._get_folder_path ('test_failed_librosa_imoprt' )
246
+
247
+ # No error occured if resampling is not needed.
248
+ write_sample (folder_path , 'background' , '1s.wav' , 44100 , 1 , value = 0 )
249
+ spec = MockSpec (model_dir = folder_path )
250
+ loader = audio_dataloader .DataLoader .from_folder (spec , folder_path )
251
+ self .assertEqual (len (loader ), 1 )
252
+ self .assertEqual (len (list (loader .gen_dataset ())), 1 )
253
+
254
+ # Error occured when resampling is needed.
255
+ write_sample (folder_path , 'command0' , '1.8s.wav' , 4410 , 1.8 , value = 5 )
256
+ spec = MockSpec (model_dir = folder_path )
257
+ loader = audio_dataloader .DataLoader .from_folder (spec , folder_path )
258
+ self .assertEqual (len (loader ), 2 )
259
+ with self .assertRaisesRegexp (tf .errors .UnknownError ,
260
+ 'sudo apt-get install libsndfile1' ):
261
+ _ = list (loader .gen_dataset ())
262
+
263
+ finally :
264
+ # Set it back
265
+ audio_dataloader .ENABLE_RESAMPLE = True
266
+ audio_dataloader .error_import_librosa = None
267
+
234
268
def test_from_folder (self ):
235
269
folder_path = self ._get_folder_path ('test_from_folder' )
236
270
write_sample (folder_path , 'background' , '2s.wav' , 44100 , 2 , value = 0 )
0 commit comments