Perancangan Program Mikrokontroler Perancangan Sistem Hardware

telah direkam kemudian ditampilkan pada “Plot Hasil Perekaman”. Program untuk menampilkan sinyal hasil perekaman adalah sebagai berikut : Perintah handles berfungsi untuk mengatur masukan atau keluaran program. Ucapan yang telah terekam diinisialisasi dengan “x” kemudian diplot pada axes.1. Setelah perekaman sub proses selanjutnya adalah pengambilan variabel nilai batas potong, nilai sigma, dan segment averaging serta pemilihan user. Variabel nilai tersebut digunakan saat pemotongan sinyal, windowing dan ekstraksi ciri sedangkan pemilihan user digunakan untuk memilih user yg menjalankan program. Program dalam subproses pengambilan variabel nilai dan pemilihan user adalah sebagai berikut: variasi nilai yang sudah dipilih pada pop up menu kemudian dipanggil untuk diproses pada proses pemotongan sinyal, windowing dan ekstraksi ciri. Hasil ucapan yang terekam kemudian memasuki proses normalisasi. Pembuatan program untuk normalisasi sesuai dengan blok diagram pada gambar 3.5. Program dalam proses normalisasi adalah sebagai berikut : Hasil norlmalisasi kemudian diinisialisasikan sebagai “x1”. Proses selanjutnya adalah proses pemotongan sinyal. Pembuatan program untuk pemotongan sinyal mengikuti diagram blok yang ada pada gambar 3.6 Pada proses ini sinyal mulai dipotong ketika mendapatkan nilai yang sudah dipilih pada pop up menu. Hasil pemotongan sinyal kemudian diinisialisasikan sebagai “x2”. Berikut adalah program dari proses pemotongan sinyal. axeshandles.axes1 plotx; b0=handles.pot; sig=handles.xsigma; sampling=handles.sampling; suser=handles.xuser; Normalisasi x1=xmaxx; Potong kiri b1=findx1b0 | x1-b0; x11:b11=[]; x2=fliplrx1; b2=findx2b0 | x2-b0; Proses selanjutnya adalah windowing. Pembuatan program windowing mengacu pada diagram blok yang telah dibuat pada gambar 3.7. Pada proses ini terdapat nilai yang di variasikan yaitu standar deviasi. Standar deviasi diambil dari variasi standar deviasi yang diinginkan user pada pop up menu. Hasil dari proses windowing kemudian diinisialisasikan sebagai “x0”. Berikut adalah program dari proses windowing : Proses selanjutnya adalah zerro padding. Pembuatan program zerro padding mengacu pada diagram blok yang telah dibuat pada gambar 3.8. Proses ini bertujuan untuk menambahkan angka nol. Hasil dari zerro padding kemudian diinisialisasikan sebagai “x1”. Berikut adalah program dari proses zerro padding : Proses selanjutnya adalah ekstraksi ciri. Pembuatan program ekstraksi ciri mengacu pada diagram blok yang telah dibuat pada gambar 3.9. Pada proses ini terdapat variabel nilai yang divariasikan yaitu segment averaging. Segment averaging diambil dari pop up menu yang telah dipilih user. Hasil dari proses ekstraksi ciri ini kemudian diinisialisasikan sebagai “x”. Hasil ekstraksi ciri ini akan diplot pada “Plot Hasil Ekstraksi Ciri”. Berikut adalah program dari ekstraksi ciri : Proses selanjutnya adalah pemanggilan database. Database disesuaikan dengan variasi nilai yang dipilih user pada pop up menu. Program pemanggilan database dapat dilihat pada lampiran L10.Pemanggilan disesuaikan dengan variasi yang dipilih user. h=gausswinlengthx2,sig; x0=x2.h; usig=2048; x0usig=0; x1=x01:sampling:usig; x0=absdctx1; x1=abslogx0; x=x1:; axeshandles.axes2 plot x; x21:b21=[]; x2=fliplrx2; Pembuatan program pemanggilan database menggunakan logika if dan else. Penggunaan logika ini bertujuan agar database yang di panggil sesuai dengan variasi nilai yang dipilih user. Setelah proses pemanggilan database, proses selanjutnya adalah pembandingan antara nilai hasil ekstraksi ciri dari perekaman secara real time dengan database. Pembandingan dilakukan dengan mencari nilai korelasi menggunakan metode korelasi. Berikut adalah program untuk membandingkan pembandingan hasil ektraksi ciri perekaman secara real time dengan database. Pada program pembandingan ini, program korelasi dipanggil yang masih dalam 1 folder. Pembuatan program korelasi mengacu pada bolk diagram pada gambar 3.10. Program yang dipanggil adalah program yang berisi rumusan penghitungan nilai korelasi. Berikut adalah program untuk menghitung nilai korelasi. Pada program penghitungan nilai korelasi digunakan dua variabel yaitu ‘x’ dan ‘z’. ‘x’ adalah hasil penghitungan ekstraksi ciri secara real time dan ‘z’ adalah database. Hasil penghitungan korelasi kemudian dilanjutkan pada program ‘REKAM’. Setelah mendapatkan nilai korelasi proses selanjutnya adalah mencari nilai maksimum. Berikut program untuk mencari nilai maksimum dari penghitungan korelasi. Pencarian nilai maksimum dari penghitungan korelasi menggunakan fucntion “findmax”. Setelah mendapatkan nilai korelasi maksimum proses selanjutnya adalah for n=1:40 korelasixn=korelasix,z:,n; end function k=korelasix,z mx=meanx; my=meanz; k1=x-mx.z-my; k2=sumk1; k3=sumx-mx.2; k4=sumz-my.2; k5=sqrtk3.k4; k=k2k5; korelasimax=findmaxkorelasix==korelasix; maxkorelasix=maxkorelasix thresholding. Tujuan dari metode ini adalah agar pengenalan yang tidak sesuai dengan database akan dikenali secara “ERROR’. Terdapat beberapa syarat pada thresholding yaitu nilai minimum dan kelas. Penggunaan kedua syarat itu menggunakan logika if else, jika salah satu tidak terpenuhi maka program akan lanjut ke proses else. Pada metode Thresholding ini sekaligus sebagai penentuan keluaran dan pengiriman serial. Program Thresholding sekaligus penentuan keluaran dan pengiriman serial dapat dilihat pada lampiran L20. Pada proses pengiriman serial menggunakan BaudRate sebesar 9600 dan COM PORT yang digunakan untuk mengirim serial adalah COM PORT 3. Pada pengiriman serial menggunakan function “fopen” untuk membuka komunikasi serial dengan mikrokontroler, function “fprintf” untuk mengirimkan character ke mikrokontroler dan fuction “fclose” untuk menutup komunikasi serial dengan mikrokontroler.

