Вы находитесь на странице: 1из 16

BAB 2

KAJIAN TEORI
2.1.1 FFT (Fast Fourier Transform)
Menurut Tanudjaja dalam Mulyani (2017) Fast Fourier Transform (FFT)
adalah suatu algoritma transformasi Fourier yang dikembangkan dari algoritma
Discrete Fourier Transform (DFT). Dengan metode Fast Fourier Transform,
kecepatan komputasi dari perhitungan transformasi Fourier dapat ditingkatkan.
Pada Discrete Fourier Transform proses komputasi memerlukan looping sehingga
banyak memerlukan memori. Dengan menerapkan metode Fast Fourier Transform
perhitungan Discrete Fourier Transform dapat dipersingkat dengan cara mereduksi
proses looping. Ada dua macam metode Fast Fourier Transform yaitu Decimation
In time (DIT) dan metode Decimation In Frekuensi (DIF) yang memiliki fungsi
yang sama yaitu untuk mentransformasi sinyal menjadi frekuensi dasarnya. Fast
Fourier Transform (FFT) adalah algoritma yang mengimplementasikan Discrete
Fourier Transform (DFT) yang dioperasikan pada sebuah sinyal waktu diskrit yang
terdiri dari sampel menggunakan persamaan berikut.
[𝑘]=Σ[𝑖].cos (2𝜋𝑘𝑖𝑁)𝑁−1𝑖=0
𝐼𝑚𝑎[𝑘]=−Σ𝑥[𝑖].sin (2𝜋𝑘𝑖𝑁)𝑁−1𝑖=0
Keterangan:
𝑁 = jumlah data

𝑘 = 0,1,2,…,𝑁2
(𝑖) = data pada titik ke-𝑖

Lalu, untuk menghitung nilai magnitude dari FFT. Persamaan yang


digunakan adalah persamaan berikut :
|[𝑘]|=√(𝑅𝑒𝑎𝑙𝑋[𝑘])2+(𝐼𝑚𝑎𝑗𝑖𝑛𝑒𝑟𝑋[𝑘])2
Maka didapatlah nilai magnitude yang diinginkan.
2.1.2 AVERAGE ENERGY
Menurut Tamatdjika dan Hardjoko (2014) Average Energy Menampilkan
time-domain atau time-amplitude yang merupakan dasar dari teknik pengenalan
signal, maka digunakan Average Energy dan Zero Crossing Rate sebagai rumusan.
Average Energy mengindikasikan besar kecil suara pada signal audio. Dalam
kalkulasi yang simpel, dengan rumus :
∑𝑛−1
𝑛=0 𝑋 (𝑁)
2
E=
𝑁
Keterangan :
E = Energi rata-rata pada potongan audio.
N = Jumlah total sampel dalam potongan audio.
X(n) = Nilai dari sampel ke n.

Di mana E adalah Everage Energy pada satuan audio, N adalah Total nomor
sampel di dalam satuan audio dan x(n) adalah nilai sampel pada sampel n.

2.1.3 SILENT RATIO


Menurut Tamatdjika dan Hardjoko (2014) Silent Ratio (SR) adalah jumlah
dari banyaknya sampel yang dibawah nilai treshold tertentu, dibagi dengan
banyaknya sampel . untuk menghitung Silent Ratio yaitu:
∑𝑆
SR =
∑𝑙

Keterangan:
s = Periode keheningan dalam potongan file audio
l = Panjang dari tiap potongan file audio

Gambar menunjukkan Silent Ratio suara manusia


Sumber: Tamatdjika dan Hardjoko(2014)

Gambar 2 menunjukkan SR. Masukkan audio, apabila berpusat tinggi maka


dikenal sebagai musik. Apabila tidak, maka perkataan dan musik. Apabila rasio
keheningan tinggi, maka bukan musik, tetapi perkataan dan solo musik.

2.1.4 SUARA MANUSIA


Menurut Muhammad Nuh Al-Azhar (2011) suara dihasilkan melalui proses
Generation dan Filtering. Pada proses Generation, suara pertama kali diproduksi
melalui bergetarnya pita suara yang berada di larynx untuk menghasilkan bunyi
periodik. Bunyi periodik yang bersifat konstan tersebut kemudian difilterisasi
melalui vocal tract (juga disebut dengan istilah resonator suara atau articulator)
yang terdiri dari lidah, gigi, bibir, langit-langit mulut dan lain-lain sehingga bunyi
tersebut dapat menjadi bunyi keluaran berupa bunyi vokal dan atau bunyi konsonan
yang membentuk kata-kata yang memiliki arti yang nantinya dapat dianalisa untuk
identifikasi suara.
Untuk dapat diidentifikasi, ada beberapa karakteristik suara yang dapat
dijadikan parameter untuk membedakan antara orang yang satu dengan yang
lainnya. Menurut Nilsson dan Ejnarsson (2002) sinyal suara dan karakteristiknya
dapat direpresentasikan ke dalam dua domain yang berbeda, yaitu domain waktu
dan domain frekuensi. Sinyal suara merupakan sinyal yang bervariasi lambat
sebagai fungsi waktu, dalam hal ini ketika diamati pada durasi yang sangat pendek
(5 sampai 100 m) karakteristiknya masih stasioner. Tetapi apabila diamati dalam
durasi yang lebih panjang (> 1/5 detik) karakteristik sinyalnya berubah untuk
merefleksikan suara yang keluar dari pembicara.
Gambar . Struktur bagian Pita suara manusia

