Full

You might also like

You are on page 1of 190

PLAGIAT

PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

IDENTIFIKASI SUARA MANUSIA SEBAGAI KATA SANDI ATAU

PASSWORD MENGGUNAKAN METODE HIDDEN MARKOV MODELS

SKRIPSI

Diajukan untuk Memenuhi Salah Satu Syarat


Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika

Oleh :

PETRA VALENTIN WAHYUNINGTIAS

NIM : 085314025

HALAMAN JUDUL BAHASA INDONESIA


PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2013

i
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

HUMAN VOICE IDENTIFICATION AS A PASSWORD

USING HIDDEN MARKOV MODELS

A THESIS

Presented as Partial Fulfillment of the Requirements


To Obtain the Sarjana Komputer Degree
In Departement of Informatics Engineering

By :

PETRA VALENTIN WAHYUNINGTIAS

STUDENT ID : 085314025

HALAMAN JUDUL BAHASA INGGRIS


INFORMATICS ENGINEERING STUDY PROGRAM

INFORMATICS ENGINEERING DEPARTMENT

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2013

ii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

HALAMAN PERSEMBAHAN

’’ DO WHAT YOU LOVE

AND

LOVE WHAT YOU DO..”

This thesis belongs to…

Jesus Christ, my Saviour, my Life, my Eternal Love and my Power..

Thank You for stay with me and for gave me wonderful world..

My parent, my spring, my joy, my life..

Thank you for give me a chance to feel the world..

My friends and Audrey..

Thank you guys for stay with me..

v
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

ABSTRAK

Suara manusia dapat dijadikan salah satu cara untuk mengidentifikasi apa

yang diucapkan manusia dan siapa yang mengucapkannya. Pada tugas akhir ini

dikembangkan sebuah sistem yang dapat mengidentifikasi secara otomatis suara

manusia dengan menggunakan pendekatan Hidden Markov Models (HMM) dan

ekstraksi ciri Mel-frequency Cepstral Coefficients (MFCC). Secara umum HMM

digunakan untuk signal processing dan speech processing sedangkan MFCC

merupakan salah satu metode ektraksi ciri yang digunakan untuk pengenalan

suara manusia.

Penelitian ini menggunakan suara manusia yang terdiri dari 4 (empat)

speaker(pembicara) yang terdiri dari 2 laki-laki dan 2 perempuan. Pembagian data

untuk proses training dan testing menggunakan metode 5-fold cross validation.

Hasil pengujian yang didapatkan dari proses identifikasi dengan berbagai

kombinasi feature, windows state dan jumlah state diperoleh tingkat akurasi

paling tinggi untuk speech recognition 95% dan untuk speaker recognition 93%.

viii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

ABSTRACT

Human voice can be one of many ways to identify what human said and

who has the voice. This research built a system for identifying automatically

human voice using Hidden Markov Models (HMM) and feature extraction with

Mel-frequency Cepstral Coefficients (MFCC). Generally HMM is use for signal

processing and speech processing and MFCC is use for feature extraction for

human voice.

This research employed four human as the object for the study. Data

including voices of two man and two woman. Data for testing and training were

separeted unsing 5-fold cross validation.

The highest result of identification using any combination of feature,

windows size and number of states are 95% for speech recognition and 93% for

speaker recognition.

ix
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

KATA PENGANTAR

Puji dan syukur kepada Tuhan Yesus Kristus yang telah senantiasa

memberikan berkat dan rahmat yang tak berkesudahan serta kesempatan yang

sangat berharga sehingga penulis dapat menyelesaikan skripsi dengan judul

“Identifikasi Suara Manusia Sebagai Kata Sandi atau Password

Menggunakan Metode Hidden Markov Models“.

Dalam kesempatan ini, penulis juga ingin mengucapkan terima kasih

sebesar-besarnya terhadap semua pihak yang telah memberi dukungan dan

semangat sehingga skripsi ini dapat selesai :

1. Romo Dr. C. Kuntoro Adi, S.J., M.A., M.Sc. selaku dosen pembimbing

dan dosen pembimbing akademik Teknik Informatika kelas A angkatan

2008. Terima kasih atas semua bantuan , bimbingan, pengorbanan waktu,

kesabaran, ilmu serta semangat yang telah diberikan.

2. Ibu Paulina Heruningsih Prima Rosa, S.si., M.Sc. selaku Dekan Fakultas

Sains dan Teknologi. Terima kasih atas semua bantuan dan bimbingan

serta kesabarannya dalam menghadapi mahasiswa.

3. Bapak Eko Hari Parmadi , S.si., M.Kom. dan bapak Alb. Agung

Hadhiatma, S.T., M.T. selaku dosen penguji. Terima kasih atas saran dan

kritik yang telah diberikan.

4. Seluruh Dosen Teknik Informatika yang selama masa kuliah telah

membagikan ilmu dan pengetahuannya yang sangat berguna bagi penulis.

5. Laboran Laboratorium Komputer, Tinus dan Fidi. Terima kasih atas

bantuan dan dukungannya.


x
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI xi

6. Staff Sekretariat Fakultas Sains dan Teknologi, Bapak Tukija, Bu Rina dan

Bu Linda. Terima kasih atas bantuan dan kesabarannya menghadapi

penulis sehingga berbagai prosedur dapat diselesaikan dengan baik dan

lancar.

7. Kedua orang tua saya, Yohanes Sulistiono dan M.M Lusia. Terima kasih

untuk semua kasih sayang dan perhatian yang tak terhingga.

8. Kedua adikku, Bernadeta Listiani dan Felicia Ratriana Putri. Terima kasih

telah ada di dunia ini.

9. Tim Ceriwis. Pucha dan Itha. Teman suka dan duka. Terima kasih atas

segala dukungan dan semangat serta kesabaran yang telah diberikan

sehinggan skripsi kita selesai.

10. Untuk Angga, Endra, Surya, Devi, Ocha, Siska, Bebeth, Esy, Agnes dan

seluruh teman-teman Teknik Informatika angkatan 2008. Terima kasih

atas dukungannya.

11. Untuk Maleo, mbak Vero, mbak Lia dan Mbak Debby. Terima kasih atas

bantuannya untuk ‘break’ ke negri sebrang sehingga skripsi ini dapat

selesai dengan bahagia.

12. Semua pihak yang telah membantu penulis dalam menyelesaikan skripsi.

Penulis menyadari masih banyak kekurangan yang terdapat dalam laporan


tugas akhir ini. Saran dan kritik sangat diharapkan untuk hasil yang lebih baik di
masa depan.

Yogyakarta, 22 Mei 2013

Penulis
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR ISI

HALAMAN JUDUL BAHASA INDONESIA ......................................................................... I

HALAMAN JUDUL BAHASA INGGRIS .............................................................................. II

HALAMAN PERSETUJUAN PEMBIMBING ...................................................................... III

HALAMAN PENGESAHAN .................................................................................................IV

HALAMAN PERSEMBAHAN ............................................................................................... V

PERNYATAAN KEASLIAN KARY .....................................................................................VI

PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK

KEPENTINGAN AKADEMIS ............................................................................................. VII

ABSTRAK ............................................................................................................................ VIII

ABSTRACT .............................................................................................................................IX

KATA PENGANTAR .............................................................................................................. X

DAFTAR ISI.......................................................................................................................... XII

DAFTAR GAMBAR ............................................................................................................ XVI

DAFTAR TABEL .............................................................................................................. XVIII

BAB I PENDAHULUAN .......................................................................................................... 1

1.1 LATAR BELAKANG MASALAH ........................................................................................ 1

1.2 RUMUSAN MASALAH ...................................................................................................... 3

1.3 TUJUAN ........................................................................................................................... 3

1.4 BATASAN MASALAH ....................................................................................................... 4

xii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI xiii

1.5 METOLOGI PENELITIAN................................................................................................... 6

1.6 SISTEMATIKA PENULISAN ............................................................................................... 7

BAB II LANDASAN TEORI .................................................................................................... 9

2.1 SPEECH PROCESSING ....................................................................................................... 9

2.2 SPEECH RECOGNITION .................................................................................................. 11

2.3 SPEAKER RECOGNITION ................................................................................................ 13

2.3.1 Struktur Dasar dari Sistem Speaker Recognition ................................................ 14

2.4 FEATURE EXTRACTION ................................................................................................. 16

2.5 MEL-FREQUENCY CEPSTRAL COEFFICIENTS (MFCC) .................................................. 18

2.5.1 Frame Blocking .................................................................................................... 20

2.5.2 Windowing ........................................................................................................... 21

2.5.3 Fast Fourier Transform (FFT) ............................................................................ 23

2.5.4 Mel-Frequency Wrapping .................................................................................... 24

2.5.5 Cepstrum .............................................................................................................. 26

2.6 METODE HIDDEN MARKOV MODELS ( HMM ) ............................................................. 27

2.7 ALGORITMA PEMODELAN HIDDEN MARKOV MODELS ................................................. 30

2.7.1 Algoritma Training dengan Baum-Welch ............................................................ 31

2.7.2 Algoritma Testing dengan Viterbi ........................................................................ 34

2.8 METODE EVALUASI 5-FOLD CROSS VALIDATION ......................................................... 34

BAB III ANALISA DAN PERANCANGAN SISTEM .......................................................... 37

3.1 PERANCANGAN SISTEM SECARA UMUM ....................................................................... 37

3.2 GAMBARAN SISTEM ...................................................................................................... 38

3.3 PROSES TRAINING ......................................................................................................... 39


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI xiv

3.4 PROSES TESTING ........................................................................................................... 40

3.5 PERANCANGAN ANTAR MUKA SISTEM ......................................................................... 41

3.5.1 Halaman Depan ................................................................................................... 42

3.5.2 Halaman Pengujian ............................................................................................. 43

3.5.3 Halaman Bantuan ................................................................................................ 46

3.6 SPESIFIKASI HARDWARE DAN SOFTWARE ..................................................................... 48

3.6.1 Hardware ............................................................................................................. 48

3.6.2 Software ............................................................................................................... 48

BAB IV .................................................................................................................................... 49

ANALISA HASIL DAN IMPLEMENTASI SISTEM............................................................ 49

4.1 ANALISA HASIL IDENTIFIKASI SUARA........................................................................... 49

4.2 IMPLEMENTASI ANTARMUKA SISTEM ....................................................................... 60

4.2.1 Halaman Depan ................................................................................................... 60

4.2.2 Halaman Pilihan Menu Pengujian ...................................................................... 61

4.2.3 Halaman Pengujian Hidden Markov Models untuk Speech Recognition ............ 62

4.2.4 Halaman Pengujian Hidden Markov Models untuk Speaker Verification .......... 64

4.2.5 Halaman Pengambilan Suara .............................................................................. 65

4.2.6 Halaman Pengujian Sistem untuk Speech Recognition ....................................... 67

4.2.7 Halaman Pengujian Sistem untuk Speaker Verification ...................................... 68

4.2.8 Halaman Bantuan ................................................................................................ 74

4.2.9 Halaman Tentang Programmer ........................................................................... 75

BAB V ..................................................................................................................................... 76

KESIMPULAN DAN SARAN................................................................................................ 76


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI xv

5.1 KESIMPULAN................................................................................................................. 76

5.2 SARAN .......................................................................................................................... 78

DAFTAR PUSTAKA .............................................................................................................. 79

LAMPIRAN I .......................................................................................................................... 82

LAMPIRAN II ......................................................................................................................... 84

SCRIPT DAN FILE PENDUKUNG ....................................................................................... 84

LAMPIRAN III...................................................................................................................... 161

HALAMAN BANTUAN....................................................................................................... 161


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR GAMBAR

Gambar Keterangan Halaman


2.1 Cakupan speech processing (Joseph P. Campbell, 1997) 10
2.2 Skema Speech Recognition (Melissa, 2008) 12
2.3 Struktur dari Speaker Identification (Furui, 1996) 15
2.4 Struktur dari Speaker Verification (Furui, 1996) 15
2.5 Diagram blok proses MFCC 19
2.6 Proses frame blocking 20
2.7 Sinyal dengan proses windowing 22
2.8 Sinyal tanpa proses windowing 22
2.9 Grafik hubungan skala mel dan frekuensi (IPB) 25
2.10 Contoh mel-spaced Filter-bank (IPB) 25
2.11 Contoh tiga tipe rantai HMM 31
2.12 Ilustrasi dari operasi Baum-Welch 33
3.1 Skema sistem pengenalan suara manusia 38
3.2 Gambaran sistem secara umum 38
3.3 Tahap training dan testing 39
3.4 Proses tahap testing 40
3.5 Proses tahap testing 41
3.6 Rancangan halaman depan 42
3.7 Rancangan halaman Pengujian sistem tahap pertama 43
3.8 Rancangan jendela peringatan apabila password salah 44
3.9 Rancangan jendela peringatan apabila password benar 44
3.10 Rancangan halaman pengujian HMM tahap pertama 45
3.11 Rancangan halaman pengujian HMM tahap kedua 46
3.12 Rancangan halaman bantuan untuk cara kerja program 47
3.13 Rancangan halaman bantuan tentang program 47
4.1 Grafik Tingkat Akurasi Identifikasi Suara Manusia dengan 54
Feature MFCC_D untuk Speech Recognition
4.2 Grafik Tingkat Akurasi Identifikasi Suara Manusia dengan 55
Feature MFCC_D untuk Speaker Verification
4.3 Halaman Depan 60
4.4 Halaman pilihan pengujian 61
4.5 Halaman Pengujian Hidden Markov Model untuk Speech 63
Recognition
4.6 Halaman Pengujian Hidden Markov Model untuk Speaker 65
Verification
4.7 Halaman Pengambilan Suara 66
4.8 Halaman Peringatan 66
4.9 Halaman Pengujian Speech Recognition 68
4.10 Halaman Pengujian Sistem Untuk Speaker Verification 69
4.11 Halaman Pengujian Speech Recognition untuk speaker Angga 70
4.12 Halaman Pengujian Speaker Verification untuk speaker Angga 71
4.13 Halaman Pengujian Speech Recognition untuk speaker Yudhi 71
4.14 Halaman Pengujian Speaker Verification untuk speaker Yudhi 72
xvi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI xvii

4.15 Halaman Pengujian Speech Recognition untuk speaker Deta 72


4.16 Halaman Pengujian Speaker Verification untuk speaker Deta 73
4.17 Halaman Pengujian Speaker Verification untuk speaker yang tidak 74
terdaftar
4.18 Halaman Bantuan 75
4.19 Halaman Tentang Programmer 75
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR TABEL

Tabel Keterangan Halaman


2.1 Tingkat akurasi berbagai metode feature extraction 17
(Universite Pierre&MarrieCurrie, LA Science A Paris,
2004)
2.2 Pembagian kelompok data menjadi 5 bagian 35
2.3 Gambaran metode 5-fold cross validation 35
2.4 Contoh confusion matrix 36
4.1 Hasil Akurasi Identifikasi Suara untuk Speech Recognition 50
4.2 Hasil Akurasi Identifikasi Suara untuk Speaker Verification 52
4.3 Hasil identifikasi suara berdasarkan tipe feature pada proses 56
Speech Recognition
4.4 Confusion Matrix MFCC_D untuk Speech Recognition 57
4.5 Hasil identifikasi suara berdasarkan tipe feature pada proses 58
Speaker Recognition
4.6 Confusion Matrix MFCC_D untuk Speaker Recognition 59

xviii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Meskipun teknologi sudah berkembang pesat tetapi keamanan

pengguna teknologi masih perlu diperhatikan lagi. Gangguan keamanan

yang diakibatkan perkembangan teknologi dapat menyebabkan privasi

seseorang terganggu. Hal ini dapat dilihat dari berbagai contoh seperti

password yang dicuri kemudian disalahgunakan, pembicaraan telepon

yang disadap dan lain sebagainnya. Maka dari itu, keamanan menjadi hal

yang patut diperhatikan seiring dengan perkembangan teknologi.

Saat ini teknologi juga menawarkan berbagai fasilitas untuk

meningkatkan keamanan masyarakat. Salah satunya adalah dengan kata

sandi atau password yang diaplikasikan dalam berbagai perangkat. Tentu

saja kata sandi yang ditawarkan bukan sandi konvensional seperti

memasukkan angka atau huruf melainkan dengan menggunakan suara,

deteksi retina, sidik jari serta pengenalan tulisan tangan. Dari sekian

banyak contoh tersebut pengenalan suara merupakan salah satu cara yang

dapat digunakan sebagai kata sandi yang memiliki variasi yang cukup unik

(Hidayanto dan Sumardi, 2006).

Suara adalah salah satu hal yang membedakan antara manusia satu

dengan yang lainnya. Tiap individu memiliki karakter vokal, timbre dan
1
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 2

aksen yang berbeda bahkan yang kembar identik sekalipun. Keunikan

suara inilah yang dapat dijadikan sebagai kata sandi untuk meningkatkan

keamanan pengguna dalam menggunakan suatu sistem (Setyabudi,

Purwanto dan Warsono, 2007).

Sudah banyak penelitian tentang pengenalan pola suara dengan

menggunakan berbagi metode serta implementasi yang berbeda-beda.

Salah satu metode yang cukup baik dan memiliki akurasi yang tinggi

dalam menangani variasi data dan keberagaman suara adalah Hidden

Markov Models (HMM) dan dengan menggunakan ekstraksi ciri Mel-

frequency Cepstral Coefficients (MFCC). Pada penelitian Pengenalan

Ucapan Kata Terisolasi dengan Metode Hidden Markov Models (HMM)

melalui Ekstraksi Ciri Linear Predictive Coding ( LPC ) (Hidayanto dan

Sumardi, 2006) dihasilkan akurasi yang berkisar pada angka 99,82% untuk

pengenalan ucapan kata yang berkorelasi tinggi pada pengujian dengan

data rekaman. Sedangkan pada pengujian online memberikan akurasi

berkisar pada angkan 87,58%. LPC sendiri adalah salah satu metode yang

digunakan untuk proses ekstrasi ciri.

Pada penelitian Identifikasi Pembicara Menggunakan Algoritme

VF15 dengan MFCC sebagai Pengekstraksi Ciri (Zilvan &

Muttaqien,2011) menghasilkan akurasi identifikasi suara tertinggi

mencapai 97%. VF15 merupakan salah satu algoritma yang digunakan

dalam pengklasifikasian.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 3

Dari hasil penelitian tersebut, metode Hidden Markov Models dan

ekstraksi ciri Mel-frequency Cepstral Coefficients akan digunakan penulis

untuk mengidentifikasi suara manusia yang akan digunakan sebagai kata

sandi atau password. Judul dari tugas akhir ini adalah “ Identifikasi

Suara Manusia Sebagai Kata Sandi atau Password Menggunakan

Pendekatan Hidden Markov Model “. Perbedaan tugas akhir ini dengan

penelitian sebelumnya adalah selain untuk mengetahui apa yang akan

