Listing Program
-
Upload
heru-fermana -
Category
Documents
-
view
29 -
download
3
Transcript of Listing Program
a. Listing Program
%input
fs=8000;
[rekam,fs]=wavread('ekstraksiicha');
[r c]=size(rekam);
if r>c
rekam=rekam';
end
%ukuran window
windowsize=200;
%frame blocking
pjdata=length(rekam);
temp=pjdata/windowsize;
jumf=floor(temp);
for m=2:jumf
frame=m;
p=m*windowsize;
n=p-(windowsize-1);
q=(m-1)*windowsize;
for k=n:p
suara(k-q)=rekam(k);
end
%pre-emphasis
for t1=2:windowsize
suara1(t1)=suara(t1)-0.9375*suara(t1-1);
terima(t1)=0.0;
end
suara1(1)=suara(1);
%window hamming
for t2=1:windowsize
winham=0.54-0.46*cos(2*pi*(t2-1)/(windowsize-1));
swin(t2)=4*suara1(t2)*winham*1.5863;
end
%ukuran fft
fftsize=512;
%fft
windowstep=fs/windowsize;
cols=fix((pjdata-windowsize)/frame);
%set nilai awal
datafft=zeros(1,fftsize);
spektrumfrekuensi=zeros(fftsize/2,cols);
%proses penghitungan magnitude FFT
for awal=0:cols-1
datafft(1:windowsize)=suara1*winham;
mgfft=abs(fft(datafft));
spektrumfrekuensi(:,awal+1)=mgfft(1:fftsize/2)';
end
%parameter filter bank
frekuensiterendah=133.3333;
filterliner=13;
spasiliner=66.66666666;
filterlog=27;
spasilog=1.0711703;
%jumlah koefisien spektrum
koefisiencepstrum=13;
%filterbank
filtertotal=filterliner+filterlog;
frekuensi=frekuensiterendah+(0:filterliner-1)*spasiliner;
frekuensi(filterliner+1:filtertotal+2)=frekuensi(filterliner)*spasilog.^(1:filterlog+2);
bawah=frekuensi(1:filtertotal);
tengah=frekuensi(2:filtertotal+1);
atas=frekuensi(3:filtertotal+2);
%set nilai awal
bobotfilter=zeros(filtertotal,fftsize);
mel=zeros(filtertotal,cols);
%proses perhitungan bobot filter bank
tinggisegitiga=2./(atas-bawah);
frekuensifft=(0:fftsize-1)/fftsize*fs;
for chan=1:filtertotal;
bobotfilter(chan,:)=(frekuensifft>bawah(chan)&frekuensifft<=tengah(chan)).*tinggisegitiga(chan).*(frekuensifft-bawah(chan))/(tengah(chan)-bawah(chan))+(frekuensifft>tengah(chan)&frekuensifft<atas(chan)).*(atas(chan)-frekuensifft)/(atas(chan)-tengah(chan));
end
%proses perhitungan output filter bank dalam frekuensi mel
for awal=0:cols-1
earmag=log10(bobotfilter*mgfft');
mel(:,awal+1)=earmag;
end
end
%koefisien cepstrum dg DCT
MDCT=1/sqrt(filtertotal/2)*cos((0:(koefisiencepstrum-1))'*(2*(0:(filtertotal-1))+1)*pi/2/filtertotal);
MDCT(1,:)=MDCT(1,:)*sqrt(2)/2;
%set nilai awal
MFCC=zeros(koefisiencepstrum,cols);
outfb=zeros(filtertotal,cols);
%proses perhitungan MFCC
for awal=0:cols-1
MFCC(:,awal+1)=MDCT*earmag;
outfb(:,awal+1)=MDCT(1:koefisiencepstrum,:)'*MFCC(:,awal+1);
end
%cepstral mean substraction
meanMFCC=mean(MFCC(:,awal+1));
CMS=MFCC(:,awal+1)-meanMFCC;
%Grafik Rekaman Suara Input Analog
figure(1)
plot(rekam),grid
title('Sinyal Suara Rekaman Input');
xlabel('Waktu')
ylabel('Amplitudo')
figure(2)
plot(suara1),grid
title('pre-emphasis');
xlabel('waktu')
zlabel('amplitudo')
figure(3)
plot(swin),grid
title('windowing');
xlabel('cuplikan ke-')
zlabel('magnitude')
figure(4)
plot(spektrumfrekuensi),grid
title('FFT');
xlabel('frekuensi')
zlabel('fft')
figure(5)
plot(bobotfilter),grid
title('filter bank');
xlabel('frekuensi')
zlabel('mFFT')
figure(6)
plot(MDCT),grid
title('mel Frequency Wrapping');
xlabel('indeks filter')
zlabel('')
figure(7)
plot(mel),grid
title('Magnitude FFT');
xlabel('indeks filter')
ylabel('')
%Grafik hasil CMS
figure(8)
plot(CMS),grid
title('Hasil CMS');
xlabel('Waktu')
zlabel('Amplitudo')
CMS(1,:)=[];
CMS=abs(CMS);
CMS=mod(CMS,2);
CMS=round(CMS);
CMS=mod(CMS,2);
Input=mod(CMS,2);
b. Hasil MFCC
c. GrafikHasil rekaman suara
Pre emphasis
Windowing
FFT
Filter blank
Mel frekuensi wrapping
Magnitude FFT
Hasil CMS