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+20Angga
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+4984
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