function [mel,mr] = frq2mel(frq) %FRQ2ERB Convert Hertz to Mel frequency scale MEL=(FRQ) % [mel,mr] = frq2mel(frq) converts a vector of frequencies (in Hz) % to the corresponding values on the Mel scale which corresponds % to the perceived pitch of a tone. % mr gives the corresponding gradients in Hz/mel. % The relationship between mel and frq is given by: % % m = ln(1 + f/700) * 1000 / ln(1+1000/700) % % This means that m(1000) = 1000 % % References: % % [1] S. S. Stevens & J. Volkman "The relation of pitch to % frequency", American J of Psychology, V 53, p329 1940 % [2] C. G. M. Fant, "Acoustic description & classification % of phonetic units", Ericsson Tchnics, No 1 1959 % (reprinted in "Speech Sounds & Features", MIT Press 1973) % [3] S. B. Davis & P. Mermelstein, "Comparison of parametric % representations for monosyllabic word recognition in % continuously spoken sentences", IEEE ASSP, V 28, % pp 357-366 Aug 1980 % [4] J. R. Deller Jr, J. G. Proakis, J. H. L. Hansen, % "Discrete-Time Processing of Speech Signals", p380, % Macmillan 1993 % [5] HTK Reference Manual p73 % % Copyright (C) Mike Brookes 1998 % Version: $Id: frq2mel.m,v 1.7 2010/08/01 08:41:57 dmb Exp $ % % VOICEBOX is a MATLAB toolbox for speech processing. % Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; either version 2 of the License, or % (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You can obtain a copy of the GNU General Public License from % http://www.gnu.org/copyleft/gpl.html or by writing to % Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% persistent k if isempty(k) k=1127.01048; end af=abs(frq); mel = sign(frq).*log(1+af/700)*k; mr=(700+af)/k; if ~nargout plot(frq,mel,'-x'); xlabel(['Frequency (' xticksi 'Hz)']); ylabel(['Frequency (' yticksi 'Mel)']); end