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.
DAFTAR PUSTAKA
Adi, C. Kuntoro, S.J., M.A., M.S. (2008), Hidden Markov Models Based Animal Acoustic Cencusing; A Learning From Speech Technolgy.
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
Processing .
Setyabudi, Siwi., Purwanto, Agus., Warsono.(2007) Karakterisasi Suara Vokal dan Aplikasinya pada Speaker Recognition. Seminar Nasional MIPA 2007.
UNY. Yogyakarta.
Zilvan, Vicky., Muttaqien, Furqon Hensan.(2011) Identifikasi Pembicara 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+20200
𝑥 100% = 95%
b. Speaker Recognition
Windows size = 6ms Feature Extraction = MFCC_D Jumlah state = 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+49200
𝑥 100 % = 93%
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 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
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before pengujianSistem2 is made visible.
% --- Executes just before pengujianSistem2 is made visible.
function pengujianSistem2_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 pengujianSistem2 (see VARARGIN)
% 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) sample_time = sample_freq* record_len;
% 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');
% 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
%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;
file_name = sprintf('dataMasuk2.wav');
record = wavrecord(sample_time, sample_freq);
wavwrite(record, sample_freq, file_name);
set(handles.teksRekam2,'String','Proses rekam 2 selesai');
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
set(handles.teksRekam2,'String','Proses rekam 2 selesai');
% hObject handle to pushbutton4 (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)
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('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 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
% End initialization code - DO NOT EDIT
% --- Executes just before pengujianSistem3 is made visible.
function pengujianSistem3_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)
% 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 (see VARARGIN)
% Choose default command line output for pengujianSistem3 handles.output = hObject;
% Update handles structure 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 ('hasilUji4.mlf');
% 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
fid2=fopen('dataTest1.scp','w');
srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
fwrite(fid2,['"' srcDirectory '\' 'dataMasuk1.mfc"']);
fprintf(fid2,'\n');
fclose(fid2);
fid3=fopen('dataTest2.scp','w');
fid3=fopen('dataTest2.scp','w');
srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
fwrite(fid3,['"' srcDirectory '\' 'dataMasuk2.mfc"']);
fprintf(fid3,'\n');
fclose(fid3);
fid4=fopen('dataTest3.scp','w');
srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
fwrite(fid4,['"' srcDirectory '\' 'dataMasuk3.mfc"']);
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
% 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) set(handles.teksHasil,'String','7') elseif (strcmp(rec1(3), 'delapan') == 1) set(handles.teksHasil,'String','8') elseif (strcmp(rec1(3),'sembilan') == 1) set(handles.teksHasil,'String','9') else
set(handles.teksHasil,'String','x') end
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');
if (strcmp(rec4(3),'nol') == 1)
set(handles.teksHasil4,'String','0') elseif (strcmp(rec4(3), 'satu') == 1) set(handles.teksHasil4,'String','1') elseif (strcmp(rec4(3),'dua') == 1) set(handles.teksHasil4,'String','2') elseif (strcmp(rec4(3), 'tiga') == 1) set(handles.teksHasil4,'String','3')
elseif (strcmp(rec4(3),'dua') == 1) set(handles.teksHasil4,'String','2') elseif (strcmp(rec4(3), 'tiga') == 1) set(handles.teksHasil4,'String','3') elseif (strcmp(rec4(3),'empat') == 1) set(handles.teksHasil4,'String','4') elseif (strcmp(rec4(3), 'lima') == 1) set(handles.teksHasil4,'String','5') elseif (strcmp(rec4(3), 'enam') == 1) set(handles.teksHasil4,'String','6') elseif (strcmp(rec4(3),'tujuh') == 1) 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)
% --- Executes on button press in pushbutton9.
function pushbutton9_Callback(hObject, eventdata, handles) close (pengujianSistem3);
fig2 = openfig('pengujianSistem3_Speaker.fig');
handles = guihandles(fig2);
guidata(fig2,handles);
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
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help pengujianSistem3_Speaker
% Last Modified by GUIDE v2.5 03-May-2013 21:48:12
% Last Modified by GUIDE v2.5 03-May-2013 21:48:12
% Begin initialization code - DO NOT EDIT gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @pengujianSistem3_Speaker_OpeningFcn, ...
'gui_OutputFcn', @pengujianSistem3_Speaker_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
% 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 varargout{1} = handles.output;
% --- Executes on button press in pushbuttonDengar.
function pushbuttonDengar_Callback(hObject, eventdata, handles)
[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)
[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');
% 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);
% 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 codeAllProsesSpeaker.scp';
dos (b);
step1 = {a;b};
dos (b);
step1 = {a;b};
set(handles.teksProses1,'String',step1);
c = 'Proses pembuatan proto .. ';
createProto('MFCC_D',24,20)
set(handles.teksProses2,'String',c);
% Training dan testing dataMasuk
d = 'Proses Training dan testing .. ';
e = 'HParse -A grammar2 wdnet2';
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);
% Menampilkan hasil pengenalan
set(handles.teksProses,'String','Anda dikenali sebagai ..');
rec1 = textread('hasilUjiSpeaker1.mlf','%s');
% 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 % set(handles.teksHasil,'String',rec1(3))
% else
% set(handles.teksHasil,'String','Anda tidak terdaftar') % end
5. File grammar2
6. File model.list
7. File model.list2
8. File dict
$kata = nol | satu | dua | tiga | empat | lima | enam | tujuh
| delapan | sembilan ;
(SENT-START ( $kata ) SENT-END)
$orang = angga | deta | petra | yudhi ; (SENT-START ( $orang ) SENT-END)
nol sembilan sembilan
10. File mfccConfig_1
% membuat file codeAll.scp
dirAsal = 'C:\Users\detha\Documents\MATLAB\Skripsi\' dirAsal = {'data0';'data1'; 'data2'; 'data3';
'data4';'data5';'data6';'data7';'data8';'data9'};
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 ('codeAll.scp','w');
srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\';
targetDirectory =
'C:\Users\detha\Documents\MATLAB\Skripsi\hasil';
for m=1:length(files) fileBaru=files{m};
for n=1:length(fileBaru)
fwrite(fid1, ['"' srcDirectory dirAsal{m} '\'
12. createSCP2.m
for n=1:length(fileBaru)
fwrite(fid1, ['"' srcDirectory dirAsal{m} '\' fileBaru{n} '.wav" ' '"' targetDirectory '\' fileBaru{n}
'.mfc"']);
% membuat file codeAll.scp
dirAsal = 'C:\Users\detha\Documents\MATLAB\Skripsi\' dirAsal = {'data0';'data1'; 'data2'; 'data3';
'data4';'data5';'data6';'data7';'data8';'data9'};
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
fclose(fid1);
14. File codeAll2.scp
dirAsal = {'data0';'data1'; 'data2'; 'data3';
'data4';'data5';'data6';'data7';'data8';'data9'};
%masuk direktori baca file.wav cd (dirAsal{j});
fileMfc = dir ('*.wav');
%ambil nama filenya saja filename={};
for i=1:length(fileMfc)
filename{i}=fileMfc(i).name(1:length(fileMfc(i).name)-4);
end
files{j}=filename;
cd ..;
end
fid1 = fopen('allKata.mlf','w');
fwrite(fid1,'#!MLF!#');
fprintf(fid1, '\n');
for m=1:length(files)
16. createMlf2.m
fprintf(fid1, '\n');
for m=1:length(files) fileBaru=files{m};
for n=1:length(fileBaru)
fwrite(fid1, ['"*/' fileBaru{n} '.lab"']);
%masuk direktori baca file.wav cd (dirAsal{j});
fileMfc = dir ('*.wav');
%ambil nama filenya saja filename={};
for i=1:length(fileMfc)
filename{i}=fileMfc(i).name(1:length(fileMfc(i).name)-4);
end
files{j}=filename;
cd ..;
end
fid1 = fopen('allKata2.mlf','w');
fwrite(fid1,'#!MLF!#');
fprintf(fid1, '\n');
for m=1:length(files) fileBaru=files{m};
for n=1:length(fileBaru)
fwrite(fid1, ['"*/' fileBaru{n} '.lab"']);
#!MLF!#
19. File kata2phone.led
20. File katatypephone.mlf
#!MLF!#
% create file AllTrainData
% direktori asal 'C:\Users\petrav\Documents\MATLAB\Skripsi'
dirAsal = {'data0';'data1'; 'data2'; 'data3';
'data4';'data5';'data6';'data7';'data8';'data9'};
for j=1:length(fileMfc)
filename{j}= fileMfc(j).name(1:length(fileMfc(j).name)-4);
end
files{i}=filename;
cd ..;
end
% mencetak file data training
fid1=fopen('AllTrainData1.scp','w');
fid2=fopen('AllTestData1.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil'; %
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil'; %