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

4.1.3 Tombol “RESET”

Fungsi dari tombol “RESET” adalah untuk mengulangi atau membersihkan gambar sinyal dan jenis ucapan hasil ekstraksi ciri DCT yang ditampilkan pada GUI. Listing program tombol “RESET” diperlihatkan pada gambar 4.15. Gambar 4.15. Listing program tombol “RESET”

4.1.4 Tombol “KELUAR”

Tombol “KELUAR” merupakan tombol yang digunakan untuk keluar atau mengakhiri tampilan GUI . Ketika tombol “KELUAR” ditekan maka tampilan GUI akan tertutup dan kembali ke tampilan awal matlab. Listing program tombol “KELUAR” diperlihatkan pada gambar 4.16. Pengenalan Karakter Hidup H Lambat L Cepat C Mati M function pushbutton2_CallbackhObject, eventdata, handles axeshandles.axes1; plot0; axeshandles.axes2; plot0; sethandles.edit1, string , ; s=serial COM1 , BaudRate ,9600, DataBits ,8, parity , none , StopBits ,1, FlowControl , n one ; fopens; fprintfs, c , M fcloses; deletes; clear s ; Gambar 4.16. Listing program tombol “KELUAR” 4.2 Pengujian Program Pengenalan Ucapan terhadap Tingkat Pengenalan Ucapan User Secara Real Time dan Tidak Real Time Pengujian program terhadap pengenalan ucapan user dilakukan dengan mengubah nilai-nilai pada batas potong, segment averaging dan nilai fungsi k-nearest neighbor yang telah ditentukan untuk mencari tingkat pengenalan yang terbaik. Tujuan dari mencari tingkat pengenalan yang lebih baik agar program pengenalan dapat dengan mudah mengenali ucapan user dengan baik. Pada tahap pengujian dilakukan dengan dua cara yaitu secara tidak real time dan secara real time. Pengujian ucapan dilakukan secara real time dengan menggunakan variasi pengenalan terbaik dari hasil pengenalan secara tidak real time . Pengujian secara real time tidak bergantung pada pengenalan terbaik tetapi bisa menggunakan variasi pengenalan lainnya dengan masukan ucapan user.

4.2.1 Pengurangan Jumlah Elemen Koefisien Ekstraksi Ciri

