• Tidak ada hasil yang ditemukan

Implementasi GUI Matlab dan Program Pengenalan Ucapan

BAB IV: HASIL DAN PEMBAHASAN

4.2 Implementasi GUI Matlab dan Program Pengenalan Ucapan

GUI dibuat agar dapat memudahkan user dalam menggunakan aplikasi penelitian ini. Terdapat beberapa komponen UI Control yang dapat digunakan untuk mengeksekusi

atau menampilkan perintah. Komponen tersebut dapat diprogram sehingga user dapat lebih mudah dalam mengeksekusi aplikasi tersebut. Hasil pembuatan GUI ditunjukkan pada Gambar 4.6 berikut :

Gambar 4.6. Tampilan Hasil GUI Matlab

Pada saat GUI ini dibuka maka proses inisialisasi gerbang data komunkasi serial langsung dijalankan. Program inisialisasi komunikasi serial pada matlab di tuliskan sebagai berikut :

%Pengaturan Gerbang Komunikasi Serial

global s

s=serial('COM1','BaudRate',57600,'DataBits',8,'Parity','none','StopBits',

1,'FlowControl','none');

fopen(s);

fprintf(s,'%s','5');

Saluran COM-Port yang dipakai pada laptop untuk komuniasi serial disesuaikan dengan melihat device manager pada pengaturan computer managent. Nilai-nilai baudrate,

databits, parity, stopbits, dan flowcontrol diatur sesuai perancangan. Setelah inisialisasi

dilakukan pembukaan gerbang serial dengan fungsi “fopen(s)”. Data perintah stop dikirimkan sebagai tanda bahwa komunikasi serial antara laptop dan robot mobil telah terbentuk.

4.2.1 Kolom inisialisasi

Kolom ini terdapat variabel-variabel data yang digunakanuntukproses inisialisasi. Terdapat 3 variabel dengan variasi pilihan nilai data tertentu agar dapat diatur sesuai keinginan user. Komponen radiobutton digunakan dalam pemilihan nilai variabel dari kolom inisialisasi tersebut. Setiap radiobutton akan diprogram dengan nilainya masing-masing untuk proses inisialisasi tiap variabel data.

Gambar 4.7. Kolom Inisialisasi

Terlihat pada Gambar 4.7 bahwa kolom inisialisasi terdiri dari tiga variabel yaitu batas potong, nilai alfa dan faktor downsampling dimana terdapat beberapa pilihan nilai variabel. Program pada kolom inisialisasi diberikan pada tiap radiobutton karena pengaturan nilai datanya berbeda-beda. Sebagai contoh, program variabel faktor

downsampling dituliskan sebagai berikut : %RADIO BUTTON 1

% --- Executes on button press in down1.

function down1_Callback(hObject, eventdata, handles)

set(handles.down2,'value',0); set(handles.down4,'value',0); dsamp=1; handles.dsamp=dsamp; guidata(hObject,handles) %RADIO BUTTON 2

% --- Executes on button press in down2.

function down2_Callback(hObject, eventdata, handles)

set(handles.down1,'value',0);

dsamp=2;

handles.dsamp=dsamp; guidata(hObject,handles)

%RADIO BUTTON 4

% --- Executes on button press in down4.

function down4_Callback(hObject, eventdata, handles)

set(handles.down1,'value',0);

set(handles.down2,'value',0);

dsamp=4;

handles.dsamp=dsamp; guidata(hObject,handles)

Program tersebut digunakan untuk pemilihan nilai data variable faktor

downsampling. Program tersebut tersusun dari 3 fungsi program dari tiap radiobutton.

Fungsi “set” digunakan untuk pengaturan kondisi radiobutton. Saat radiobutton ditekan akan muncul tanda hitam pada radiobutton tersebut, maka dengan fungsi “set” tanda hitam akan hilang bila kita menekan radiobutton yang lain. Pada saat radiobutton ditekan maka akan langsung mengeksekusi fungsi “set” terhadap radiobutton lainnya, kemudian dilanjutkan dengan inisialisasi nilai data sesuai dengan pemilihan radiobutton. Penggunaan kata “handles” agar variabel dapat digunakan pada setiap fungsi program, apabila tidak diberi kata “handles” maka hanya dapat dieksekusi pada fungsi program itu saja.