diucapkan sebagai kata sandi, sistem juga akan mengidentifikasi pemilik

suara.

1.2 Rumusan Masalah

Dari latar belakang masalah diatas, rumusan masalah yang diambil

adalah Seberapa besar akurasi metode Hidden Markov Model mampu

mengenali suara manusia dan bagaimana mengimplementasinya ke dalam

sistem.

1.3 Tujuan

Merancang, menganalisa, mengimplementasi dan mengetahui

kelebihan serta kekurangan metode Hidden Markov Models dalam

menangani pengenalan suara sebagai kata sandi.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 4

1.4 Batasan Masalah

1. Pola suara yang diteliti adalah pola suara manusia yang mencakup

suara laki-laki dan perempuan dengan mengucapkan kata tertentu.

Kata yang diucapkan adalah kata ‘satu’, ‘dua’, ‘tiga’, ‘empat’, ‘lima’,

‘enam’, ‘tujuh’, ‘delapan’, ‘sembilan’, dan ‘nol’. Setiap kata yang

diucapkan akan diulang sebanyak lima kali dengan menggunakan

aksen atau cara pengucapan yang berbeda.

2. Ekstraksi ciri atau feature extraction menggunakan Mel-frequency

Cepstral Coefficients (MFCC)

3. Suara manusia yang diproses adalah suara berekstensi .wav dan

diambil dengan menggunakan microphone yang terhubung ke

komputer menggunakan program Sound Recorder yang merupakan

program bawaan dari Sistem Operasi Windows . Suara direkam dengan

menggunakan frekuensi sampling 44100Hz dengan karakteristik sound

yang digunakan adalah stereo sound dengan bit data sebesar 16 bit.

4. Pemodelan suara manusia menggunakan algoritma Baum-Welch.

5. Identifikasi suara manusia menggunakan algoritma Viterbi.

6. Terdapat 200 data yang akan digunakan untuk penelitian ini dengan

rincian 100 data dari suara perempuan dan 100 data dari suara laki-

laki.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 5

7. Speaker berjumlah 4 (empat) orang terdiri dari 2 (dua) orang

perempuan dan 2 (dua) orang laki-laki.

8. Suara akan mengalami proses ekstraksi ciri dan pemodelan dengan

menggunakan fungsi yang tersedia di MATLAB R2010a.

9. Kondisi speaker yang diambil data suaranya dalam keadaan sehat.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 6

1.5 Metologi Penelitian

Metode yang akan digunakan dalam penelitian meliputi :

1. Studi Pustaka

Tahap ini dilakukan dengan mempelajari buku-buku referensi dan

sumber-sumber dari internet yang berkaitan dengan Hidden Markov

Models, Speech Processing, feature extraction, algoritma Baum-

Welch, algoritma Viterbi dan tutorial pemrograman Matlab.

2. Tahap Pengambilan Data

Tahap ini dilakukan dengan cara mengambil data berupa ucapan dari 4

orang yang terdiri dari 2 laki-laki dan 2 perempuan. Tahap ini

dilakukan dengan menggunakan microphone yang terhubung ke

komputer.

3. Tahap Pembuatan Model

Model sendiri merupakan gambaran statistik dari ucapan yang telah

dimasukkan. Dalam tahap ini model akan dibangun dengan

menggunakan metode Hidden Markov Model.

4. Tahap Pembuatan Sistem Pengenal Ucapan

Pembuatan sistem akan dilakukan berdasarkan data yang telah

dimasukkan dan dengan mengintegrasikan aplikasi ke dalam GUI


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 7

(Graphical User Interface) dengan menggunakan bahasa

pemrograman Matlab.

5. Tahap Pengujian

Tahap pengujian dilakukan dengan uji coba program oleh pengguna.

Pada tahap ini juga akan dilakukan evaluasi terhadap sistem yang

dibangun. Apabila data yang dimasukkan adalah data yang belum

dimodelkan maka proses pengujian juga akan dibandingkan dengan

data yang telah dimodelkan terlebih dahulu tetapi dalam program akan

muncul pesan bahwa password atau kata sandi salah.

1.6 Sistematika Penulisan

BAB I PENDAHULUAN

Berisi latar belakang masalah, rumusan masalah, tujuan,

batasan masalah, metologi penelitian, dan sistematika

penulisan.

BAB II LANDASAN TEORI

Berisi landasan teori mengenai Speech Processing, Speech

Recognition, Speaker Recognition, teori Hidden Markov

Model, Mel-frequency cepstral coefficients (MFCC),

algoritma Baum-Welch dan algoritma Viterbi yang

digunakan dalam pembuatan dan penyusunan tugas akhir.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 8

BAB III ANALISA DAN PERANCANGAN SISTEM

Bab ini berisi analisa dan gambaran atau rancangan dari

sistem yang akan dibangun yaitu sebuah sistem yang dapat

mengenali suara manusia sebagai kata sandi atau password

serta menjelaskan alur dari proses training dan testing.

BAB IV IMPLEMENTASI SISTEM

Bab ini berisi implementasi sistem dengan menggunakan

pendekatan Hidden Markov Model

BAB V ANALISA HASIL DAN PEMBAHASAN

Bab ini berisi tentang hasil dari implementasi sistem yang

kemudian dianalisa dan diuji.

BAB VI KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan saran yang didapatkan dari

proses pembuatan tugas akhir ini, serta saran agar

pengembangan dari tugas akhir ini dapat lebih bermanfaat.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB II

LANDASAN TEORI

Pada bab ini akan dijelaskan mengenai teori-teori yang menjadi

landasan untuk mengembangkan penelitian beserta perangkatnya. Teori-

teori yang akan dibahas antara lain Speech Processing, Speech

Recognition, Speaker Recognition, Metode Hidden Markov Models ,

Feature Extraction, Mel-frequency Cepstral Coefficients (MFCC),

algoritma Baum-Welch dan algoritma Viterbi.

2.1 Speech Processing

Ucapan merupakan sinyal yang sangat kaya akan informasi yang di

dalamnya terkandung frekuensi, amplitudo dan waktu. Contohnya adalah

gerakan resonansi, harmonisasi, intonasi, dan lain sebagainya. Hal tersebut

digunakan untuk menyampaikan informasi tentang kata-kata dari identitas

pembicara yang dipengaruhi oleh aksen, ekspresi, serta kondisi kesehatan

dari si pembicara.

Sinyal ucapan yang digunakan oleh manusia sehari-hari dapat

dipelajari pada Speech Processing. Speech processing merupakan sebuah

studi yang mempelajari tentang sinyal dari sebuah ucapan dan juga metode

yang digunakan untuk memproses sinyal tersebut.

9
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 10

Speech Processing terbagi dalam beberapa cabang ilmu sesuai

dengan tujuan dari pengolahan suaranya. Hal tersebut dapat dilihat pada

Gambar 2.1

Gambar 2.1 Cakupan speech processing (Joseph P. Campbell, 1997)

Apabila dilihat dari Gambar 2.1 terdapat beberapa ilmu yang sudah

sering digunakan dalam aplikasi yang berkaitan dengan ucapan. Speech

recognition dan speaker recognition merupakan cabang ilmu dari specch

processing yang paling sering diaplikasikan untuk pengenalan suara.

Speech recognition sendiri merupakan proses identifikasi suara

yang akan dikonversikan dalam bentuk teks. Sedangkan speaker

recognition merupakan proses indentifikasi suara yang berdasarkan pada


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 11

asal suara atau pembicara. Dilihat dari perbedaan antara speech

recognition dan speaker recognition, kedua proses tersebut dapat

digunakan untuk melakukan proses identifikasi password berdasarkan

pada suara manusia adalah speaker recognition. Oleh karena itu, dalam

pembuatan tugas akhir ini penulis akan menggunakan prinsip speech

recognition dan speaker recognition dalam proses identifikasi suara.

2.2 Speech Recognition

Speech Recognition adalah suatu pengembangan dalam sebuah

sistem yang memungkinkan sebuah komputer untuk mengolah masukan

atau perintah yang berupa suara. Speech Recognition memungkinkan

sebuah sistem untuk dapat mengenali dan memahami perintah suara.

Terdapat 4 tahap dalam Speech Recognition (Mellisa, 2008) yaitu :

a. Penerimaan data input

b. Ekstraksi, yaitu penyimpanan data masukan sekaligus pembuatan

database untuk template

c. Pembandingan / pencocokan, yaitu tahap pencocokan data baru dengan

data suara pada template.

d. Validasi identitas pengguna


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 12

Gambar 2.2 Skema Speech Recognition (Melissa, 2008)

Speech Recognition juga dibagi menjadi beberapa jenis

berdasarkan kemampuannya dalam mengenali kata yang diucapkan.

a. Kata-kata yang terisolasi

Proses pengidentifikasian kata yang hanya dapat mengenal kata yang

diucapkan apabila kata tersebut memiliki jeda waktu dalam

pengucapannya.

b. Kata-kata yang berhubungan

Proses pengidentifikasian kata yang mirip dengan kata-kata terisolasi,

tetapi hanya membutuhkan jeda waktu pengucapan yang lebih singkat


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 13

c. Kata-kata yang berkelanjutan

Proses pengidentifikasian ini lebih maju karena dapat mengenali kata-

kata yang diucapkan secara berkesinambungan dengan jeda waktu

yang sangat sedikit. Proses ini sangat sulit karena membutuhkan

metode khusus untuk membedakan kata-kata yang diucapkan dalam

jeda waktu yang sangat sebentar.

d. Kata-kata spontan

Proses pengidentifikasian kata yang dapat mengenal kata-kata yang

diucapkan secara spontan tanpa jeda waktu antar kata.

e. Verifikasi atau identifikasi suara

Proses pengidentifikasian kata yang tidak hanya mampu mengenali

kata tapi juga mampu mengidentifikasi siapa yang berbicara.

2.3 Speaker Recognition

Speaker recognition merupakan salah satu metode yang dapat

digunakan secara otomatis untuk mengenali suara seseorang yang

mengucapkan sesuatu (Joseph P. Campbell, 1997). Speaker recognition

juga merupakan bagian dari Speech Proccesing yang mana terdiri dari

berbagai cabang yang berbeda-beda.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 14

Apabila dilihat dari gambar 2.1 sebelumnya, Speaker Recognition

mencakup Speaker Identification dan Speaker Verification. Speaker

Verification merujuk kepada bagaimana sebuah suara dapat menguji

seseorang apakah seseorang tersebut merupakan speaker atau bukan.

Sedangkan Speaker Identification hanya menitikberatkan terhadap

penentuan 1 (satu) speaker dari sekumpulan speaker yang ada.

Metode dari Speaker Recognition juga dapat dibedakan menjadi

text-dependent dan metode text-independent. Metode text-dependent

membutuhkan speaker untuk mengucapkan kata untuk pemodelan dan

pengujian sedangkan metode text-independent tidak bergantung terhadap

kata yang diucapkan speaker untuk pemodelan. Pada pembuatan tugas

akhir ini akan menggunakan metode Speaker Recognition yang bertipe

text-dependent.

2.3.1 Struktur Dasar dari Sistem Speaker Recognition

Speaker Identification dan Speaker Verification memiliki struktur

yang berbeda. Berikut adalah struktur dari Speaker Verification dan

Speaker Identification menurut Furui (1996).


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 15

Gambar 2.3 Struktur dari Speaker Identification (Furui,1996)

Berdasarkan Gambar 2.3 dapat dilihat bahwa dalam proses Speaker

Identification suara yang masuk akan melalui tahap ekstraksi. Kemudian

akan dicari kemiripan yang paling dekat dengan suara yang telah

dimodelkan sebelumnya untuk mengetahui identitas dari speaker.

Gambar 2.4 Struktur dari Speaker Verification (Furui,1996)


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 16

Pada Speaker Verification suara yang masuk akan di ekstraksi

kemudian akan dibandingkan dan dicari kemiripan dengan suara dari

speaker yang telah dimodelkan sebelumnya dan dari speaker id.

Perbandingan tersebut akan digunakan untuk menolak atau menerima

suara yang masuk.

2.4 Feature Extraction

Feature extraction merupakan metode untuk mengubah sinyal

menjadi beberapa parameter. Data yang akan digunakan merupakan data

dari suara manusia sehingga berupa data sinyal. Tetapi tidak semua data

sinyal tersebut dapat digunakan. Hal ini disebabkan karena berbagai faktor

seperti suara-suara yang berada di sekitar speaker pada saat pengambilan

data suara. Dengan tahap feature extraction diharapkan menghasilkan

feature yang memiliki kemampuan untuk membedakan kemiripan

pengucapan setiap model sehingga tidak memerlukan data training yang

banyak. Pada umumnya feature extraction memiliki tiga tahap (Reynold,

2002), yaitu:

1. Penggunaan program deteksi suara untuk menghilangkan noise dari

sinyal suara yang menjadi obyek.

2. Feature diekstrak untuk memperoleh informasi

3. Penerapan normalisasi.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 17

Terdapat beberapa metode yang digunakan untuk mengekstrak

feature yang berhubungan dengan sinyal. Metode tersebut antara lain LPC

(Linear Prediction Coding) , Mel-Frequency Cepstral

Coefficients (MFCC), Neural Predictive Coding (NPC), dan sebagainya.

Perbandingan tingkat akurasi berbagai metode feature extraction dapat

dilihat pada Tabel 2.1 (Chetouani, 2004)

Tabel 2.1 Tingkat akurasi berbagai metode feature extraction

(Sumber : Universite Pierre&MarrieCurrie, LA Science A Paris,

2004)

Dari Tabel 2.1 di atas dapat dilihat bahwa metode NPC memiliki

tingkat identifikasi yang paling tinggi dan sempurna kemudian diikuti oleh

metode MFCC. NPC merupakan salah satu algoritma ekstraksi ciri yang

merupakan perluasan dari LPC. Dalam kasus ini metode MFCC dirasa

paling tepat karena cara kerja metode MFCC sama dengan telinga manusia

sehingga untuk mengidentifikasi suara manusia lebih baik menggunakan

metode MFCC.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 18

2.5 Mel-Frequency Cepstral Coefficients (MFCC)

Mel-Frequency Cepstral Coefficients (MFCC) merupakan metode

pengolahan suara yang memiliki tujuan untuk mengidentifikasi asal dari

sumber suara. MFCC berdasarkan pada variasi bandwidth kritis terhadap

frekuensi pada telinga manusia sehingga cara kerja yang diterapkan pada

metode ini meniru karakteristik telinga manusia (Zilvan dan Muttaqien,

2011). Pada telinga manusia terdapat filter-filter yang berguna untuk

membedakan suara yang memililki frekuensi rendah dan suara yang

memiliki frekuensi tinggi. Pada metode MFCC, filter pada telinga manusia

digambarkan dalam skala mel-frekuensi yang berfungsi untuk menangkap

karakter penting pada suatu ucapan.

Beberapa keunggulan dari metode MFCC adalah ( Manunggal, 2005):

1. Mampu menangkap karakteristik suara yang sangat penting bagi

pengenalan suara atau dengan kata lain dapat menangkap informasi-

informasi penting yang terkandung dalam signal suara.

2. Menghasilkan data seminimal mungkin tanpa menghilangkan

informasi-informasi penting yang terkandung di dalamnya.

3. Mereplikasi organ pendengaran manusia dalam melakukan persepsi

terhadap signal suara.

Filter-filter yang terdapat dalam telinga manusia juga memiliki

jarak yang berbeda pada sumbu frekuensi. Berdasarkan cara kerja tersebut,
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 19

MFCC juga memiliki filter yang berbeda, yaitu linearly spaced filters dan

logarithmically spaced filters (Hasan, Jamil, Rabbani, & Rahman, 2004).

Pada linearly spaced filters memiliki frekuensi yang berada di bawah

1000Hz sedangkan pada logarithmically spaced filters memiliki frekuensi

di atas 1000Hz.

Gelombang suara yang dihasilkan oleh speaker dapat memiliki

berbagai variasi tergantung dari kondisi fisik speaker tersebut. MFCC

memiliki struktur berupa blok diagram yang dapat dilihat pada Gambar 2.4

Continuous
Frame Blocking Windowing FFT
Speech

Mel Cepstrum
Cepstrum Mel-Frequency Wrapping

Gambar 2.5 Diagram blok proses MFCC (Do, 1994)

Apabila dilihat dari Gambar 2.5, terdapat beberapa proses feature

extraction dengan MFCC.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 20

2.5.1 Frame Blocking

Sinyal suara terus mengalami perubahan karena adanya pergeseran

artikulasi dari organ produksi vokal. Oleh karena itu, sinyal harus diproses

secara short segments ( short frame). Panjang frame yang biasanya

digunakan untuk pemrosesan sinyal adalah antara 10-30 ms. Panjang

frame yang digunakan sangat mempengaruhi keberhasilan dalam analisa

spektral. Di satu sisi, ukuran dari frame harus sepanjang mungkin untuk

dapat menunjukkan resolusi frekuensi yang baik. Tetapi, di sisi lain frame

juga harus cukur pendek untuk dapat menunjukkan waktu yang baik.

Proses frame blocking ditunjukkan pada Gambar 2.6.

Gambar 2.6 Proses frame blocking

Dengan Sn merupakan nilai sampel yang dihasilkan dan n

merupakan urutan sampel yang akan diproses

Sinyal ucapan yang terdiri dari S sampel (X(S)) dibagi menjadi

beberapa frame yang berisi N sampel, yang masing-masing sampel

dipisahkan oleh M (M<N). Frame pertama berisi sampel N pertama.

Frame kedua dimulai dari M sampel setelah frame pertama berjalan


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 21

sehingga frame kedua ini overlap terhdap frame pertama sebanyak N-M

sampel. Selanjutnya, frame ketiga dimulai M sampel setelah frame kedua (

juga overlap sebanyak N-M terhadap frame kedua ). Hasil dari proses ini

adalah matriks dengan N baris dan beberapa kolom sinyal X[N].

Proses frame ini dilakukan terus sampai seluruh sinyal dapat

diproses. Selain itu, proses ini umumnya dilakukan secara overlap yang

umum digunakan adalah kurang lebih 30% sampai 50% dari panjang

frame. Overlapping dilakukan untuk menghindari hilangnya ciri atau

karakteristik suara pada perbatasan perpotongan setiap frame.

2.5.2 Windowing

Proses framing dapat menyebabkan kebocoran spektral atau

aliasing. Aliasing merupakan sinyal baru yang memiliki frekuensi yang

berbeda dengan sinyal aslinya. Hal ini dapat terjadi karena rendahnya

jumlah sampling rate atau proses frame blocking yang menyebabkan

sinyal menjadi discontinue. Maka dari itu, tahap windowing diperlukan

agar menghidari kebocoran spektral.

Pada tahap windowing, sinyal suara yang telah mengalami frame

blocking telah dibagi menjadi beberapa frame. Setiap frame yang diperoleh

akan dijadikan window untuk memperkecil kemungkinan gangguan sinyal

