def test_num_ceps(audio, num_ceps): if num_ceps >= 23: with pytest.raises(ValueError) as err: PlpProcessor(num_ceps=num_ceps) assert 'We must have num_ceps <= lpc_order+1' in str(err) else: proc = PlpProcessor(num_ceps=num_ceps) if 0 < proc.num_ceps: feat = proc.process(audio) assert proc.num_ceps == num_ceps == proc.ndims assert feat.shape == (140, num_ceps) proc.use_energy = False feat = proc.process(audio) assert feat.shape == (140, num_ceps) else: with pytest.raises(RuntimeError): proc.process(audio)
def get_plp_dd(wav_fn, norm): """Return the MFCCs with deltas and delta-deltas for a audio file.""" audio = Audio.load(wav_fn) processor = PlpProcessor(sample_rate=audio.sample_rate, window_type="hamming",frame_length=0.025, frame_shift=0.01, low_freq=0, vtln_low=60, vtln_high=7200, high_freq=audio.sample_rate/2) plp_static = processor.process(audio, vtln_warp=1.0) d_processor = DeltaPostProcessor(order=2) plp_deltas = d_processor.process(plp_static) features = np.float64(plp_deltas._to_dict()["data"]) if norm == "cmvn": features = (features - np.mean(features, axis=0)) / np.std(features, axis=0) return features