Pushbutton 1 Tombol “REKAM” Setelah pemilihan nilai segment averaging, k-nearest neighbor KNN, variabel batas
Gambar 4.11. lanjutan Listing program pemanggilan database
elseif b0==0.2 fram==256 suser==1
load db02256
elseif b0==0.3 fram==256 suser==1
load db03256
elseif b0==0.4 fram==256 suser==1
load db04256
elseif b0==0.5 fram==256 suser==1
load db05256
elseif b0==0.2 fram==4 suser==2
load db124
elseif b0==0.3 fram==4 suser==2
load db134
elseif b0==0.4 fram==4 suser==2
load db144
elseif b0==0.5 fram==4 suser==2
load db154
elseif b0==0.2 fram==8 suser==2
load db128
elseif b0==0.3 fram==8 suser==2
load db138
elseif b0==0.4 fram==8 suser==2
load db148
elseif b0==0.5 fram==8 suser==2
load db158
elseif b0==0.2 fram==16 suser==2
load db1216
elseif b0==0.3 fram==16 suser==2
load db1316
elseif b0==0.4 fram==16 suser==2
load db1416
elseif b0==0.5 fram==16 suser==2
load db1516
elseif b0==0.2 fram==32 suser==2
load db1232
Gambar 4.11. lanjutan Listing program pemanggilan database
elseif b0==0.3 fram==32 suser==2
load db1332
elseif b0==0.4 fram==32 suser==2
load db1432
elseif b0==0.5 fram==32 suser==2
load db1532
elseif b0==0.2 fram==64 suser==2
load db1264
elseif b0==0.3 fram==64 suser==2
load db1364
elseif b0==0.4 fram==64 suser==2
load db1464
elseif b0==0.5 fram==64 suser==2
load db1564
elseif b0==0.2 fram==128 suser==2
load db12128
elseif b0==0.3 fram==128 suser==2
load db13128
elseif b0==0.4 fram==128 suser==2
load db14128
elseif b0==0.5 fram==128 suser==2
load db15128
elseif b0==0.2 fram==256 suser==2
load db12256
elseif b0==0.3 fram==256 suser==2
load db13256
elseif b0==0.4 fram==256 suser==2
load db14256
elseif b0==0.5 fram==256 suser==2
load db15256
elseif b0==0.2 fram==4 suser==3
load db224
elseif b0==0.3 fram==4 suser==3
load db234
Gambar 4.11. lanjutan Listing program pemanggilan database
elseif b0==0.4 fram==4 suser==3
load db244
elseif b0==0.5 fram==4 suser==3
load db254
elseif b0==0.2 fram==8 suser==3
load db228
elseif b0==0.3 fram==8 suser==3
load db238
elseif b0==0.4 fram==8 suser==3
load db248
elseif b0==0.5 fram==8 suser==3
load db258
elseif b0==0.2 fram==16 suser==3
load db2216
elseif b0==0.3 fram==16 suser==3
load db2316
elseif b0==0.4 fram==16 suser==3
load db2416
elseif b0==0.5 fram==16 suser==3
load db2516
elseif b0==0.2 fram==32 suser==3
load db2232
elseif b0==0.3 fram==32 suser==3
load db2332
elseif b0==0.4 fram==32 suser==3
load db2432
elseif b0==0.5 fram==32 suser==3
load db2532
elseif b0==0.2 fram==64 suser==3
load db2264
elseif b0==0.3 fram==64 suser==3
load db2364
elseif b0==0.4 fram==64 suser==3
load db2464
Gambar 4.11. lanjutan Listing program pemanggilan database Listing
program di atas merupakan pemanggilan database yang di dalam database terdapat program variabel batas potong, program segment averaging dan program
pemilihan user. Program tersebut digunakan untuk mencocokan data yang telah tersimpan dengan data ucapan user. Proses pemanggilan database menggunakan fungsi if else fungsi
logika yang digunakan bertujuan agar dapat mencocokan variabel batas potong, segment averaging
dan pemilihan user yang dipilih oleh user. Proses pembuatan database berdasarkan masing-masing nilai variabel batas potong,
segment averaging dan pemilihan user yang sudah ditentukan dan disimpan dalam bentuk
file.mat di dalam satu directory dengan nama seperti contoh pada Gambar 4.11. Listing
program database yaitu db25256. Tujuan pembuatan file.mat agar mudah dilakukan pemanggilan di dalam program database dan di dalam file.mat terdapat data ucapan hidup,
cepat, lambat, dan mati yang sudah dimasukan variabel batas potong, segment averaging dan pemilihan user yang sudah ditentukan untuk pengenalan ucapan. Pada saat pembuatan
database setiap nama file.wav sesuai dengan ucapan masing-masing user yaitu user 1
menggunakan nama file 1 sampai 10, user 2 menggunakan nama file 11 sampai 20 dan user 3
menggunakan nama file 21 sampai 30. Pembuatan database ini diperlihatkan pada program
“function z=zcirifwav,b0,fram“. listing program pembuatan database diperlihatkan pada gambar 4.12.
elseif b0==0.5 fram==64 suser==3
load db2564
elseif b0==0.2 fram==256 suser==3
load db22256
elseif b0==0.3 fram==256 suser==3
load db23256
elseif b0==0.4 fram==256 suser==3
load db24256
elseif b0==0.5 fram==256 suser==3
load db25256
end
Gambar 4.12. Listing program pembuatan database
function dbxciri
b0=0.5; fram=256;
z1=zciri hidup
,b0,fram; z2=zciri
cepat ,b0,fram;
z3=zciri lambat
,b0,fram; z4=zciri
mati ,b0,fram;
z=[z1 z2 z3 z4]; save
db25256 z
=============================================================== INTERNAL FUNCTION
function z=zcirifwav,b0,fram
x1=wavread[fwav 21.wav
];y=potongx1,b0;e1=xdcty,fram; x2=wavread[fwav
22.wav ];y=potongx2,b0;e2=xdcty,fram;
x3=wavread[fwav 23.wav
];y=potongx3,b0;e3=xdcty,fram; x4=wavread[fwav
24.wav ];y=potongx4,b0;e4=xdcty,fram;
x5=wavread[fwav 25.wav
];y=potongx5,b0;e5=xdcty,fram; x6=wavread[fwav
26.wav ];y=potongx6,b0;e6=xdcty,fram;
x7=wavread[fwav 27.wav
];y=potongx7,b0;e7=xdcty,fram; x8=wavread[fwav
28.wav ];y=potongx8,b0;e8=xdcty,fram;
x9=wavread[fwav 29.wav
];y=potongx9,b0;e9=xdcty,fram; x10=wavread[fwav
30.wav ];y=potongx10,b0;e10=xdcty,fram;
z=[e1 e2 e3 e4 e5 e6 e7 e8 e9 e10]; ===============================================================
function bp=potongx0,b0;
Normalisasi x1=x0maxabsx0;
potong kiri b1=findx1b0 | x1-b0;
x11:b11=[]; Potong kanan
x2=fliplrx1; b2=findx2b0 | x2-b0;
x21:b21=[]; x2=fliplrx2;
bp=x2;
===============================================================
Gambar 4.12. lanjutan Listing program pembuatan database Listing
program database di atas mirip dengan program pada Gambar 4.11. Pada inisialisasi Internal Function terdapat variabel x1 sampai x10 yang merupakan
pemanggilan teradap file ucapan hidup, cepat, lambat dan mati yang sudah direkam dan disimpan dalam bentuk wav. Proses selanjutnya yaitu eksraksi ciri DCT dan beberapa
proses yang dijalankan yaitu preprocessing yang di dalamnya terdapat Normalisasi, pemotongan sinyal potong kiri, potong kanan, windowing Hamming, zero padding,
DCT dan segment averaging.
Proses selanjutnya setelah proses pemanggilan database yang sudah dibandingkan dengan ucapan user menggunakan fungsi jarak divergensi adalah proses k-nearest
neighbor untuk penentuan keluarannya sesuai nilai KNN yang sudah di tentukan yaitu 1, 3,
5 dan 7. Listing program perhitungan pembanding jarak divergensi dan k-nearest neighbor
dipelihatkan pada gambar 4.13.
Gambar 4.13. Listing program perhitungan fungsi K-Nearest Neighbor
function y=xdctx0,fram;
windowing h=hamminglengthx0;
x0=x0.h; zero padding
usig=2048; x0usig=0;
x0=x01:usig;
DCT x1=absdctx0;
x1=logx1; reshape
x2=reshapex1,fram,[]; x2=meanx2;
y=x2:;
for n=1:40
divergensixn=divergensiy,z:,n; end
divergensimin=findmindivergensix==divergensix; mindivergensix=mindivergensix
[x1,x2]=sortdivergensix, ascend
Gambar 4.13. lanjutan Listing program perhitungan fungsi K-Nearest Neighbor Listing
program pada Gambar 4.13. digunakan untuk perhitungan fungsi jarak dan K-Nearest Neighbor
. Program “ascend” digunakan untuk menentukan nilai jarak minimal dan dari hasil nilai jarak digunakan untuk menentukan ucapan user yang berhasil dikenali
dan akan
ditampikan dalam
bentuk teks
seperti pada
program “diveout={hidup,cepat,lambat,mati}
”
. Program “k=knn” digunakan untuk menentukan banyaknya nilai sampel terdekat yang sering muncul dengan menggunakan variasi nilai
KNN yaitu 1, 3, 5 dan 7. Setelah beberapa proses pada Gambar 4.13. dilakukan maka proses selanjutnya adalah pengiriman data “string” ke mikrokontroler. Listing program
pengiriman serial diperlihatkan pada gambar 4.14.
Gambar 4.14. Listing program pengiriman data serial ke mikrokontroler Listing
program di atas digunakan untuk mengirim data secara serial ke mikrokontroler. Program
“fprintfs,c,H” digunakan untuk mengirim data ucapan user yang berhasil dikenali berupa karakter kode ascii ke mikrokontroler melalui K 125 R.
Tabel 4.1. memperlihatkan data ucapan hasil pengenalan yang akan dikirim.
k=knn kj=x11:k;
kn=x21:k hk=ceilkn10
z=modushk diveout={
hidup ,
cepat ,
lambat ,
mati };
hasilout=diveoutz; sethandles.edit1,
string ,hasilout;
srl=strcmp hidup
,hasilout; if
srl==1 deleteinstrfind;
pause 0.1; s=serial
COM1 ,
BaudRate ,9600,
DataBits ,8,
parity ,
none ,
StopBits ,1,
FlowControl ,
n one
; fopens;
fprintfs, c
, H
fcloses; deletes;
clear s
; end
Tabel 4.1. Tabel Pengenalan Pada Mikrokontroler