def run(exe_path, scp_path, out_dir, wave_len, num_outputs, remove_files, log_level): logging.basicConfig(level=log_level) for i in range(num_outputs): inputs = { 'blackman_coeff': '%.4f' % (random.random() * 5), 'dither': '0', 'energy_floor': '%.4f' % (random.random() * 5), 'frame_length': '%.4f' % (float(random.randint(2, wave_len - 1)) / 16000 * 1000), 'frame_shift': '%.4f' % (float(random.randint(1, wave_len - 1)) / 16000 * 1000), 'preemphasis_coefficient': '%.2f' % random.random(), 'raw_energy': utils.generate_rand_boolean(), 'remove_dc_offset': utils.generate_rand_boolean(), 'round_to_power_of_two': utils.generate_rand_boolean(), 'snip_edges': utils.generate_rand_boolean(), 'subtract_mean': utils.generate_rand_boolean(), 'window_type': utils.generate_rand_window_type() } fn = 'spec-' + ('-'.join(list(inputs.values()))) out_fn = out_dir + fn + '.ark' arg = [exe_path] arg += ['--' + k.replace('_', '-') + '=' + inputs[k] for k in inputs] arg += [scp_path, out_fn] logging.info(fn) logging.info(inputs) logging.info(' '.join(arg)) try: if log_level == 'INFO': subprocess.call(arg) else: subprocess.call(arg, stderr=open(os.devnull, 'wb'), stdout=open(os.devnull, 'wb')) logging.info('success') except Exception: if remove_files and os.path.exists(out_fn): os.remove(out_fn)
def run(exe_path, scp_path, out_dir, wave_len, num_outputs, remove_files, log_level): logging.basicConfig(level=log_level) for _ in range(num_outputs): try: nyquist = 16000 // 2 high_freq = random.randint(1, nyquist) low_freq = random.randint(0, high_freq - 1) vtln_low = random.randint(low_freq + 1, high_freq - 1) vtln_high = random.randint(vtln_low + 1, high_freq - 1) vtln_warp_factor = random.uniform( 0.0, 10.0) if random.random() < 0.3 else 1.0 except Exception: continue if not ((0.0 <= low_freq < nyquist) and (0.0 < high_freq <= nyquist) and (low_freq < high_freq)): continue if not (vtln_warp_factor == 1.0 or ((low_freq < vtln_low < high_freq) and (0.0 < vtln_high < high_freq) and (vtln_low < vtln_high))): continue inputs = { 'blackman_coeff': '%.4f' % (random.random() * 5), 'energy_floor': '%.4f' % (random.random() * 5), 'frame_length': '%.4f' % (float(random.randint(3, wave_len - 1)) / 16000 * 1000), 'frame_shift': '%.4f' % (float(random.randint(1, wave_len - 1)) / 16000 * 1000), 'high_freq': str(high_freq), 'htk_compat': utils.generate_rand_boolean(), 'low_freq': str(low_freq), 'num_mel_bins': str(random.randint(4, 8)), 'preemphasis_coefficient': '%.2f' % random.random(), 'raw_energy': utils.generate_rand_boolean(), 'remove_dc_offset': utils.generate_rand_boolean(), 'round_to_power_of_two': utils.generate_rand_boolean(), 'snip_edges': utils.generate_rand_boolean(), 'subtract_mean': utils.generate_rand_boolean(), 'use_energy': utils.generate_rand_boolean(), 'use_log_fbank': utils.generate_rand_boolean(), 'use_power': utils.generate_rand_boolean(), 'vtln_high': str(vtln_high), 'vtln_low': str(vtln_low), 'vtln_warp': '%.4f' % (vtln_warp_factor), 'window_type': utils.generate_rand_window_type() } fn = 'fbank-' + ('-'.join(list(inputs.values()))) out_fn = out_dir + fn + '.ark' arg = [exe_path] arg += ['--' + k.replace('_', '-') + '=' + inputs[k] for k in inputs] arg += ['--dither=0.0', scp_path, out_fn] logging.info(fn) logging.info(inputs) logging.info(' '.join(arg)) try: if log_level == 'INFO': subprocess.call(arg) else: subprocess.call(arg, stderr=open(os.devnull, 'wb'), stdout=open(os.devnull, 'wb')) logging.info('success') except Exception: if remove_files and os.path.exists(out_fn): os.remove(out_fn)