4.1.2 Pop Up Menu

Pada aplikasi pengenalan kali ini terdapat berbagai variasi nilai yang digunakan untuk melakukan pengenalan ucapan. ada tiga variasi untuk aplikasi pengenalan ucapan yaitu batas potong, standar deviasi dan segment averaging. Variasi batas potong menggunakan pop up menu 1 dengan nilai variasi 0,2; 0,3; 0,4; 0,5, Variasi standar deviasi menggunakan pop up menu 2 dengan nilai variasi 1,3; 1,4; 1,5; 1,6; 1,7, variasi segment averaging menggunakan pop up menu3 dengan nilai variasi 16; 32; 64; 128 dan pemilihan user penggunakan pop up menu4 dengan pilihan 1; 2; 3. Program variasi batas potong akan dituliskan seperti berikut. Pada program pemilihan variasi batas potong , nilai batas potong diinisialisasi dengan nama “bpot”. Inisialisasi ini digunakan untuk menginisialisasi nilai batas potong function popupmenu1_CallbackhObject, eventdata, handles indeks=gethandles.popupmenu1,Value; switch indeks case 1 bpot=0.2; case 2 bpot=0.3; case 3 bpot=0.4; case 4 bpot=0.5; end handles.pot=bpot; guidatahObject,handles;