yang terputus pada awal dan akhir setiap frame. Window dapat

didefinisikan sebagai berikut :

w(n) ; dimana 0 ≤ n ≤ ( N-1 ) (2-1)


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 22

N merupakan jumlah sample pada setiap frame. Hasil yang

didapatkan dari proses windowing adalah sinyal (y(n)) yang dapat

didefinisikan sebagai berikut :

y(n) = x(n) w(n) ,dimana 0 ≤ n ≤ ( N-1 ) (2-2)

Terdapat banyak fungsi window, namun yang paling sering

digunakan untuk proses speaker recognition adalah hamming window.

Fungsi window ini menghasilkan sidelobe level yang tidak terlalu tinggi

(kurang lebih -43dB) selain itu noise yang dihasilkan juga tidak terlalu

besar. Fungsi hamming window adalah sebagai berikut :

w(n) = 0.54 – 0.46 cos [2 π n / (N – 1)], dimana 0 ≤ n ≤ ( N-1 ) (2-3)

Gambar berikut menunjukkan perbedaan antara sinyal yang

melalui proses windowing dan sinyal yang tanpa melalui proses

windowing.

Gambar 2.7 Sinyal dengan proses windowing

Gambar 2.8 Sinyal tanpa proses windowing


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 23

2.5.3 Fast Fourier Transform (FFT)

FFT adalah suatu algoritma untuk mengimplemetasikan algoritma

Discrete Fourier Transform (DFT) dengan lebih cepat. Komputasi dari

algoritma DFT memiliki waktu yang sangat lama dikarenakan

membutuhkan N2 perkalian bilangan kompleks sehingga dibutuhkan cara

lain untuk menghitung DFT dengan cepat dengan menggunakan algoritma

FFT dimana FFT menghilangkan proses perhitungan yang kembar dari

DFT.

Jumlah sinyal yang akan dimasukkan dalam algoritma ini harus

merupakan kelipatan dua (2M). Algoritma FFT dimulai dengan membagi

sinyal menjadi dua bagian. Bagian pertama merupakan sinyal yang

memiliki nilai suara pada indeks waktu genap sedangkan bagian kedua

merupakan sinyal yang memiliki nilai suara pada indeks waktu ganjil.

Fast Fourier Transform adalah himpunan dari N sample [Xn] yang

didefinisikan sebagai berikut :

𝑁−1
𝑋𝑛 = 𝑘=0 𝑋 𝑒 −2𝜋𝑘𝑛 𝑁 , dimana n = 0,1,2,3,…..N-1 (2-4)
𝑘

FFT seringkali digunakan untuk mendapatkan besarnya reaksi

frekuensi dari setiap frame. Ketika FFT dijalankan pada sebuah frame,

dapat diasumsikan bahwa sinyal dalam sebuah frame adalah periodik dan

akan berkesinambungan ketika proses wrapping.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 24

Apabila dilihat dari rumusan diatas, dapat dilihat bahwa Xn

merupakan angka yang kompleks. Hasil dari Xn dapat dijabarkan sebagai

berikut:

1. Ketika n = 0 merupakan keadaaan frekuensi saat kosong.

2. Ketika 1 ≤ n ≤ (N/2 – 1) merupakan keadaan saat frekuensi bernilai

positif (0 < f < Fs/2).

3. Ketika N/2+1 ≤ n ≤ N-1 merupakan keadaaan saat frekuensi bernilai

negatif (Fs/2 < f < 0).

Fs sendiri merupakan frekuensi sample. Hasil yang diperoleh

berupa spektrum sinyal atau periodogram.

2.5.4 Mel-Frequency Wrapping

Sinyal suara terdiri dari nada-nada yang memiliki frekuensi yang

berbeda. Setiap nada dengan frekuensi yang sebenarnya, f, diukur dalam

Hz. Nada yang subyektif diukur dengan menggunakan skala Mel. Sebagai

acuan, nada dengan frekuensi 1kHz, 40dB diatas dari threshold

pendengaran, didefinisikan sebagai 1000 mels. Rumus yang digunakan

untuk menghitung mels dengan frekuensi dalam Hz adalah sebagai

berikut:

mel(f)= 2595*log10(1 + f/700) (2-5)


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 25

Salah satu pendekatan untuk menggambarkan spektrum yang

subyektif adalah dengan menggunakan filter. Setiap filter ditujukan untuk

komponen mel-frequency yang diinginkan. Filter yang dibentuk memiliki

jarak pusat filter adalah konstan pada ruang frekuensi mel. Skala mel

dibentuk untuk mengikuti persepsi sistem pendengaran manusia yang

bersifat linear untuk frekuensi rendah dan bersifat logaritmik untuk

frekuensi tinggi, dengan batas pada nilai frekuensi akustik sebesar

1000Hz. Hubungan skala mel dan frekuensi dapat digambarkan pada

Gambar 2.8.

Gambar 2.9 Grafik hubungan skala mel dengan frekuensi (IPB)

Gambar 2.10 Contoh mel-spaced Filter bank (IPB)


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 26

Dari M filter yang telah terbentuk, maka dilakukan wrapping

terhadap sinyal domain frekuensi dan menghasilkan satu komponen untuk

setiap filter dengan menggunakan rumus ( Buono, 2009) :

𝑁−1
𝑋𝑖 = log10 𝑘=0 𝑋 𝑘 𝐻𝑖 𝑘 (2-6)

Dengan i= 1,2,3….M dan Hi(k) adalah nilai filter segitiga ke-i

untuk frekuensi akustik sebesar k. Hasil dalam spektrum mel ini kemudian

akan dipilih cepstrum coefficients, nilai koefisien diperoleh dengan

menggunakan transformasi cosinus. Rumus yang digunakan adalah :

𝑀 𝜋
𝐶 𝑗 = 𝑖=1 𝑋𝑖 cos 𝑗 𝑖 − 1 /2 𝑀 (2-7)

Dengan j = 1,2,3…K yang merupakan jumlah cepstrum coefficients

dan M merupakan jumlah filter.

2.5.5 Cepstrum

Pada langkah terakhir, logaritma dari spektrum mel harus

dikonversikan kembali ke domain waktu. Hasil yang didapatkan bernama

mel-frequency cepstrum coefficients (MFCCs) (Hasan, Jamil, Rabbani dan

Rahman, 2004). Karena koefisien dari mel merupakan bilangan nyata,

dapat juga dikonversikan ke dalam domain berbasis waktu menggunakan

Discrete Cosine Transform (DCT).

MFCC sendiri dapat dihitung dengan rumus sebagai berikut :


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 27

𝐾 1 𝜋
𝐶𝑛 = 𝑘−1 𝑙𝑜𝑔𝑆𝑘 𝑛 𝑘−2 (2-8)
𝐾

dimana n = 1,2,…. K

Komponen pertama, C0 , tidak termasuk DCT karena

merepresentasikan nilai rata-rata sinyal yang membawa sedikit informasi

speaker yang spesifik. Dengan menerapkan prosedur yang telah

dijelaskan, untuk setiap frame sekitar 30 ms dengan overlap, koefisien-

koefisien dari mel cepstrum dapat dihitung.

2.6 Metode Hidden Markov Models ( HMM )

Hidden Markov Models merupakan sebuah pemodelan statistik dari

sebuah sistem yang diasumsikan sebagai ‘Rantai Markov‘ dengan

parameter yang tidak diketahui, dan tantangannya adalah menemukan

parameter yang tersembunyi (hidden) dari parameter yang diketahui

(observer) (Przytycka, 2000). Parameter yang telah digunakan kemudian

dapat digunakan untuk analisa yang lebih jauh, misalnya untuk Speaker

Recognition. HMM disebut statistik karena mencari means, varians, dan

probabilitas dari model yang digunakan.

Dalam jurnal yang berjudul “ Hidden Markov Models For Speech

Recognition “ yang ditulis oleh B. H. Juang dan L. R. Rabiner disebutkan

bahwa metode HMM sangat populer dikarenakan memiliki kerangka

statistik yang tidak dapat dipisahkan atau dapat dikatakan tepat secara
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 28

matematika. Hal ini karena kemudahan dan ketersediaan dari algoritma

training yang dimiliki HMM untuk memperkirakan parameter dari sebuah

model dengan data yang terbatas.

Dari Hidden Markov Models, suara dianggap sebagai sinyal yang

kemudian dimodelkan. Kemudian suara yang datang akan dibandingkan

dengan seluruh model yang ada dan akan melihat tingkat kecocokan yang

paling mendekati.

Hidden Markov Models didefinisikan sebagai kumpulan 5

parameter yaitu N, M, A, B, π. Dengan menganggap λ = { A, B, π } maka

Hidden Markov Models mempunyai parameter tertentu yaitu N dam M.

Maka dari itu, ciri-ciri dari HMM adalah :

1. Observasi diketahui tetapi urutan keadaan ( state ) tidak diketahui

sehingga disebut hidden.

2. Observasi adalah fungsi probabilitas keadaan

3. Perpindahan keadaan adalah bentuk probabilitas

Hidden Markov sendiri memiliki parameter distribusi sebagai berikut:

1. Probabilitas Transisi

A = { aij } , aij = P (qt+1 = Sj | qt = Si ) , 1 ≤ i , j ≤ N

Dengan syarat aij ≥ 0 dan

𝑁
𝐽 𝑖𝑗 = 1 dan aij = 1
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 29

2. Probabilitas Observasi

B = { bj (k) } , bj(k) = P ( Vk pada t | qt = Sj )

1≤ j ≤N, 1≤ k ≤M

Distribusi keadaan awal

π = { πi } , πi = P (qi = Sj )

Sedangkan terdapat dua parameter tertentu pada Hidden Markov

Models yaitu N dan M.

1. N merupakan jumlah keadaan model. Dinotasikan sebagai himpunan

terbatas untuk keadaan yang mungkin adalah S = { S1, S2……SN }

2. M adalah jumlah dari simbol observasi atau keadaan. Simbol observasi

berhubungan dengan keluaran fisik dari sistem yang dimodelkan.

Dinotasikan sebagai himpunan terbatas untuk observasi yang mungkin

adalah V = { V1, V2……VM }

Apabila diberi nilai yang tepat untuk variabel-variabel diatas maka

Hidden Markov Models dapat digunakan untuk memberikan sekuens

observasi.

O = O1 O2 O3 O4 O5……… Ot (2.9)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 30

Dimana untuk setiap observasi Ot adalah satu dari simbol yang ada

pada V, dan T adalah banyaknya observasi yang ada pada sekuens

tersebut.

Metode Hidden Markov Models memiliki beberapa algoritma

pemodelan yang akan dijelaskan dalam subbab selanjutnya.

2.7 Algoritma Pemodelan Hidden Markov Models

Algoritma dalam Hidden Markov Models digunakan untuk

pembuatan model yang mencakup proses training dan testing. Pemodelan

dapat berbentuk kontinu untuk data yang berlanjut sesuai dengan waktu

seperti data suara yang akan diterapkan pada penelitian ini dan pemodelan

diskret yang digunakan pada data citra.

Bentuk dari model Hidden Markov Models adalah berupa state-

state yang saling berhubungan, yang mana setiap state terhubung dari state

manapun.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 31

Gambar 2.11 Contoh tiga tipe rantai HMM

(a) Model 4-state (b) Model 4-state-kiri-kanan (c) Model parallel 6-state

2.7.1 Algoritma Training dengan Baum-Welch

Algortima Baum-Welch atau algoritma forward-backward

merupakan salah satu algoritma yang dapat memberikan model terbaik

berupa means dan varians karena dapat mengoptimalkan probabilitas

observasi sekuens O parameter-parameter model λ = { A, B, π }.

Perhitungan pada algoritma ini digunakan untuk mencari nilai maximum

likehood atau angka kemiripan maksimum yang merupakan sebuah model

yang mewakili sekelompok sampel data.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 32

Variabel forward didefinisikan sebagai observasi parsial dari

probabilitas state sekuen yang dilambangkan dengan O1, O2, …. Ot (

hingga waktu t ) dan state Si pada waktu t , dengan model λ, dan α sebagai

t(i) . Untuk variabel backward didefinisikan sebagai observasi parsial dari

probabilitas state sekuen dari t+1 ke state sebelumnya yang mana terdapat

state Si pada waktu t, dengan model λ dan α sebagai t(i). Observasi dari

probabilitas state sekuen ini dihitung dengan rumus:

𝑛 𝑁
𝑃 𝑂𝜆 = 𝑖=1 𝛼𝑡 𝑖 𝛽𝑡 𝑖 = 𝑖=1 𝛼𝑡 (𝑖) (2.10)

Probabilitas pada saat berada pada state Si pada waktu t , dan

diberikan sekuens observasi O , dan model λ adalah :

∝𝑡 𝑖 𝛽 𝑡 (𝑖)
𝛾𝑡 = (2.11)
𝑃(𝑂|𝜆)

(a) variabel forward


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 33

(b) variabel backward

Gambar 2.12 Ilustrasi dari operasi Baum-Welch

Pada saat menghitung model yang akan akan digunakan maka akan

membutuhkan banyak sampel data yang akan dimodelkan. Karakteristik

dari setiap contoh akan diekstrak dan disimpan dalam sebuah parameter

vektor sekuens xt. Parameter ini yang akan dipetakan sebagai ekuivalensi

dari Ot.

Metode Baum-Welch memiliki cara kerja sebagai berikut :

1. Estimasikan sebuah model HMM sebagai λ = { A, B, π }

2. Dengan nilai λ dari sekuens observasi O, hitung sebuah model baru

𝜆 = 𝐴, 𝐵 , 𝜋

Seperti

𝑃 𝑂 𝜆 > 𝑃(𝑂|𝜆)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 34

𝑃 𝑂 𝜆 −𝑃 𝑂 𝜆
3. Jika > threshold, maka hentikan langkah ini. Jika tidak,
𝑃 𝑂𝜆

maka letakkan nilai 𝜆 untuk menggantikan λ dan ulangi langkah 1.

2.7.2 Algoritma Testing dengan Viterbi

Algoritma Viterbi digunakan untuk menghitung sekuens state Q

yang paling dekat dengan kemungkinan atau probabilitasnya dari sekuens

Observasi O. Algoritma Viterbi dapat didefinisikan sebagai:

δt (i) = maxq1,q2…q3 P[q1,q2,…qt = i, O1O2….Ot | λ ] (2.12)

δt (i) merupakan nilai probabilitas terbaik pada waktu t, yang

dihitung pada observasi t pertama yang diakhiri pada state Si.

2.8 Metode Evaluasi 5-Fold Cross Validation

Metode 5-Fold Cross-Validation digunakan pada saat evaluasi

untuk mengukur tingkat akurasi sebuah sistem. Metode 5-Fold Cross

Validation membagi tiap kelompok data suara menjadi data yang

kemudian akan menjadi data untuk proses training dan testing

Dalam penelitian ini, terdapat 4 (lima) kelompok data yang mana

masing-masing kelompok mewakili setiap orang yang akan diambil

suaranya. Setiap kelompok memiliki data sebanyak 50 yang kemudian

dibagi menjadi 5 (lima) kelompok. Pada metode 5-Fold Cross Validation ,


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 35

4 (empat) kelompok data akan digunakan sebagai data training dan satu

kelompok data akan digunakan sebagai data testing.

Pembagian data untuk setiap kelompok data dapat dilihat di Tabel 2.2

Tabel 2.2 Pembagian kelompok data menjadi 5 bagian

Suara 1 Suara 2 Suara 3 Suara 4 Suara 5

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

4 4 4 4 4

5 5 5 5 5

Pada metode evaluasi 5-fold cross validation, iterasi yang

dilakukan akan melibatkan data yang berbeda setiap proses training

maupun testing.

Tabel 2.3 Gambaran metode 5-fold cross validation

Testing Training

Pengujian ke 1 5 4 3 2 1

Pengujian ke 2 4 5 3 2 1

Pengujian ke 3 3 5 4 2 1

Pengujian ke 4 2 5 4 3 1

Pengujian ke 5 1 5 4 3 2
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 36

Pengukuran tingkat akurasi dilakukan dengan menggunakan

confusion matrix seperti pada tabel berikut.

Tabel 2.4 Contoh confusion matrix

Suara 1 Suara 2 Suara 3 Suara 4 Suara 5

Suara 1

Suara 2

Suara 3

Suara 4

Suara 5

Evaluasi dari ketepatan confusion matrix dilakukan dengan cara

membandingkan output hasil dari identifikasi oleh sistem dengan label uji

yang tersedia untuk data tersebut. Perhitungan untuk mengukur tingkat

akurasinya adalah dengan rumus berikut:

Akurasi = S/T x 100% (2.13)

Keterangan :

S = jumlah sample yang dikenal secara benar oleh sistem ( jumlah

diagonal dari confusion matrix )

T = jumlah total dari sample untuk pengujian.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB III

ANALISA DAN PERANCANGAN SISTEM

Bab ini akan menjelaskan tentang rancangan dan cara kerja sistem

yang akan dibangun. Sistem ini berfungsi untuk menganalisa tingkat

akurasi metode Hidden Markov Models dalam mengenali suara manusia.

3.1 Perancangan Sistem Secara Umum

Sistem ini digunakan untuk mengenali suara manusia yang

ditampilkan dalam bentuk password untuk disimulasikan sebagai kata

kunci untuk masuk ke dalam suatu sistem dengan menggunakan metode

Hidden Markov Models. Data suara terdiri dari 4 orang yang mana

merupakan 2 laki-laki dan 2 perempuan. Suara akan diambil dengan

menggunakan microphone dan akan diekstraksi terlebih dahulu sebelum

dimasukkan ke dalam sistem. Sistem akan melakukan proses training dan

testing dan akhirnya sistem akan menampilkan hasil apakah suara yang

masuk diterima sebagai password atau tidak.

37
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 38

Training Estimasi mode Model

Data suara
Feature
berektensi
Extraction
.wav

Proses
Nilai
Testing perhitungan Evaluasi hasil
maksimum
probabilitas

Gambar 3.1 Skema sistem pengenalan suara manusia

Gambar 3.1 menjelaskan tahapan dari proses pengenalan suara.

Dimulai dari data masuk yang berupa file berekstensi .wav kemudian akan

memasuki proses feature extraction yang menggunakan MFCC. Hasil dari

feature extraction sendiri merupakan file berekstensi .mfc. Data suara

yang telah diproses kemudian menjadi input untuk proses training dan

testing dengan menggunakan pendekatan HMM. Setelah itu akan

dihasilkan suara yang dikenali sebagai hasil klasifikasi.

3.2 Gambaran Sistem

User memasukkan data


suara dengan microphone
Sistem Pengenalan
user Pola Suara Sebagai
Password
Sistem menampilkan hasil apakah
masukan diterima atau tidak

Gambar 3.2 Gambaran Sistem secara umum


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 39

training
Sistem Pengenalan
Pola Suara Sebagai
Password
testing