Gambar 2.1 Human Vocal Tract


BAB III
METODE PEMBUATAN
3.1 Aplikasi Identifikasi Suara Manusia Dengan Silent Ratio dan Average Energy
di GUI Matlab
1. Buka program matlab 2016

Gambar . Tampilan matlab awal


2. Pilih home, kemudian klik New, kemudian klik App

Gambar. Tampilan matlab App


3. Pilih Guide untuk membuat aplikasi GUI

Gambar 11. Tampilan aplikasi perintah program Guide matlab


4. Kemudian muncul Jendela pilihan , lalu pilih Create New Guide dan pilih
Blank GUI (default)

Gambar. Tampilan Blank GUI


5. Kemudian Pilih OK dan muncul GUIDE baru seperti berikut

Gambar Tampilan GUIDE baru

6. Kemudian pilih tombol Button-Button berikut


No Button Keterangan Fungsi
1 Panel 1 Tittle : Input Sebagai petunjuk garis besar
Color : coklat fungsi-fungsi button didalamnya
2 Panel 2 Tittle : MENU Sebagai petunjuk garis besar
Color : coklat fungsi- fungsi button didalamnya
3 Panel 3 Tittle : notes Sebagai petunjuk penggunaan
Color : coklat aplikasi matlab
4 Axes 1 Color : putih Menampilkan grafik suara
5 Axes 2 Color : putih Menampilkan grafik FFT
6 Axes 3 Color : putih Menampilkan grafik Average
energy
No Button Keterangan Fungsi
7 Pushbutton 1 String : REKAM Button perintah untuk merekam
suara
8 Pushbutton 2 String : PUTAR Button perintah untuk memutar
kembali suara yang direkam
9 Pushbutton 3 String : RESET Button perintah untuk kembali ke
pengaturan awal atau kembali
memasaukkan nilai yang
dikehendaki
10 Pushbutton 4 String : EXIT Button perintah untuk menutup
aplikasi matlab
11 Static text 1 String : freq Button pemberi keterangan pada
Background color : edit 1
coklat
12 Static text 2 String : t Button pemberi keterangan pada
Background color : edit 2
coklat
13 Static text 3 String : nBits Button pemberi keterangan pada
Background color : edit 3
coklat
14 Static text 4 String : nChannels Button pemberi keterangan pada
Background color : edit 4
coklat
15 Static text 5 String : judul Button pemberi keterangan pada
aplikasi judul aplikasi
Background color :
cream merah
16 Static text 6 String : judul axes Button pemberi keterangan pada
1 axis 1
Background color :
cream merah
17 Static text 7 String : judul axes Button pemberi keterangan pada
2 axis 1
Background color :
cream merah
18 Static text 8 String : judul axes Button pemberi keterangan pada
3 axis 1
Background color :
cream merah
19 Static text 9 String : silent ratio Button pemberi keterangan pada
Background color : edit 5
coklat
20 Static text 10 String : average Button pemberi keterangan pada
energy edit 6
Background color :
coklat
21 Static text 11 String : attention Button pemberi keterangan pada
Background color : panel 1
ungu muda
22 Static text 12 String : created Button pemberi keterangan pada
Background color : panel 2
ungu muda
No Button Keterangan Fungsi
23 Edit 1 String : Sebagai tempat pengetikan nilai
dikosongkan freq yang diinginkan
24 Edit 2 String : Sebagai tempat pengetikan nilai t
dikosongkan yang diinginkan
25 Edit 3 String : Sebagai tempat pengetikan nilai
dikosongkan nBits yang diinginkan
26 Edit 4 String : Sebagai tempat pengetikan nilai
dikosongkan nChannels yang diinginkan
27 Edit 5 String : Sebagai tempat keluarnya hasil
dikosongkan silent ratio
28 Edit 6 String : Sebagai tempat keluarnya hasil
dikosongkan average energy
29 Edit 7 String : Sebagai tempat keluarnya perintah
dikosongkan dari button rekam dalam waktu
tertentu
30 Listbook 1 String : Sebagai tempat variasi mengganti
pemotongan sinyal ganti nilai X dan Y,
one - Pemotongan sinyal untuk
two memberi keterangan pilihan nilai x
three dan y dan untuk mode 1 pada
four koding
five
- one untuk menampilkan nilai
grafik FFT dan Average Energy
pada baris 0-0.2 dan untuk mode 2
pada koding

- two untuk menampilkan nilai


grafik FFT dan Average Energy
pada baris 0.2-0.4 dan untuk mode
3 pada koding

- three untuk menampilkan nilai


grafik FFT dan Average Energy
pada baris 0.4-0.6 dan untuk mode
4 pada koding

- four untuk menampilkan nilai


