• Tidak ada hasil yang ditemukan

4.2 I MPLEMENTASI A NTARMUKA S ISTEM

4.2.9 Halaman Tentang Programmer

Halaman Tentang Programmer ini berisi tentang penulis serta

kontak yang dapat dihubungi apabila terdapat kritik, saran atau

pertanyaan.

76

BAB V

KESIMPULAN DAN SARAN

Pada bab ini akan dijelaskan mengenai kesimpulan dari pengujian

Hidden Markov Models serta hal-hal yang berkaitan dengan proses

identifikasi suara manusia. Pada bab ini juga akan diberikan beberapa

saran untuk perbaikan program kedepannya.

5.1

Kesimpulan

1.

Pada proses pengujian dan identifikasi dapat disimpulkan bahwa

metode Hidden Markov Models merupakan metode yang baik untuk

pengenalan suara manusia. Hal ini dapat dilihat dari tingkat akurasi

yang dihasilkan dari proses identifikasi dan pengujian yang telah

dibahas sebelumnya di bab 4.

2.

Dari proses pengujian, diperoleh tingkat akurasi terbaik untuk proses

Speech Recognition yaitu 95% dengan windows size 6ms, jumlah state

25 dan jenis feature extraction MFCC_D. Sedangkan untuk proses

Speaker Verification diperoleh tingkat akurasi terbaik 93% dengan

windows size 6ms, jumlah state 20 dan jenis feature extraction

b.

Speaker Verification

MFCC = 89%

MFCC_D = 93%

MFCC_D_A = 88%

4.

Metode Hidden Markov Models memerlukan jumlah data yang banyak

agar proses training dapat menghasilkan bentuk model yang baik.

5.

Dalam pemilihan windows size, tipe feature extraction dan jumlah state

mempunyai pengaruh yang besar terhadap tingkat akurasi proses

pengujian.

6.

Waktu yang diperlukan untuk melakukan proses training dengan

menggunakan Hidden Markov Models termasuk lama. Setiap proses

training memakan waktu antara 100 detik hingga paling lama memakan

waktu 700 detik. Hal ini juga dipengaruhi oleh berbagai faktor. Faktor

yang paling utama adalah banyaknya jumlah state dan besarnya

waktu yang diperlukan semakin lama. Faktor yang lain yang juga dapat

mempengaruhi lamanya proses training adalah ada atau tidaknya

aplikasi lain yang berjalan selain Matlab. Contohnya adalah Windows

Media Player, aplikasi games dan lain sebagainya.

5.2

Saran

1.

Proses pengujian dan identifikasi suara manusia yang dilakukan oleh

penulis hanya meneliti ucapan ‘nol’, ‘satu’, ‘dua’, ‘tiga’, ‘empat’,

‘lima’, ‘enam’, ‘tujuh’, ‘delapan’ dan ‘sembilan’. Pengucapan lain yang

sering digunakan oleh manusia dalam kehidupan sehari-hari juga dapat

digunakan untuk proses identifikasi suara manusia.

2.

Penggunaan feature selain MFCC juga dapat digunakan untuk

menunjang tingkat akurasi

3.

Untuk future work dapat ditambahkan fasilitas untuk menambah

speaker baru dan juga ucapan yang direkam tidak satu per satu

melainkan dalam satu kali proses rekam langsung mengucapkan

beberapa angka.

Agustini, Ketut. (2007), Biometrik Suara dengan Transformasi Wavelet

Berbasis Orthogonal Daubenchies, 50 Gematek Jurnal Teknik Komputer, Volume

9 Nomor 2.

Furui, S. , (1981), Cepstral Anaysis Technique For Automatic Speaker

Verification, IEEE Trans. Acoust. Speech Signal Process.

Hasan, M. R., Jamil, M., Rabbani, M. G., & Rahman, M. S. (2004).

SPEAKER IDENTIFICATION USING MEL FREQUENCY CEPSTRAL

COEFFICIENTS. 3rd International Conference on Electrical & Computer

Engineering. Dhaka, Bangladesh.

Hidayanto, A., & Sumardi. (2006). Pengenalan Pengucapan Kata Terisolasi

dengan Metode Hidden Markov Models (HMM) melalui Ekstraksi Ciri Linear

