• Tidak ada hasil yang ditemukan

BAB IV HASIL DAN PEMBAHASAN

4.1. Antarmuka Program Pengenalan Ucapan Untuk Pengaturan Kipas DC Secara Real-

4.1.2. Push Button “Rekam”

Pada program antarmuka “PENGENALAN UCAPAN UNTUK PENGATURAN KIPAS DC”, push button “Rekam” digunakan ketika pengguna mulai menjalankan program pengenalan ucapan. Push button “Rekam” memulai pengenalan ucapan dengan menjalankan beberapa subproses. Subproses dalam push

button “Rekam” terdiri dari proses perekaman ucapan, proses pre-processing, proses

ekstraksi ciri discrete cosine transform (DCT), proses jarak Euclidean, pementuan keluaran dan pengiriman data serial untuk mikrokontroler sebagai pengaturan kecepatan kipas DC.

Program untuk perekaman ucapan ditunjukkan sebagai berikut :

function pushbutton1_Callback(hObject, eventdata,

handles) %Rekam sample_length=1; sample_freq=6000; sample_time=(sample_length*sample_freq); x=wavrecord(sample_time, sample_freq); axes(handles.axes1) plot(x);

xlabel('data tercuplik') ylabel('amplitudo')

grid on

Pada perekaman ucapan menggunakan frekuensi sampling 6000 Hz dan durasi perekaman 1 detik. Pada program inisialisasi sample_time berfungsi untuk menyediakan ruang untuk menyimpan data perekaman ucapan sebanyak 6000 data. Program wavrecord berfungsi untuk merekam ucapan dengan sebanyak 6000 data

dan frekuensi sampling 6000Hz. Data ucapan akan di simpan dalam variabel x dan ditampilkan dalam “Plot Hasil Rekaman”, pada program data ucapan dalam variabel

x ditampilkan pada axes1. Pada program xlabel dan ylabel berfungsi untuk

memberikan keterangan gambar pada bagian horisontal dan vertikal kurva dalam “Plot Hasil Perekaman.

Subproses selanjutnya setelah proses perekaman dan data perekaman disimpan adalah pre-processing, proses ini memiliki beberapa proses yaitu normalisasi, pemotongan sinyal, windowing dan zero padding. Program proses normalisasi ditunjukkan sebagai berikut :

% Normalisasi

x1=x/max(x);

Program normalisasi setiap nilai data ucapan dalam variabel x akan dibagi dengan nilai maksimum dari data ucapan dalam variabel x. Hasil normalisasi disimpan dalam variabel x1. Proses berikutnya dalam subproses pre-processing adalah pemotongan sinyal. Pada proses pemotongan sinyal ini terdapat dua proses yaitu potong sinyal bagian kiri dan sinyal bagian kanan data ucapan. Program proses pemotongan sinyal ditunjukkan sebagai berikut :

