Crate mel [−] [src]
example of using the mel create to build up a filter matrix that can then be used to repeatedly and efficiently (in-place) transform a huge (2048) power spectrum vector to a mel filtered vector of lower dimension (100).
extern crate mel; extern crate nalgebra; use nalgebra::{DMatrix, DVector}; fn main() { let sample_rate = 44100; let window_size = 4096; let power_spectrum_size = window_size / 2; let filter_count = 100; // build up the mel filter matrix let mut mel_filter_matrix = DMatrix::<f64>::zeros(filter_count, power_spectrum_size); for (row, col, coefficient) in mel::enumerate_mel_scaling_matrix( sample_rate, window_size, power_spectrum_size, filter_count, ) { mel_filter_matrix[(row, col)] = coefficient; } let power_spectrum_vector = DVector::<f64>::from_element(power_spectrum_size, 1.); let mut mel_vector = DVector::<f64>::zeros(filter_count); // mel_vector <- mel_filter_matrix * power_spectrum_vector mel_filter_matrix.mul_to(&power_spectrum_vector, &mut mel_vector); // mel_vector now contains a mel filtered version // of the power_spectrum_vector! }
Structs
MelScalingMatrixEnumerator |
col index changes fastest |
Functions
enumerate_mel_scaling_matrix |
one filter per row |
enumerate_mel_scaling_matrix_base |
(or many vectors at once in form of a matrix) to transform that vector into mel space. efficiently rows are mel cols are freq TODO get frequency index pair for nth mel TODO enumerate scaling vector TODO which dimension first |
hertz_from_mel | |
mel_from_hertz |