[][src]Function mel_filter::mel

pub fn mel<T: Float + NumOps>(
    sr: usize,
    n_fft: usize,
    n_mels: Option<usize>,
    fmin: Option<T>,
    fmax: Option<T>,
    htk: bool,
    norm: NormalizationFactor
) -> Vec<Vec<T>>

librosa.filters.mel. Returns 2D array, of shape n_mels * (1 + n_fft/2), Currently is Vec<Vec<T>>.

Arguments

  • sr - Sampling rate of the incoming signal
  • n_fft - number of FFT components
  • n_mels - number of Mel bands to generate, default 128
  • fmin - lowest frequency (in Hz), default 0.0
  • fmax - highest frequency (in Hz) If None, use fmax = sr / 2.0
  • htk - use HTK formula instead of Slaney
  • norm if NormalizationFactor::One, divide the triangular mel weights by the width of the mel band (area normalization). Otherwise, leave all the triangles aiming for a peak value of 1.0

Examples

use mel_filter::{mel, NormalizationFactor};
let melfb = mel::<f64>(22050, 2048, None, None, None, false, NormalizationFactor::One);
assert_eq!(melfb.len(), 128);
assert_eq!(melfb[0].len(), 1025);
assert_eq!(&melfb[0][..6], &[0f64, 0.016182853208219942, 0.032365706416439884, 0.028990088037379964, 0.012807234829160026, 0.][..], "begin six element");
assert_eq!(&melfb[1][..9], &[0f64, 0., 0., 0.009779235793639925, 0.025962089001859864, 0.035393705451959974, 0.01921085224374004, 0.003027999035520103, 0.][..], "second nine element");
// melfb = [[ 0.   ,  0.016, ...,  0.   ,  0.   ],
//          [ 0.   ,  0.   , ...,  0.   ,  0.   ],
//          ...,
//          [ 0.   ,  0.   , ...,  0.   ,  0.   ],
//          [ 0.   ,  0.   , ...,  0.   ,  0.   ]]
// Clip the maximum frequency to 8KHz
let melfb = mel(22050, 2048, None, None, Some(8000.), false, NormalizationFactor::One);
println!("{:?}", &melfb[0][..10]);
assert_eq!(melfb.len(), 128);
assert_eq!(melfb[0].len(), 1025);
assert_eq!(&melfb[0][..6], &[0f64, 0.01969187633619885, 0.0393837526723977, 0.026457473399387796, 0.006765597063188946, 0.][..], "begin six element");
assert_eq!(&melfb[1][..9], &[0f64, 0., 0., 0.016309077804604378, 0.036000954140803225, 0.029840271930982275, 0.010148395594783432, 0., 0.][..], "second nine element");
// melfb = [[ 0.  ,  0.02, ...,  0.  ,  0.  ],
//          [ 0.  ,  0.  , ...,  0.  ,  0.  ],
//          ...,
//          [ 0.  ,  0.  , ...,  0.  ,  0.  ],
//          [ 0.  ,  0.  , ...,  0.  ,  0.  ]])