grafik FFT dan Average Energy
pada baris 0.6-0.8 dan untuk mode
5 pada koding

- five untuk menampilkan nilai


grafik FFT dan Average Energy
pada baris 0.2-0.4 dan untuk mode
6 pada koding
31 Latar guide Color: merah Mengubah warna latar menjadi
cream merah
7. Kemudian akan menjadi aplikasi sebagi berikut.

Gambar Tampilan aplikasi GUIDE edentifikasi suara manusia


8. Lalu save dengan nama sesuai yang dikendaki

Gambar. Tampilan save GUIDE


9. Lalu muncul koding sebagai berikut.

Tampilan coding GUIDE

10. Pada perintah pushbutton 1 tulis perintah sebagai berikut.

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)
Fs=str2num(get(handles.edit1,'string'));
nBits=str2num(get(handles.edit3,'string'));
nChannels=str2num(get(handles.edit4,'string'));
t=str2num(get(handles.edit2,'string'));

recObj = audiorecorder(Fs,nBits,nChannels);
set(handles.edit7,'String','Silahkan bicara..')
recordblocking(recObj,t);
set(handles.edit7,'String','Berhenti bicara..')

myRecording = getaudiodata(recObj);
handles.audio=myRecording
axes(handles.axes1)
plot(myRecording)
grid on
title('Sinyal Suara Masukan')

handles.Fs = Fs;
handles.myRecording = myRecording;
guidata(hObject,handles);
11. Pada pushbutton 2 tulis perintah sebagai berikut.

myRecording = handles.myRecording;
Fs = handles.Fs;

sound(myRecording,Fs);

12. Pada pushbutton 3 tulis perintah sebagai berikut.


axes(handles.axes1)
cla reset
axes(handles.axes2)
cla reset
axes(handles.axes3)
cla reset
set(handles.edit1,'String',[])
set(handles.edit2,'String',[])
set(handles.edit3,'String',[])
set(handles.edit4,'String',[])
set(handles.edit5,'String',[])
set(handles.edit6,'String',[])
set(handles.edit7,'String',[])

13. Pada pushbutton 4 tulis perintah sebagai berikut.


close

14. Pada Listbox tulis perintah sebagai berikut.


% --- Executes on selection change in listbox1.
function listbox1_Callback(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
A = handles.axes1;
idMode = get (hObject,'value');
%untuk menampilkan segmen grafik pada selang x1;y1
%figure,plot(y)
Fs=str2num(get(handles.edit1,'string'));
myRecording=handles.audio;
waktu=1;
t=0:1/Fs:waktu; %sesuaikan dengan waktu
t(length(t))=[1];
if idMode == 1
x1=find(t==0);
y1=find(t==0);
t1=t(x1:y1);
y1=myRecording(x1:y1);
pemotongansinyal=A(0:0);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on
sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
fre
k=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));

set(handles.edit6,'string',strcat(num2str(avarage_energy)));

elseif idMode == 2
x1=find(t==0);
y1=find(t==0.2);
t1=t(x1:y1);
y1=myRecording(x1:y1);
one=A(0:0.2);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on

sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));

set(handles.edit6,'string',strcat(num2str(avarage_energy)));

elseif idMode == 3
x1=find(t==0.2);
y1=find(t==0.4);
t1=t(x1:y1);
y1=myRecording(x1:y1);
two=A(0.2:0.4);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on

sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));

set(handles.edit6,'string',strcat(num2str(avarage_energy)));

elseif idMode == 4
x1=find(t==0.4);
y1=find(t==0.6);
t1=t(x1:y1);
y1=myRecording(x1:y1);
three=A(0.4:0.6);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on

sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));

set(handles.edit6,'string',strcat(num2str(avarage_energy)));

elseif idMode == 5
x1=find(t==0.6);
y1=find(t==0.8);
t1=t(x1:y1);
y1=myRecording(x1:y1);
four=A(0.6:0.8);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on

sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));

set(handles.edit6,'string',strcat(num2str(avarage_energy)));
elseif idMode == 6
x1=find(t==0.8);
y1=find(t==1.0);
t1=t(x1:y1);
y1=myRecording(x1:y1);
five=A(0.8:1.0);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on

sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));

set(handles.edit6,'string',strcat(num2str(avarage_energy)));
end

15. Lalu klik RUN untuk mencoba hasil

Gambar Tampilan RUN GUIDE


16. Lalu tampilah hasil sebagi berikut,

Gambar. Tampilan aplikasi identifikasi suara manusia pada GUIDE

17. Kemudian cobakanlah untuk mengecek berhasil atau tidak,

Gambar . Tampilan percobaan aplikasi identifikasi suara manusia pada GUIDE

Catatan: pada langkah awalnya diisi dulu edit text pada freq, t, nBIts dan
nChannels baru lah diRun dna Rekam ,selanjutnya untuk mendapatkan grafik sient
Ratio dan Average energy serta nilainya tekan Listbox oen,two,three, four dan five
hal ini dimaksudkan agar menghindari kesalahan yang terjadi pada sistem.

Вам также может понравиться