Gambar 3.3 Tahap training dan testing

3.3 Proses Training

Proses training akan menghasilkan model dari data yang telah

diambil sebelumnya. Proses training ini akan menggunakan algoritma

Baum-Welch yang telah dibahas dalam bab sebelumnya. Gambar 3.3

menunjukkan proses training data dan pembuatan model. Dalam proses

training terdapat proses feature extraction yang akan menggunakan

metode Mel-Frequency Cepstral Coefficients (MFCC). Untuk estimasi

model akan menggunakan pendekatan Hidden Markov Models (HMM).

Sesuai dengan metode 5 Fold Cross-Validation yang telah dibahas pada

bab sebelumnya maka pada proses training dalam membentuk sebuah

model membutuhkan sebanyak 80% dari jumlah data keseluruhan.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 40

Input suara

Feature extraction

Estimasi model

....

M1 M2 .... Mn

Gambar 3.4 Proses tahap training

3.4 Proses Testing

Pada tahap testing akan menggunakan algoritma Viterbi. Proses ini

menggunakan data yang baru. Untuk mengenali data baru yang masuk,

sistem akan menghitung probabilitas dari data baru dengan model yang

ada dilihat dari kemiripan atau kedekatannya. Data yang memiliki

probabilitas tertinggi akan menunjukkan bahwa data suara baru yang

masuk dapat diidentifikasi dan diterima oleh sistem. Gambar 3.4

menunjukkan proses dari testing.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 41

M1 M2 .. Mn

Memilih kedekatan
Data suara manusia Feature extraction
yang paling maksimum Data dikenali
Menghitung kemiripan
terhadap model

Gambar 3.5 Proses tahap testing

Untuk implementasi HMM dan identifikasi suara manusia maka

pada pembuatan tugas akhir ini penulis menggunakan HMM Toolkit (HTK).

HTK menyediakan tools termasuk algoritma Baum-Welch yang digunakan

pada proses training dan algoritma Viterbi untuk proses testing.

3.5 Perancangan Antar Muka Sistem

Pada perancangan antar muka untuk sistem pengenalan suara

manusia ini terdiri dari beberapa halaman yang mewakili proses

perhitungan dari Hidden Markov Models serta cara kerja dari sistem, yaitu:

1. Halaman depan

2. Halaman pengujian sistem

3. Halaman pengujian HMM dan cara kerja sistem

4. Halaman bantuan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 42

3.5.1 Halaman Depan

Halaman ini merupakan halaman pembuka yang berisi dua menu

utama yaitu MENU dan BANTUAN serta penjelasan mengenai tentang

nama sistem, logo Universitas Sanata Dharma, identitas pembuat program

dan nama Dosen pembimbing. Rancangan dari halaman depan sistem ini

dapat dilihat pada Gambar 3.6

Gambar 3.6 Rancangan Halaman depan


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 43

3.5.2 Halaman Pengujian

Halaman pengujian terdiri dari dua bagian yaitu pengujian sistem

dan pengujian dari Hidden Markov Models. Pada halaman pengujian

sistem, akan terdapat perintah yang meminta user untuk memasukkan

nama dan password. Password akan dimasukkan dengan menggunakan

suara. Sedangkan pada halaman pengujian HMM akan berisi tentang cara

kerja dari HMM dan cara kerja sistem. Rancangan halaman pengujian

dapat dilihat pada beberapa gambar berikut ini.

Gambar 3.7 Rancangan Halaman Pengujian sistem tahap pertama

Apabila dalam memasukkan password salah maka akan muncul

peringatan seperti pada Gambar 3.8.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 44

Gambar 3.8 Rancangan Jendela peringatan apabila password salah

Apabila password benar maka akan muncul peringatan seperti pada

Gambar 3.9

Gambar 3.9 Rancangan Jendela peringatan apabila password benar.

Selanjutnya, untuk rancangan halaman pengujian HMM terdapat

menu untuk mengambil contoh data suara dari direktori yang ada untuk

diuji dengan HMM. Untuk mendengarkan suara yang diambil dapat

menekan tombol DENGAR. Data suara yang telah diambil dapat

divisualisasikan menjadi spectogram dan signal. Kemudian untuk

memproses suara terdapat tombol PROSES yang akan melakukan proses

pengenalan suara yang hasilnya dapat dilihat pada label HASIL.

Rancangan dari pengujian HMM dapat dilihat pada Gambar 3.10.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 45

Gambar 3.10 Rancangan halaman pengujian HMM tahap pertama

Rancangan halaman berikutnya berisi tentang keterangan data yang

terdapat dalam sistem. Pengguna dapat memilih parameter yang

digunakan, windows size dan jumlah state yang digunakan. Dengan

menekan tombol PROSES maka data akan diproses dengan menggunakan

HMM. Apabila proses telah selesai maka akan muncul confusion matrix

dan hasil berupa tingkat akurasi.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 46

Gambar 3.11 Rancangan halaman pengujian HMM tahap kedua

3.5.3 Halaman Bantuan

Halaman bantuan berisi tentang bagaimana cara menggunakan

program serta sedikit keterangan mengenai program yang terdiri dari tujuan

serta manfaat dari program. Rancangan dari halaman bantuan dapat dilihat

pada Gambar 3.12 dan Gambar 3.13.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 47

Gambar 3.12 Rancangan halaman Bantuan untuk cara kerja program

Gambar 3.13 Rancangan halaman bantuan tentang program


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 48

3.6 Spesifikasi Hardware dan Software

Berikut adalah spesifikasi hardware dan software yang digunakan

pada pembuatan sistem ini.

3.6.1 Hardware

 Processor : AMD E-450 APU with Radeon(tm) HD Graphics

1.65GHz

 Memory (RAM) : 2.00 GB

 System-type : 32-bit operating system

3.6.2 Software

 Windows 7 Ultimate

 MATLAB R2010a.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB IV

ANALISA HASIL DAN IMPLEMENTASI SISTEM

Pada bab ini akan dijelaskan tentang implementasi antarmuka dari

sistem beserta penjelasan tentang penggunaan tombol dan keterangan dari

sistem. Hal yang utama dalam pembahasan bab ini adalah analisa hasil

dari identifikasi suara manusia dari berbagai pengujian yang telah

dilakukan yang meilbatkan jumlah feature, besarnya windows size serta

jenis parameter yang dipilih.

4.1 Analisa Hasil Identifikasi Suara

Dalam proses identifikasi suara manusia ini dilakukan dengan

menggunakan windows size, tipe feature dan dengan jumlah state yang

berbeda dan diharapkan menghasilkan akurasi yang tinggi. Ukuran

windows size yang digunakan pada sistem ini adalah 4ms sampai dengan

6ms, sedangkan tipe feature yang digunakan adalah MFCC, MFCC_D,

dan MFCC_D_A. Sedangkan jumlah state yang dapat digunakan yaitu 10,

15, 20 dan 25.

Pada setiap pengujian akan dihasilkan confusion matrix serta

akurasi data yang berupa persentase. Pada bagian ini akan ditampilkan

confusion matrix yang memiliki akurasi paling tinggi dari semua proses

49
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 50

pengujian. Tabel 4.1 dan Tabel 4.2 di bawah ini menunjukkan hasil setiap

pengujian dengan berbagai macam variasi feature, windows size dan

jumlah state. Tabel 4.1 merupakan hasil pengujian untuk Speech

Recognition dan Tabel 4.2 merupakan hasil pengujian untuk Speaker

Recognition

Tabel 4.1 Hasil Akurasi Identifikasi Suara untuk Speech

Recognititon

No Windows Size Feature Jumlah State Akurasi (%)

1 4 MFCC 10 81

2 4 MFCC 15 88

3 4 MFCC 20 89

4 4 MFCC 25 91

5 5 MFCC 10 82

6 5 MFCC 15 88

7 5 MFCC 20 88

8 5 MFCC 25 90

9 6 MFCC 10 83

10 6 MFCC 15 89

11 6 MFCC 20 90

12 6 MFCC 25 93

13 4 MFCC_D 10 80

14 4 MFCC_D 15 89

15 4 MFCC_D 20 88

16 4 MFCC_D 25 92

17 5 MFCC_D 10 82
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 51

18 5 MFCC_D 15 88

19 5 MFCC_D 20 91

20 5 MFCC_D 25 93

21 6 MFCC_D 10 82

22 6 MFCC_D 15 90

23 6 MFCC_D 20 92

24 6 MFCC_D 25 95

25 4 MFCC_D_A 10 79

26 4 MFCC_D_A 15 85

27 4 MFCC_D_A 20 85

28 4 MFCC_D_A 25 87

29 5 MFCC_D_A 10 82

30 5 MFCC_D_A 15 88

31 5 MFCC_D_A 20 89

32 5 MFCC_D_A 25 93

33 6 MFCC_D_A 10 75

34 6 MFCC_D_A 15 87

35 6 MFCC_D_A 20 88

36 6 MFCC_D_A 25 92
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 52

Tabel 4.2 Hasil Akurasi Identifikasi Suara untuk Speaker

Recognition

No Windows Size Feature Jumlah State Akurasi (%)

1 4 MFCC 10 85

2 4 MFCC 15 91

3 4 MFCC 20 88

4 4 MFCC 25 90

5 5 MFCC 10 87

6 5 MFCC 15 91

7 5 MFCC 20 91

8 5 MFCC 25 92

9 6 MFCC 10 85

10 6 MFCC 15 90

11 6 MFCC 20 89

12 6 MFCC 25 91

13 4 MFCC_D 10 86

14 4 MFCC_D 15 85

15 4 MFCC_D 20 87

16 4 MFCC_D 25 90

17 5 MFCC_D 10 86

18 5 MFCC_D 15 87

19 5 MFCC_D 20 91

20 5 MFCC_D 25 88

21 6 MFCC_D 10 80

22 6 MFCC_D 15 85
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 53

23 6 MFCC_D 20 93

24 6 MFCC_D 25 91

25 4 MFCC_D_A 10 80

26 4 MFCC_D_A 15 77

27 4 MFCC_D_A 20 82

28 4 MFCC_D_A 25 72

29 5 MFCC_D_A 10 82

30 5 MFCC_D_A 15 81

31 5 MFCC_D_A 20 88

32 5 MFCC_D_A 25 87

33 6 MFCC_D_A 10 78

34 6 MFCC_D_A 15 83

35 6 MFCC_D_A 20 88

36 6 MFCC_D_A 25 89
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 54

Pada Gambar 4.1 berikut merupakan grafik yang menunjukkan

tingkat akurasi identifikasi suara manusia dengan menggunakan feature

MFFC_D dan dengan kombinasi windows size dan jumlah state yang

berbeda. Grafik di bawah ini merupakan pengujian pada Speech

Recognition.

Hasil Pengujian
100

95

90
Jumlah state
Akurasi

10
85
15
80
20
75
25
70
4 5 6
Window Size

Gambar 4.1 Tingkat Akurasi Identifikasi Suara Manusia dengan Feature

MFCC_D untuk Speech Recognition


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 55

Pada Gambar 4.2 berikut merupakan grafik yang menunjukkan

tingkat akurasi identifikasi suara manusia dengan menggunakan feature

MFFC_D dan dengan kombinasi windows size dan jumlah state yang

berbeda. Grafik di bawah ini merupakan pengujian pada Speaker

Recognition.

Hasil Pengujian
95

90

Jumlah state
85
Akurasi

10

80 15
20
75 25

70
4 5 6
Windows Size

Gambar 4.2 Tingkat Akurasi Identifikasi Suara Manusia dengan Feature

MFCC_D untuk Speaker Recognition


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 56

Pada Tabel 4.3 dan Tabel 4.5 berikut ini menunjukkan tingkat akurasi dari

berbagai jenis tipe feature yang berbeda. Pada Tabel 4.3 jumlah state yang

digunakan adalah 25 dengan ukuran windows size adalah 6ms. Sedangkan

pada Tabel 4.5 jumlah state yang digunakan adalah 20 dengan ukuran

windows size adalah 6ms.

Tabel 4.3 Hasil identifikasi suara berdasarkan tipe feature pada proses

Speech Recognition

Feature Akurasi (%)

MFCC 93

MFCC_D 95

MFCC_D_A 92

Hasil dari pengujian tersebut menunjukkan bahwa tingkat akurasi

yang dihasilkan bervariasi mulai dari 92% sampai dengan 95%. Pengujian

Hidden Markov Models yang menggunakan tipe feature MFCC_D dengan

jumlah state 25 dan besar windows size 6ms memiliki akurasi yang paling

tinggi.

Tabel berikut ini merupakan confusion matrix untuk pengujian

yang memiliki tingkat akurasi yang paling tinggi. Confusion matrix di

bawah ini untuk proses pengujian dengan speech recognition.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 57

Tabel 4.4 Confusion Matrix MFCC_D untuk Speech Recognition

no sat du tig emp lim ena tuju delapa sembila


l u a a at a m h n n

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

sembila 0 0 0 0 0 0 0 0 0 20
n

Pada confusion matrix di atas dapat dilihat bahwa sistem dapat

mengidentifikasi suara dengan baik. Pada pengucapan kata ‘satu’,

‘delapan’, dan ‘sembilan’ mampu dikenali dengan tepat dengan

menunjukkan hasil maksimal yaitu 20. Nilai terendah dari confusion matrix

tersebut adalah 17 yaitu pada pengucapan kata ‘tujuh’.

Dalam proses identifikasi speech recognition, suara yang masuk

tetapi bukan berasal dari speaker yang telah dimodelkan sebelumnya dapat

diproses dan terkadang hasil pengujian tepat. Hal ini dikarenakan pola kata

yang harus diucapkan telah tetap sehingga walaupun suara yang masuk
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 58

tidak berasal dari speaker yang telah dimodelkan masih dapat dikenali

dengan mencari kedekatan yang maksimum.

Tabel 4.5 Hasil identifikasi suara berdasarkan tipe feature pada proses

Speaker Recognition

Feature Akurasi (%)

MFCC 89

MFCC_D 93

MFCC_D_A 88

Hasil dari pengujian tersebut menunjukkan bahwa tingkat akurasi

yang dihasilkan bervariasi mulai dari 88% sampai dengan 93%. Pengujian

Hidden Markov Models yang menggunakan tipe feature MFCC_D dengan

jumlah state 20 dan besar windows size 6ms memiliki akurasi yang paling

tinggi.

Tabel berikut ini merupakan confusion matrix untuk pengujian yang

memiliki tingkat akurasi yang paling tinggi. Confusion matrix di bawah ini

untuk proses pengujian dengan speaker recognition.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 59

Tabel 4.6 Confusion Matrix MFCC_D untuk Speaker Verification

Angga Deta Petra Yudhi

Angga 45 0 0 5

Deta 0 44 6 0

Petra 0 3 47 0

Yudhi 1 0 0 49

Pada confusion matrix diatas hasil paling tinggi adalah 49 yaitu

pada speaker yang bernama Yudhi. Sedangkan jumlah paling kecil yaitu

44 yang merupakan speaker yang bernama Deta.

Pada proses speaker verification terdapat beberapa faktor yang

mempengaruhi tingkat akurasi proses identifikasi. Salah satu faktor

tersebut adalah speaker yang memiliki hubungan darah dapat membuat

sistem sedikit sulit untuk membedakan speaker tersebut. Dalam kasus ini

Petra dan Deta adalah speaker yang memiliki hubungan darah sehingga

terkadang suara Petra yang masuk tetapi teridentifikasi sebagai Deta.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 60

4.2 Implementasi Antarmuka Sistem

4.2.1 Halaman Depan

Halaman Depan merupakan halaman yang pertama kali dilihat oleh

user ketika menjalankan sistem ini. Halaman depan berisi judul dari sistem

beserta nama dari mahasiswa beserta nama dari dosen pembimbing. Pada

halaman depan terdapat dua menu utama yang terdapat di kiri atas. Setiap

menu utama memiliki sub-menu yang lain. Tampilan dari Halaman Depan

dapat dilihat pada Gambar 4.1 berikut.

Gambar 4.3 Halaman Depan


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 61

4.2.2 Halaman Pilihan Menu Pengujian

Halaman Pilihan Menu Pengujian merupakan halaman yang akan

digunakan user untuk memilih pengujian yang akan dilakukan, yaitu

pengujian untuk Speech Recognition atau Speaker Recognition. Halaman

ini dapa dilihat pada Gambar 4.2.

Gambar 4.4 Halaman Pilihan Pengujian


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 62

4.2.3 Halaman Pengujian Hidden Markov Models untuk Speech

Recognition

Halaman Pengujian Hidden Markov Models Speech Recognition

untuk adalah halaman yang berfungsi untuk menguji metode Hidden

Markov Models dengan jenis feature, windows size dan jumlah state yang

berbeda-beda. Pengujian ini dilakukan untuk mengetahui tingkat akurasi

dari hasil identifikasi suara. Dalam pengujian ini akan dihasilkan

confusion matrix, tingkat akurasi, lama jalannya program serta banyaknya

data yang cocok dan tidak cocok. Tampilan dari halaman ini dapat dilihat

pada Gambar 4.3.

Pada halaman ini terdapat beberapa kolom yang berisi tentang

berbagai keterangan. Pada kolom Keterangan Data berisi tentang

keterangan mengenai jumlah data yang akan diproses, jumlah data yang

akan melalui proses training dan jumlah data untuk testing. Pada kolom

Feature Extraction terdapat tiga jenis feature extraction yang harus dipilih

untuk melakukan proses pengujian. Pada pilihan Windows Size terdapat

tiga pilihan dan pada Jumlah State terdapat empat pilihan yang dapat

disesuaikan dengan kebutuhan pengguna.

Pada kolom Proses Hidden Markov Models berisi tentang langkah-

langkah dari proses Hidden Markov sendiri. Kolom Confusion Matrix

berisikan confusion matrix yang merupakan hasil dari proses pengujian

Hidden Markov Models. Kolom Hasil Pengujian berisi tentang keterangan

dari hasil pengujian yang di dalamnya terdapat jumlah data yang sesuai,
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 63

jumlah data yang tidak sesuai, waktu keseluruhan dan tingkat akurasi yang

berupa persentase.

Gambar 4.5 Halaman Pengujian Hidden Markov Models untuk Speech

Recognition
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 64

4.2.4 Halaman Pengujian Hidden Markov Models untuk Speaker

Verification

Halaman Pengujian Hidden Markov Models untuk Speaker

Recognition adalah halaman yang berfungsi untuk menguji metode Hidden

Markov Models dengan jenis feature, windows size dan jumlah state yang

berbeda-beda. Pengujian ini dilakukan untuk mengetahui tingkat akurasi

dari hasil identifikasi suara. Dalam pengujian ini akan dihasilkan

confusion matrix, tingkat akurasi, lama jalannya program serta banyaknya

data yang cocok dan tidak cocok. Tampilan dari halaman ini dapat dilihat

pada Gambar 4.4.

Pada halaman ini terdapat beberapa kolom yang berisi tentang

