26
BAB III ANALISIS DAN PERANCANGAN PROGRAM APLIKASI
3.1
Spesifikasi yang Dibutuhkan Untuk dapat menjalankan Voice Recognition Program ini dibutuhkan beberapa
spesifikasi perangkat keras dan perangkat lunak yang menunjang. 3.1.1
Spesifikasi Kebutuhan Piranti Keras Spesifikasi minimum piranti keras sebagai berikut:
•
Processor minimum pentium IV, Intel Celeron
•
Memory dengan kapasitas 256 MB
•
Monitor SVGA
•
Mouse dan Keyboard
•
Harddisk dengan free space 200 MB
•
Video Card 1 MB
•
Sound Card dilengkapi dengan speaker
•
Microphone
3.1.2
Spesifikasi Kebutuhan Piranti Lunak Spesifikasi piranti lunak (software) yang dibutuhkan untuk menjalankan
program ini adalah sebagai berikut: •
Sistem operasi Microsoft Windows 9x, atau XP.
•
Matlab Runtime v.14.
27 3.2
Analisis Program Aplikasi 3.2.1
Analisis Proses Perekaman Suara Proses perekaman suara dilakukan dengan menggunakan komponen
toolbox dengan fungsi dan syntax-syantax yang terdapat pada Borland Delphi 7. Suara direkam melalui microphone yang tersambung ke komputer dengan durasi 3 detik. Hasil perekaman suara yang berupa file wave disimpan pada folder yang diakses melalui Borland Delphi 7. 3.2.2
Analisis Data Data hasil perekaman suara
yang berupa file wave (.wav) disimpan
dalam folder C:\Voice\Train\. Perekaman dilakukan dengan menggunakan Borland Delphi 7. Saat melakukan pelatihan dan pengujian terhadap data-data suara, data diambil langsung oleh Matlab V.7 (R14) melalui prosedur yang terdapat pada M-file. 3.2.3
Analisis File Wave dengan Algoritma Kuantisasi Vektor LBG Proses pencocokan suara dilakukan dengan mencocokan suara yang
sudah direkam dan dilatih dengan suara baru yang sedang direkam. Proses ini menggunakan program Matlab V.7 (R14) yang perhitungannya dilakukan dengan metode kuantisasi vektor LBG. Proses analisa ini menggunakan M-file dengan fungsi dan perintah yang terdapat pada Matlab.
28 3.3
Perancangan Program Aplikasi 3.3.1
Perancangan Struktur Menu Struktur menu pada perancangan ini dapat dilihat pada gambar 3.1 yang
memperlihatkan susunan dari menu rancangan utama yang telah ada. Struktur menu ini dirancang untuk memudahkan user dalam memilih menu yang ada.
Modul Menu Utama
Modul “Voice”
Modul “Data”
Gambar 3.1 Struktur Menu Utama
3.3.2
Perancangan Modul Modul yang akan digunakan di program ini ada tiga modul, modul menu
utama, modul data, dan modul Voice. A.
Modul Menu Utama Modul ini terdiri dari 2 modul pilihan utama, yaitu menu Voice
dan menu Data. User dapat memilih menu Data untuk melihat apakah data suara yang ingin direkam sudah pernah ada. Jika belum ada, user dapat kembali ke Main Menu dan memilih menu Voice untuk merekam suara.
29 B.
Modul Menu Voice Modul voice adalah modul yang digunakan
untuk merekam
suara, melatih, dan mengenali suara baru yang masuk sebagai salah satu suara yang telah direkam. Jika suara orang tersebut belum pernah direkam, dimasukkan ke dalam data dan belum dilatih, maka suara tersebut tidak akan dikenali. Modul ini berisi modul Add Voice untuk menambahkan suara baru, dan modul Recognize untuk mengenali suara yang baru masuk sebagai salah satu suara yang ada dalam data. C.
Modul Menu AddVoice Modul ini digunakan untuk merekam suara langsung dari
komputer yang terhubung dengan microphone untuk menghasilkan file wave. Setelah suara disave, maka nama file wave tersebut akan masuk ke dalam daftar data. D.
Modul Menu Recognize Modul ini berisi fungsi Training untuk melatih data suara yang
sudah direkam untuk dijadikan codebook, dan fungsi Recognize untuk mencocokkan suara yang direkam dengan data suara yang ada dan sudah ditraining. E.
Modul Menu Data Modul ini berisikan data-data suara yang sudah pernah direkam.
Pada modul ini terdapat menu play untuk mendengarkan kembali rekaman suara dan menu delete untuk menghapus rekaman yang ada.
30 3.4
Perancangan Proses Suara 3.4.1. Modul M-file Modul M-file merupakan modul yang terdapat pada program Matlab. Untuk melakukan proses pengenalan suara akan dibuat 2 M-file utama yang akan memanggil M-file yang lain . Yang pertama adalah training.m yang digunakan untuk melatih suara yang ada dengan metode kuantisasi vektor LBG. Kedua adalah recognize.m untuk mengenali suara baru sebagai salah satu data suara yang sudah pernah direkam dan dilatih. 3.3.2. Algoritma Proses Setiap modul M-file utama dalam memproses suara tersebut memanggil modul M-file lain dalam bentuk fungsi yang saling berhubungan. Algoritma dari 2 M-file utama yang digunakan dalam memproses suara dapat dilihat pada gambar 3.2 dan 3.3. training.m
mfcc.m
vqlbg.m
SplitCodeWord.m FrameBlock.m
Windowing.m
melfb.m disteu.m
Gambar 3.2 Algoritma Proses training.m
31
recognize.m
mfcc.m
FrameBlock.m
Windowing.m
disteu.m
melfb.m
Gambar 3.3 Algoritma Proses recognize.m
Ada 9 M-file yang dibuat dengan menggunakan program Matlab, dan hanya ada 2 M-file utama yang dipanggil saat Voice Recognition Program dijalankan, yaitu training.m dan recognize.m. A.
FrameBlock FrameBlock adalah sebuah fungsi yang berguna untuk memotong vektor
masukan menjadi frame-frame yang saling tumpang tindih (overlap). FrameBlock berperan dalam mengubah suara yang telah direkam dengan frekuensi pengambilan sample yang tinggi menjadi frame-frame. Jumlah frame yang diperlukan dihitung dengan mengurangi panjang sinyal input dengan N (N=256) dan membaginya dengan jarak sampel antar frame kemudian mulailah dibuat frame yang pertama hingga terakhir. nbFrame = length(input) – N /M ; for i = 0 to nbFrame { temp = input(i*M+1; i*M+N); Frames(i+1,1:N) = temp; i=i +1; }
32 Hasilnya ditampung ke dalam temp dan dari temp dimasukkan ke dalam Frames yang merupakan return nilai dari fungsi FrameBlock. B.
Windowing Fungsi ini berguna untuk menerapkan Hamming windows pada frame-
frame hasil proses sebelumnya. Pertama diidentifikasi dimensi dari frame kemudian diterapkan Hamming windows pada tiap-tiap frame dengan menggunakan perintah w = hamming(nbSamples); yang terdapat pada Matlab. Lalu dibuat sebuah perulangan sebanyak jumlah frame dan menerapkan Hamming windows pada tiap-tiap perulangan yaitu dengan mengalikan antara Hamming windows dengan frame (terdapat pada perintah w'.*temp)
dan
hasilnya disimpan pada Windows. Dengan demikian proses ini menghasilkan frame yang telah diterapkan jendela Hamming di dalamnya yaitu Windows. C.
Melfb Setelah didapatkan Windows kemudian akan dilakukan pembungkusan
frekuensi mel. Pada proses ini didapatkan spektrum frekuensi mel yang dapat diproses lebih jauh menjadi koefisien cepstrum frekuensi mel yang merupakan metode pengembalian ke domain waktu. Namun sebelum menerapkannya Windows harus sudah diubah ke bentuk frekuensi terlebih dahulu dengan menggunakan fungsi FFT . D.
Mfcc Bagian ini adalah bagian yang terakhir dari bagian mfcc yang diakhiri
dengan pengubahan spektrum frekuensi mel kembali ke domain waktu dengan menggunakan fungsi mfcc ini. Fungsi ini akan menghasilkan koefisien cepstrum frekuensi mel.
33 Pertama
dibuat dahulu frame-frame dari sinyal masukan dengan
memanggil fungsi FrameBlock dengan passing parameter. N = 256; M = 100; NN = N/2+1; S = FrameBlock(s, N, M);
Perintah tersebut akan menghasilkan frame dengan tiap frame mengandung 256 sampel dan berjarak 100 antara frame. Sedangkan s pada fungsi FrameBlock adalah sinyal input yang akan dibaca dari suara yang direkam. Kemudian dilakukan penjendelaan frame dan mengubahnya ke bentuk frekuensi dengan fungsi Windowing. WinS = Windowing(S); Transpose(WinS); FFT(WinS);
WinS adalah hasil dari penerapan
Hamming windows pada s, dan
hasilnya kemudian ditranspose terlebih dahulu baru dilakukan perhitungan dengan FFT. Hal ini dilakukan karena FFT hanya dapat dilakukan dalam arah sebaliknya. Mfcc menghasilkan
koefisien cepstrum frekuensi mel yang
berjumlah 19 buah. E.
Disteu Fungsi disteu digunakan untuk menghitung jarak euclidean antara kolom-
kolom dari matriks yang dibandingkan. Fungsi ini digunakan sebagai fungsi bantuan saat pembuatan fungsi untuk membagi centroid yaitu SplitCodeword dan pada akhirnya dalam proses kuantisasi vektor Lind-Buzo-Gray.
34 Mula-mula dilakukan pendeteksian ukuran x dan y yaitu dua vektor yang akan dibandingkan. Hasil dari ukuran kedua vektor tersebut disimpan sebagai M, N, M2 dan P. Kemudian dilakukan perhitungan error untuk mengetahui baris dari kedua matriks yang akan dibandingkan tidak sama besar maka akan muncul pesan error bahwa dimensi matriks tidak cocok satu dengan yang lain. Perintah ini terdapat pada baris berikut: [M, N] = size(x); [M2, P] = size(y); if (M ≠ M2) error('Dimensi matriks tidak cocok.') end
Mula-mula dibentuk terlebih dahulu d yaitu dengan memberikan nilai awal nol untuk semua baris dan kolom yang akan dibentuk. Kemudian perhitungan awal dimulai yaitu dengan mula-mula mendeteksi kolom yang lebih banyak antara kedua matriks. Jika didapatkan kolom N lebih banyak dari P maka yang akan dibentuk adalah matriks bernilai nol sebanyak satu baris dan N kolom, begitu pula sebaliknya jika didapatkan kolom P lebih banyak dari N maka yang akan dibentuk adalah matriks bernilai nol sebanyak satu baris dan P kolom. Hal ini karena pembentukan matriks nol ini pada akhirnya digunakan untuk menyapu seluruh bagian dari matriks yang lebih banyak kolomnya untuk menghasilkan d. Kemudian dilakukan pengulangan sampai seluruh kolom yang lebih sedikit dibandingkan dengan seluruh kolom yang lebih banyak dan menentukan kuadarat jumlah hasil pengurangan keduanya untuk kemudian dimasukkan dalam satu baris saja.
35 Langkah akhir adalah mengakarkan hasil sebelumnya yaitu dengan perintah d = d.^0.5; yang akan menarik akar kuadrat dari masing-masing elemen matrik d. Dengan demikian tabel jarak euclidean d antara kedua matriks dengan membandingkan masing-masing kolomnya telah terbentuk. F.
SplitCodeWord SplitCodeword digunakan untuk membagi centroid menjadi dua. Untuk
membagi centroid menjadi dua mula-mula harus didefinisikan terlebih dahulu nilai e yaitu sebesar 0,01 dan dimY yaitu 19. e = 0.01; dimY = 19;
Langkah berikutnya adalah mengurangi d, yang mana digunakan untuk menyimpan semua sampel, yang dipertimbangkan untuk centroid yang disimpan di c. Kemudian memecah centroid menjadi dua for i = 1 to dimY tmp1(i) = c(i) + e; tmp2(i) = c(i) - e; end; transpose [tmp1; tmp2]; c = [tmp1; tmp2]; z = disteu(d,c);
z mengandung jarak euclidean dari masing-masing vektor dalam d terhadap dua vektor tmp 1 dan tmp 2 (terintegrasi di c) satu baris tiap sampel dan kolom untuk tmp 1 dan satu untuk tmp2. Lalu hitung centroid yang baru, kemudian loop hingga c tidak berubah lebih dari e. Dua centroid yang terbentuk dibandingkan dengan anak dari
36 centroid yang lama. Lalu diulang dengan yang sama hingga kedua centroid bergerak kurang daripada e dalam arah sembarang. Setelah proses diatas selesai maka akan dihasilkan c yang mengandung dua centroid baru. Dengan demikian pemecahan centroid menjadi dua telah selesai dan dihasilkan variabel c dan ind. G.
Vqlbg Fungsi M-file Vqlbg digunakan untuk mengkuantisasi secara vektor
sampel-sampel yang ada dengan banyaknya centroid yang dihasilkan seperti yang diinginkan (dalam hal ini 16 centroid). MULAI
Mencari centroid
Ya
m<M
Tidak
Membagi tiap centroid
m = 2*m
Mengklusterkan vektor
Mencari centroid
Menghitung D (distorsi)
Tidak D' = D
D'− D <ε D
Ya
Gambar 3.4 Diagram algoritma LBG (Rabiner and Juang, 1993)
SELESAI
37
Selanjutnya akan dijelaskan pembuatan M-files untuk proses pelatihan dan pengujian pada training dan recognizing. H.
Training Setelah semua fungsi dibuat maka selanjutnya proses pelatihan siap untuk
dilakukan dengan menggabungkan fungsi-fungsi diatas. Proses pelatihan digunakan untuk membentuk codebook dari masing-masing sinyal masukan. Mula-mula ditentukan jumlah centroid yang diinginkan dalam masingmasing codebook, dalam hal ini kita menentukan jumlahnya yaitu 16 buah centroid. Kemudian dilakukan pengulangan sebanyak n buah, dimana n adalah jumlah sinyal masukan. Dalam perulangan ini dibentuk file yang berisikan teks s1 hingga sn yang dapat ditampilkan karena sudah dirubah ke bentuk string. Bagian ini berfungsi untuk mendeteksi nama-nama sinyal masukan yang dilatihkan dan ingin ditampilkan pada proses pelatihan. k = 16; for i = 1 to n do (s,fs) = read wave(from file); end
Kemudian dilakukan pembacaan masing-masing file dan disimpan ke dalam s kemudian menentukan frekuensi sampel yang disimpan pada variabel fs. Kemudian dipanggil fungsi mfcc yang disimpan ke dalam variabel v dan akan digunakan untuk membentuk codebook. untuk mendapatkan codebook dengan memanggil algoritma vqlbg yang mendapatkan input dari mfcc. Codebook dibentuk dalam struktur cell untuk menampung codebook dari masing-masing sinyal masukan.
38 v = mfcc(s, fs); code{i} = vqlbg(v, k);
Hasil dari training ini adalah codebook dari sinyal-sinyal masukan dengan centroid pada masing-masing codebook yang berjumlah 16 buah. I.
Recognize Langkah berikutnya adalah menguji sinyal-sinyal uji terhadap codebook
yang sudah dibentuk untuk dicocokkan. [s, fs] = read wave (from file); v = mfcc(s, fs); dist minimum = infinity; k1 = 0; for i = 1 to length(code) do { d = disteu(v, code{l}); dist = sum(min(d,[],2)) / size(d,1); if dist < distmin { distmin = dist; k1 = i; } } printf('Suara Anda cocok dengan suara %d', k1);
Untuk menentukan fs maka dilakukan wavread sinyal s. Hasilnya s dan fs digunakan untuk menghitung mfcc sinyal uji. Berikutnya mulailah proses pembandingan antara sinyal uji dengan codebook yaitu dengan menetapkan jarak terjauh (dalam hal ini tak terhingga atau infinite) dan menginisialisasi nilai k1 sebagai 0. Langkah selanjutnya mulai dilakukan pengulangan sebanyak panjang codebook. Dibuatlah tabel perbandingan jarak euclidean dengan fungsi disteu antara nilai mfcc yang disimpan dalam v dan codebook dalam code. Berikutnya dilakukan perhitungan jarak yaitu dengan menghitung jarak rata-rata terdekat dari masing-masing kolom pada tabel jarak euclidean. Perbandingan kemudian segera dilakukan dan apabila jaraknya masing lebih
39 kecil dan pasti kurang dari tak berhingga maka jarak minimum (disimbolkan dengan distmin) diset sebagai niali dist yang baru. Berikutnya nilai ini akan terus dipertahankan pada proses pengulangan sampai ada yang lebih kecil dari dist ini akan mengubah nilai k1 menjadi i yang tentunya akan sesuai dengan nomor file uji yang jaraknya lebih kecil tersebut. Teknik inilah yang dimanfaatkan kemudian untuk dapat menampilkan pesan hasil proses uji ini. Selanjutnya akan muncul pesan “Suara Anda cocok dengan suara x”. Demikian hingga semua sinyal telah dicocokan proses pengulangan akan berakhir. Dengan demikian selesailah sudah proses panjang mulai dari awal hingga diperoleh hasil identifikasi suara yang diinginkan. Dengan demikian proses pembuatan fungsi untuk M-file telah selesai.
3.5
Perancangan Tampilan 3.5.1
Rancangan Tampilan Menu Utama Tampilan pada halaman pertama, dirancang dengan 2 button menu dan 1
button Exit. Dua button menu tersebut jika diklik akan mengakses ke menu Voice untuk menambahkan data suara, dan mengenali suara baru sebagai salah satu data suara yang ada, dan menu Data untuk melihat data suara yang pernah direkam, dan menghapus data tersebut. Button Exit untuk keluar dari program.
40
VOICE RECOGNITION PROGRAM USING VECTOR QUANTIZATION LBG
VOICE
DATA
EXIT
Gambar 3.5 Rancangan Tampilan Halaman Pertama
3.5.2
Rancangan Tampilan Voice Form Pada halaman ini dirancang dengan 3 button yang dapat diklik, Add Voice
button yang menampilkan form baru untuk menambahkan suara baru yang belum terdapat pada Data, Recognize button yang mengakses form baru untuk melatih dan mengenali suara yang baru masuk sebagai salah satu suara yang ada dalam data, dan Back To Main Menu button untuk kembali ke halaman menu utama. Pada halaman ini juga terdapat satu edit text box untuk memasukkan nama yang akan dijadikan sebagai nama file wave. Rancangan tampilan halaman Voice dapat dilihat pada gambar 3.5.
41
VOICE
Input your name :
Add Voice Recognize
Back to Main Menu
Gambar 3.6 Rancangan Tampilan Voice Form
3.5.3
Rancangan Tampilan Add Voice Form Pada rancangan tampilan ini akan dibuat demgam 3 button dan sebuah
trackbar ini bertujuan agar user dapat memperkirakan panjang kata yang akan diucapkan dan mengetahui saat perekaman selesai. Proses perekaman mulai saat record button diklik. Suara yang direkam
belum disimpan, dan untuk menyimpan suara
tersebut dengan mengklik save button. Saat save button diklik, maka suara yang telah direkam akan disimpan ke dalam folder C:\voice\data\. Cancel button dapat diklik untuk membatalkan proses penyimpanan suara. Rancangan ini dapat dilihat pada gambar 3.6.
42
ADD VOICE
Record
SAVE
CANCEL
Gambar 3.7 Rancangan Tampilan AddVoice Form
3.5.4
Rancangan Tampilan Data Pada rancangan tampilan Data terdapat 8 editbox yang berisi data suara
yang sudah pernah direkam, dan 2 button. Button tersebut merupakan Delete button, untuk menghapus data yang sudah pernah direkam dan Back to Main Menu button untuk kembali ke menu awal. Rancangan tampilan data dapat dilihat pada gambar 3.8. 3.4.3. Rancangan Tampilan Recognize Form Rancangan ini dibuat dengan sebuah trackbar dan 4 button. Trackbar ini dibuat untuk merekam suara orang yang akan dicocokkan dengan data yang ada. Sebelum user dapat merekam suara yang ingin dicocokkan, data yang ada harus ditraining terlebih dahulu dengan mengklik training button.
43
DATA Existing Voice Delete Delete Delete
Back to Main Menu
Gambar 3.8 Rancangan Tampilan Data
Saat Record to Recognize button diklik, maka trackbar akan berjalan dan merekam suara, selama sekitar 3 detik, yang akan tersimpan ke dalam folder C:\voice\recog\ dengan nama d1.wav. Recognize button dapat diklik untuk mencocokkan suara yang direkam dengan suara yang sudah ditraining. Back to Main Menu button dapat diklik ntuk kembali ke menu utama. Rancangan tampilan Recognize Form dapat dilihat pada gambar 3.9.
44
RECOGNIZE
Record to Recognize
TRAINING
RECOGNIZE
Gambar 3.9 Rancangan Tampilan Halaman Recognize Form