% Potong kiri b1=find(x1>b0 | x1<-b0); x1(1:b1(1))=[]; % Potong kanan x2=fliplr(x1'); b2=find(x2>b0 | x2<-b0); x2(1:b2(1))=[]; x2=fliplr(x2);

Dalam program pemotongan sinyal bagian kiri, program berfungsi untuk mencari nilai data hasil normalisasi dalam variabel x1 lebih dari nilai batas potong atau kurang dari nilai negatif batas potong. Setelah mencari nilai tersebut, akan disimpan dalam variabel b1. Pada data pertama sampai data dalam variabel b1 yang pertama akan diberi dengan himpunan kosong. Proses pemotongan sinyal bagian kanan hampir sama dengan pemotongan sinyal bagian kiri. Program fiplr berfungsi untuk memutar ke arah kanan data ucapan. Setelah pemotongan sinyal bagian kanan data disimpan dalam variabel x2. Proses berikutnya dalam subproses pre-processing adalah windowing. Program proses windowing ditunjukkan sebagai berikut :

%hanning

h=hann(length(x2)); x0=x2.*h';

Pada program windowing, jendela hanning dihitung sepanjang nilai data dalam variabel x2. Setelah itu nilai jendela hanning dikalikan dengan nilai dalam variabel x2 dan hasilnya disimpan dalam variabel x0. Dalam subproses

pre-processing selanjutnya proses zero padding. Zero padding adalah terakhir dalam

subproses pre-processing. Program zero padding ditunjukkan sebagai berikut :

%zero padding

usig=2048;

x0(usig)=0; % penyesuaian ukuran sinyal

x1=x0(1:sampling:usig); axes(handles.axes2) plot(x1);

xlabel('data tercuplik') ylabel('amplitudo')

grid on

Subproses selanjutnya setelah proses pre-processing adalah proses pemanggilan database yang telah disesuaikan dengan variasi nilai batas potong dan

downsampling yang telah ditentukan oleh pengguna. Program pemanggilan database

ditunjukkan sebagai berikut :

if (b0==0.1) &(sampling==1) load db011;

elseif (b0==0.2) & (sampling==1)

load db021;

elseif (b0==0.3) & (sampling==1)

load db031;

elseif (b0==0.4) & (sampling==1)

load db041;

elseif (b0==0.1) & (sampling==2)

load db012;

elseif (b0==0.2) & (sampling==2)

load db022;

elseif (b0==0.3) & (sampling==2)

else if (b0==0.4) & (sampling==2) load db042;

elseif (b0==0.1) & (sampling==4)

load db014;

elseif (b0==0.2) & (sampling==4)

load db024;

elseif (b0==0.3) & (sampling==4)

load db034;

elseif (b0==0.4) & (sampling==4)

load db044; end

end

Program pemanggilan database menggunakan fungsi logika if else. Ketika pengguna sudah menentukan variasi nilai batas potong dan downsampling dan saat program pemanggilan database ini berjalan, logika if else akan mencari nilai logika yang benar antara variasi nilai batas potong dan downsampling yang ditentukan oleh pengguna dengan program pembentukan database. Pada saat nilai logika if else bernilai benar, program akan memanggil database sesuai dengan variasi batas potong dan downsampling yang sudah ditentukan oleh pengguna.

Setelah database di panggil sesuai dengan uang ditentukan oleh pengguna, subproses berikutnya adalah proses pembandingan. Proses ini membandingkan antara database yang telah dipanggil dalam proses pemanggilan database dengan data masukkan yang telah dimasukan oleh pengguna secara real time pada proses - proses sebelumnya. Proses pembandinga mencari nilai yang sama antara masukkan yang telah dimasukkan oleh pengguna dengan database yang telah dipanggil. Pembandingan ini menggunakan jarak Euclidean. Program proses pembandinga ditunjukkan sebagai berikut :

for n=1:120

jaraklist(n)=jarak(x,z(:,n));

end

jarakmin=find(min(jaraklist)==jaraklist); minjaraklist=min(jaraklist);

Program pembandingan ini memanggil program lain dalam satu folder yang bernama “jarak” yang berisi program jarak Euclidean yang merupakan rumus perhitungan jarak Euclidean. Program perhitungan jarak Euclidean ditunjukkan sebagai berikut :

function z=jarak(x,y)

z=sqrt(sum((x-y).^2));

Program pembandingan ini menghitung dua data yaitu data pengenalan pada proses perekaman yang terdapat dalam variabel x dan data database yang telah dipanggil pada proses sebelumnya dalam variabel y. Hasil pembanding dengan menggunakan perhitungan jarak akan disimpan dan kembali pada program “pengenalan2” untuk subproses berikutnya yaitu penentuan keluaran yang akan menentukan keluaran ucapan yang dikenali. Pada program subproses penentuan keluaran ditunjukan sebagai berikut :

jarakmin=find(min(jaraklist)==jaraklist); minjaraklist=min(jaraklist);

kel={'cepat','cepat','cepat','cepat','cepat','cepat'

,'cepat','cepat','cepat','cepat'...

'cepat','cepat','cepat','cepat','cepat','cepat','cepat',

'cepat','cepat','cepat'...

'cepat','cepat','cepat','cepat','cepat','cepat','cepat',

'cepat','cepat','cepat'...

'lambat','lambat','lambat','lambat','lambat','lambat',

'lambat','lambat','lambat','lambat','lambat'...

'lambat','lambat','lambat','lambat','lambat','lambat',

'lambat','lambat','lambat','lambat','lambat'...

'lambat','lambat','lambat','lambat','lambat','lambat',

'lambat','lambat','lambat','lambat','lambat'...

'hidup','hidup','hidup','hidup','hidup','hidup','hidup',

'hidup','hidup','hidup'...

'hidup','hidup','hidup','hidup','hidup','hidup','hidup',

'hidup','hidup','hidup'...

'hidup','hidup','hidup','hidup','hidup','hidup','hidup',

'mati','mati','mati','mati','mati','mati','mati','mati',

'mati','mati'...

'mati','mati','mati','mati','mati','mati','mati','mati',

'mati','mati'...

'mati','mati','mati','mati','mati','mati','mati','mati',

'mati','mati',};

hasil=(kel(jarakmin));

set(handles.edit2,'String',hasil);

Pada program penentuan keluaran ini akan mencari jarak nilai minimum pada hasil perhitungan jarak pada proses pembanding sebelumnya. Nilai jarak minimum akan disimpan dalam variabel minjaraklist. Nilai jarak minimum akan mencari hasil keluaran minimum berupa data string. Data string dari hasil minimum yang ditampilkan adalah salah satu dari kata “cepat”, “lambat”, “hidup” dan “mati”. Data ini akan disimpan dalam variabel hasil dan ditampilkan dalam edit text. Hasil penentuan keluaran ini akan dikirim melalui komunikasi serial sebagai pengatur kecepatan kipas DC. Program pengiriman data secara serial ditunjukkan sebagai berikut : tf=strcmp('hidup',hasil); if tf == 1 s = serial('COM5'); set(s,'BaudRate',9600); fopen(s); fprintf(s,'1'); fclose(s); delete(s); clear s; set(handles.edit1,'string', '1'); end tf=strcmp('mati',hasil); if tf == 1 s = serial('COM5'); set(s,'BaudRate',9600); fopen(s); fprintf(s,'2'); fclose(s); delete(s); clear s; set(handles.edit1,'String', '2'); end tf=strcmp('cepat',hasil); if tf == 1

s = serial('COM5'); set(s,'BaudRate',9600); fopen(s); fprintf(s,'3'); fclose(s); delete(s); clear s; set(handles.edit1,'String', '3'); end tf=strcmp('lambat',hasil); if tf == 1 s = serial('COM5'); set(s,'BaudRate',9600); fopen(s); fprintf(s,'4'); fclose(s); delete(s); clear s; set(handles.edit1,'String', '4'); end

Pada proses pengiriman data secara serial ini terdapat ptogram strcmp yang berfungsi untuk mencari logika yang benar. Pada saat fungsi logika strcmp bernilai benar maka progam melakukan pengaturan baudrate dan COM port. Pengaturan

baudrate adalah 9600 sesuai dengan pengaturan baudrate laptop dan mikrokontroler.

Pengaturan COM port adalah COM 5, pengaturan COM port ini sesuai dengan pengaturan COM port yang digunakan untuk komunikasi serial. Setelah melakukan pengaturan, program akan mengirim data berupa sting untuk mikrokontroler sesuai dengan ucapan yang dikenali pada proses pengenalan sebelumnya. Berdasarkan hasil pengujian setelah push button “Rekam” ditekan, program dapat menjalankan proses merekam, menampilkan plot gambar sinyal hasil perekaman ucapan oleh pengguna, menjalankan proses processing, menampilkan plot gambar sinyal hasil

pre-processing, menjalankan proses ekstraksi ciri, melakukan pembandingan dengan

menggunakan fungsi jarak Euclidean, menentukan hasil keluaran, melakukan komunikasi serial untuk mikrokontroler, menampilkan plot gambar sinya hasil ekstraksi ciri DCT, menampilkan hasil penentuan keluaran dan data yang dikirim secara serial dalam edit text dalam tampilan antarmuka.

Tabel 4.1 Hasil Pengenalan Ucapan Yang Dikenali

No Ucapan Masukan Ucapan Yang Dikenali Data Yang Dikirim

1 Hidup Hidup 1

2 Mati Mati 2

3 Cepat Cepat 3

4 Lambat Lambat 4

Pada tabel 4.1 menampilkan hasil pengenalan ucapan yang telah dilakukan pada saat push button “Rekam” ditekan. Dengan hasil tersebut terlihat bahwa program pengenalan ucapan sudah berjalan dengan baik ketika dilakukan pengujian program antarmuka pengenalan ucapan. Gambar 4.4 menampilkan contoh hasil pengujian setelah push button “Rekam” ditekan dengan penguna memberikan masukan ucapan “hidup”, batas potong 0,2 dan downsampling 2.

Gambar 4.4 Tampilan Antarmuka Setelah Push Button “Rekam” Ditekan

Dokumen terkait