Predictive Coding (LPC).

Irfani, Angela., Amelia, Ratih., dan Saptanti P, Diah. (2006). Algoritma

Viterbi dalam Metode Hidden Markov Models pada Teknologi Speech

Recognition.

Joseph P. Campbell, J. (1997). Speaker Recognition : A Tutorial.

Proceedings of The IEEE , 1437-1462.

Melissa, Gressia. (2008). Pencocokkan Pola Suara (Speech Recognition)

dengan Algoritma FFT dan Divide and Conquer. Makalah IF2251 Strategi

Algoritmik.

Przytycka, T. M. (2000). Encyclopedia of The Human Genome: Hidden

Markov Models. USA: Nature Publishing Group.

R. Rabiner, Lawrence, A Tutorial on Hidden Markov Models and Selected

Applications in Speech Recogniton , IEEE, Vol.77, No 2, Februari, 1989.

Reynold, D. (2002). An Overview of Automatic Speaker Recognition

Technology. IEEE International Conference on Accoustics, Speech, and Signal

Menggunakan Algoritme VF15 dengan MFCC Sebagai Pengekstraksi Ciri.

INKOM, Vol. V, No.1

LAMPIRAN I

Perhitungan Akurasi untuk Pengujian Sistem

a.

Speech Recognition

Windows size

= 6ms

Feature Extraction

= MFCC_D

Jumlah state

= 25

nol satu dua tiga empat lima enam tujuh delapan sembilan

nol

19 0

0

0

1

0

0

0

0

0

satu

0

20

0

0

0

0

0

0

0

0

dua

0

0

19

0

0

0

0

0

1

0

tiga

0

0

0

19

0

1

0

0

0

0

empat

0

0

0

0

19

0

0

0

1

0

lima

0

0

0

0

0

18

0

0

1

1

enam

0

0

0

0

0

0

18

0

0

2

tujuh

0

0

0

0

0

0

1

17

0

2

delapan

0

0

0

0

0

0

0

0

20

0

sembilan

0

0

0

0

0

0

0

0

0

20

Jumlah suara yang dikenali = 189 suara

Jumlah suara yang tidak dikenali = 11 suara

Akurasi =

19+20+19+19+19+18+18+17+20+20

Angga

Deta

Petra

Yudhi

Angga

45

0

0

5

Deta

0

44

6

0

Petra

0

3

47

0

Yudhi

1

0

0

49

Jumlah suara yang dikenali = 185 suara

Jumlah suara yang tidak dikenalai = 15 suara

Akurasi =

45+44+47+49

84

Script dan File Pendukung

1.

pengujianSistem2.m

function varargout = pengujianSistem2(varargin) % PENGUJIANSISTEM2 M-file for pengujianSistem2.fig

% PENGUJIANSISTEM2, by itself, creates a new PENGUJIANSISTEM2 or raises the existing

% singleton*. %

% H = PENGUJIANSISTEM2 returns the handle to a new PENGUJIANSISTEM2 or the handle to

% the existing singleton*. %

% PENGUJIANSISTEM2('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in PENGUJIANSISTEM2.M with the given input arguments.

%

% PENGUJIANSISTEM2('Property','Value',...) creates a new PENGUJIANSISTEM2 or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before pengujianSistem2_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to pengujianSistem2_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)". %

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help pengujianSistem2 % Last Modified by GUIDE v2.5 29-Apr-2013 22:28:07

% Begin initialization code - DO NOT EDIT gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @pengujianSistem2_OpeningFcn, ... 'gui_OutputFcn', @pengujianSistem2_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

% Choose default command line output for pengujianSistem2 handles.output = hObject;

% Update handles structure guidata(hObject, handles);

% UIWAIT makes pengujianSistem2 wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = pengujianSistem2_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes during object creation, after setting all properties. function image_CreateFcn(hObject, eventdata, handles)

