[Speex-dev] FFT Resampler spectrograms

Thorvald Natvig thorvald at natvig.com
Fri May 30 18:35:05 PDT 2008


Using the following MATLAB snippet:

fnames={'chirp','perfect','block','filter'}

for k=1:length(fnames)
    fn=fnames{k};
    myfile=fopen([fn, '.fl'], 'r', 'ieee-le');
    x=fread(myfile, Inf, 'float32', 0, 'ieee-le');
    fclose(myfile);
    X=specgram(x,2048,1,kaiser(2048,14));
    spectrogram_floor=-96;
    pcolor(max(spectrogram_floor,20*log10(abs(X(end:-1:1,:)))));
    shading flat
    colorbar
    print('-dpng','-r300', [fn, '.png'])
end
['Done']

I've posted the output for the filter-based and block-based resampler at 
different qualities at http://www.mumble.info/resamp/
The resampling was 96khz => 44.1khz.

"chirp.png" is the original (unresampled)
"perfect.png" is the result of a FFT/chop/iFFT of the whole file as one.

"filter0.png" to "filter10.png" is the "normal" resampler at different 
quality levels.
"block+X.png" is the block-based resampler with X samples overlap (and 
960 samples (10ms) base block size). Note that block+0 and block+96 are 
not legal values for the resampler, they're just there to see how bad it 
can get. The first "legal" value is block+320, which has 3.3ms delay (on 
top of the 10ms block).



More information about the Speex-dev mailing list