[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Frequency to Mel Formula
With respect to Umesh ("Fitting the Mel Scale", 1999), I hadn't
actually got hold of his paper until just now; sure enough, he
compared all the same fits, but started with a different table, from
Stevens and Volkman.
Here are the Stevens and Volkman numbers:
f_stevens = [40; 161; 200; 404; 693; 867; 1000; 2022; 3000; 3393;
4109; 5526; 6500; 7743; 12000]
mel_beranek = [43; 257; 300; 514; 771; 928; 1000; 1542; 2000; 2142;
2314; 2600; 2771; 2914; 3229;
Here are the Fant numbers that I used:
% Baranek's tabulated data that Fant said fit log(1 + f/1000):
f_baranek = [20; 160; 394; 670; 1000; 1420; 1900; 2450; 3120; 4000;
5100; 6600; 9000; 14000];
mel_beranek = (0:250:3250)';
I've added the Stevens table points on the svg plot at
The Umesh curve is closer to they data they fitted, naturally.
Looks like the Fant numbers are indeed from Beranek:
Jim Beauchamp kindly asked the right questions that helped me clarify this.
Thanks again for your great explanations of this complicated stuff.
All that notwithstanding, I'm still poking around at why we have
these two different mel scales, with breaks at 700 and 1000. So I
got hold of Fant's book, which has Baranek's data table in it, and
plotted up some comparisons.
The "Mel 1000" curve comes pretty close to the Baranek table data up
through about 4 kHz, then diverges far from it above that. The "Mel
700" curve misses pretty badly around 2-6 kHz, but fits better on
average if you count the highest frequencies.
The "Umesh" curve, f / (0.741 + 0.00024*f), doesn't fit particularly
well, but has a good shape, so I did a "fit" and got f / (0.759 +
I also did a mel-type fit, and found a broad optimum for the corner
around 711.5 Hz (under the constraint that 1000 Hz maps to 1000,
which I should probably have tried relaxing, but didn't).
Anyway, here's my theory: Fant fitted to the frequency range he
cared about, which probably only went to 4 kHz or so. And then
someone else probably did a fit to the same Baranek table over the
whole range, and got the 700 number (the plot shows that the 711.5
point are pretty much right on the 700 curve). And that's why we
see Baranek referenced so much, maybe?
I also looked at goodness of fit (sum squared error in mel space)
including all the frequencies in the Fant/Baranek table. It turns
out that the Umesh type fit has only 1/8 as much error as the
mel-like fit, due to the Bark-like curvature at the high-frequency
So for people who like Baranek's table (assuming Fant has a true
copy of it), the Umesh type function should be a win. But I don't
think that function extends well to the larger log-like range that
we find in the ERB and Greenwood type curves, which are the ones
that make more sense in auditory-based applications.
That's my theory and I'm sticking to it.