% hObject handle to image (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate image

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% modifikasi dari http://budirahmani.wordpress.com/2012/04/18/materi- revisi-program-merekam

% -suara-dan-menyimpan-dalam-bentuk-file/ % option = 'n';

% option_rec = 'n';

record_len = 3; %waktu perekaman (record length) dalam detik sample_freq = 44100; %Sampling frequency dalam Hertz (8KHz)

% name = input('Ketik nama file hasil rekaman yang akan disimpan: ','s');

file_name = sprintf('dataMasuk1.wav');

% option_rec = input('tekan y untuk mulai merekam: ','s'); % if option_rec=='y'

% while option=='n',

% input('Tekan Enter untuk mulai merekam –> '); record = wavrecord(sample_time, sample_freq);

%Records the input through the sound card to the variable with specified sampling frequency

% input('Tekan Enter untuk mendengar hasil rekamannya –> '); % sound(record, sample_freq);

% option = input('tekan y untuk menyimpan atau n untuk merekam kembali: ','s');

% end

wavwrite(record, sample_freq, file_name);

%Save the recorded data to a file with the specified file name in .wav format

set(handles.teksRekam,'String','Proses rekam 1 selesai'); % hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbuttonNext.

function pushbuttonNext_Callback(hObject, eventdata, handles) % namafile=get(handles.txtEditNameFile,'String');

file_name = sprintf('dataMasuk1.wav');

if exist('dataMasuk1.wav')==0 || exist('dataMasuk2.wav')==0 || exist('dataMasuk3.wav')==0 || exist('dataMasuk4.wav')==0

errordlg('Anda belum merekam password Anda','Peringatan'); % [nf,fs,nb]=wavread(file_name); % nf=nf(:,1); % wavplay(nf,fs); else close (pengujianSistem2); fig2 = openfig('pengujianSistem3.fig'); handles = guihandles(fig2); guidata(fig2,handles); end

% hObject handle to pushbuttonNext (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles)

record_len = 3; %waktu perekaman (record length) dalam detik sample_freq = 44100; %Sampling frequency dalam Hertz (8KHz) sample_time = sample_freq* record_len;

sample_freq = 44100; %Sampling frequency dalam Hertz (8KHz) sample_time = sample_freq* record_len;

file_name = sprintf('dataMasuk3.wav');

record = wavrecord(sample_time, sample_freq); wavwrite(record, sample_freq, file_name);

set(handles.teksRekam3,'String','Proses rekam 3 selesai'); % hObject handle to pushbutton5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles)

record_len = 3; %waktu perekaman (record length) dalam detik sample_freq = 44100; %Sampling frequency dalam Hertz (8KHz) sample_time = sample_freq*record_len;

file_name = sprintf('dataMasuk4.wav');

record = wavrecord(sample_time, sample_freq); wavwrite(record, sample_freq, file_name);

set(handles.teksRekam4,'String','Proses rekam 4 selesai'); % hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton7.

function pushbutton7_Callback(hObject, eventdata, handles) close (pengujianSistem2);

fig2 = openfig ('depan.fig'); handles = guihandles(fig2); guidata(fig2,handles);

% hObject handle to pushbutton7 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

function varargout = pengujianSistem3(varargin) % PENGUJIANSISTEM3 M-file for pengujianSistem3.fig

% PENGUJIANSISTEM3, by itself, creates a new PENGUJIANSISTEM3 or raises the existing

% singleton*. %

% H = PENGUJIANSISTEM3 returns the handle to a new PENGUJIANSISTEM3 or the handle to

% the existing singleton*. %

% PENGUJIANSISTEM3('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in PENGUJIANSISTEM3.M with the given input arguments.

%

% PENGUJIANSISTEM3('Property','Value',...) creates a new PENGUJIANSISTEM3 or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before pengujianSistem3_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to pengujianSistem3_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)". %

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help pengujianSistem3 % Last Modified by GUIDE v2.5 03-May-2013 19:47:16

% Begin initialization code - DO NOT EDIT gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @pengujianSistem3_OpeningFcn, ... 'gui_OutputFcn', @pengujianSistem3_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

guidata(hObject, handles);

% UIWAIT makes pengujianSistem3 wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = pengujianSistem3_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

[y, fs, nbits] = wavread('dataMasuk1.wav'); %read in the wav file sound(y,fs) %play back the wav file

% file_name = ('dataMasuk.wav'); % sample_freq = 8192;