4.2.2 Kolom plot dan hasil pengenalan

Kolom plot digunakan untuk menampilkan data dalam bentuk plot.Kolom plot menampilkan plot ucapan yang direkam dan plot hasil ekstraksi cirinya. Plot ucapan menampilkan plot data dari masukan ucapan sedangkan plot ekstaksi cirri plot data hasil ekstraksi cirinya. Komponen GUI yang digunakan adalah axis. Plot dari ucapan dan ekstraksi ciri yang akan ditampilkan dalam dalam domain waktu dengan menggunakan grafik sumbu x dan y. Garis sumbu X merupakan urutan data tercuplik dan garis sumbu Y merupakan amplitudo. Tampilan kolom plot ucapan dan ekstraksi cirri ditunjukkan pada Gambar 4.8.

Gambar 4.8. Tampilan Plot Ucapan dan Plot Ekstraksi Ciri

Kolom hasil pengenalan dipakai untuk menampilkan hasil pengenalan ucapan yang dideteksi. Tampilan hasil keluaran dalam bentuk kata yakni maju, mundur, kiri, kanan, dan stop. Tampilan kolom hasil pengenalan ditunjukkan pada Gambar 4.9.

Gambar 4.9. Tampilan Kolom Hasil Pengenalan

4.2.3 Tombol ucap

Tombol “UCAP” digunakan ketika pengguna akan menjalankan program pengenalan ucapan. Tombol tersebut berisi seluruh program untuk mengolah ucapan masukan agar dapat dikenali, kemudian data pengenalan langsung dikirimkan ke robot mobil. Sub-program yang terdapat pada tombol tersebut yaitu inisialisasi, perekaman,

preprocessing, ekstraksi ciri, pengenalan pola, dan penentuan aksi.

Program inisialisasi dilakukan untuk menginisialisasi nilai data variabel yang telah dipilih pengguna pada kolom inisialisasi dan menentukan basis data yang akan dipakai. Program inisialisasi dituliskan sebagai berikut :

%Proses inisialisasi

batas=handles.batas; alfa=handles.alfa; dsamp=handles.dsamp;

%Penentuan Basis Data switch batas case 0.1 a='1'; case 0.2 a='2'; case 0.3 a='3'; case 0.4 a='4'; end switch alfa case 0.4 b='4'; case 0.5 b='5'; case 0.6 b='6'; case 0.7 b='7'; case 0.8 b='8'; end switch dsamp case 1 c='1'; case 2 c='2'; case 4 c='4'; end

z=strcat('dbsbp0',a,'a0',b,'ds',c);

Proses inisialisasi dilakukan dengan mendeklarasikan nilai data dari hasil pemilihan

radiobutton pada kolom inisialisasi.Inisialisasi terbagi menjadi 3 bagian yaitu pada batas

potong, nilai alfa, dan faktor downsampling. Setelah semua data dideklarasikan, maka dilakukanlah penentuan basis data yang akan digunakan dengan bantuan fungsi

switch-case. Nilai data pada variabel dijadikan sebagai acuan dalam switch. Apabila dideteksi

(case) suatu nilai pada variabel tersebut, maka variabel baru akan dideklarasikan. Variabel tersebut yaitu “a” untuk batas potong, “b” untuk nilai alfa, “c” untuk faktor downsampling. Data dari variabel tersebut berbentuk karakter, kemudian digabungkan dengan beberapa kata dengan bantuan fungsi “strcat” agar membentuk nama file basis data.Pembentukan basis data dilihat pada lampiran halaman L15. Hasil data dari fungsi “strcat” berupa karakter.