berbagai keterangan. Pada kolom Keterangan Data berisi tentang

keterangan mengenai jumlah data yang akan diproses, jumlah data yang

akan melalui proses training dan jumlah data untuk testing. Pada kolom

Feature Extraction terdapat tiga jenis feature extraction yang harus dipilih

untuk melakukan proses pengujian. Pada pilihan Windows Size terdapat

tiga pilihan dan pada Jumlah State terdapat empat pilihan yang dapat

disesuaikan dengan kebutuhan pengguna.

Pada kolom Proses Hidden Markov Models berisi tentang langkah-

langkah dari proses Hidden Markov sendiri. Kolom Confusion Matrix

berisikan confusion matrix yang merupakan hasil dari proses pengujian

Hidden Markov Models. Kolom Hasil Pengujian berisi tentang keterangan

dari hasil pengujian yang di dalamnya terdapat jumlah data yang sesuai,
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 65

jumlah data yang tidak sesuai, waktu keseluruhan dan tingkat akurasi yang

berupa persentase.

Gambar 4.6 Halaman Pengujian Hidden Markov Models untuk Speaker

Verification

4.2.5 Halaman Pengambilan Suara

Halaman Pengambilan Suara merupakan halaman dimana user

akan memasukkan data untuk pengujian dengan merekam suara dari user.

Pada halaman ini terdapat empat tombol rekam dimana masing-masing

tombol digunakan untuk merekam satu ucapan dari user. User memiliki

waktu sebanyak tiga detik pada setiap tombol untuk mengucapkan suara.

User akan mengucapkan angka seperti ‘satu’, ‘sembilan’ dan sebagainya

pada sistem ini. Tampilan pada halaman ini dapat dilihat pada Gambar 4.5
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 66

Setelah user telah selesai merekam suara pada satu tombol, maka

akan mucul pernyataan bahwa user telah selesai melakukan proses rekaman

dan dapat beralih ke tombol selanjutnya. Pada halaman ini juga terdapat

tombol Tahap Selanjutnya yang digunakan untuk melanjutkan ke proses

selanjutnya.

Gambar 4.7 Halaman Pengambilan Suara

Apabila speaker belum merekam data untuk password tetapi sudah

menekan tombol untuk proses selanjutnya maka akan muncul tampilan

seperti pada Gambar 4.6

Gambar 4.8 Halaman Peringatan


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 67

4.2.6 Halaman Pengujian Sistem untuk Speech Recognition

Halaman Pengujian Sistem untuk Speech Recognition ini

merupakan halaman pengujian sistem untuk mengidentifikasi suara hasil

dari proses rekam sebelumnya. Proses ini merupakan proses dimana suara

yang telah direkam akan diidentifikasi dan memberikan hasil berupa teks.

Tampilan pada halaman ini terdapat pada Gambar 4.6.

Pada halaman pengujian sistem ini terdapat beberapa kolom dan

tombol yang berisi tentang perintah dan keterangan serta proses yang

berjalan untuk melakukan identifikasi suara. Pada kolom Pilihan terdapat

empat tombol yang digunakan untuk mendengarkan hasil rekaman suara

yang telah dilakukan pada proses sebelumnya.

Apabila hasil rekaman tidak sesuai dengan keinginan user maka

proses rekaman dapat diulang lagi dengan menekan tombol Ulangi Hasil

Rekaman. Pada kolom Proses berisi tentang langkah-langkah dari

bagaimana sistem mengidentifikasi suara yang masuk. Pada kolom Hasil

Pengenalan meruapakan kolom yang akan menampilkan hasil dari

identifiksi suara yang berupa teks.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 68

Gambar 4.9 Halaman Pengujian Speech Recognition

4.2.7 Halaman Pengujian Sistem untuk Speaker Verification

Halaman Pengujian Sistem untuk Speaker Recognition ini

merupakan halaman pengujian sistem untuk mengidentifikasi suara hasil

dari proses rekam sebelumnya. Proses ini merupakan proses dimana suara

yang telah direkam akan diidentifikasi dan memberikan hasil berupa teks

yang berupa nama dari pemilik suara. Tampilan pada halaman ini terdapat

pada Gambar 4.7.

Pada halaman pengujian sistem ini terdapat beberapa kolom dan

tombol yang berisi tentang perintah dan keterangan serta proses yang

berjalan untuk melakukan identifikasi suara. Pada kolom Pilihan terdapat


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 69

empat tombol yang digunakan untuk mendengarkan hasil rekaman suara

yang telah dilakukan pada proses sebelumnya.

Apabila hasil rekaman tidak sesuai dengan keinginan user maka

proses rekaman dapat diulang lagi dengan menekan tombol Ulangi Hasil

Rekaman. Pada kolom Proses berisi tentang langkah-langkah dari

bagaimana sistem mengidentifikasi suara yang masuk. Pada kolom Hasil

Pengenalan merupakan kolom yang akan menampilkan hasil dari

identifiksi suara yang berupa teks yang berupa nama dari user.

Gambar 4.10 Halaman Pengujian Sistem Untuk Speaker Verification

Berikut adalah hasil pengujian untuk semua speaker yang suaranya

telah dimodelkan ke dalam sistem identifikasi ini. Gambar 4.8 dan Gambar

4.9 merupakan hasil pengujian untuk speaker Angga, Gambar 4.10 dan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 70

Gambar 4.11 merupakan hasil pengujian untuk speaker Yudhi, dan

Gambar 4.12 dan Gambar 4.13 merupakan hasil pengujian untuk speaker

Detha.

Gambar 4.11 Halaman Pengujian Speech Recognition untuk speaker Angga


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 71

Gambar 4.12 Halaman Pengujian Speaker Verification untuk speaker Angga

Gambar 4.13 Halaman Pengujian Speech Recognition untuk speaker Yudhi


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 72

Gambar 4.14 Halaman Pengujian Speaker Verification untuk speaker Yudhi

Gambar 4.15 Halaman Pengujian Speech Recognition untuk speaker Detha


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 73

Gambar 4.16 Halaman Pengujian Speaker Verification untuk speaker Detha

Untuk speaker yang tidak terdaftar pada pemodelan sistem, sistem

masih dapat memproses data yang masuk. Pada proses speaker recognition

suara yang masuk akan dicocokkan dengan pemodelan suara yang ada dan

dicari data yang memiliki kedekatan yang paling tinggi. Untuk proses

speaker verification akan ditampilkan peringatan bahwa suara yang masuk

tidak terdaftar.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 74

Gambar 4.17 Halaman Pengujian Speaker Verification untuk speaker yang tidak

terdaftar

4.2.8 Halaman Bantuan

Halaman Bantuan ini digunakan untuk membantu user

menggunakan sistem. Halaman ini membantu user untuk mendapatkan

penjelasan langkah-langkah bagaimana sistem berjalan. Halaman ini dapat

dilihat setelah user memilih sub-menu pada halaman depan. Tampilan

pada halaman ini dapat dilihat pada Gambar 4.15


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 75

Gambar 4.18 Halaman Bantuan

4.2.9 Halaman Tentang Programmer

Halaman Tentang Programmer ini berisi tentang penulis serta

kontak yang dapat dihubungi apabila terdapat kritik, saran atau

pertanyaan.

Gambar 4.19 Halaman Tentang Programmer


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

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

MFCC_D.

76
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 77

3. Tingkat akurasi terbaik untuk masing-masing feature antara lain :

a. Speech Recognition

 MFCC = 93%

 MFCC_D = 95%

 MFCC_D_A = 92%

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

windows size. Semakin besar jumlah state dan windows size maka
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 78

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.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 79

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).


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 80

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 .
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 81

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


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 82

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


19+20+19+19+19+18+18+17+20+20
Akurasi = 𝑥 100% = 95%
200
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 83

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

45+44+47+49
Akurasi = 𝑥 100 % = 93%
200
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

LAMPIRAN II

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
84
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 85

gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- 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');
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 86

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');
% 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;
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)


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 87

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
% 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)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 88

2. pengujianSistem3.m

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
% 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
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 89

% --- 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 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 ('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 ('hasilUji3.mlf');
delete ('hasilUji4.mlf');
delete ('dataTest1.scp');
delete ('dataTest2.scp');
delete ('dataTest3.scp');
delete ('dataTest4.scp');
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 90

delete ('hasilUji3.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


fid2=fopen('dataTest1.scp','w');
srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
fwrite(fid2,['"' srcDirectory '\' 'dataMasuk1.mfc"']);
fprintf(fid2,'\n');
fclose(fid2);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 91

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

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


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)
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')
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 92

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

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)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 93

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),'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);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 94

% --- 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);
% 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)

3. pengujianSistem3_Speaker.m

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)".
%
% 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


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 95

% Edit the above text to modify the response to help


pengujianSistem3_Speaker

% 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
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 96

% --- 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)

% --- 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);

% 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);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 97

% 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};
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);
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 ..');


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 98

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

% if (rec1{3}(1) == rec2{3}(1) == rec3{3}(1) == rec3{3}(1))


% set(handles.teksHasil,'String',rec1(3))
% else
% set(handles.teksHasil,'String','Anda tidak terdaftar')
% end

toc
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 99

4. File grammar

$kata = nol | satu | dua | tiga | empat | lima | enam | tujuh


| delapan | sembilan ;
(SENT-START ( $kata ) SENT-END)

5. File grammar2

$orang = angga | deta | petra | yudhi ;


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

6. File model.list

nol
satu
dua
tiga
empat
lima
enam
tujuh
delapan
sembilan
sil

7. File model.list2

angga
deta
petra
yudhi
sil

8. File dict

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
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 100

9. File dict2

SENT-START [] sil
SENT-END [] sil
angga angga
deta deta
petra petra
yudhi yudhi

10. File mfccConfig_1

#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

11. createSCP.m

% 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 ('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)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 101

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} '\'
fileBaru{n} '.wav" ' '"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1,'\n');
disp(fileBaru{n});
end
end
fclose(fid1);

12. createSCP2.m

% 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
fclose(fid1);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 102

13. File codeAll.scp

"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"

14. File codeAll2.scp

"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"
"C:\Users\detha\Documents\MATLAB\Skripsi\data9\YUDHI9-4.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil2\YUDHI9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\data9\YUDHI9-5.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil2\YUDHI9-5.mfc"

15. createMlf.m

dirAsal = {'data0';'data1'; 'data2'; 'data3';


'data4';'data5';'data6';'data7';'data8';'data9'};
kata =
{'nol','satu','dua','tiga','empat','lima','enam','tujuh','delapan'
,'sembilan'};

files=[];
for j=1:length(dirAsal);
%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');
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 103

fid1 = fopen('allKata.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"']);
fprintf(fid1, '\n');
fwrite(fid1, [kata{m}]);
fprintf(fid1, '\n');
fprintf(fid1, '.');
fprintf(fid1, '\n');
disp(fileBaru{n});
end
end
fclose(fid1);

16. createMlf2.m

dirAsal = {'angga';'deta';'petra';'yudhi'};
orang = {'angga','deta','petra','yudhi'};

files=[];
for j=1:length(dirAsal);
%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"']);
fprintf(fid1, '\n');
fwrite(fid1, [orang{m}]);
fprintf(fid1, '\n');
fprintf(fid1, '.');
fprintf(fid1, '\n');
disp(fileBaru{n});
end
end
fclose(fid1);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 104

17. File allKata.mlf

#!MLF!#
"*/ANGGA0-1.lab"
nol
.
"*/ANGGA0-2.lab"
nol
.
"*/ANGGA0-3.lab"
nol
.
"*/ANGGA0-4.lab"
nol
.
"*/ANGGA0-5.lab"
nol
.
"*/DETA0-1.lab"
nol
.
"*/DETA0-2.lab"
nol
.
"*/DETA0-3.lab"
nol
.
"*/DETA0-4.lab"
nol
.
. . . . . .
"*/YUDHI9-2.lab"
sembilan
.
"*/YUDHI9-3.lab"
sembilan
.
"*/YUDHI9-4.lab"
sembilan
.
"*/YUDHI9-5.lab"
sembilan
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 105

18. File allKata2.mlf

#!MLF!#
"*/ANGGA0-1.lab"
angga
.
"*/ANGGA0-2.lab"
angga
.
"*/ANGGA0-3.lab"
angga
.
. . . . .
"*/YUDHI8-5.lab"
yudhi
.
"*/YUDHI9-1.lab"
yudhi
.
"*/YUDHI9-2.lab"
yudhi
.
"*/YUDHI9-3.lab"
yudhi
.
"*/YUDHI9-4.lab"
yudhi
.
"*/YUDHI9-5.lab"
yudhi
.

19. File kata2phone.led

EX
IS sil sil

20. File katatypephone.mlf

#!MLF!#
"*/ANGGA0-1.lab"
sil
nol
sil
.
. . . . . .

"*/YUDHI9-4.lab"
sil
sembilan
sil
.
"*/YUDHI9-5.lab"
sil
sembilan
sil
.

.
"*/PETRA2-4.lab"
sil
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 106

21. createAllTrainData.m

% create file AllTrainData


% direktori asal 'C:\Users\petrav\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});
fileMfc= dir ('*.wav');
% ambil nama file
filename={};
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'; %
directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n > 4
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainData2.scp','w');
fid2=fopen('AllTestData2.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil'; %
directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 5
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else if n > 8
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 107

fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}