% sound(file_name, sample_freq);

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles) delete ('dataMasuk1.wav'); delete ('dataMasuk2.wav'); delete ('dataMasuk3.wav'); delete ('dataMasuk4.wav'); delete ('dataMasuk1.mfc'); delete ('dataMasuk2.mfc'); delete ('dataMasuk3.mfc'); delete ('dataMasuk4.mfc'); delete ('hasilUji1.mlf'); delete ('hasilUji2.mlf');

delete ('hasilUji4.mlf'); delete ('dataTest1.scp'); delete ('dataTest2.scp'); delete ('dataTest3.scp'); delete ('dataTest4.scp'); close (pengujianSistem3); fig2 = openfig('pengujianSistem2.fig'); handles = guihandles(fig2); guidata(fig2,handles);

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton5.

function pushbutton5_Callback(hObject, eventdata, handles) tic

% Pembuatan codeAllProses

fid1 = fopen('codeAllProses.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\'; targetDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\';

fwrite(fid1,['"' srcDirectory 'dataMasuk1.wav " ' '"' targetDirectory 'dataMasuk1.mfc " ']);

fprintf(fid1,'\n');

fwrite(fid1,['"' srcDirectory 'dataMasuk2.wav " ' '"' targetDirectory 'dataMasuk2.mfc " ']);

fprintf(fid1,'\n');

fwrite(fid1,['"' srcDirectory 'dataMasuk3.wav " ' '"' targetDirectory 'dataMasuk3.mfc " ']);

fprintf(fid1,'\n');

fwrite(fid1,['"' srcDirectory 'dataMasuk4.wav " ' '"' targetDirectory 'dataMasuk4.mfc " ']);

fprintf(fid1,'\n'); fclose(fid1);

% Extract feature dan pembuatan prototype

set(handles.teksProses1,'String','Sedang melakukan proses...'); a = 'Proses feature extraction .. ';

b = 'HCopy -A -C mfcc_D_Config_3 -S codeAllProses.scp'; dos (b);

step1 = {a;b};

set(handles.teksProses1,'String',step1); c = 'Proses pembuatan proto .. ';

createProto('MFCC_D',24,25)

set(handles.teksProses2,'String',c);

% Training dan testing dataMasuk

d = 'Proses Training dan testing .. '; e = 'HParse -A grammar wdnet';

dos (e);

step2 = {d;e};

set(handles.teksProses3,'String',step2); % pembuatan file test

fprintf(fid4,'\n'); fclose(fid4);

fid5=fopen('dataTest4.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi'; fwrite(fid5,['"' srcDirectory '\' 'dataMasuk4.mfc"']); fprintf(fid5,'\n');

fclose(fid5);

% testing dengan algoritma viterbi

f = 'HVite -A -w wdnet -l . -o ST -i hasilUji1.mlf -S dataTest1.scp -H hmm3/hmmdefs dict model.list';

g = 'HVite -A -w wdnet -l . -o ST -i hasilUji2.mlf -S dataTest2.scp -H hmm3/hmmdefs dict model.list';

h = 'HVite -A -w wdnet -l . -o ST -i hasilUji3.mlf -S dataTest3.scp -H hmm3/hmmdefs dict model.list';

i = 'HVite -A -w wdnet -l . -o ST -i hasilUji4.mlf -S dataTest4.scp -H hmm3/hmmdefs dict model.list';

dos (f); dos (g); dos (h); dos (i); step3 = {f;g;h;i}; set(handles.teksProses4,'String',step3);

% Menampilkan hasil pengenalan

rec1 = textread('hasilUji1.mlf','%s'); if (strcmp(rec1(3),'nol') == 1)

set(handles.teksHasil,'String','0') elseif (strcmp(rec1(3), 'satu') == 1) set(handles.teksHasil,'String','1') elseif (strcmp(rec1(3),'dua') == 1) set(handles.teksHasil,'String','2') elseif (strcmp(rec1(3), 'tiga') == 1) set(handles.teksHasil,'String','3') elseif (strcmp(rec1(3),'empat') == 1) set(handles.teksHasil,'String','4') elseif (strcmp(rec1(3), 'lima') == 1) set(handles.teksHasil,'String','5') elseif (strcmp(rec1(3), 'enam') == 1) set(handles.teksHasil,'String','6') elseif (strcmp(rec1(3),'tujuh') == 1)

elseif (strcmp(rec1(3),'sembilan') == 1) set(handles.teksHasil,'String','9') else set(handles.teksHasil,'String','x') end rec2 = textread('hasilUji2.mlf','%s'); if (strcmp(rec2(3),'nol') == 1) set(handles.teksHasil2,'String','0') elseif (strcmp(rec2(3), 'satu') == 1) set(handles.teksHasil2,'String','1') elseif (strcmp(rec2(3),'dua') == 1) set(handles.teksHasil2,'String','2') elseif (strcmp(rec2(3), 'tiga') == 1) set(handles.teksHasil2,'String','3') elseif (strcmp(rec2(3),'empat') == 1) set(handles.teksHasil2,'String','4') elseif (strcmp(rec2(3), 'lima') == 1) set(handles.teksHasil2,'String','5') elseif (strcmp(rec2(3), 'enam') == 1) set(handles.teksHasil2,'String','6') elseif (strcmp(rec2(3),'tujuh') == 1) set(handles.teksHasil2,'String','7') elseif (strcmp(rec2(3), 'delapan') == 1) set(handles.teksHasil2,'String','8') elseif (strcmp(rec2(3),'sembilan') == 1) set(handles.teksHasil2,'String','9') else set(handles.teksHasil,'String','x') end rec3 = textread('hasilUji3.mlf','%s'); if (strcmp(rec3(3),'nol') == 1) set(handles.teksHasil3,'String','0') elseif (strcmp(rec3(3), 'satu') == 1) set(handles.teksHasil3,'String','1') elseif (strcmp(rec3(3),'dua') == 1) set(handles.teksHasil3,'String','2') elseif (strcmp(rec3(3), 'tiga') == 1) set(handles.teksHasil3,'String','3') elseif (strcmp(rec3(3),'empat') == 1) set(handles.teksHasil3,'String','4') elseif (strcmp(rec3(3), 'lima') == 1) set(handles.teksHasil3,'String','5') elseif (strcmp(rec3(3), 'enam') == 1) set(handles.teksHasil3,'String','6') elseif (strcmp(rec3(3),'tujuh') == 1) set(handles.teksHasil3,'String','7') elseif (strcmp(rec3(3), 'delapan') == 1) set(handles.teksHasil3,'String','8') elseif (strcmp(rec3(3),'sembilan') == 1) set(handles.teksHasil3,'String','9') else set(handles.teksHasil,'String','x') end rec4 = textread('hasilUji4.mlf','%s');

set(handles.teksHasil4,'String','7') elseif (strcmp(rec4(3), 'delapan') == 1) set(handles.teksHasil4,'String','8') elseif (strcmp(rec4(3),'sembilan') == 1) set(handles.teksHasil4,'String','9') else set(handles.teksHasil,'String','x') end toc

% hObject handle to pushbutton5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles)

[y, fs, nbits] = wavread('dataMasuk2.wav'); %read in the wav file sound(y,fs) %play back the wav file

% hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton7.

function pushbutton7_Callback(hObject, eventdata, handles)

[y, fs, nbits] = wavread('dataMasuk3.wav'); %read in the wav file sound(y,fs) %play back the wav file

% hObject handle to pushbutton7 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton8.

function pushbutton8_Callback(hObject, eventdata, handles)

[y, fs, nbits] = wavread('dataMasuk4.wav'); %read in the wav file sound(y,fs) %play back the wav file

% hObject handle to pushbutton8 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

3.

pengujianSistem3_Speaker.m

function pushbutton9_Callback(hObject, eventdata, handles) close (pengujianSistem3);

fig2 = openfig('pengujianSistem3_Speaker.fig'); handles = guihandles(fig2);

guidata(fig2,handles);

% hObject handle to pushbutton9 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton11.

function pushbutton11_Callback(hObject, eventdata, handles) close (pengujianSistem3);

fig2 = openfig('depan.fig'); handles = guihandles(fig2); guidata(fig2,handles);

% hObject handle to pushbutton11 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

function varargout = pengujianSistem3_Speaker(varargin)

% PENGUJIANSISTEM3_SPEAKER M-file for pengujianSistem3_Speaker.fig % PENGUJIANSISTEM3_SPEAKER, by itself, creates a new

PENGUJIANSISTEM3_SPEAKER or raises the existing % singleton*.

%

% H = PENGUJIANSISTEM3_SPEAKER returns the handle to a new PENGUJIANSISTEM3_SPEAKER or the handle to

% the existing singleton*. %

%

PENGUJIANSISTEM3_SPEAKER('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in PENGUJIANSISTEM3_SPEAKER.M with the given input arguments.

%

% PENGUJIANSISTEM3_SPEAKER('Property','Value',...) creates a new PENGUJIANSISTEM3_SPEAKER or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before pengujianSistem3_Speaker_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to

pengujianSistem3_Speaker_OpeningFcn via varargin. %

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)". %

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

% End initialization code - DO NOT EDIT

% --- Executes just before pengujianSistem3_Speaker is made visible. function pengujianSistem3_Speaker_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn. % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to pengujianSistem3_Speaker (see VARARGIN)

% Choose default command line output for pengujianSistem3_Speaker handles.output = hObject;

% Update handles structure guidata(hObject, handles);

% UIWAIT makes pengujianSistem3_Speaker wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = pengujianSistem3_Speaker_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure

[y, fs, nbits] = wavread('dataMasuk1.wav'); %read in the wav file sound(y,fs)

% hObject handle to pushbuttonDengar (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbuttonUlang.

function pushbuttonUlang_Callback(hObject, eventdata, handles) delete ('dataMasuk1.wav'); delete ('dataMasuk2.wav'); delete ('dataMasuk3.wav'); delete ('dataMasuk4.wav'); delete ('dataMasuk1.mfc'); delete ('dataMasuk2.mfc'); delete ('dataMasuk3.mfc'); delete ('dataMasuk4.mfc'); delete ('hasilUjiSpeaker1.mlf'); delete ('hasilUjiSpeaker2.mlf'); delete ('hasilUjiSpeaker3.mlf'); delete ('hasilUjiSpeaker4.mlf'); delete ('dataTestSpeaker1.scp'); delete ('dataTestSpeaker2.scp'); delete ('dataTestSpeaker3.scp'); delete ('dataTestSpeaker4.scp'); close (pengujianSistem3_Speaker); fig2 = openfig('pengujianSistem2.fig'); handles = guihandles(fig2); guidata(fig2,handles);

% hObject handle to pushbuttonUlang (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbuttonProses.

function pushbuttonProses_Callback(hObject, eventdata, handles) tic

% Pembuatan codeAllProses

fid1 = fopen('codeAllProsesSpeaker.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\'; targetDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\';

fwrite(fid1,['"' srcDirectory 'dataMasuk1.wav " ' '"' targetDirectory 'dataMasuk1.mfc " ']);

fprintf(fid1,'\n');

fwrite(fid1,['"' srcDirectory 'dataMasuk2.wav " ' '"' targetDirectory 'dataMasuk2.mfc " ']);

fprintf(fid1,'\n');

fwrite(fid1,['"' srcDirectory 'dataMasuk3.wav " ' '"' targetDirectory 'dataMasuk3.mfc " ']);

fprintf(fid1,'\n');

fwrite(fid1,['"' srcDirectory 'dataMasuk4.wav " ' '"' targetDirectory 'dataMasuk4.mfc " ']);

fprintf(fid1,'\n'); fclose(fid1);

dos (e);

step2 = {d;e};

set(handles.teksProses3,'String',step2); % pembuatan file test

fid2=fopen('dataTestSpeaker1.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi'; fwrite(fid2,['"' srcDirectory '\' 'dataMasuk1.mfc"']); fprintf(fid2,'\n');

fclose(fid2);

fid3=fopen('dataTestSpeaker2.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi'; fwrite(fid3,['"' srcDirectory '\' 'dataMasuk2.mfc"']); fprintf(fid3,'\n');

fclose(fid3);

fid4=fopen('dataTestSpeaker3.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi'; fwrite(fid4,['"' srcDirectory '\' 'dataMasuk3.mfc"']); fprintf(fid4,'\n');

fclose(fid4);

fid5=fopen('dataTestSpeaker4.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi'; fwrite(fid5,['"' srcDirectory '\' 'dataMasuk4.mfc"']); fprintf(fid5,'\n');

fclose(fid5);

% testing dengan algoritma viterbi

f = 'HVite -A -w wdnet2 -l . -o ST -i hasilUjiSpeaker1.mlf -S dataTestSpeaker1.scp -H hmm0/hmmdefs dict2 model.list2';

g = 'HVite -A -w wdnet2 -l . -o ST -i hasilUjiSpeaker2.mlf -S dataTestSpeaker2.scp -H hmm0/hmmdefs dict2 model.list2';

h = 'HVite -A -w wdnet2 -l . -o ST -i hasilUjiSpeaker3.mlf -S dataTestSpeaker3.scp -H hmm0/hmmdefs dict2 model.list2';

i = 'HVite -A -w wdnet2 -l . -o ST -i hasilUjiSpeaker4.mlf -S dataTestSpeaker4.scp -H hmm0/hmmdefs dict2 model.list2';

dos (f); dos (g); dos (h); dos (i); step3 = {f;g;h;i}; set(handles.teksProses4,'String',step3);

% Menampilkan hasil pengenalan

set(handles.teksProses,'String','Anda dikenali sebagai ..'); rec1 = textread('hasilUjiSpeaker1.mlf','%s');

rec2 = textread('hasilUjiSpeaker2.mlf','%s'); rec3 = textread('hasilUjiSpeaker3.mlf','%s'); rec4 = textread('hasilUjiSpeaker4.mlf','%s');

if (rec1{3}(1) == 'a' && rec2{3}(1) == 'a' && rec3{3}(1) == 'a') set(handles.teksHasil,'String','Angga')

elseif (rec1{3}(1) == 'a' && rec2{3}(1) == 'a' && rec4{3}(1) == 'a') set(handles.teksHasil,'String','Angga')

elseif (rec1{3}(1) == 'a' && rec3{3}(1) == 'a' && rec4{3}(1) == 'a') set(handles.teksHasil,'String','Angga')

elseif (rec2{3}(1) == 'a' && rec3{3}(1) == 'a' && rec4{3}(1) == 'a') set(handles.teksHasil,'String','Angga')

elseif (rec1{3}(1) == 'd' && rec2{3}(1) == 'd' && rec3{3}(1) == 'd' ) set(handles.teksHasil,'String','Deta')

elseif (rec1{3}(1) == 'd' && rec2{3}(1) == 'd' && rec4{3}(1) == 'd' ) set(handles.teksHasil,'String','Deta')

elseif (rec1{3}(1) == 'd' && rec3{3}(1) == 'd' && rec4{3}(1) == 'd') set(handles.teksHasil,'String','Deta')

elseif (rec2{3}(1) == 'd' && rec3{3}(1) == 'd' && rec4{3}(1) == 'd') set(handles.teksHasil,'String','Deta')

elseif (rec1{3}(1) == 'p' && rec2{3}(1) == 'p' && rec3{3}(1) == 'p' ) set(handles.teksHasil,'String','Petra')

elseif (rec1{3}(1) == 'p' && rec2{3}(1) == 'p' && rec4{3}(1) == 'p' ) set(handles.teksHasil,'String','Petra')

elseif (rec1{3}(1) == 'p' && rec3{3}(1) == 'p' && rec4{3}(1) == 'p') set(handles.teksHasil,'String','Petra')

elseif (rec2{3}(1) == 'p' && rec3{3}(1) == 'p' && rec4{3}(1) == 'p') set(handles.teksHasil,'String','Petra')

elseif (rec1{3}(1) == 'y' && rec2{3}(1) == 'y' && rec3{3}(1) == 'y' ) set(handles.teksHasil,'String','Yudhi')

elseif (rec1{3}(1) == 'y' && rec2{3}(1) == 'y' && rec4{3}(1) == 'y' ) set(handles.teksHasil,'String','Yudhi')

elseif (rec1{3}(1) == 'y' && rec3{3}(1) == 'y' && rec4{3}(1) == 'y') set(handles.teksHasil,'String','Yudhi')

elseif (rec2{3}(1) == 'y' && rec3{3}(1) == 'y' && rec4{3}(1) == 'y') set(handles.teksHasil,'String','Yudhi')

else

set(handles.teksHasil,'String','Maaf suara Anda tidak terdaftar') end

6.

File model.list

7.

File model.list2

8.

File dict

(SENT-START ( $orang ) SENT-END)

nol satu dua tiga empat lima enam tujuh delapan sembilan sil angga deta petra yudhi sil SENT-START [] sil SENT-END [] sil nol nol satu satu dua dua tiga tiga empat empat lima lima enam enam tujuh tujuh delapan delapan sembilan sembilan

10.File mfccConfig_1

11.createSCP.m

SENT-START [] sil SENT-END [] sil angga angga deta deta petra petra yudhi yudhi #Coding Parameter MFCC SOURCEKIND = WAVEFROM SOURCEFORMAT = WAV TARGETKIND = MFCC USEPOWER = F TARGETRATE = 20000 SAVECOMPRESSED = F SAVEWITHCRC = T WINDOWSIZE = 40000 USEHAMMING = T PREEMCOEF = 0.97 NUMCHANS = 24 CEPLIFTER = 22 NUMCEPS = 12 LPCORDER = 12 ENORMALISE = F

% membuat file codeAll.scp

dirAsal = 'C:\Users\detha\Documents\MATLAB\Skripsi\' dirAsal = {'data0';'data1'; 'data2'; 'data3';

'data4';'data5';'data6';'data7';'data8';'data9'};

files=[];

for i=1:length(dirAsal)

% masuk ke direktori baca wavfile cd (dirAsal{i});

fileWav= dir ('*.wav'); % ambil nama file

filename={}; for j=1:length(fileWav) filename{j}= fileWav(j).name(1:length(fileWav(j).name)- 4); end files{i}=filename; cd ..; end

12.createSCP2.m

end end

fclose(fid1);

% membuat file codeAll.scp

dirAsal = 'C:\Users\detha\Documents\MATLAB\Skripsi\' dirAsal = {'data0';'data1'; 'data2'; 'data3';

'data4';'data5';'data6';'data7';'data8';'data9'};

files=[];

for i=1:length(dirAsal)

% masuk ke direktori baca wavfile cd (dirAsal{i});

fileWav= dir ('*.wav'); % ambil nama file

filename={}; for j=1:length(fileWav) filename{j}= fileWav(j).name(1:length(fileWav(j).name)-4); end files{i}=filename; cd ..; end

% mencetak file codeAll.scp

fid1 = fopen ('codeAll2.scp','w');

srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\'; targetDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\hasil2'; for m=1:length(files) fileBaru=files{m}; for n=1:length(fileBaru)

fwrite(fid1, ['"' srcDirectory dirAsal{m} '\' fileBaru{n} '.wav" ' '"' targetDirectory '\' fileBaru{n} '.mfc"']);

fprintf(fid1,'\n'); disp(fileBaru{n}); end

end

14.File codeAll2.scp

15.createMlf.m

"C:\Users\detha\Documents\MATLAB\Skripsi\data0\ANGGA0-1.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-1.mfc" "C:\Users\detha\Documents\MATLAB\Skripsi\data0\ANGGA0-2.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-2.mfc" "C:\Users\detha\Documents\MATLAB\Skripsi\data0\ANGGA0-3.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-3.mfc" . . . "C:\Users\detha\Documents\MATLAB\Skripsi\data9\YUDHI9-3.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-3.mfc" "C:\Users\detha\Documents\MATLAB\Skripsi\data9\YUDHI9-4.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-4.mfc" "C:\Users\detha\Documents\MATLAB\Skripsi\data9\YUDHI9-5.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-5.mfc" "C:\Users\detha\Documents\MATLAB\Skripsi\data0\ANGGA0-1.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil2\ANGGA0-1.mfc" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil2\PETRA2-4.mfc" . . . "C:\Users\detha\Documents\MATLAB\Skripsi\hasil2\YUDHI9-2.mfc" "C:\Users\detha\Documents\MATLAB\Skripsi\data9\YUDHI9-3.wav" "C:\Users\detha\Documents\MATLAB\Skripsi\hasil2\YUDHI9-3.mfc"

Dokumen terkait