def extract_spec(filename, samp_freq, frame_length_ms=25, frame_shift_ms=10, round_to_power_of_two=True, snip_edges=True): ''' extract spectrogram using kaldi args: filename: wav file path samp_freq: sample frequence return: spectrogram: (frame, fre) ''' # get rspec and wspec with open('wav.scp', 'w') as f: f.write('test1 ' + filename + '\n') rspec = 'scp,p:' + 'wav.scp' wspec = 'ark,t:' + 'spec.ark' # set po usage = """Extract MFCC features.Usage: example.py [opts...] <rspec> <wspec>""" po = ParseOptions(usage) po.register_float("min-duration", 0.0, "minimum segment duration") opts = po.parse_args() # set options spec_opts = SpectrogramOptions() spec_opts.frame_opts.samp_freq = samp_freq spec_opts.frame_opts.frame_length_ms = frame_length_ms spec_opts.frame_opts.frame_shift_ms = frame_shift_ms spec_opts.frame_opts.round_to_power_of_two = round_to_power_of_two spec_opts.frame_opts.snip_edges = snip_edges spec_opts.register(po) spec = Spectrogram(spec_opts) sf = spec_opts.frame_opts.samp_freq with SequentialWaveReader(rspec) as reader, MatrixWriter(wspec) as writer: for key, wav in reader: if wav.duration < opts.min_duration: continue assert (wav.samp_freq >= sf) assert (wav.samp_freq % sf == 0) s = wav.data() s = s[:, ::int(wav.samp_freq / sf)] m = SubVector(mean(s, axis=0)) f = spec.compute_features(m, sf, 1.0) f_array = np.array(f) writer[key] = f return f_array
"%(filename)s:%(lineno)s) %(message)s".format(__version__), level=logging.INFO) usage = """Use Principal component analysis for dimension reduction. For the details, Please refer to website: https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html Usage: pca-vector.py [options] <vector-rspecifier> <vector-wspecifier e.g. pca-vector.py scp:data/train/ivector.scp ark:data/train/low_dim_vector.ark see also: two-dim-vector-visual.py """ po = ParseOptions(usage) po.register_int( "output-dim", 2, "dimension of the output vectors." " For visualization, only 2 is allowed in this program. (2 by default)" ) opts = po.parse_args() if (po.num_args() != 2): po.print_usage() sys.exit() vector_rspecifier = po.get_arg(1) vector_wspecifier = po.get_arg(2) isSuccess = pca_vector(vector_rspecifier, vector_wspecifier, output_dim=opts.output_dim) if not isSuccess: sys.exit()