make_mel_spectrogram

Function make_mel_spectrogram 

Source
pub fn make_mel_spectrogram(
    spectrogram: &[Vec<f64>],
    filterbank: &MelFilterbank,
) -> Vec<Vec<f64>>
Expand description

Computes the Mel spectrogram from a given magnitude or power spectrogram. You need to specify the lower and upper Mel bounds. You also need to specify the number of filters (this determines the size of the Mel spectrum).

This function also returns the associated Mel scale.

ยงExample

use aus::{spectrum, analysis};
let fft_size = 2048;
let audio = aus::read("myfile.wav").unwrap();
let rfft_freqs = spectrum::rfftfreq(fft_size, audio.sample_rate);
let mel_filterbank = analysis::mel::MelFilterbank::new(20.0, 8000.0, 40, &rfft_freqs, true);
let imaginary_spectrogram = spectrum::rstft(&audio.samples[0], fft_size, fft_size / 2, aus::WindowType::Hanning);
let (magnitude_spectrogram, _) = spectrum::complex_to_polar_rstft(&imaginary_spectrogram);
let power_spectrogram = analysis::make_power_spectrogram(&magnitude_spectrogram);
let mel_spectrogram = analysis::mel::make_mel_spectrogram(&power_spectrogram, &mel_filterbank);