¸Ã¶ÎÓïÒôµÄÆðʼ֡ΪµÚ63Ö¡£¬½áÊøÖ¡Îª93Ö¡¡£É趨ÁËãÐÖµµÄ¹ýÁãÂÊ¿ÉÒÔ¶ÔÔëÉùµÄ¸ÉÈÅÓÐÒ»¶¨µÄÒÖÖÆ×÷Óá£
ʵÑé¶þ ÓïÒôÐźŵÄÌØÕ÷ÌáÈ¡
Ò»¡¢ÊµÑéÄ¿µÄ
1¡¢ÕÆÎÕÓïÒôÐźŵÄMelµ¹Æ×ÌØÕ÷£¨MFCC£©µÄÇó½â·½·¨ 2¡¢ÕÆÎÕÓïÒôÐźŵÄÏßÐÔÔ¤²âÔÀíÒÔ¼°LPCÌØÕ÷µÄÇó½â·½·¨ ¶þ¡¢ÒÇÆ÷É豸 HP¼ÆËã»ú¡¢MatlabÈí¼þ
Èý¡¢ÊµÑéÔÀí
1¡¢ÏßÐÔÔ¤²â·ÖÎö°üº¬µÄ»ù±¾¸ÅÄһ¸öÓïÒôµÄ³éÑùÄܹ»ÓùýÈ¥Èô¸É¸öÓïÒô³éÑùµÄÏßÐÔ×éºÏÀ´±Æ½ü¡£Í¨¹ýʹʵ¼ÊÓïÒô³éÑùºÍÏßÐÔÔ¤²â³éÑùÖ®¼ä²îÖµµÄƽ·½ºÍ(ÔÚÒ»¸öÓÐÏÞ¼ä¸ôÉÏ)´ïµ½×îСֵ£¬¼´½øÐÐ×îС¾ù·½Îó²îµÄ±Æ½ü£¬Äܹ»¾ö¶¨Î¨Ò»µÄÒ»×éÔ¤²âϵÊý¡£Õâ×éϵÊý¾ÍÄÜ·´Ó³ÓïÒôÐźŵÄÌØÐÔ£¬¿ÉÒÔ×÷ΪÓïÒôÐźÅÌØÕ÷²ÎÊýÀ´ÓÃÓÚÓïÒô±àÂë¡¢ÓïÒôºÏ³ÉºÍÓïÒôʶ±ðµÈÓ¦ÓÃÖС£
ÏßÐÔÔ¤²âÄ£ÐÍÒ»°ã¾ù²ÉÓÃÈ«¼«µãÄ£ÐÍ£¬ÔÚÓïÒôÏßÐÔÔ¤²â·½ÃæµÄÎÄÏ׺Í×ÊÁÏÖУ¬¾ø´ó¶àÊýÇé¿ö²ÉÓÃÈ«¼«µãÄ£ÐÍ¡£ÕâÊÇÒòΪ£º ¢ÙÈ«¼«µãÄ£ÐÍ×îÈÝÒ×¼ÆË㣬¶ÔÈ«¼«µãÄ£ÐÍ×÷²ÎÊý¹À¼ÆÊǶÔÏßÐÔ·½³Ì×é×éµÄÇó½â¹ý³Ì£¬Ïà¶ÔÀ´Ëµ±È½ÏÈÝÒס£¶øÈôÄ£ÐÍÖк¬ÓÐÓÐÏÞ¸öÁãµã£¬ÔòÊǽâ·ÇÏßÐÔ·½³Ì×飬ʵÏÖÆðÀ´·Ç³£À§ÄÑ¡£
¢ÚÈç¹û²»¿¼ÂDZÇÒôºÍĦ²ÁÒô£¬ÄÇôÓïÒôµÄÉùµÀ´«µÝº¯Êý¾ÍÊÇÒ»¸öÈ«¼«µãÄ£ÐÍ¡£
ΪÁËʹģÐ͵ļٶ¨Äܹ»ºÜºÃµØ·ûºÏÓïÒô²úÉúµÄÄ£ÐÍ£¬ÐèÒª¿¼ÂÇÈçÏÂÁ½¸öÒòËØ¡£
1£©Ä£Ðͽ×ÊýµÄÑ¡Ôñ£º½×ÊýpÓ¦Óë¹²Õñ·åµÄ¸öÊýÏàÎǺϣ¬Í¨³£Ò»¶Ô¼«µã¶ÔÓ¦Ò»¸ö¹²Õñ·å£¬Òò´Ëµ±¹²Õñ·åÊýΪ5ʱ£¬Ó¦È¡p=10¡£´ËÍâµ±ÓïÒôΪ±ÇÒôºÍĦ²ÁÒôʱ£¬ÉùµÀ´«µÝº¯Êý²¢²»·ûºÏÈ«¼«µãÄ£Ð͵ļٶ¨£¬¶øÊÇÒ»¸ö¼ÈÓм«µãÓÖÓÐÁãµãµÄÄ£ÐÍ£¬µ«ÓÉÓÚ¿ÉÒÔÓöà¸ö¼«µãÀ´½üËÆÒ»¸öÁãµã£¬ËùÒÔÈÔÈ»¿ÉÒÔ²ÉÓÃÈ«¼«µãÄ£Ð͵ļٶ¨£¬µ«ÒªÇóÓÐ×ã¹»¸ßµÄ½×Êý¡£¿¼Âǵ½ÕâЩÇé¿ö£¬Ò»°ã°´Èçϵķ½Ê½¼ÆËãÄ£Ðͽ×Êý£¬P=2*D+1£¬ÆäÖÐDΪ¹²Õñ·åµÄ¸öÊý¡£
2£©Í¨¹ýÔ¤¼ÓÖØ½øÐÐ¸ßÆµÌáÉý£ºÓÉÓÚÉùÃÅÂö³åÐÎ×´ºÍ¿Ú´½·øÉäµÄÓ°Ï죬ÓïÒôÐÅºÅµÄÆµÆ×ÔÚ×ÜÇ÷ÊÆÉÏ»á²úÉú¸ßƵ˥ÂäµÄÏÖÏ󣬴óԼÿ±¶³ÌϽµ6dB¡£ÒªµÖÏûÕâÒ»Ó°Ï죬ͨ³£ÔÚLPC·ÖÎö֮ǰ²ÉÓÃÒ»¸ö·Ç³£¼òµ¥µÄÒ»½×FIRÂ˲¨Æ÷½øÐÐÔ¤¼ÓÖØÒÔ½øÐÐ¸ßÆµÌáÉý£¬Æä´«µÝº¯ÊýΪ 1??Z?1£¬ÆäÖÐ?ΪԤ¼ÓÖØÏµÊý£¬¶Ô10kHz²ÉÑùµÄÓïÒô£¬Ò»°ãÈ¡?=0.95¡£
2¡¢»ùÓÚMelƵÂʵĵ¹Æ×MFCC£º
¸ù¾ÝÈËÀàÌý¾õϵͳµÄÌØÐÔ£¬È˶ú·Ö±æÉùÒôƵÂʵĹý³ÌÓÌÈçÒ»ÖÖÈ¡¶ÔÊýµÄ¹¦ÄÜ£¬»ùÓÚ´Ë£¬³öÏÖÁËMel ƵÂʵĵ¹Æ×ϵÊý(MFCC) MFCC: Mel-Frequency Cepstrum Coefficients
MFCC ±ÈLPCC£¨ÏßÐÔÔ¤²âµ¹Æ×£©¸üÄÜ·´Ó³Ìý¾õÌØÐÔ£¬ÔÚÓïÒôʶ±ðϵͳÖÐÓÐ׏㷺µÄÓ¦Óã¬ÊÇĿǰ¹«ÈϵÄÐÔÄÜ×îºÃµÄÌØÕ÷²ÎÊýÖ®Ò»
MelƵÂÊÓëʵ¼ÊƵÂʵĶÔÓ¦¹ØÏµÈçÏ£º
Mel?f??f??2595log10?1??700??ÇóMFCC²ÎÊýµÄÁ÷³ÌΪ£º
(1) Ê×ÏÈÈ·¶¨Ã¿Ò»Ö¡ÓïÒô²ÉÑùÐòÁеĵãÊý£¬¶Ôÿ֡ÐòÁнøÐÐÔ¤¼ÓÖØ´¦ÀíºóÔÙ¾¹ýÀëÉ¢FFT±ä»»£¬È¡Ä£µÄƽ·½µÃµ½ÀëÉ¢ÄÜÁ¿Æ×S(n)¡£
(2) ¼ÆËãS(n)ͨ¹ýM¸ö MelÂ˲¨Æ÷ºóËùµÃµÄ¹¦ÂÊÖµ£¬µÃµ½M¸ö²ÎÊýX(k)¡£ (3) ¼ÆËãX(k)µÄ¶ÔÊý£¬µÃµ½ÏàӦƵ´øµÄ¶ÔÊý¹¦ÂÊÆ×£¬²¢ ¼ÆËãÆäÀëÉ¢ÓàÏұ任£¬µÃµ½L¸öMFCCϵÊý¡£ ¼ÆËãʽÈçÏ£º
Cn
M?
?logX(k)cos[?(k?0.5)nk?1Mn?1,2?,LËÄ¡¢ÊµÑéÄÚÈÝ
1¡¢ÕÒµ½»úÆ÷ÖÐÉùÒôÎļþ£¬¶ÔÆä½øÐÐÏàÓ¦µÄÎļþ²Ù×÷¡£ 2¡¢¶Ô¸ÃÉùÒôÎļþÌáÈ¡MFCCÌØÕ÷ºÍLPCÌØÕ÷¡£ 3¡¢»Í¼·ÖÎö¶Ô±ÈʵÑé½á¹û Î塢ʵÑé²½Öè¼°³ÌÐò
1¡¢ÊµÑé²½Ö裺
£¨1£©¶ÁÓïÒôÐźţ»
£¨2£©±àд³ÌÐò½øÐÐLPCÌØÕ÷ÌáÈ¡£» £¨3£©±àд³ÌÐò½øÐÐMFCCÌØÕ÷ÌáÈ¡¡£ 2¡¢ÊµÑéÁ÷³Ì£º
¿ªÊ¼
Ç󵹯ף¬ÌáÈ¡ÌØÕ÷ ÇóÔ¤²âÓïÒôÓëÔʼÓïÒôµÄÎó²îE ÓÃLPCÇóÏßÐÔÔ¤²âϵÊý È¡µÚ60Ö¡ÓïÒôÐźţ¬¼Ó´°´¦Àí ¶ÁÈëÓïÒôÐźŠÓÃspecgramÇ󯵯×
3¡¢ÊµÑé³ÌÐò£º £¨1£©¡¢LPC
I = wavread('C:\\Users\\powertrue\\Desktop\\1.wav');%¶ÁÈëÔʼÓïÒô subplot(3,1,1) plot(I);
title('original wave') %¶ÔÖ¸¶¨Ö¡Î»ÖýøÐмӴ°´¦Àí Q = I';
N = 256; % ´°³¤
Hamm = hamming(N); % ¼Ó´° frame = 60;%ÐèÒª´¦ÀíµÄ֡λÖÃ
M = Q(((frame - 1) * (N / 2) + 1):((frame - 1) * (N / 2) + N)); %Ö¡³¤ÎªN/2
Frame = M .* Hamm';%¼Ó´°ºóµÄÓïÒôÖ¡
[B,F,T] = specgram(I,N,N/2,N);
[m,n] = size(B); for i = 1:m
FTframe1(i) = B(i,frame); end
P =input('please input a P = '); ai = lpc(Frame,P); % ¼ÆËãlpcϵÊý
LP = filter([0 -ai(2:end)],1,Frame); % ½¨Á¢ÓïÒôÖ¡µÄÕýÔò·½³Ì FFTlp = fft(LP);
E = Frame - LP; % Ô¤²âÎó²î
subplot(3,1,2),plot(1:N,Frame,1:N,LP,'-r');grid; title('original and predicted wave') subplot(3,1,3),plot(E);grid; title('predicted error'); pause
fLength(1 : 2 * N) = [M,zeros(1,N)]; Xm = fft(fLength,2 * N); X = Xm .* conj(Xm); Y = fft(X , 2 * N); Rk = Y(1 : N);
PART = sum(ai(2 : P + 1) .* Rk(1 : P)); G = sqrt(sum(Frame.^2) - PART); %ÔöÒæ
A = (FTframe1 - FFTlp(1 : length(F'))) ./ FTframe1 ;
subplot(2,1,1),h=plot(F',20*log(abs(FTframe1)),F',(20*log(abs(1 ./ A))),'-r');grid;
xlabel('frequency/dB');ylabel('amplitude'); title('short_time spetrum');
legend(h,'original fft','lpc fft',2);
subplot(2,1,2),plot(F',(20*log(abs(G ./ A))));grid; xlabel('frequency/dB');ylabel('amplitude'); title('LPC spetrum'); pause
%Çó³öÔ¤²âÎó²îµÄµ¹Æ×
pitch = fftshift(rceps(E)); %rcepsÇóµ¹Æ×º¯Êý