Pada pengenalan ucapan secara tidak real time dengan menggunakan tiga user terdapat sejumlah elemen koefisien ekstraksi ciri yang menyebabkan tingkat pengenalan terhadap ucapan sangat sedikit. Tingkat pengenalan terbaik yang didapat sebesar 89 atau 74,1 . Untuk mengurangi jumlah elemen koefisien ekstraksi ciri maka digunakan metode segment averaging . Ukuran sinyal awal yang digunakan adalah 2048, dengan membaginya menggunakan kelipatan 2 n diawali dengan n=3 sampai nilai n=7 sesuai varibel segment averaging yang sudah ditentukan dari pengujian secara tidak real time. Faktor pembagi data awal disebut dengan segment averaging dan hasil pembagian data awal dengan segment averaging menjadi hasil akhir koefisien ekstraksi ciri yang akan dipakai untuk function pushbutton4_CallbackhObject, eventdata, handles deletefigureGuy; s=serial COM1 , BaudRate ,9600, DataBits ,8, parity , none , StopBits ,1, FlowControl , n one ; fopens; fprintfs, c , M fcloses; deletes; clear s ; perhitungan selanjutnya. Tabel 4.2. memperlihatkan tingkat pengenalan setelah pembagian data awal dengan menggunakan pengenalan terbaik pada nilai KNN=1. Tabel 4.2. Hasil Tingkat Pengenalan Terbaik Setelah Pembagian Data Awal dengan Menggunakan Segment Averaging No Segment averaging titik Jumlah Elemen Ekstraksi Tingkat Pengenalan 1 8 256 74,1 2 16 128 75 3 32 64 75,8 4 64 32 80,8 5 128 16 81,6 Tabel 4.2. di atas memperlihatkan hasil tingkat pengenalan dengan menggunakan segment averaging . Dari data tingkat pengenalan dapat disimpulkan bahwa dengan menggunakan segment averaging tingkat pengenalan menjadi lebih baik. Listing program segment averaging diperlihatkan pada gambar 4.17. Gambar 4.17. Listing program segment averaging Pada tabel 4.3. merupakan data pengujian dengan tidak menggunakan segment averaging dengan menggunakan tingkat pengenalan pada data tidak real time. Pada pengujian tersebut menggunakan nilai batas potong 0,2, 0,3, 0,4, 0,5, dan nilai k-nearest neighbor yang digunakan yaitu 1, 3, 5 dan 7 dengan tingkat pengenalan dalam persen . Tabel 4.3. Tingkat Pengenalan untuk Hasil Nilai Batas Potong dan K-Nearest Neighbor Tanpa Menggunakan Segment Averaging Nilai Batas Potong Nilai k-nearest neighbor 1 3 5 7 0,2 72,5 70,8 72,5 70,8 0,3 70 69,1 67,5 68,3 x6=reshapex1,64,[]; x7=meanx1; y=x7:; 64 66 68 70 72 74 76 1 3 5 7 P re se n tase P en ge n alan Nilai k-nearest neighbor Pengaruh nilai batas potong tanpa segment averaging terhadap pengenalan ucapan Batas Potong 0,2 Batas Potong 0,3 Batas Potong 0,4 Batas Potong 0,5 64 66 68 70 72 74 76 0,2 0,3 0,4 0,5 P re se ntase P engenalan Batas Potong Pengaruh k-nearest neighbor tanpa segment averaging terhadap pengenalan ucapan KNN=1 KNN=3 KNN=5 KNN=7 Tabel 4.3. lanjutan Tingkat Pengenalan untuk Hasil Nilai Batas Potong dan K- Nearest Neighbor Tanpa Menggunakan Segment Averaging 0,4 74,1 71,6 72,5 70 0,5 73.3 71,6 67,5 70 Gambar 4.18. Pengaruh nilai batas potong tanpa segment averaging terhadap pengenalan ucapan Gambar 4.19. Pengaruh nilai k-nearest neighbor tanpa segment averaging terhadap pengenalan ucapan Pada data gambar 4.18 dan gambar 4.19 di atas merupakan presentase pengenalan ucapan secara tidak real time terhadap batas potong dan k-nearest neighbor tanpa menggunakan segment averaging dengan menggunakan data ucapan tiga user secara tidak real time . Presentase yang didapat mengalami penurunan seperti diperlihatkan pada gambar 4.18 dan gambar 4.19 yang menunjukan presentase pengenalan hanya sekitar 67,5 - 74,1 . Hal disebabkan oleh pengurangan jumlah elemen koefisien ekstraksi ciri sehingga pada pengenalan dibutuhkan segment averaging agar hasil pengenalan ucapan lebih baik atau presentase pengenalan bisa meningkat.

4.2.2 Pengujian Tidak Real Time

Pengujian secara tidak real time bertujuan untuk mengetahui atau mencari tingkat pengenalan terbaik dari setiap nilai variabel yang telah ditentukan yaitu pada batas potong, segment averaging , dan k-nearest neighbor. Hasil pengenalan terbaik digunakan untuk pengambilan data pengenalan ucapan secara real time. Pengujian ini menggunakan 3 user, setiap ucapan dari masing-masing user disimpan dengan nama file yang berbeda. Pada perekaman ucapan, terdapat empat macam ucapan user yang direkam yaitu hidup, lambat, cepat dan mati. Ucapan yang direkam sebanyak 20 data ucapan yang terbagi dalam 10 data ucapan pembentukan database dan 10 data percobaan pengenalan. Dengan demikian terdapat 20 data ucapan dari masing-masing user, maka total ucapan yang direkam untuk tiga user sebanyak 120 data ucapan. Pada pengujian tidak real time ini diperoleh data hasil tingkat pengenalan ucapan dari tiga user. Pengujian tidak real time dilakukan dengan cara mengubah nilai batas potong, segment averaging dan KNN pada M-file program ekstraksi ciri DCT setelah mengubah variabel dengan nilai yang pilih, program di Run sehinggga pada command window matlab didapat data hasil pengenalan ucapan. Data hasil pengenalan tidak real time yang sudah didapat diperlihatkan presentasenya dalam bentuk grafik.

a. Pengujian Tidak Real Time, Nilai Batas Potong dan segment averaging Tanpa

Menggunakan Nilai K-Nearest Neighbor K=1 Pada tabel 4.4 memperlihatkan data hasil pengujian nilai batas potong dan segment averaging tanpa menggunakan nilai k-nearest neighbor secara tidak real time. Saat pengujian nilai dari batas potong 0,2, 0,3, 0,4, 0,5 dan segment averaging 4, 8, 16, 32, 64, 128, 256 dijalankan satu persatu untuk mendapatkan data hasil pengenalan ucapan.