Program perekaman dilakukan untuk merekam data sinyal ucapan sebagai data masukan. Program tersebut dituliskan sebagai berikut :

rekam=wavrecord(6800,6800); axes(handles.axes1);

plot(rekam); ucapan=rekam;

xlabel('Time(s)'); ylabel('Amplitude'),...

title('INPUT UCAPAN');

Proses perekaman mengunakan bantuan fungsi Matlab yaitu “wavrecord”. Struktur penulisan fungsi ini yaitu “wavrecord(n,fs)”. Nilai “n” merupakan jumlah data yang ingin dicuplik sedangkan “fs” merupakan frekuensi sampling. Nilai frekuensi sampling yang digunakan yaitu 6800 Hz, maka agar pencuplikan terjadi selama 1 detik nilai data tercuplik sebesar 6800. Data hasil rekaman tersebut kemudian ditampilkan dalam bentuk grafik dengan menggunakan fungsi “plot”. Fungsi “axes(handles.axes1)” digunakan untuk memilih axis pada kolom plot ucapan sebagai tempat penampil grafik, maka dituliskan sebelum fungsi “plot(rekam)”. Fungsi “xlabel”, “ylabel”, dan “title” digunakan untuk memberikan keterangan pada grafik sumbu x dan y, serta memberi judul grafik.

Program preprocessing dilakukan agar masukan data sinyal ucapan dapat diolah terlebih dahulu sebelum dilakukan proses ekstraksi. Program preprocessing terdiri dari 4 bagian yaitu normalisasi, pemotongan sinyal, windowing, dan zeropadding. Program preprocessing dituliskan sebagai berikut :