'.mfc"']);
fprintf(fid1, '\n');
else if n > 8
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainData3.scp','w');
fid2=fopen('AllTestData3.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil'; %
directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 9
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else if n > 12
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainData4.scp','w');
fid2=fopen('AllTestData4.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil'; %
directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 13
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else if n > 16
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 108

fprintf(fid1, '\n');
else if n > 16
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainData5.scp','w');
fid2=fopen('AllTestData5.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil'; %
directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 17
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
fclose(fid1);
fclose(fid2);

22. CreateAllTrainDataS.m

% create file AllTrainData


% direktori asal 'C:\Users\petrav\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});
fileMfc= dir ('*.wav');
% ambil nama file
filename={};
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('AllTrainDataS1.scp','w');
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 109

end
files{i}=filename;
cd ..;
end

% mencetak file data training

fid1=fopen('AllTrainDataS1.scp','w');
fid2=fopen('AllTestDataS1.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil2';
% directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n > 4
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainDataS2.scp','w');
fid2=fopen('AllTestDataS2.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil2';
% directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 5
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else if n > 8
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainDataS3.scp','w');
fid2=fopen('AllTestDataS3.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil2';
% directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 9
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 110

for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 9
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else if n > 12
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainDataS4.scp','w');
fid2=fopen('AllTestDataS4.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil2';
% directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 13
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else if n > 16
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
end
end
end
fclose(fid1);
fclose(fid2);

fid1=fopen('AllTrainDataS5.scp','w');
fid2=fopen('AllTestDataS5.scp','w');
srcDirecory = 'C:\Users\detha\Documents\MATLAB\Skripsi';
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\hasil2';
% directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
if n < 17
fwrite(fid1, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid1, '\n');
else
fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}
'.mfc"']);
fprintf(fid2, '\n');
end
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 111

fwrite(fid2, ['"' targetDirectory '\' fileBaru{n}


'.mfc"']);
fprintf(fid2, '\n');
end
end
end
fclose(fid1);
fclose(fid2);

23. File AllTrainData1

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-3.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-5.mfc"

24. File AllTrainData2

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

25. File AllTrainData3

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-4.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-5.mfc"
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 112

26. File AllTrainData4

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

27. File AllTrainData5

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-4.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"

28. File AllTestData1

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA1-1.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA9-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA9-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA9-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA9-4.mfc"

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"

29. File AllTestData2

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-3.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA9-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA9-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA9-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA9-3.mfc"

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 113

30. File AllTestData3

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA0-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA0-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA0-2.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\DETA9-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"
31. File AllTestData4
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA0-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA0-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA0-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI0-1.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\PETRA9-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"
32. File AllTestData5

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI0-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI0-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI0-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI0-5.mfc"
.....
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"

33. createProto.m
function createProto(feature,numparam,numstates)

% Function to create proto file


% Input
% feature : feature(MFCC, USER...)
% numparam : number of parameter used (MFCC 12, MFCCE 13...)
% numstates: number of states
% Output
% proto file

fid1=fopen('proto','w');
fwrite(fid1, ['~o <VecSize> ' num2str(numparam) ' <' feature '>']);
fprintf(fid1, '\n');
fwrite(fid1, ['~h "proto"']);
fprintf(fid1, '\n');
fwrite(fid1, '<BeginHMM>');
fprintf(fid1, '\n');
fwrite(fid1, [' <NumStates> ' num2str(numstates)]);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 114

fwrite(fid1, ['~h "proto"']);


fprintf(fid1, '\n');
fwrite(fid1, '<BeginHMM>');
fprintf(fid1, '\n');
fwrite(fid1, [' <NumStates> ' num2str(numstates)]);
fprintf(fid1, '\n');

M = zeros(numparam,1); % mean
V = ones(numparam,1); % variance

for i=2:numstates-1
fwrite(fid1,[' <State> ' num2str(i)]);
fprintf(fid1, '\n');
fprintf(fid1, '\t');
fwrite(fid1,[ '<Mean> ' num2str(numparam)]);
fprintf(fid1, '\n');
fprintf(fid1, '\t\t');
for j = 1:length(M)
fwrite(fid1, num2str(M(j)));
fprintf(fid1, '\t');
end
fprintf(fid1, '\n');
fprintf(fid1, '\t');
fwrite(fid1,[ '<Variance> ' num2str(numparam)]);
fprintf(fid1, '\n');
fprintf(fid1, '\t\t');
for j = 1:length(V)
fwrite(fid1, num2str(V(j)));
fprintf(fid1, '\t');
end
fprintf(fid1, '\n');
end
% Transition matrix
fwrite(fid1,[' <TransP> ' num2str(numstates)]);
fprintf(fid1, '\n');
TP = transmat(numstates); % calling transmat function
[m,n]=size(TP);
for i=1:m
fprintf(fid1,'\t');
for j=1:n
fwrite(fid1, num2str(TP(i,j)));
fprintf(fid1, '\t');
end
fprintf(fid1,'\n');
end
fwrite(fid1,'<EndHMM>');
fclose(fid1);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 115

35. transmat.m

function TransP=transmat(numOfStates)

%numOfStates = 20;
TransP=zeros(numOfStates);

TransP(1,2)=1;
for i=2:numOfStates-1
TransP(i,i+1)=0.4;
end

for j=2:2:numOfStates-1 %genap values


TransP(j,j)=0.6;
end

for k=3:2:numOfStates-1 %odd values


TransP(k,k-1)=0.1;
TransP(k,k)=0.5;
end
TransP(numOfStates,numOfStates)=1;

36. prosesHMM.m

% Pembentukan Model

a = 'Proses training data..';


b = 'HParse -A grammar wdnet';
c = 'HLEd -A -l * -d dict -i katatypephone.mlf kata2phone.led
allKata.mlf';
dos(b);
dos(c);
step1 = {a;b;c};
set(handles.teksPertama,'String',step1);

% Proses testing dan training pertama


c1 = 'Proses training dan testing pertama ...'
d = 'HCompV -A -f 0.01 -m -S AllTrainData1.scp -M hmm1 proto';
e = 'set CLASSPATH=';
f = 'java CloneHMM ./hmm1 model.list';
dos (d);
dos (e);
dos (f);
step2 = {d;e;f;c1};
set(handles.teksProses1,'String',step2);

% Pembuatan Model dengan Algoritma Baum - Welch


g = 'HERest -A -t 600.0 -I katatypephone.mlf -S AllTrainData1.scp -
H hmm1/hmmdefs -M hmm1 model.list';
for j=1:6
dos (g);
end
set(handles.teksProses2,'String',g);

% Pengenalan dengan Algoritma Viterbi


h = 'HVite -A -w wdnet -l . -i rec1.mlf -S AllTestData1.scp -H
hmm1/hmmdefs dict model.list';
i = 'HVite -A -w wdnet -l . -o ST -i rec1_1.mlf -S AllTestData1.scp
-H hmm1/hmmdefs dict model.list';
j = 'Proses training pertama selesai..';
dos (h);
dos (i);
step3 = {h;i;j;};
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 116

% Pengenalan dengan Algoritma Viterbi


h = 'HVite -A -w wdnet -l . -i rec1.mlf -S AllTestData1.scp -H
hmm1/hmmdefs dict model.list';
i = 'HVite -A -w wdnet -l . -o ST -i rec1_1.mlf -S AllTestData1.scp
-H hmm1/hmmdefs dict model.list';
j = 'Proses training pertama selesai..';
dos (h);
dos (i);
step3 = {h;i;j;};
set(handles.teksProses3,'String',step3);

% Proses testing dan training kedua


i1 = 'Proses training dan testing kedua ...';
set(handles.teksKedua,'String',i1);
dos ('HCompV -A -f 0.01 -m -S AllTrainData2.scp -M hmm2 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm2 model.list');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone.mlf -S
AllTrainData2.scp -H hmm2/hmmdefs -M hmm2 model.list');
end
dos ('HVite -A -w wdnet -l . -i rec2.mlf -S AllTestData2.scp -H
hmm2/hmmdefs dict model.list');
dos ('HVite -A -w wdnet -l . -o ST -i rec2_1.mlf -S
AllTestData2.scp -H hmm2/hmmdefs dict model.list');

% Proses testing dan training ketiga


k = 'Proses training dan testing ketiga ...';
set(handles.teksKetiga,'String',k);
dos ('HCompV -A -f 0.01 -m -S AllTrainData3.scp -M hmm3 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm3 model.list');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone.mlf -S
AllTrainData3.scp -H hmm3/hmmdefs -M hmm3 model.list');
end
dos ('HVite -A -w wdnet -l . -i rec3.mlf -S AllTestData3.scp -H
hmm3/hmmdefs dict model.list');
dos ('HVite -A -w wdnet -l . -o ST -i rec3_1.mlf -S
AllTestData3.scp -H hmm3/hmmdefs dict model.list');

% Proses testing dan training keempat


l = 'Proses training dan testing keempat ...';
set(handles.teksKeempat,'String',l);
dos ('HCompV -A -f 0.01 -m -S AllTrainData4.scp -M hmm4 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm4 model.list');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone.mlf -S
AllTrainData4.scp -H hmm4/hmmdefs -M hmm4 model.list');
end
dos ('HVite -A -w wdnet -l . -i rec4.mlf -S AllTestData4.scp -H
hmm4/hmmdefs dict model.list');
dos ('HVite -A -w wdnet -l . -o ST -i rec4_1.mlf -S
AllTestData4.scp -H hmm4/hmmdefs dict model.list');

% Proses training dan testing kelima


m = 'Proses training dan testing kelima ...';
set(handles.teksKelima,'String',m);
dos ('HCompV -A -f 0.01 -m -S AllTrainData5.scp -M hmm5 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm5 model.list');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone.mlf -S
AllTrainData5.scp -H hmm5/hmmdefs -M hmm5 model.list');
end
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 117

dos ('java CloneHMM ./hmm5 model.list');


for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone.mlf -S
AllTrainData5.scp -H hmm5/hmmdefs -M hmm5 model.list');
end
dos ('HVite -A -w wdnet -l . -i rec5.mlf -S AllTestData5.scp -H
hmm5/hmmdefs dict model.list');
dos ('HVite -A -w wdnet -l . -o ST -i rec5_1.mlf -S
AllTestData5.scp -H hmm5/hmmdefs dict model.list');

set(handles.teksKeenam,'String','Proses selesai');

CM_Speech;

37. ProsesHMM2.m

% Pembentukan Model

a = 'Proses training data..';


b = 'HParse -A grammar2 wdnet2';
c = 'HLEd -A -l * -d dict2 -i katatypephone2.mlf kata2phone.led
allKata2.mlf';
dos(b);
dos(c);
step1 = {a;b;c};
set(handles.teksPertama,'String',step1);

% Proses testing dan training pertama


c1 = 'Proses training dan testing pertama ...'
d = 'HCompV -A -f 0.01 -m -S AllTrainDataS1.scp -M hmm6 proto';
e = 'set CLASSPATH=';
f = 'java CloneHMM ./hmm6 model.list2';
dos (d);
dos (e);
dos (f);
step2 = {d;e;f;c1};
set(handles.teksProses1,'String',step2);

% Pembuatan Model dengan Algoritma Baum - Welch


g = 'HERest -A -t 600.0 -I katatypephone2.mlf -S AllTrainDataS1.scp
-H hmm6/hmmdefs -M hmm6 model.list2';
for j=1:6
dos (g);
end
set(handles.teksProses2,'String',g);

% Pengenalan dengan Algoritma Viterbi


h = 'HVite -A -w wdnet2 -l . -i rec1s.mlf -S AllTestDataS1.scp -H
hmm6/hmmdefs dict2 model.list2';
i = 'HVite -A -w wdnet2 -l . -o ST -i rec1_1s.mlf -S
AllTestDataS1.scp -H hmm6/hmmdefs dict2 model.list2';
j = 'Proses training pertama selesai..';
dos (h);
dos (i);
step3 = {h;i;j;};
set(handles.teksProses3,'String',step3);

% Proses testing dan training kedua


i1 = 'Proses training dan testing kedua ...';
set(handles.teksKedua,'String',i1);
dos ('HCompV -A -f 0.01 -m -S AllTrainDataS2.scp -M hmm7 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm7 model.list2');
for j=1:6
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 118

% Proses testing dan training kedua


i1 = 'Proses training dan testing kedua ...';
set(handles.teksKedua,'String',i1);
dos ('HCompV -A -f 0.01 -m -S AllTrainDataS2.scp -M hmm7 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm7 model.list2');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataS2.scp -H hmm7/hmmdefs -M hmm7 model.list2');
end
dos ('HVite -A -w wdnet2 -l . -i rec2s.mlf -S AllTestDataS2.scp -H
hmm7/hmmdefs dict2 model.list2');
dos ('HVite -A -w wdnet2 -l . -o ST -i rec2_1s.mlf -S
AllTestDataS2.scp -H hmm7/hmmdefs dict2 model.list2');

% Proses testing dan training ketiga


k = 'Proses training dan testing ketiga ...';
set(handles.teksKetiga,'String',k);
dos ('HCompV -A -f 0.01 -m -S AllTrainDataS3.scp -M hmm8 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm8 model.list2');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataS3.scp -H hmm8/hmmdefs -M hmm8 model.list2');
end
dos ('HVite -A -w wdnet2 -l . -i rec3s.mlf -S AllTestDataS3.scp -H
hmm8/hmmdefs dict2 model.list2');
dos ('HVite -A -w wdnet2 -l . -o ST -i rec3_1s.mlf -S
AllTestDataS3.scp -H hmm8/hmmdefs dict2 model.list2');

% Proses testing dan training keempat


l = 'Proses training dan testing keempat ...';
set(handles.teksKeempat,'String',l);
dos ('HCompV -A -f 0.01 -m -S AllTrainDataS4.scp -M hmm9 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm9 model.list2');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataS4.scp -H hmm9/hmmdefs -M hmm9 model.list2');
end
dos ('HVite -A -w wdnet2 -l . -i rec4s.mlf -S AllTestDataS4.scp -H
hmm9/hmmdefs dict2 model.list2');
dos ('HVite -A -w wdnet2 -l . -o ST -i rec4_1s.mlf -S
AllTestDataS4.scp -H hmm9/hmmdefs dict2 model.list2');

% Proses training dan testing kelima


m = 'Proses training dan testing kelima ...';
set(handles.teksKelima,'String',m);
dos ('HCompV -A -f 0.01 -m -S AllTrainDataS5.scp -M hmm10 proto');
dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm10 model.list2');
for j=1:6
dos ('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataS5.scp -H hmm10/hmmdefs -M hmm10 model.list2');
end
dos ('HVite -A -w wdnet2 -l . -i rec5s.mlf -S AllTestDataS5.scp -H
hmm10/hmmdefs dict2 model.list2');
dos ('HVite -A -w wdnet2 -l . -o ST -i rec5_1s.mlf -S
AllTestDataS5.scp -H hmm10/hmmdefs dict2 model.list2');

set(handles.teksKeenam,'String','Proses selesai');

CM_Speaker;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 119

38. File rec1_1.mlf

#!MLF!#
"./ANGGA0-1.rec"
nol
.
"./ANGGA0-2.rec"
nol
.
"./ANGGA0-3.rec"
nol
.
"./ANGGA0-4.rec"
nol
.
"./ANGGA1-1.rec"
satu
.
"./ANGGA1-2.rec"
satu
.
"./ANGGA1-3.rec"
satu
.
"./ANGGA1-4.rec"
satu
.
....
"./ANGGA8-3.rec"
delapan
.
"./ANGGA8-4.rec"
delapan
.
"./ANGGA9-1.rec"
sembilan
.
"./ANGGA9-2.rec"
sembilan
.
"./ANGGA9-3.rec"
sembilan
.
"./ANGGA9-4.rec"
sembilan
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 120

39. File rec2_1.mlf

#!MLF!#
"./ANGGA0-5.rec"
nol
.
"./DETA0-1.rec"
nol
.
"./DETA0-2.rec"
nol
.
"./DETA0-3.rec"
nol
.
"./ANGGA1-5.rec"
satu
.
"./DETA1-1.rec"
satu
.
"./DETA1-2.rec"
satu
.
"./DETA1-3.rec"
satu
.
....
"./DETA8-2.rec"
delapan
.
"./DETA8-3.rec"
delapan
.
"./ANGGA9-5.rec"
sembilan
.
"./DETA9-1.rec"
sembilan
.
"./DETA9-2.rec"
sembilan
.
"./DETA9-3.rec"
sembilan
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 121

40. File rec3_1.mlf

#!MLF!#
"./DETA0-4.rec"
nol
.
"./DETA0-5.rec"
nol
.
"./PETRA0-1.rec"
nol
.
"./PETRA0-2.rec"
nol
.
"./DETA1-4.rec"
satu
.
"./DETA1-5.rec"
satu
.
....
"./PETRA8-1.rec"
delapan
.
"./PETRA8-2.rec"
delapan
.
"./DETA9-4.rec"
sembilan
.
"./DETA9-5.rec"
sembilan
.
"./PETRA9-1.rec"
sembilan
.
"./PETRA9-2.rec"
sembilan
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 122

41. File rec4_1.mlf

#!MLF!#
"./PETRA0-3.rec"
nol
.
"./PETRA0-4.rec"
nol
.
"./PETRA0-5.rec"
nol
.
"./YUDHI0-1.rec"
nol
.
"./PETRA1-3.rec"
satu
.
"./PETRA1-4.rec"
satu
.
"./PETRA1-5.rec"
satu
.
....
"./PETRA8-5.rec"
delapan
.
"./YUDHI8-1.rec"
delapan
.
"./PETRA9-3.rec"
sembilan
.
"./PETRA9-4.rec"
sembilan
.
"./PETRA9-5.rec"
sembilan
.
"./YUDHI9-1.rec"
sembilan
.

sembilan
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 123

42. File rec5_1.mlf

#!MLF!#
"./YUDHI0-2.rec"
empat
.
"./YUDHI0-3.rec"
nol
.
"./YUDHI0-4.rec"
nol
.
"./YUDHI0-5.rec"
nol
.
"./YUDHI1-2.rec"
satu
.
"./YUDHI1-3.rec"
satu
.
....
"./YUDHI8-4.rec"
delapan
.
"./YUDHI8-5.rec"
delapan
.
"./YUDHI9-2.rec"
sembilan
.
"./YUDHI9-3.rec"
sembilan
.
"./YUDHI9-4.rec"
sembilan
.
"./YUDHI9-5.rec"
sembilan
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 124

43. File rec1_1s.mlf

#!MLF!#
"./ANGGA0-1.rec"
yudhi
.
"./ANGGA0-2.rec"
angga
.
"./ANGGA0-3.rec"
yudhi
.
"./ANGGA0-4.rec"
yudhi
.
"./ANGGA1-1.rec"
angga
.
"./ANGGA1-2.rec"
angga
.
....
"./ANGGA8-4.rec"
angga
.
"./ANGGA9-1.rec"
angga
.
"./ANGGA9-2.rec"
yudhi
.
"./ANGGA9-3.rec"
angga
.
"./ANGGA9-4.rec"
angga
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 125

44. File rec2_1s.mlf

#!MLF!#
"./ANGGA0-5.rec"
angga
.
"./DETA0-1.rec"
deta
.
"./DETA0-2.rec"
deta
.
"./DETA0-3.rec"
deta
.
"./ANGGA1-5.rec"
angga
.
....
"./DETA8-3.rec"
deta
.
"./ANGGA9-5.rec"
angga
.
"./DETA9-1.rec"
deta
.
"./DETA9-2.rec"
deta
.
"./DETA9-3.rec"
deta
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 126

45. File rec3_1s.mlf

#!MLF!#
"./DETA0-4.rec"
deta
.
"./DETA0-5.rec"
deta
.
"./PETRA0-1.rec"
petra
.
"./PETRA0-2.rec"
petra
.
"./DETA1-4.rec"
deta
.
....
"./PETRA8-2.rec"
petra
.
"./DETA9-4.rec"
deta
.
"./DETA9-5.rec"
petra
.
"./PETRA9-1.rec"
petra
.
"./PETRA9-2.rec"
petra
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 127

46. File rec4_1s.mlf

#!MLF!#
"./PETRA0-3.rec"
petra
.
"./PETRA0-4.rec"
petra
.
"./PETRA0-5.rec"
petra
.
"./YUDHI0-1.rec"
yudhi
.
"./PETRA1-3.rec"
petra
.
....
"./YUDHI8-1.rec"
yudhi
.
"./PETRA9-3.rec"
petra
.
"./PETRA9-4.rec"
petra
.
"./PETRA9-5.rec"
petra
.
"./YUDHI9-1.rec"
yudhi
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 128

47. File rec5_1s.mlf

#!MLF!#
"./YUDHI0-2.rec"
yudhi
.
"./YUDHI0-3.rec"
yudhi
.
"./YUDHI0-4.rec"
yudhi
.
"./YUDHI0-5.rec"
yudhi
.
"./YUDHI1-2.rec"
yudhi
.
"./YUDHI1-3.rec"
yudhi
.
....
"./YUDHI8-5.rec"
yudhi
.
"./YUDHI9-2.rec"
yudhi
.
"./YUDHI9-3.rec"
yudhi
.
"./YUDHI9-4.rec"
yudhi
.
"./YUDHI9-5.rec"
yudhi
.
yudhi
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 129

48. CM_Speech.m

[data] = textread('rec1_1.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'0-') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'1-') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'2-') > 0)
y(i)=3;
elseif (strfind(char(data(cacah)),'3-') > 0)
y(i)=4;
elseif (strfind(char(data(cacah)),'4-') > 0)
y(i)=5;
elseif (strfind(char(data(cacah)),'5-') > 0)
y(i)=6;
elseif (strfind(char(data(cacah)),'6-') > 0)
y(i)=7;
elseif (strfind(char(data(cacah)),'7-') > 0)
y(i)=8;
elseif (strfind(char(data(cacah)),'8-') > 0)
y(i)=9;
else

y(i)=10;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'nol') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'satu') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'dua') == 1)
x(i)=3;
elseif (strcmp(data(cacah),'tiga') == 1)
x(i)=4;
elseif (strcmp(data(cacah),'empat') == 1)
x(i)=5;
elseif (strcmp(data(cacah),'lima') == 1)
x(i)=6;
elseif (strcmp(data(cacah),'enam') == 1)
x(i)=7;
elseif (strcmp(data(cacah),'tujuh') == 1)
x(i)=8;
elseif (strcmp(data(cacah),'delapan') == 1)
x(i)=9;
else

x(i)=10;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=10;
% maxx = max(x);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 130

% minx = min(x);
minx=1;
maxx=10;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = c';
disp('Matrix 1');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 1 = %d \n\n',hitung));

[data] = textread('rec2_1.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y

cacah =2; % mulai dari indek 2


for i=1:index
if (strfind(char(data(cacah)),'0-') > 0)
y(i)=1;
elseif (strfind(char(data(cacah)),'1-') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'2-') > 0)
y(i)=3;
elseif (strfind(char(data(cacah)),'3-') > 0)
y(i)=4;
elseif (strfind(char(data(cacah)),'4-') > 0)
y(i)=5;
elseif (strfind(char(data(cacah)),'5-') > 0)
y(i)=6;
elseif (strfind(char(data(cacah)),'6-') > 0)
y(i)=7;
elseif (strfind(char(data(cacah)),'7-') > 0)
y(i)=8;
elseif (strfind(char(data(cacah)),'8-') > 0)
y(i)=9;
else
y(i)=10;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'nol') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'satu') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'dua') == 1)
x(i)=3;
elseif (strcmp(data(cacah),'tiga') == 1)
x(i)=4;
elseif (strcmp(data(cacah),'empat') == 1)
x(i)=5;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 131

x(i)=3;
elseif (strcmp(data(cacah),'tiga') == 1)
x(i)=4;
elseif (strcmp(data(cacah),'empat') == 1)
x(i)=5;
elseif (strcmp(data(cacah),'lima') == 1)
x(i)=6;
elseif (strcmp(data(cacah),'enam') == 1)
x(i)=7;
elseif (strcmp(data(cacah),'tujuh') == 1)
x(i)=8;
elseif (strcmp(data(cacah),'delapan') == 1)
x(i)=9;
else
x(i)=10;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=10;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 2');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 2 = %d \n\n',hitung));

[data] = textread('rec3_1.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y

cacah =2;
for i=1:index
if (strfind(char(data(cacah)),'0-') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'1-') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'2-') > 0)
y(i)=3;
elseif (strfind(char(data(cacah)),'3-') > 0)
y(i)=4;
elseif (strfind(char(data(cacah)),'4-') > 0)
y(i)=5;
elseif (strfind(char(data(cacah)),'5-') > 0)
y(i)=6;
elseif (strfind(char(data(cacah)),'6-') > 0)
y(i)=7;
elseif (strfind(char(data(cacah)),'7-') > 0)
y(i)=8;
elseif (strfind(char(data(cacah)),'8-') > 0)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 132

elseif (strfind(char(data(cacah)),'6-') > 0)


y(i)=7;
elseif (strfind(char(data(cacah)),'7-') > 0)
y(i)=8;
elseif (strfind(char(data(cacah)),'8-') > 0)
y(i)=9;
else
y(i)=10;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'nol') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'satu') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'dua') == 1)
x(i)=3;
elseif (strcmp(data(cacah),'tiga') == 1)
x(i)=4;
elseif (strcmp(data(cacah),'empat') == 1)
x(i)=5;
elseif (strcmp(data(cacah),'lima') == 1)
x(i)=6;
elseif (strcmp(data(cacah),'enam') == 1)
x(i)=7;
elseif (strcmp(data(cacah),'tujuh') == 1)
x(i)=8;
elseif (strcmp(data(cacah),'delapan') == 1)
x(i)=9;
else

x(i)=10;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=10;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 3');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 3 = %d \n\n',hitung));

[data] = textread('rec4_1.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 133

[data] = textread('rec4_1.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'0-') > 0)
y(i)=1;
elseif (strfind(char(data(cacah)),'1-') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'2-') > 0)
y(i)=3;
elseif (strfind(char(data(cacah)),'3-') > 0)
y(i)=4;
elseif (strfind(char(data(cacah)),'4-') > 0)
y(i)=5;
elseif (strfind(char(data(cacah)),'5-') > 0)
y(i)=6;
elseif (strfind(char(data(cacah)),'6-') > 0)
y(i)=7;
elseif (strfind(char(data(cacah)),'7-') > 0)
y(i)=8;
elseif (strfind(char(data(cacah)),'8-') > 0)
y(i)=9;
else
y(i)=10;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'nol') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'satu') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'dua') == 1)
x(i)=3;
elseif (strcmp(data(cacah),'tiga') == 1)
x(i)=4;
elseif (strcmp(data(cacah),'empat') == 1)
x(i)=5;
elseif (strcmp(data(cacah),'lima') == 1)
x(i)=6;
elseif (strcmp(data(cacah),'enam') == 1)
x(i)=7;
elseif (strcmp(data(cacah),'tujuh') == 1)
x(i)=8;
elseif (strcmp(data(cacah),'delapan') == 1)
x(i)=9;
else
x(i)=10;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=10;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 134

c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 4');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 4 = %d \n\n',hitung));

[data] = textread('rec5_1.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'0-') > 0)
y(i)=1;
elseif (strfind(char(data(cacah)),'1-') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'2-') > 0)
y(i)=3;
elseif (strfind(char(data(cacah)),'3-') > 0)
y(i)=4;
elseif (strfind(char(data(cacah)),'4-') > 0)
y(i)=5;
elseif (strfind(char(data(cacah)),'5-') > 0)
y(i)=6;
elseif (strfind(char(data(cacah)),'6-') > 0)
y(i)=7;
elseif (strfind(char(data(cacah)),'7-') > 0)
y(i)=8;
elseif (strfind(char(data(cacah)),'8-') > 0)
y(i)=9;
else
y(i)=10;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'nol') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'satu') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'dua') == 1)
x(i)=3;
elseif (strcmp(data(cacah),'tiga') == 1)
x(i)=4;
elseif (strcmp(data(cacah),'empat') == 1)
x(i)=5;
elseif (strcmp(data(cacah),'lima') == 1)
x(i)=6;
elseif (strcmp(data(cacah),'enam') == 1)
x(i)=7;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 135

x(i)=4;
elseif (strcmp(data(cacah),'empat') == 1)
x(i)=5;
elseif (strcmp(data(cacah),'lima') == 1)
x(i)=6;
elseif (strcmp(data(cacah),'enam') == 1)
x(i)=7;
elseif (strcmp(data(cacah),'tujuh') == 1)
x(i)=8;
elseif (strcmp(data(cacah),'delapan') == 1)
x(i)=9;
else
x(i)=10;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=10;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 5');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 1 = %d \n\n',hitung));

disp('Confusion Matrix');
hitung = round(trace(nilai)/sum(sum(nilai))*100);
disp(nilai); % nilai adalah matrik konfusion
s = num2str(nilai);
set(handles.confusionMatrix,'String',s);
disp(sprintf('Jumlah Data = %d ', sum(sum(nilai))));

s1 = num2str(trace(nilai));
set(handles.teksSesuai,'String',s1);
a = 'data';
set(handles.teksData,'String',a);
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(nilai)));
s2 = num2str((sum(sum(nilai))-trace(nilai)));
set(handles.teksTdkSesuai,'String',s2);
b = 'data';
set(handles.teksData,'String',b);
disp(sprintf('Jumlah Data yang tidak sesuai = %d ',
sum(sum(nilai))-trace(nilai)));
s3 = num2str(hitung);
set(handles.persenAkurasi,'String',s3);
c = '%';
set(handles.teksPersen,'String',c);
disp(sprintf('Total Akurasi = %d ',hitung));
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 136

49. CM_Speaker.m

[data] = textread('rec1_1s.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'ANGGA') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'DETA') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'PETRA') > 0)
y(i)=3;
else
y(i)=4;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'angga') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'deta') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'petra') == 1)
x(i)=3;
else
x(i)=4;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=4;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = c';
disp('Matrix 1');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 1 = %d \n\n',hitung));
%%
[data] = textread('rec2_1s.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'ANGGA') > 0 )
y(i)=1;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 137

[data] = textread('rec2_1s.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'ANGGA') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'DETA') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'PETRA') > 0)
y(i)=3;
else
y(i)=4;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'angga') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'deta') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'petra') == 1)
x(i)=3;
else
x(i)=4;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=4;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 2');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 1 = %d \n\n',hitung));
%%
[data] = textread('rec3_1s.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'ANGGA') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'DETA') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'PETRA') > 0)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 138

cacah =2; % mulai dari indek 2


for i=1:index
if (strfind(char(data(cacah)),'ANGGA') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'DETA') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'PETRA') > 0)
y(i)=3;
else
y(i)=4;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'angga') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'deta') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'petra') == 1)
x(i)=3;
else
x(i)=4;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=4;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 3');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 1 = %d \n\n',hitung));
%%
[data] = textread('rec4_1s.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'ANGGA') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'DETA') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'PETRA') > 0)
y(i)=3;
else
y(i)=4;
end
cacah = cacah + 3; %lompat 3
end
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 139

y(i)=2;
elseif (strfind(char(data(cacah)),'PETRA') > 0)
y(i)=3;
else
y(i)=4;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'angga') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'deta') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'petra') == 1)
x(i)=3;
else
x(i)=4;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=4;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 4');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 1 = %d \n\n',hitung));
%%
[data] = textread('rec5_1s.mlf','%s');
index=(length(data)-1)/3; % hitung panjang datanya
x=zeros(1,index); % array data X
y=zeros(1,index); % array data Y
% untuk ngecek di bagian labelnya
cacah =2; % mulai dari indek 2
for i=1:index
if (strfind(char(data(cacah)),'ANGGA') > 0 )
y(i)=1;
elseif (strfind(char(data(cacah)),'DETA') > 0)
y(i)=2;
elseif (strfind(char(data(cacah)),'PETRA') > 0)
y(i)=3;
else
y(i)=4;
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'angga') == 1)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 140
end
cacah = cacah + 3; %lompat 3
end

cacah =3; % mulai dari indek 3


for i=1:index
if (strcmp(data(cacah),'angga') == 1)
x(i)=1;
elseif (strcmp(data(cacah),'deta') == 1)
x(i)=2;
elseif (strcmp(data(cacah),'petra') == 1)
x(i)=3;
else
x(i)=4;
end
cacah = cacah +3; %lompat 3
end