%NORMALISASI norm=ucapan/max(abs(ucapan)); %PEMOTONGAN SINYAL pot=norm; %---potong kiri kiri=find(pot>batas | pot<-batas); pot(1:(kiri(1)-1))=[]; %---potong kanan pot=fliplr(pot'); kanan=find(pot>batas | pot<-batas); pot(1:(kanan(1)-1))=[]; pot=fliplr(pot); %WINDOWING pola=tukeywin(length(pot),alfa); windowing=pot.*pola'; %ZEROPADDING zp=windowing; usig=2048; zp(usig)=0;

Proses normalisasi melakukan perubahan skala pada data dengan memasukan rumus sesuai pada perancangan. Terdapat fungsi Matlab untuk memudahkan program yakni “max” untuk mencari nilai tertinggi dan “abs” untuk mengubah semua data menjadi bernilai positif.

Proses pemotongan sinyal dimulai dengan mencari data yang akan dihilangkan dengan bantuan fungsi “find”. Nilai data yang dicari berada pada kondisi lebih besar dari batas potong atau lebih kecil dari negatif batas potong. Hasil dari fungsi “find” tidak menampilkan nilai datanya melainkan menampilkan nomor urutan datanya. Data urutan pertama dari hasil fungsi “find” menjadi batas akhir pemotongan data, sehingga data hasil normalisasi akan dihilangkan dari awal hingga data tersebut. Pemotongan tersebut terjadi pada sisi awal, agar data sisi akhir dapat dihilangkan maka urutan data harus dibalik terlebih dahulu menggunakan fungsi “fliplr”. Langkah pemotongan sinyal tersebut sama seperti pemotongan sisi awal, setelah dihilangkan maka urutan dikembalikan seperti semula dengan fungsi “fliplr”.

Proses windowing menggunakan jendela Tukey, sehingga perlu mencari deretan data pembentuk pola jendela Tukey. Pada Matlab terdapat fungsi untuk menggunakan jendela tukey dengan formula “tukeywin(L,r)”. variabel “L” merupakan banyaknya deretan data yang akan diproses sedangkan variabel “r” merupakan nilai alfa pembentukan pola jendela tukey. Penulisan program yang dipakai untuk menentukan pola jendela tukey ditulis “tukeywin(length(pot),alfa)”. Fungsi “length” merupakan fungsi untuk mencari banyaknya deretan data, sehingga fungsi “length(pot)” akan mencari banyaknya deretan data pada variabel “pot”. Variabel “pot” merupakan hasil data setelah proses pemotongan sinyal. Setelah pola jendela tukey terbentuk dilakukan perkalian skalar terhadap deretan data pada variabel “pot”.

Proses zero padding dilakukan dengan menambahkan deretan nilai data “0” setelah data hasil windowing. Terdapat pendeklarasia variabel “usig” yang merupakan ukuran deretan data dengan nilainya sebanyal 2048 sesuai perancangan. Program penambahan deretan data “0” hingga data ke 2048 dituliskan “zp(usig)=0”. Variabel “zp” merupakan data hasil windowing yang sebelumnya telah dideklarasikan, maka “zp(usig)=0” yaitu data ke 2048 pada deretan nilai variabel “zp” diberi nilai 0.

Program ekstraksi ciri terdapat 2 langkah yaitu downsampling dan transformasi menggunakan DCT. Program ekstraksi ciri dituliskan sebagai berikut :

%EKSTRAKSI CIRI %---downsampling downsamp=zp(1:dsamp:usig); %---Transformasi DCT ekstrak=abs(dct(downsamp)); ekstrak=abs(log(ekstrak)); ekstrak=ekstrak(:); axes(handles.axes2); plot(ekstrak);

xlabel('Time(s)'); ylabel('Amplitude'),...

Proses downsampling dilakukan dengan mengambil atau mencuplik ulang data hasil preprocessing tersebut dengan rentang tertentu. Dari program diatas terlihat data akan diambil dari data ke-1 hingga nilai variabel “usig” yaitu 2048 dengan rentang sebanyak nilai variabel “dsamp”. Proses tranformasi dilakukan menggunakan fungsi Matlab “dct”, kemudian nilai datanya diabsolutkan dengan bantuan fungsi Matlab “abs”. Proses transformasi tersebut dilanjutkan dengan pemberian fungsi “log”, kemudian nilai datanya diabsolutkan kembali dengan fungsi “abs”. Program “ekstrak(:)” digunakan agar nilai data tersebut terbentuk secara berurutan dalam matriks 1 kolom.

Program pengenalan pola dilakukan dengan cara perhitungan nilai similaritas data masukan terhadap basis data. Pendekatan terbaik adalah data yang mempunyai nilai similaritas terbesar. Program similaritas kosinus yang dipakai dalam sistem ini dituliskan sebagai berikut :

%PENGENALAN POLA

%---Perhitungan Similaritas Kosinus

load(z); x=ekstrak; y=dbase; for i=1:50 simkos(i)=(sum(x.*(y(:,i))))/(sqrt(sum(x.^2))*sqrt(sum((y(:,i)).^2))); end simkos=reshape(simkos,10,[]); simkos=max(simkos); kategori=find(simkos==max(simkos));

aksi={'maju';'mundur';'kiri';'kanan';'stop'}; hasil=aksi{kategori};

Basis data yang dibuat berjumlah 50 data ucapan yang sudah diolah terlebih dahulu. Satu data ucapan pada basis data memiliki 2048 nilai data, sehingga 1 data ucapan akan disusun dalam 1 kolom. Hasil keseluruhan basis data tersusun dalam matriks 2048 baris dan 50 kolom. Proses perhitungan similaritas terhadap basis data dilakukan secara

bertahap pada tiap data ucapan dari kolom ke-1 hingga ke-50. Pengelompokan data ucapan pada basis data ditunjukkan pada tabel berikut:

Tabel 4.5 Pengelompokan Data Ucapan Berdasarkan Kolom

Kolom Keterangan 1-10 Maju 11-20 Mundur 21-30 Kiri 31-40 Kanan 41-50 Stop

Penulisan program perhitungan algoritma similaritas diatas menggunakan “for i=1:50”, sehingga program perhitungan akan terus diulangi dari data pada kolom ke-1 hingga data ke-50. Hasil perhitungan akan diurutkan dari kolom 1 hingga 50, dimana niali tersebut merupakan hasil dari tiap kolom. Secara keseluruhan Hasil dari program tersebut yaitu 50 nilai data hasil perhitungan similaritas yang disusun dalam matriks 1 baris dan 50 kolom.

Setelah mendapat nilai similaritas dari tiap kolom, maka data tersebut harus dikelompokkan kembali berdasarkan kategori ucapannya sesuai pada Tabel 4.1. Pengelompokan disusun dalam 1 kolom, sehingga dalam 1 kolom berisi 1 kategori ucapan. Data hasil perhitungan similaritas dikelompokkan dengan fungsi Matlab yaitu “reshape”. Matriks diubah dalam bentuk 10 baris dan 5 kolom dimana tiap 1 kolom berisi 1 kelompok

ucapan seperti berikut , kemudian dicari nilai

terbesar dari tiap kolom sehingga hanya tersisa 1 nilai pada tiap kolom. Proses pencarian nilai terbesar tiap kolom dilakukan dengan bantuan fungsi “max”. Fungsi tersebut akan mencari nilai terbesar dalam 1 kolomnya, sehingga hasilnya berubah menjadi matriks 1 baris dan 5 kolom. Nilai tiap kolom tersebut merupakan nilai similaritas terbesar dari keseluruhan basis data yangmewakili kategori ucapan. Pencarian hasil pengenalan ucapan yang ditangkap dilakukan dengan mencari nilai yang terbesarnya. Pada kolom 1 sampai 5 secara beurutan memiliki kategori maju, mundur, kiri, kanan, dan stop. Fungsi

“find(simkos==max(simkos))” dipakai untuk menentukan kolom mana yang menjadi hasil pengenalan dengan melihat nilai similaritas terbesar.

Program penentuan aksi digunakan untuk menampilkan hasil pengenalan pada pengguna dan mengirimkan perintah aksi atau pergerakan pada robot mobil. Program tersebut dituliskan sebagai berikut:

%PENENTUAN AKSI

fset(handles.hasil,'string',hasil);

switch kategori

case 1%>>kondisi MAJU

fprintf(s,'%s','1');

case 2 %>>kondisi Mundur

fprintf(s,'%s','2');

case 3 %>>kondisi KIRI

fprintf(s,'%s','3');

case 4 %>>kondisi KANAN

fprintf(s,'%s','4');

case 5 %>>kondisi STOP

fprintf(s,'%s','5');

end

Fungsi “fset” pada program ini digunakan untuk memberi pengaturan dikolom hasil pengenalan pada GUI Matlab agar menampilkan hasil ucapan yang dikenali. Proses pemilihan aksi robot mobil ditentukan menggunakan fungsi “switch-case” dengan melihat hasil pada variabel “katagori”. Fungsi “fprintf” digunakan untuk melakukan perintah pengiriman data menggunakan Matlab.

4.2.4 Tombol selesai

Tombol ini digunakan saat pengguna ingin berhenti menjalankan aplikasi pada penelitian ini. Ketika tombol ini ditekan maka robot mobil akan mendapat perintah berhentidan menghapus jalur komunikasi data, kemudian aplikasi pada GUI Matlab akan tertutup. Program pada tombol ini dituliskan sebagai berikut :

function selesai_Callback(hObject, eventdata, handles)

global s fprintf(s,'%s','5'); fclose(s); delete(s); clear s; delete(handles.figure1);

Ketika tombol ini ditekan maka akan mengirimkan data karakter “5” yang berarti perintah berhenti pada robot mobil. Proses selanjutnya menutup jalur komunikasi data dengan fungsi “fclose(s)” dan menghapus jalur komunikasi data dengan “delete(s)”. variabel “s” merupakan variabel yang berisi data-data gerbang komunikasi data serial.

Fungsi “delete(handles.figure1)” digunakan untuk menutup GUI Matlab pada aplikasi penelitian ini.

Dokumen terkait