% minx = min(x);
minx=1;
maxx=4;
% maxx = max(x);
c = zeros(maxx-minx);
for i=minx:maxx
idx = find(x==i);
for j = minx : maxx
z = y(idx);
c(i-minx+1,j-minx+1) = length(find(z==j));
end
end
nilai = nilai + c';
disp('Matrix 5');
disp(c');
hitung = round((trace(c')/sum(sum(c')))*100);
disp(sprintf('Jumlah Data = %d ', sum(sum(c'))));
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(c')));
disp(sprintf('Jumlah Data yang tidak sesuai = %d ', sum(sum(c'))-
trace(c')));
disp(sprintf('Akurasi Matrix 1 = %d \n\n',hitung));

disp('Confusion Matrix');
hitung = round(trace(nilai)/sum(sum(nilai))*100);

disp(nilai); % nilai adalah matrik konfusion


s = num2str(nilai);
set(handles.listboxConfusionMatrix,'String',s);
disp(sprintf('Jumlah Data = %d ', sum(sum(nilai))));

s1 = num2str(trace(nilai));
set(handles.teksSesuai,'String',s1);
a = 'data';
set(handles.teksData,'String',a);
disp(sprintf('Jumlah Data yang sesuai = %d ', trace(nilai)));
s2 = num2str((sum(sum(nilai))-trace(nilai)));
set(handles.teksTdkSesuai,'String',s2);
b = 'data';
set(handles.teksData,'String',b);
disp(sprintf('Jumlah Data yang tidak sesuai = %d ',
sum(sum(nilai))-trace(nilai)));
s3 = num2str(hitung);
set(handles.persenAkurasi,'String',s3);
c = '%';
set(handles.teksPersen,'String',c);
disp(sprintf('Total Akurasi = %d ',hitung));
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 141

50. pengujianHMM.m

function varargout = pengujianHMM2(varargin)


% PENGUJIANHMM2 M-file for pengujianHMM2.fig
% PENGUJIANHMM2, by itself, creates a new PENGUJIANHMM2 or
raises the existing
% singleton*.
%
% H = PENGUJIANHMM2 returns the handle to a new PENGUJIANHMM2
or the handle to
% the existing singleton*.
%
% PENGUJIANHMM2('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in PENGUJIANHMM2.M with the given
input arguments.
%
% PENGUJIANHMM2('Property','Value',...) creates a new
PENGUJIANHMM2 or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before pengujianHMM2_OpeningFcn gets
called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to pengujianHMM2_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 pengujianHMM2

% Last Modified by GUIDE v2.5 29-Apr-2013 22:09:09

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @pengujianHMM2_OpeningFcn, ...
'gui_OutputFcn', @pengujianHMM2_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 pengujianHMM2 is made visible.


function pengujianHMM2_OpeningFcn(hObject, ~, 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)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 142

% --- Executes just before pengujianHMM2 is made visible.


function pengujianHMM2_OpeningFcn(hObject, ~, 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 pengujianHMM2 (see VARARGIN)

% Choose default command line output for pengujianHMM2


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);

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


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = pengujianHMM2_OutputFcn(~, ~, 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(~, ~, handles)
% 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)

tic

set(handles.teksPertama,'String',' ');
set(handles.teksProses1,'String',' ');
set(handles.teksProses2,'String',' ');
set(handles.teksProses3,'String',' ');
set(handles.teksKedua,'String',' ');
set(handles.teksKetiga,'String',' ');
set(handles.teksKeempat,'String',' ');
set(handles.teksKelima,'String',' ');
set(handles.teksKeenam,'String',' ');
% set(handles.teksKetujuh,'String',' ');

% Memilih window size dan pembuatan feature

temp1 = get(handles.poupmenuWS,'Value');
temp2 = get(handles.popupmenuState,'Value');
tipe = handles.tipe;

if temp1 == 1 && tipe == 1


dos ('HCopy -A -C mfccConfig_1 -S codeAll.scp');

elseif temp1 == 1 && tipe == 2


dos ('HCopy -A -C mfcc_D_Config_1 -S codeAll.scp');

elseif temp1 == 1 && tipe == 3


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 143

if temp1 == 1 && tipe == 1


dos ('HCopy -A -C mfccConfig_1 -S codeAll.scp');

elseif temp1 == 1 && tipe == 2


dos ('HCopy -A -C mfcc_D_Config_1 -S codeAll.scp');

elseif temp1 == 1 && tipe == 3


dos ('HCopy -A -C mfcc_D_A_Config_1 -S codeAll.scp');

elseif temp1 == 2 && tipe == 1


dos ('HCopy -A -C mfccConfig_2 -S codeAll.scp');

elseif temp1 == 2 && tipe == 2


dos ('HCopy -A -C mfcc_D_Config_2 -S codeAll.scp');

elseif temp1 == 2 && tipe == 3


dos ('HCopy -A -C mfcc_D_A_Config_2 -S codeAll.scp');

elseif temp1 == 3 && tipe == 1


dos ('HCopy -A -C mfccConfig_3 -S codeAll.scp');

elseif temp1 == 3 && tipe == 2


dos ('HCopy -A -C mfcc_D_Config_3 -S codeAll.scp');

elseif temp1 == 3 && tipe == 3


dos ('HCopy -A -C mfcc_D_A_Config_3 -S codeAll.scp');

end

switch tipe
case 1
if temp2 == 1
createProtoMFCC_1;
elseif temp2 == 2
createProtoMFCC_2;
elseif temp2 == 3
createProtoMFCC_3;
elseif temp2 == 4
createProtoMFCC_4;
end

case 2
if temp2 == 1
createProtoMFCC_D_1;
elseif temp2 == 2
createProtoMFCC_D_2;
elseif temp2 == 3
createProtoMFCC_D_3;
elseif temp2 == 4
createProtoMFCC_D_4;
end

case 3
if temp2 == 1
createProtoMFCC_D_A_1;
elseif temp2 == 2
createProtoMFCC_D_A_2;
elseif temp2 == 3
createProtoMFCC_D_A_3;
elseif temp2 == 4
createProtoMFCC_D_A_4;
end

end
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 144

elseif temp2 == 4
createProtoMFCC_D_A_4;
end

end

% Pembentukan Model

prosesHMM;

toc
waktu = toc;
step=[num2str(waktu) ' detik'];
set(handles.hasilAkurasi,'String',step);

% --- Executes on selection change in listbox3.


function listbox3_Callback(~, ~, ~)
% hObject handle to listbox3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns listbox3


contents as cell array
% contents{get(hObject,'Value')} returns selected item from
listbox3

% --- Executes during object creation, after setting all


properties.
function listbox3_CreateFcn(hObject, ~, ~)
% hObject handle to listbox3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: listbox controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in listbox4.


function listbox4_Callback(~, ~, ~)
% hObject handle to listbox4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns listbox4


contents as cell array
% contents{get(hObject,'Value')} returns selected item from
listbox4

% --- Executes during object creation, after setting all


properties.
function listbox4_CreateFcn(hObject, ~, ~)
% hObject handle to listbox4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 145

% hObject handle to listbox4 (see GCBO)


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

% Hint: listbox controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in radiobutton1.


function radiobutton1_Callback(hObject, ~, handles)
% hObject handle to radiobutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton1


set(handles.radiobutton2,'Value',0);
set(handles.radiobutton3,'Value',0);
tipe=1;
handles.tipe=tipe;
guidata(hObject,handles);

% --- Executes on button press in radiobutton2.


function radiobutton2_Callback(hObject, ~, handles)
% hObject handle to radiobutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton2


set(handles.radiobutton1,'Value',0);
set(handles.radiobutton3,'Value',0);
tipe=2;
handles.tipe=tipe;
guidata(hObject,handles);

% --- Executes on button press in radiobutton3.


function radiobutton3_Callback(hObject, ~, handles)
% hObject handle to radiobutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of radiobutton3

set(handles.radiobutton1,'Value',0);
set(handles.radiobutton2,'Value',0);
tipe=3;
handles.tipe=tipe;
guidata(hObject,handles);
% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenu1

% --- Executes during object creation, after setting all


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 146

% contents{get(hObject,'Value')} returns selected item from


popupmenu1

% --- Executes during object creation, after setting all


properties.
function popupmenu1_CreateFcn(hObject, ~, ~)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in popupmenu3.


function popupmenu3_Callback(~, ~, ~)
% hObject handle to popupmenu3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


popupmenu3 contents as cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenu3

% --- Executes during object creation, after setting all


properties.
function popupmenu3_CreateFcn(hObject, ~, ~)
% hObject handle to popupmenu3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in poupmenuWS.


function poupmenuWS_Callback(~, ~, ~)
% hObject handle to poupmenuWS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


poupmenuWS contents as cell array
% contents{get(hObject,'Value')} returns selected item from
poupmenuWS

% --- Executes during object creation, after setting all


properties.
function poupmenuWS_CreateFcn(hObject, ~, ~)
% hObject handle to poupmenuWS (see GCBO)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 147

% --- Executes during object creation, after setting all


properties.
function poupmenuWS_CreateFcn(hObject, ~, ~)
% hObject handle to poupmenuWS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColo
r'));
end

% --- Executes on selection change in popupmenuState.


function popupmenuState_Callback(~, ~, handles)
% hObject handle to popupmenuState (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


popupmenuState contents as cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenuState

% --- Executes during object creation, after setting all


properties.
function popupmenuState_CreateFcn(hObject, ~, ~)
% hObject handle to popupmenuState (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColo
r'));
end

% --- Executes on selection change in confusionMatrix.


function confusionMatrix_Callback(hObject, eventdata, handles)
% hObject handle to confusionMatrix (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


confusionMatrix contents as cell array
% contents{get(hObject,'Value')} returns selected item from
confusionMatrix

% --- Executes during object creation, after setting all


properties.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 148

confusionMatrix
% --- Executes during object creation, after setting all
properties.
function confusionMatrix_CreateFcn(hObject, eventdata, handles)
% hObject handle to confusionMatrix (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: listbox controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles)
close (pengujianHMM2);
fig2 = openfig('pengujianHMM2_Speaker.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 pushbutton3.


function pushbutton3_Callback(hObject, eventdata, handles)
close (pengujianHMM2);
fig2 = openfig('depan.fig');
handles = guihandles(fig2);
guidata(fig2,handles);
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 149

51. pengujianHMM2_Speaker.m

function varargout = pengujianHMM2_Speaker(varargin)


% PENGUJIANHMM2_SPEAKER M-file for pengujianHMM2_Speaker.fig
% PENGUJIANHMM2_SPEAKER, by itself, creates a new
PENGUJIANHMM2_SPEAKER or raises the existing
% singleton*.
%
% H = PENGUJIANHMM2_SPEAKER returns the handle to a new
PENGUJIANHMM2_SPEAKER or the handle to
% the existing singleton*.
%
%
PENGUJIANHMM2_SPEAKER('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in PENGUJIANHMM2_SPEAKER.M with the
given input arguments.
%
% PENGUJIANHMM2_SPEAKER('Property','Value',...) creates a new
PENGUJIANHMM2_SPEAKER or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before pengujianHMM2_Speaker_OpeningFcn
gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to
pengujianHMM2_Speaker_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


pengujianHMM2_Speaker

% Last Modified by GUIDE v2.5 29-Apr-2013 21:55:40

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn',
@pengujianHMM2_Speaker_OpeningFcn, ...
'gui_OutputFcn',
@pengujianHMM2_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 pengujianHMM2_Speaker is made visible.


function pengujianHMM2_Speaker_OpeningFcn(hObject, ~, handles,
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 150

gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before pengujianHMM2_Speaker is made visible.


function pengujianHMM2_Speaker_OpeningFcn(hObject, ~, 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 pengujianHMM2_Speaker (see
VARARGIN)

% Choose default command line output for pengujianHMM2_Speaker


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes pengujianHMM2_Speaker wait for user response (see


UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = pengujianHMM2_Speaker_OutputFcn(~, ~, 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 selection change in popupmenuWS.


function popupmenuWS_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuWS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


popupmenuWS contents as cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenuWS

% --- Executes during object creation, after setting all


properties.
function popupmenuWS_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuWS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 151

% Hint: popupmenu controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in popupmenuState.


function popupmenuState_Callback(hObject, eventdata, handles)
% hObject handle to popupmenuState (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


popupmenuState contents as cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenuState

% --- Executes during object creation, after setting all


properties.
function popupmenuState_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenuState (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in listboxConfusionMatrix.


function listboxConfusionMatrix_Callback(hObject, eventdata,
handles)
% hObject handle to listboxConfusionMatrix (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


listboxConfusionMatrix contents as cell array
% contents{get(hObject,'Value')} returns selected item from
listboxConfusionMatrix

% --- Executes during object creation, after setting all


properties.
function listboxConfusionMatrix_CreateFcn(hObject, eventdata,
handles)
% hObject handle to listboxConfusionMatrix (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: listbox controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 152

% Hint: listbox controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in pushbuttonProses.


function pushbuttonProses_Callback(hObject, eventdata, handles)

tic

set(handles.teksPertama,'String',' ');
set(handles.teksProses1,'String',' ');
set(handles.teksProses2,'String',' ');
set(handles.teksProses3,'String',' ');
set(handles.teksKedua,'String',' ');
set(handles.teksKetiga,'String',' ');
set(handles.teksKeempat,'String',' ');
set(handles.teksKelima,'String',' ');
set(handles.teksKeenam,'String',' ');

% Memilih window size dan pembuatan feature

temp1 = get(handles.popupmenuWS,'Value');
temp2 = get(handles.popupmenuState,'Value');
tipe = handles.tipe;

if temp1 == 1 && tipe == 1


dos ('HCopy -A -C mfccConfig_1 -S codeAll2.scp');

elseif temp1 == 1 && tipe == 2


dos ('HCopy -A -C mfcc_D_Config_1 -S codeAll2.scp');

elseif temp1 == 1 && tipe == 3


dos ('HCopy -A -C mfcc_D_A_Config_1 -S codeAll2.scp');

elseif temp1 == 2 && tipe == 1


dos ('HCopy -A -C mfccConfig_2 -S codeAll2.scp');

elseif temp1 == 2 && tipe == 2


dos ('HCopy -A -C mfcc_D_Config_2 -S codeAll2.scp');

elseif temp1 == 2 && tipe == 3


dos ('HCopy -A -C mfcc_D_A_Config_2 -S codeAll2.scp');

elseif temp1 == 3 && tipe == 1


dos ('HCopy -A -C mfccConfig_3 -S codeAll2.scp');

elseif temp1 == 3 && tipe == 2


dos ('HCopy -A -C mfcc_D_Config_3 -S codeAll2.scp');

elseif temp1 == 3 && tipe == 3


dos ('HCopy -A -C mfcc_D_A_Config_3 -S codeAll2.scp');

end

switch tipe
case 1
if temp2 == 1
createProtoMFCC_1;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 153

switch tipe
case 1
if temp2 == 1
createProtoMFCC_1;
elseif temp2 == 2
createProtoMFCC_2;
elseif temp2 == 3
createProtoMFCC_3;
elseif temp2 == 4
createProtoMFCC_4;
end

case 2
if temp2 == 1
createProtoMFCC_D_1;
elseif temp2 == 2
createProtoMFCC_D_2;
elseif temp2 == 3
createProtoMFCC_D_3;
elseif temp2 == 4
createProtoMFCC_D_4;
end

case 3
if temp2 == 1
createProtoMFCC_D_A_1;
elseif temp2 == 2
createProtoMFCC_D_A_2;
elseif temp2 == 3
createProtoMFCC_D_A_3;
elseif temp2 == 4
createProtoMFCC_D_A_4;
end

end

% Pembentukan Model

ProsesHMM2;

toc
waktu = toc;
step=[num2str(waktu) ' detik'];
set(handles.hasilAkurasi,'String',step);

% hObject handle to pushbuttonProses (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 radiobuttonMFCC.


function radiobuttonMFCC_Callback(hObject, eventdata, handles)
set(handles.radiobuttonMFCC_D,'Value',0);
set(handles.radiobuttonMFCC_D_A,'Value',0);
tipe=1;
handles.tipe=tipe;
guidata(hObject,handles);
% hObject handle to radiobuttonMFCC (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of


radiobuttonMFCC
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 154

% Hint: get(hObject,'Value') returns toggle state of


radiobuttonMFCC

% --- Executes on button press in radiobuttonMFCC_D.


function radiobuttonMFCC_D_Callback(hObject, eventdata, handles)
set(handles.radiobuttonMFCC,'Value',0);
set(handles.radiobuttonMFCC_D_A,'Value',0);
tipe=2;
handles.tipe=tipe;
guidata(hObject,handles);
% hObject handle to radiobuttonMFCC_D (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of


radiobuttonMFCC_D

% --- Executes on button press in radiobuttonMFCC_D_A.


function radiobuttonMFCC_D_A_Callback(hObject, eventdata, handles)
set(handles.radiobuttonMFCC,'Value',0);
set(handles.radiobuttonMFCC_D,'Value',0);
tipe=3;
handles.tipe=tipe;
guidata(hObject,handles);
% hObject handle to radiobuttonMFCC_D_A (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of


radiobuttonMFCC_D_A

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles)
close (pengujianHMM2_Speaker);
fig2 = openfig('pengujianHMM2.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 pushbutton3.


function pushbutton3_Callback(hObject, eventdata, handles)
close (pengujianHMM2_Speaker);
fig2 = openfig('depan.fig');
handles = guihandles(fig2);
guidata(fig2,handles);
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 155

52. createCodeAllIdentifikasi.m

% 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 ('codeAllIdentifikasi.scp','w');


srcDirectory = 'C:\Users\detha\Documents\MATLAB\Skripsi\';
targetDirectory =
'C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi';
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);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 156

53. File codeAllIdentifikasi.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA0-1.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA0-
1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA0-2.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA0-
2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA0-3.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA0-
3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA0-4.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA0-
4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA0-5.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA0-
5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA1-1.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA1-
1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA1-2.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA1-
2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA1-3.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA1-
3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\angga\ANGGA1-4.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\ANGGA1-
4.mfc"
....
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI8-3.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI8-
3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI8-4.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI8-
4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI8-5.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI8-
5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI9-1.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI9-
1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI9-2.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI9-
2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI9-3.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI9-
3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI9-4.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI9-
4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\yudhi\YUDHI9-5.wav"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil_identifikasi\YUDHI9-
5.mfc"
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 157

54. createAllTrainIdentifikasi.m

dirAsal={'hasil'};
files=[];
for j=1:length(dirAsal)
% masuk ke suatu direktori,membaca wavfile
cd (dirAsal{j});
fileWav=dir ('*.mfc');
% ambil nama filenya
filename={};
for i=1:length(fileWav)
filename{i}=fileWav(i).name(1:length(fileWav(i).name)-4);
end
files{j}=filename;
cd ..;
end

fid1=fopen('AllTrainDataIdentifikasi.scp','w');
targetDirectory ='C:\Users\detha\Documents\MATLAB\Skripsi\'; %
directory tujuan
for m=1:length(files)
fileBaru=files{m};
for n=1:length(fileBaru)
fwrite(fid1, ['"' targetDirectory dirAsal{m} '\'
fileBaru{n} '.mfc"']);
fprintf(fid1, '\n');
end
end
fclose(fid1);

55. File AllTrainDataIdentifikasi

"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA0-5.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA1-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA1-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\ANGGA1-3.mfc"
. . .
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-1.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-2.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-3.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-4.mfc"
"C:\Users\detha\Documents\MATLAB\Skripsi\hasil\YUDHI9-5.mfc"
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 158

56. trainIdentifikasi.m

dos('HCompV -A -f 0.01 -m -S AllTrainDataIdentifikasi.scp -M hmm0


proto');
dos('set CLASSPATH=');
dos('java CloneHMM ./hmm0 model.list2');
dos('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataIdentifikasi.scp -H hmm0/hmmdefs -M hmm0 model.list2');
dos('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataIdentifikasi.scp -H hmm0/hmmdefs -M hmm0 model.list2');
dos('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataIdentifikasi.scp -H hmm0/hmmdefs -M hmm0 model.list2');
dos('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataIdentifikasi.scp -H hmm0/hmmdefs -M hmm0 model.list2');
dos('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataIdentifikasi.scp -H hmm0/hmmdefs -M hmm0 model.list2');
dos('HERest -A -t 600.0 -I katatypephone2.mlf -S
AllTrainDataIdentifikasi.scp -H hmm0/hmmdefs -M hmm0 model.list2');

57. codeAllProses.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk1.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk1.mfc "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk2.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk2.mfc "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk3.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk3.mfc "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk4.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk4.mfc "

58. codeAllProsesSpeaker.scp
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk1.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk1.mfc "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk2.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk2.mfc "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk3.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk3.mfc "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk4.wav "
"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk4.mfc "
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 159

59. File dataTest1.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk1.mfc"

60. File dataTest2.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk2.mfc"

61. File dataTest3.scp


"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk3.mfc"

62. File dataTest4.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk4.mfc"

63. File dataTest5.scp


"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk5.mfc"

64. File dataTestSpeaker1.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk1.mfc"

65. File dataTestSpeaker2.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk2.mfc"

66. File dataTestSpeaker3.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk3.mfc"

67. File dataTestSpeaker4.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk4.mfc"

68. File dataTestSpeaker5.scp

"C:\Users\detha\Documents\MATLAB\Skripsi\dataMasuk5.mfc"
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 160

69. File hasilUji1.mlf

#!MLF!#
"./dataMasuk1.rec"
satu
.

70. File hasilUji2.mlf


#!MLF!#
"./dataMasuk2.rec"
dua
.

71. File hasilUji3.mlf


#!MLF!#
"./dataMasuk3.rec"
tiga
.

72. File hasilUji4.mlf


#!MLF!#
"./dataMasuk4.rec"
empat
.

73. File hasilUjiSpeaker1.mlf

#!MLF!#
"./dataMasuk1.rec"
petra
.

74. File hasilUjiSpeaker2.mlf


#!MLF!#
"./dataMasuk2.rec"
petra
.

75. File hasilUjiSpeaker3.mlf


#!MLF!#
"./dataMasuk3.rec"
petra
.

76. File hasilUjiSpeaker4.mlf


#!MLF!#
"./dataMasuk4.rec"
deta
.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

LAMPIRAN III

HALAMAN BANTUAN

161
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 162

Pengantar

Program Identifikasi Suara Manusia Sebagai Kata Sandi atau Password ini merupakan
program bantu untuk mengidentifikasi suara manusia yang digunakan sebagai password atau
kata sandi dengan menggunakan pendekatan Hidden Markov Models. Program ini terdiri dari 2
(dua) bagian antara lain :

1. Program untuk pengujian akurasi Hidden Markov Models (HMM). Pada pengujian ini,
jumlah speaker yang digunakan sebanyak 4 (empat) orang dengan masing-masing
speaker memiliki sample suara sebanyak 50 suara.
2. Program untuk identifikasi suara manusia. Bagian ini dapat menjadi contoh untuk
identifikasi suara manusia yang dapat digunakan oleh user. Jumlah speaker yang
digunakan sebagai pemodelan adalah 4(empat) orang. Bagian ini juga dapat digunakan
untuk menguji apakah hasil identifikasi yang dimasukkan user sesuai dengan suara yang
dimasukkan oleh user serta dapat mengidentifikasi speaker yang memasukkan suara
dengan catatan suara speaker terdapat di pemodelan.

Program ini grstis dan dapat digunakan siapa saja. Untuk penggunaan lain dapat
menghubungi penulis di bagian Tentang Penulis.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 163

Fungsi Program

Mengidentifikasi suara manusia dengan masukkan suara berekstensi .wav


Pengujian Hidden Markov Models.
Untuk mendapatkan akurasi terbaik, pada pengujian Hidden Markov Models dilakukan
variasi dari berbagai tipe feature extraction, besar window size dan banyaknya jumlah
state.
Menampilkan confusion matrix, jumlah data yang benar, jumlah data yang salah serta
lamanya waktu yang dibutuhkan untuk pengujian Hidden Markov Models.

Software yang diperlukan

Matlab R2010a
HTK Toolkit
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 164

Cara menggunakan program

Catatan :
Untuk menjalankan program ini, Anda harus menginstal Matlab R2010a pada
direktori C:\

Langkah-langkah menjalankan program :

1. Pastikan computer Anda sudah terinstal Matlab R2010a


2. Buka aplikasi Matlab Anda dan copy folder ‘TA085314025’ ke direktori kerja Matlab
Anda.
3. Jalankan Matlab kemudian run file Matlab ‘depan.fig’
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 165

4. Pada submenu ‘Menu’, Anda dapat memilih pengujian mana yang ingin dilakukan
terlebih dahulu.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 166

Antarmuka Program

Program ini terdiri dari 2 (dua) halaman utama.

1. Halaman Pengujian Sistem


Halaman untuk Pengujian Sistem sendiri terdiri dari tiga tahap.
a. Tahap pertama adalah halaman untuk user memasukkan suara.

b
c

b. Tahap kedua adalah pengujian speech recognition.

d
e h

f g

c. Tahap ketiga adalah pengujian speaker verification.


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 167

d
e

f g k

Deskripsi halaman Pengujian Sistem :


a = tombol yang digunakan user untuk merekam suara

b = tombol yang digunakan untuk kembali ke halaman depan

c = tombol yang digunakan untuk melajutkan ke tahap selanjutnya

d = tombol yang digunakan untuk mendengar kembali suara yang telah direkam

e = tombol yang digunakan untuk mengulangi proses rekam apabila hasil rekam tidak
sesuai keinginan
f = tombol untuk memulai proses identifikasi apabila hasil rekam telah sesuai keinginan

g = teks yang menampilkan proses-proses untuk melakukan identifikasi

h = teks yang menampilkan hasil identifikasi suara apa yang diucapkan user

i = tombol untuk mencari tahu pemilik suara

j = tombol untuk kembali ke halaman utama

k = teks yang menampilkan hasil identifikasi pemilik suara

l = tombol untuk kembali ke menu utama atau langsung ke Pengujian HMM


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 168

Langkah-langkah untuk Pengujian Sistem :

Catatan : Karena antarmuka untuk pengujian sistem Speech Recognition dan Speaker
Verification hampir sama maka langkah-langkah dibawah ini dapat digunakan untuk
proses keduanya.

1. Rekam suara Anda sebanyak 4 (empat) kali dengan mengucapkan angka 0-9. Setiap
tombol hanya untuk 1 (satu) angka saja dan setiap user hanya memiliki waktu 3 (tiga)
detik pada setiap tombol.
2. Apabila sudah selesai merekam, Anda dapat melanjutkan ke tahap selanjutnya.

3. Untuk mendengarkan kembali suara yang telah direkam, Anda dapat menekan tombol
seperti pada gambar berikut.

4. Apabila suara yang telah direkam tidak sesuai dengan keinginan, maka Anda dapat
mengulangi proses rekam dengan menekan tombol seperti pada gambar di bawah ini.

5. Apabila suara yang direkam telah sesuai dengan keinginan maka Anda bisa melanjutkan
ke tombol proses.

6. Hasil dari proses identifikasi akan keluar pada kolom yang telah disediakan.

7. Anda dapat memilih tombol seperti pada gambar di bawah ini untuk melanjutkan proses.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 169

2. Halaman Pengujian HMM


Halaman Pengujian HMM terdiri dari 2 (dua) halaman utama.
a. Halaman Pengujian HMM untuk Speech Recognition

a b g
c
d
e
f
\
h

b. Halaman Pengujian HMM untuk Speaker Recognition

a b
c
d j
e f
h

i
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 170

Deskripsi Halaman Pengujian HMM


a = teks yang berisikan tentang keterangan data yang diproses

b = kolom yang berisi tipe feature extraction yang dapat dipilih user

c = pilihan untuk memilih besar window size

d = pilihan untuk memilih ukuran jumlah state

e = tombol untuk memulai proses pengujian Hidden Markov Models

f = teks yang menampilkan proses-proses untuk melakukan Pengujian HMM

g = confusion matrix untuk Pengujian HMM pada Speech Recognition

h = teks yang menampilkan hasil pengujian yang di dalamnya terdapat keterangan


jumlah data yang benar, jumlah data yang salah, waktu yang diperlukan untuk pengujian,
dan tingkat akurasi yang berupa persentase.
i = tombol-tombol yang digunakan untuk meneruskan ke pengujian atau kembali ke
halaman utama
j = confusion matrix untuk Pengujian HMM pada Speaker Recognition
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 171

Langkah-langkah untuk Pengujian HMM

Catatan : Karena antarmuka untuk pengujian HMM Speech Recognition dan Speaker
Verification hampir sama maka langkah-langkah dibawah ini dapat digunakan untuk
proses keduanya.

1. Pilih jenis feature extraction, besar window size, dan jumlah state sesuai dengan
kebutuhan pada kolom seperti pada gambar di bawah ini.

2. Apabila sudah memilih feature extraction, window size, dan jumlah state maka tekan
tombol proses

3. Setelah data selesai diproses maka akan muncul hasil data yang benar, hasil data yang
salah, lamanya waktu yang diperlukan untuk proses data serta persentase akurasi data
yang diproses,

4. Apabila proses telah selesai maka Anda dapat memilih langkah selanjutnya pada
tombol seperti pada gambar di bawah ini
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI 172

Kontak Penulis

Apabila ada pertanyaan atau saran demi kemajuan program ini, Anda dapat
mengirimkan pesan Anda ke kontak di bawah ini :

= @petrav69

= petrava69@yahoo.com atau petravandOwl@gmail.com

You might also like