PENGELOMPOKAN SONG-TYPE BURUNG ORTOLAN BUNTING DENGAN MENGGUNAKAN K-MEANS KLASTERING
BERBASIS HMM (Hidden Markov Model)
TUGAS AKHIR
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Oleh:
Aloysius Bagas Pradipta Irianto 065314005
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
ii
CLUSTERING BIRD ORTOLAN BUNTING SONG-TYPE USING K-MEANS CLUSTERING
BASED HMM (Hidden Markov Model)
A Final Assignment
Presented as Partial Fullfillment of the Requirements To Obtain Sarjana Komputer Degree
In Department of Informatic Engineering
By:
Aloysius Bagas Pradipta Irianto 065314005
INFORMATICS ENGINEERING STUDY PROGRAM FACULTY OF SCIENCE AND TEKNOLOGI
SANATA DHARMA UNIVERSITY YOGYAKARTA
v
HALAMAN PERSEMBAHAN
“
HIDUP ADALAH PILIHAN DAN SETIAP PILIHAN
TIDAK ADA YANG SALAH ASAL KITA BISA
BERTANGGUNGJAWAB
”
Skripsi ini ku persembahkan untuk: Yesus Kristus Bapak, Ibu ,dan adikku Romo Kuntoro Adi Kekasih, Sahabat dan Teman-teman
viii ABSTRAK
Jenis burung Ortolan bunting memiliki jenis nyanyian/suara yang sangat beragam. Selama ini belum banyak sistem yang secara otomatis mengelompokkan nyanyian/suara burung ortolan bunting. Pengenalan suara adalah salah satu bentuk perkembangan teknologi pada abad 20 yang memanfaatkan suara sebagai masukan. Pada tugas akhir ini akan dibuat suatu sistem untuk mengelompokan nyanyian burung secara otomatis dengan menggunakan algoritma K-means clustering berbasis Hidden Markov Model (HMM). HMM secara umum digunakan pada signal processing dan untuk speech dan speaker recognition pada manusia.
Penelitian ini menggunakan 5 song-type burung dan setiap song-type
diwakili 100 song, sehingga seluruh data yang digunakan berjumlah 500 data.
Pengelompokan menggunakan K-means berbasis HMM, dan validasi hasil
menggunakan perhitungan stability index.
Berdasarkan hasil penelitian dari 5 kelompok data yang diujikan memiliki
nilai disimilaritas 8.2% yaitu berarti untuk beberapa kali percobaan terdapat 91.2%
anggota yang selalu mengelompok pada kelompok yang sama. Tingkat kesamaan
tertinggi diperoleh menggunakan feature Greenwood function cepstral coefficients
ix ABSTRACT
Ortolan Bunting bird has various song-types. For time being, there are not so many systems which automatically cluster the song-type of Ortolan Bunting bird. Speech recognition is one example of technology development in the 20th Century which uses voice as the input. This research builds an automatic system to cluster the song-type of Ortolan Bunting bird automatically using K-means clustering algorithm based Hidden Markov Models (HMM).Commonly, HMM is used on signal processing and for speech and speaker recognition on human voice.
This research uses 5 song-types of bird, and every song-type is represented
by 100 songs. The total data which are used in this research is 500 data. The
clustering is using K-means based HMM and the result validation employs index
stability computation.
The clustering method group data into 5 clusters with dissimilarity values
8.2%. It means that for several times of experiment there are 8.2% data clustered
into different group and 91.2% of cluster members which always gather in the
same cluster. The highest similarity level obtained using Greenwood function
x
KATA PENGANTAR
Puji dan syukur penulis haturkan kepada Tuhan Yesus Kristus karena dengan anugerah, berkat, kasih, dan pertolongan-Nya penulis dapat menyelesaikan penelitian dan penyusunan skripsi yang berjudul
”Pengelompokan Nyanyian Burung Ortolan Bunting dengan
Menggunakan K-Means Klastering Berbasis HMM (Hidden Markov
Model)”. Skripsi ini disusun guna memenuhi salah satu syarat untuk memperoleh gelar Sarjana Strata Satu Program Studi Teknik Informatika (S.Kom).
Terselesaikannya penulisan laporan akhir ini tidak lepas dari bantuan berbagai pihak yang telah membantu penulis. Oleh karena itu, penulis mengucapkan terima kasih kepada:
1. Bapak Yosef Agung Cahyanta, S.T.,M.T., selaku Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma.
2. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T., sebagai Dosen Pembimbing akademik dan Ketua Jurusan Teknik Informatika, Universitas Sanata Dharma.
3. Romo Dr. Cyprianus Kuntoro Adi, S.J., M.A., M.Sc. selaku dosen pembimbing yang selalu memberikan bimbingan dengan penuh kasih dan kesabaran. Terimakasih Romo Kun.
xi
5. Seluruh Dosen Universitas Sanata Dharma, jurusan Teknik Informatika yang telah mengajarkan banyak ilmu kepada penulis.
6. Laboran Laboratorium Komputer Universitas Sanata Dharma yang memberikan kesempatan dan waktunya kepada penulis untuk dapat menggunakan laboratorium dengan maksimal.
7. Kedua orang tua saya, Drs. Isnan Irianto RB, dan Enggar Sriasih yang selalu memberikan curahan kasih sayang tak terhingga, doa, dukungan baik moral maupun moril kepada penulis serta pengertian sehingga penulis bisa menjadi seperti sekarang.
8. Agnes Dotie Octaviani S.Farm., Apt., yang selalu memberikan ide-ide, kasih sayang, dan semangat yang nyata kepada penulis
9. Semua teman-teman TI angkatan 2006 khususnya Dimas, Atha, Rido, Reno, dan Alfa yang menjadi teman yang setia dalam suka dan duka penulis. 10. Serta semua pihak yang telah banyak membantu penyusunan skripsi ini
yang tidak dapat disebutkan satu per satu.
Penulis menyadari bahwa penulisan skripsi ini masih banyak kekurangan dan kelemahan karena keterbatasan pikiran, tenaga, dan waktu penulis. Untuk itu penulis mengharapkan saran dan kritik yang membangun dari semua pihak. Akhir kata semoga skripsi ini dapat berguna dan bermanfaat bagi pembaca semua.
xii DAFTAR ISI
LEMBAR JUDUL
HALAMAN PERSEMBAHAN ... V
PERNYATAAN KEASLIAN KARYA ...ERROR! BOOKMARK NOT DEFINED.
ABSTRAK ... VIII
ABSTRACT ... IX
KATA PENGANTAR... X
DAFTAR ISI ... XII
DAFTAR GAMBAR ... XIV
DAFTAR TABEL ... XV
BAB I PENDAHULUAN ...1
1.1. LATAR BELAKANG ...1
BAB II LANDASAN TEORI ...6
2.1. HIDDENMARKOV MODELS (HMM) ...6
2.1.1. MARKOV MODELS... 6
2.1.2. HIDDEN MARKOV MODELS ... 7
2.1.3. ALGORITMA VITERBI ... 9
2.1.4. ALGORITMA BAUM-WELCH ... 10
2.2. K-MEANS KLASTERINGBERBASISHMM... 13
2.2.1. KLASTERING ... 13
2.2.2. K-MEANS CLUSTERING ... 15
2.2.3. K-MEANS CLUSTERING BERBASIS HIDDEN MARKOV MODELS (HMM) ... 16
2.3. EKSTRAK CIRI SUARA ... 17
xiii
2.3.2. GREENWOOD FUNCTION CEPSTRAL COEFFICIENTS (GFCC) ... 18
2.3.3. GREENWOOD FUNCTION CEPSTRAL COEFFICIENTS DELTA DAN DELTA ACCELERATION (GFCC_D) DAN (GFCC_D_A) ... 21
BAB III METODOLOGI ... 23
3.1. ANALISIS SISTEM... 23
3.2. DATA NYANYIAN BURUNG ORTOLAN BUNTING ... 25
3.3. EKSTRAKSI CIRI ... 27
3.4. PENGELOMPOKAN MENGGUNAKAN K-MEANS ... 28
3.5. VALIDASIHASIL ... 30
BAB IV IMPLEMENTASI DAN HASIL... 35
4.1. DATA ... 35
4.2. IMPLEMENTASI EKSTRAKSI CIRI ... 35
4.3. IMPLEMENTASI PENGELOMPOKAN... 36
4.4. HASIL PENELITIAN ... 37
BAB V KESIMPULAN DAN SARAN ... 44
5.1.KESIMPULAN ... 44
5.2.SARAN... 45
DAFTAR PUSTAKA ... 46
xiv
DAFTAR GAMBAR
GAMBAR 2.1. CONTOH KEMUNGKINAN PARAMETER DARI HMM ... 8
GAMBAR 2.2. ALGORITMA K-MEANS (SANTOSO, 2005) ... 16
GAMBAR 2.3. LANGKAH-LANGKAH UNTUK PROSES MENGHITUNG KOEFISIEN DARI GFCC... 19
GAMBAR 2.4. GREENWOOD FILTERBANK... 21
GAMBAR 3.1. ALUR SISTEM ... 24
GAMBAR 3.2. SYLLABLE BURUNG ORTOLAN BUNTING ... 26
GAMBAR 3.3. TIME SERIES DAN SPECTROGRAM DARI TIPE NYANYIAN AB ... 26
GAMBAR 3.4. PEMBUATAN MODEL DENGAN MENGGUNAKAN SAMPEL DATA ... 29
GAMBAR 3.5. ITERASI PADA K-MEANS BERBASIS HMM ... 30
GAMBAR 3.6. ITERASI PADA K-MEANS BERBASIS HMM ... 30
GAMBAR 3.7. FLOWCHART VALIDASI HASIL ... 32
GAMBAR 4.1. NILAI DISIMILARITAS K=2 ... 39
GAMBAR 4.2. GRAFIK HASIL PENGELOMPOKAN DARI EKSTRAKSI GFCC ... 40
GAMBAR 4.3. GRAFIK HASIL PENGELOMPOKAN DARI EKSTRAKSI GFCC_D ... 40
GAMBAR 4.4. GRAFIK HASIL PENGELOMPOKAN DARI EKSTRAKSI GFCC_D_A.... 41
xv
DAFTAR TABEL
TABEL 3.1. CONTOH KELOMPOK K=2 ... 33
TABEL 3.2. PERBANDINGAN DENGAN NILAI PERMUTASI ... 34
TABEL 4.1. CONTOH HASIL PENGELOMPOKAN UNTUK K=2 ... 38
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Jenis burung Ortolan bunting memiliki jenis nyanyian/suara yang sangat beragam. Jenis burung ini banyak ditemukan di daerah Eropa Selatan, Scandinavia, Jerman, dan Mongolia bagian timur. Burung ini bermigrasi tersebar dari Eropa Barat ke Mongolia (Cramp, Perrins, 1994). Burung ini mempunyai ciri khas suara yang unik. Suara yang dihasilkan mempunyai variasi song-type.Setiap burung mempunyai dua sampai tiga song-type. Burung ortolan bunting memiliki 63 jenis song-type dan 234 variasi nyanyian. Karena beragamnya jenis suara/nyanyian burung jenis ortolan bunting maka terdapat berbagai permasalahan antara lain seringkali kesulitan untuk mengetahui atau menentukan jenis song-type tertentu.
Association digunakan untuk mengenali kelakuan dari kejadian-kejadian khusus atau proses dimana link asosiasi muncul pada setiap kejadian. Klasifikasi adalah menggolongkan data ke dalam kelas tertentu berdasarkan nilai atribut atau supervised classification. Klastering adalah proses pengelompokan data dalam kelas sehingga data dalam kelas-kelas memiliki tingkat persamaan yang tinggi satu dengan yang lainya tetapi sangat berbeda dalam cluster lain. K-means klastering merupakan salah satu metode klastering yang sering digunakan, karena k-means klastering memiliki akurasi yang tinggi serta pengolahanya yang mudah dimengerti. K-means klastering diperlukan untuk mengelompokan suatu data kedalam kelompok-kelompok yang memiliki kedekatan yang sama.
Dalam penulisan Tugas Akhir ini akan menerapkan K-means klastering berbasis HMM untuk mengelompokan nyanyian burung ortolan bunting sesuai dengan jenis nyanyian sehingga akan lebih mudah dikenali.
1.2. Rumusan Masalah
1.3. Tujuan
1. Merancang, dan mengimplementasikan sebuah sistem untuk pengelompokan nyanyian burung ortolan bunting, sehingga kita dapat mengetahui jenis nyanyian burung Ortolan Bunting dengan lebih mudah.
2. Menghitung akurasi kelompok-kelompok yang terbentuk.
1.4. Batasan Masalah
Batasan masalah dalam tugas akhir ini adalah sebagai berikut :
1. Jenis burung yang akan dikelompokan adalah jenis burung Ortolan Bunting.
2. Input berupa file suara dengan format *.wav
3. Feature extraction dilakukan dengan menggunakan metode GFCC (Greenwood Functions Ceptral Coefficients)
4. Algoritma yang digunakan dalam pengelompokan adalah K-Means Clustering.
5. Software yang digunakan adalah MATLAB versi 7.8.0. (R2009a). 6. Menggunakan fungsi-fungsi didalam HTK toolkit.
I.5. Metodologi Penelitian
K-Means Clustering ini, diperlukan beberapa cara/teknik pengumpulan data, dan langkah-langkah yang akan dikerjakan.
1. Referensi (Literatur)
Metode yang dilakukan dengan membaca dokumen, file, maupun referensi buku yang telah ada, maupun sumber lain yang berkenaan dengan objek yang sedang dibutuhkan.
2. Perancangan Sistem
Setelah memulai tahap literatur, selanjutnya dilakukan perancangan sistem yang akan dibuat.
3. Implementasi
Tahap ini adalah penerapan desain kedalam bentuk program dengan memanfaatkan bahasa pemrograman yang ada berdasarkan perancangan system.
I.6. Sistematika Penulisan
Sistematika penulisan tugas akhir ini adalah sebagai berikut : Bab I. Pendahuluan
Bab ini berisi latar belakang, rumusan masalah, tujuan, batasan masalah, metodologi penelitian, dan sistematika penulisan.
Bab II. Landasan Teori
Bab III. Metodologi
Bab ini berisi tentang penjelasan alur rancangan program yang akan dibuat dan metode-metode yang digunakan dalam merancang program. Bab IV. Implementasi Sistem dan Analisa Hasil
Bab ini akan menguraikan proses pembuatan sistem secara fisik serta berisi mengenai analisa hasil yang berupa kelebihan serta kekurangan sistem.
Bab V. Kesimpulan dan Saran
6
BAB II
LANDASAN TEORI
Pada bab ini akan dibahas mengenai teori-teori yang akan digunakan untuk menunjang pengelompokan song-type burung. Teori yang mendukung mencakup Hidden Markov Models (HMM) , K-means Clustering, dan ekstraksi ciri.
2.1. HiddenMarkov Models (HMM)
2.1.1. Markov Models
Markov model menggambarkan sistem dengan serangkaian state dan transisi state (setiap transisi dari state mempunyai sebuah probabilitas) dimana rangkaian dari state-state tersebut disebut dengan Markov chain.
Misalkan sebuah sistem dideskripsikan pada setiap waktu sebagai salah satu dari N state {1, 2, ..., N}. Sistem mungkin mengalami perubahan state dalam satuan waktu diskrit (mungkin kembali ke state semula) tergantung kepada aturan probabilitas setiap state. Dalam Markov model atau first-order-Markov mengasumsikan bahwa probabilitas observasi pada waktu n hanya tergantung pada observasi Sn-1
yang dilakukan pada waktu n-1, untuk serangkaian {S1,S2,...,Sn}maka
Untuk memperoleh probabilitas gabungan (joint probability) dari observasi-observasi sebelumnya maupun observasi sekarang dapat diturunkan menjadi
𝑃 𝑆1,𝑆2,…,𝑆𝑛 = 𝑡𝑛=1𝑃 𝑆𝑖 𝑆𝑖−1
2.1.2. Hidden Markov Models
Hidden Markov Models (HMM) adalah sebuah model statistik yang diasumsikan dari rantai Markov dengan parameter yang tersembunyi (hidden). Hidden Makov Model (HMM) telah banyak dipergunakan dalam sistem pemrosesan suara. HMM merupakan model statistik di mana mempunyai keluaran rangkaian simbol dan kuantitas. Perubahan atau perpindahan state direpresentasikan oleh suatu himpunan peluang yang dinamakan matriks peluang transisi. HMM digunakan untuk pembuatan model pada proses training dan testing. Bentuk model HMM berupa state-state yang saling berhubungan. Proses training bertujuan untuk membuat model untuk data suara burung. Pemodelan ini berupa model yang bersifat kontinu untuk data suara. Pada gambar 2.1 menunjukan kemungkinan parameter dari HMM.
Gambar 2.1. Contoh kemungkinan parameter dari HMM
Keterangan :
x— states y— possible observations a— state transition probabilities b— output probabilities
HMM terdiri dari elemen-elemen dasar sebagai berikut:
1.Banyaknya state dalam HMM (N). yang dilabelkan {1, 2, 3, ..., N}
dan state ke-t dinyatakan dengan qt.
2.Banyaknya simbol observasi yang berbeda tiap state (M)
dinyatakan:
3.Matriks peluang transisi dari state ke-i menuju state ke-j (A={aij})
dimana:
4.Distribusi peluang simbol observasi simbol observasi
ke-k pada state ke-j (B={bj(k)}), yang dinyatakan dalam
matrik BNxM.
HMM dimodelkan sebagai λ=(A,B,π).
2.1.3. Algoritma Viterbi
Algoritma viterbi digunakan sebagai kriteria pengoptimalisasi yang dilakukan dengan menemukan rangkaian state (part) yang mempunyai likelihood maksimum sehingga pada saat n hanya terdapat part yang paling mungkin dipilih untuk setiap state (si). Algoritma ini menggunakan dua variable yaitu:
1. 𝛿𝑛(𝑖) merupakan likelihood tertinggi (highest) dari single part diantara semua path yang berakhir dalam state 𝑆𝑖 pada saat n :
2. Variable 𝜓𝑛 (i) merupakan track untuk ―best part‖ berakhir dalam state 𝑆𝑖 pada saat n:
Berikut merupakan algoritma dari viterbi : 1. Inisialisasi (Initialization)
𝛿1 𝑖 =𝜋𝑖 .𝑏𝑖 𝑋𝑖 , 1 ≤ i ≥ N
𝜓1(i) = 0
Dimana () merupakan prio probability untuk state s1 pada waktu n=1. 2. Rekursif
𝛿𝑛 𝑗 = max (𝛿𝑛−1 𝑖 .𝑎𝑖𝑗 ) . 𝑏𝑗,𝑋𝑛 2 ≤ n ≤ N
(2-3)
1≤ i ≤ Ns 1 ≤ J ≤ Ns
3. Terminasi
𝑃∗ 𝑋 𝜃 = max𝛿
𝑛 1
1≤ i ≤ Ns
𝑄∗ = arg 𝑚𝑎𝑥 𝛿 𝑛 𝑖
1≤ i ≤ Ns
Menemukan “best likelihood” ketika sequence dari pengobservasiab terakhir t=T.
4. Lintasan status (Backtracing) 𝑄∗ = {𝑞
1∗,…,𝑞𝑛∗} maka 𝑞𝑛∗ = 𝜓𝑛+1(𝑞𝑛∗+1)
dengan (n = N-1, N-2, . . . , 1)
2.1.4. Algoritma Baum-Welch
Dalam pembentukan model, pengoptimalisasi parameter-parameter model Φ = {A, B, 𝜋} sangat diperlukan untuk memperoleh model terbaik yang merepresentasikan set dari observasi. Salah satu pendekatan yang digunakan untuk meberikan model terbaik adalah algoritma Baum-Welch.
γ
t
(
i) = P(s = S | X ,Φ)Persamaan di atas dapat dituliskan dalam forward backward variable sebagai berikut :
Juga mendefinisikan probability function ξt(I,j), yang merupakan probabilitas terjadinya state Si pada saat t dan beralih ke state Sj pada saat t+1, dengan model Φ dan sequence observasi X sebagai berikut:
ξt(I,j) = P(st = Si, st+1 = Sj | X, Φ)
Berdasarkan definisi forward backward variable, persamaan di atas dapat dituliskan sebagai berikut :
Hubungan antara γτ(i) dan ξt(i,j) terlihat pada saat penjumlahan j, Menghasilkan :
(2-5)
(2-6)
Penjumlahan seluruh bagian dari γτ i), kecuali t = T, menghasilkan angka berupa kemungkinan state Si. Penjumlahan seluruh bagian dari ξt(i,j), menghasilkan angka berupa kemungkinan transisi dari state Si ke Sj. Estimasi ulang dari parameter model menghasilkan sebagai berikut :
πι = angka kemungkinan pada state Si saat (t
= 1) = γτ(i)Setelah re-estimasi parameter model, akan diperoleh model baru Φ . Proses reestimasi berlanjut sampai model yang dibentuk stabil.
(2-8)
Algoritma Baum Welch yang telah dipaparkan di atas merupakan implementasi dari algoritma EM(Expectation Maximization). Di awali dengan inisialisasi perkiraan parameter HMM Φ = (A, B, π), langkah
Expectation dan Maximization dijalankan bergantian. Langkah Expectation menghitung expected state occupancy count γ dan state transition count ξ dari probabilitas A dan B sebelumnya yang menggunakan algortima forward-backward. Pada langkah Maximization γ dan ξ digunakan untuk memperoleh probabilitas A, B, dan π baru. A, B,
dan π yang baru tersebut dapat diperoleh dengan menggunakan
persamaan 2.6, 2.7 dan 2.8.
2.2. K-Means KlasteringBerbasisHMM
2.2.1. Klastering
Klastering terbagi menjadi beberapa yaitu (Zaiane,1999) : 1. Partitioning Clustering
Partitioning Clustering disebut juga exclusive klastering dimana setiap data harus termasuk dalam cluster tertentu dan memungkinkan bagi setiap data yang termasuk cluster tertentu pada suatu tahapan proses, pada tahapan berikutnya berpindah ke cluster yang lain .
2. Hierarchical Clustering
Pada Hierarchical Clustering setiap data harus masuk ke dalam cluster tertentu namun suatu data yang masuk kedalam cluster tertentu pada suatu tahapan proses, tidak dapat berpindah ke cluster lain pada proses berikutnya.
Contoh: Single Linkage, Centroid Linkage, Complete Linkage, Average Linkage.
3. Overlapping Clustering
Overlapping Clustering mengijinkan setiap data masuk ke beberapa cluster berbada dan data mempunyai nilai keanggotaan (membership) pada beberapa cluster
Contoh : Fuzzy C-means, Gaussian Mixture 4. Hybrid
2.2.2. K-Means Clustering
Ada dua jenis klastering yang sering digunakan dalam proses pengelompokan data yaitu hierarchical (hierarki) data klastering dan non-hierarchical (non-hierarki) data klastering. K-means clustering merupakan salah satu metode data klastering non hirarki yang berusaha memisahkan data yang ada ke dalam bentuk satu atau lebih cluster/kelompok. Metode ini mempartisi data ke dalam cluster/kelompok sehingga data yang memiliki karakteristik yang sama dikelompokkan ke dalam satu klaster yang sama dan data yang mempunyai karakteristik yang berbeda dikelompokkan ke dalam kelompok yang lain.
Tujuan dari data klastering ini adalah untuk meminimalisasikan objective function yang diatur dalam proses klastering, yang pada umumnya berusaha meminimalisasikan variasi di dalam suatu cluster dan memaksimalisasikan variasi antar cluster. Data klastering menggunakan metode K-Means ini secara umum dilakukan dengan algoritma dasar sebagai berikut.
1. Tentukan jumlah klaster
2. Alokasikan data ke dalam cluster secara random
3. Hitung centroid/rata-rata dari data yang ada di masing-masing cluster 4. Alokasikan masing-masing data ke centroid/rata-rata terdekat
yang digunakan di atas nilai threshold yang ditentukan.
Gambar 2.2. Algoritma K-means (santoso, 2005)
2.2.3. K-Means Clustering berbasis Hidden Markov Models (HMM)
K-means merupakan klasterisasi mengunakan penghitungan jarak. Pada kasus ini jarak yang digunakan menggunakan model. Model didapat menggunakan Hidden Markov Models (HMM). Pada k-means
FINISH kelompokan dengan
centroid terdekat START
Inisialisasi jumlah K
Tentukan centroid
Hitung jarak dengan centroid
Hitung centroid baru
berbasis HMM, centroid ditentukan menggunakan model, model dibuat dengan mengambil sampel dari beberapa data yang ada, jarak dihitung dengan menggunakan likelihood probabilitas. Berikut algoritma dari k-means berbasis HMM :
1. Buat model dari sampel data yang ada sesuai dengan jumlah kelompok.
2. Bandingkan seluruh data dengan model yang telah dibuat.
3. Dari data-data yang telah dikelompokan dibuat model baru untuk menggantikan model yang pertama,
4. Bandingkan semua data dengan model-model baru yang terbentuk. 5. Lakukan langkah tersebut sampai data konfergen, atau data dalam
suatu model tidak berubah keanggotaanya.
2.3. Ekstrak ciri suara
2.3.1. Feature extraction
Dalam pengidentifikasian individu burung menggunakan data yang memiliki label atau disebut sebagai “supervised”. Data suara yang diambil merupakan data audio (signal). Semua data audio yang digunakan bukan data mentah, sehingga diperlukan proses feature extraction untuk menentukan feature-feature penting yang diperlukan.
tersebut. Feature-feature dari hasil proses feature extraction diharapkan mempunyai keterkaitan yang minimal serta mampu untuk membuat model tanpa harus membutuhkan data training yang besar.
2.3.2. Greenwood function cepstral coefficients (GFCC)
Greenwood function cepstral coefficients (GFCC) merupakan salah satu pendekatan yang digunakan untuk mengekstrak feature berdasarkan pada perceptual model dari spesies yang sudah ditentukan yaitu di dalam kasus ini adalah suara dari spesies burung ortolan bunting.
Greenwood (Greenwood,1961,1990) menunjukan bahwa beberapa dari spesies mamalia baik mamalia darat maupun perairan menerima frekuensi pada sebuah skala algoritmik yang dimodelkan dengan persamaan :
f = A( -b) Keterangan :
f adalah frekuensi (Hz)
A, a dan b merupakan konstanta (spesifik untuk masing-masing spesies) x menunjukan posisi dari selaput pendengaran
Frekuensi warping yang diterima secara umum didefinisikan sebagai :
(2-10)
konstanta 𝐴 dan 𝑎 dapat diperoleh sebagai berikut :
Gambar 2.2 menunjukan proses ekstraksi ciri menggunakan GFCC
Gambar 2.3. Langkah-langkah untuk proses menghitung koefisien dari GFCC
Signal suara akan dilakukan segmentasi menjadi frame-frame dan masing-masing dari frame disebut sebagai window. Window dari data suara kemudian ditransformasi dengan menggunakan Fast Fourier Transform.
Dimana x(n) adalah signal dalam diskrit waktu dengan panjang N , k=0,1,..N-1, dan k berkorespondensi dengan frekuensi f(k) = , adalah sampling frekuensi (Hz) dan w(n) adalah time-window.
dengan ukuran window 3ms-6ms. Koefisien magnitude |X(k)| dikorelasikan dengan masing-masing triangular filter dalam greenwood filterbank H(k,m). Ini berarti koefisien magnitude dari fast fourier transform dikalikan dengan filter gain dan dimodelkan sebagai berikut:
Untuk m = 1,2,…,M, dimana M adalah jumlah dari filter bank dan
M<<N. Greenwood filterbank merupakan kumpulan dari filter triangular yang didefinisikan dengan center frequencies.
Gambar 2.4. Greenwood filterbank
Discrete cosine transform digunakan untuk menghitung koefisien cepstral dari log amplitudo filterbank sebagai berikut :
𝑐(𝑖) = 𝑋′ 𝑚 cos(𝑖𝜋 𝑁 𝑚
𝑚=1 (𝑚 −0.5))
Untuk i = 1,2,….M, dimana c(i) adalah GFCC.
2.3.3. Greenwood function cepstral coefficients Delta dan Delta
Acceleration (GFCC_D) dan (GFCC_D_A)
Vektor-vektor feature dihitung dari fungsi Greenwood yang memberikan sebuah perkiraan yang terbaik dari local spectra. Karakteristik yang penting dari data vokalisasi ini vokalisasi dinamis. Kinerja sistem suara dapat ditingkatkan dengan menambah turunan waktu pada parameter statis. Banyak peneliti memanfaatkan perkiraan daerah turunan waktu. Delta cepstrum (Furui, 1986) adalah salah satu bentuk umum dari langkah ini. Delta cepstrum diimplementasikan sebagai turunan pertama koefisien regresi. Turunan waktu dinyatakan sebagai berikut :
𝑑
𝑡=
𝑘
(
𝑐
𝑡+𝑘− 𝑐
𝑡−𝑘)
𝑁 𝑘=1
2
𝑁𝑘=1𝑘
2(2-16)
dimana 𝑑𝑡 adalah koefisien delta pada waktu t dihitung dalam jangka koefisien waktu statis ct-k hingga ct+k.
23 BAB III
METODOLOGI
Bab ini menjelaskan perancangan dan pengimplementasian metode K-means clustering berbasis HMM untuk dapat mengelompokan song-type lebih akurat.
3.1. Analisis Sistem
Data setelah
Data yang belum dikelompkan
Gambar 3.1. Alur sistem
3.2. Data Nyanyian Burung Ortolan Bunting
Burung ortolan bunting berimigrasi dari Eropa barat ke Mongolia (Cramp, Perrins, 1994). Burung ini mempunyai nyanyian (song) yang sederhana dengan 2-3 tipe nyanyian untuk setiap individu. Frekuensi nyanyian berkisar antara 1.9 kHz – 6.7 kHz. Nyanyian dari burung ini dideskripsikan dengan istilah syllable, tipe nyanyian, dan varian nyanyian. Secara keseluruhan terdapat 63 tipe nyanyian, 234 varian nyanyian serta 20 syllable.
Gambar 3.2. Syllable burung ortolan bunting
Gambar 3.2. merupakan kumpulan silabel dari burung Ortolan Bunting. Song-type adalah sebuah kumpulan song yang terdiri dari susunan silabel yang sama pada rangkaian yang sama. Sebagai contoh: type-ab(aaabb), type-cb(cccbb)
Gambar 3.3 merupakan contoh time series dan spectogram dari song type nyanyian ab. Data yang digunakan dalam tugas akhir ini berjumlah 500 data, yang terdiri dari 5 jenis song-type yaitu ab, cb, cd, eb, dan ef dimana masing-masing song-type terdiri dari 100 data suara. Dalam percobaan ini semua data disatukan menjadi sebuah kelompok data yang berjumlah 500 buah.
3.3. Ekstraksi ciri
Greenwood merupakan bagian dari rangkaian ekstraksi ciri. Greenwood membagi suara menjadi beberapa bagian. Greenwood digunakan pada kasus ini karena objek yang dikenakan adalah suara burung yang lebih cepat dari suara manusia.
dari proses membuat window agar informasi-informasi setiap bagian lebih spesifik. Ukuran window (window-sizes) kecil karena suara burung lebih cepat. Selanjutnya, diambil magnitudenya setelah proses membuat window selesai. Kemudian, proses FFT yang akan menghasilkan nilai besaran signal. Nilai tersebut akan dimasukkan pada Greenwood.
Pada Greenwood konstanta frekuensi warping dihitung dari fmin 400 Hz hingga 7400 Hz yang tepat didengar oleh Ortolan Bunting. Pada proses Greenwoood mengambil gain, kemudian dikalikan dengan nilai besaran signal menghasilkan output parameter berupa koefisien parameter. Koefisien parameter tersebut digunakan untuk observasi pada proses HMM. Output parameter berupa matriks dengan jumlah kolom tergantung dari jenis feature yang digunakan, yaitu apabila menggunakan GFCC jumlah kolom sebanyak 12, GFCC_D sebanyak 24 dan GFCC_D_A sebanyak 36. Sedangkan jumlah baris tergantung dari panjangnya sinyal suara yang dihasilkan.
Setelah suara burung diekstrak dan didapat bagian-bagian penting dari suara burung, maka nyanyian suara burung dapat dibedakan menjadi beberapa kelas besar.
3.4. Pengelompokan menggunakan K-means
dari klaster yang terbentuk dibuat model seperti pada HMM. Model dibuat berdasarkan klaster hasil klastering iterasi pertama misalnya m, dari masing-masing dari klaster yang ada dibuat model. Dari model yang dihasilkan kemudian dibandingkan lagi dengan data awal, kemudian dari iterasi kedua dibuat model lagi berdasarkan data dari iterasi kedua, model yang didapat dibandingkan dengan data awal. Begitu seterusnya hingga data konfergen.
Dari data-data kita ambil beberapa sampel data untuk membuat model sesuai dengan jumlah K, menggunakan HMM. Misal K = 5. Terlihat pada gambar 3.4.
xxxxx xxxxx xxxxx xxxxx xxxxx
Gambar 3.4. pembuatan model dengan menggunakan sampel data
Hitung jarak antara data dengan model yang telah dibuat. Data dengan jarak terdekat dengan suatu model dikelompokan menjadi satu kelompok untuk selanjutnya dibuat model baru dengan menggunakan data yang telah dikelompokan. Terlihat pada gambar 3.5.
xxxxx xxxxx xxxxx xxxxx xxxxx
Gambar 3.5. Iterasi pada K-means berbasis HMM
Model yang terbentuk dari iterasi sebelumnya digunakan sebagai pusat klaster yang baru, kemudian buat model dari pusat klaster yang baru.
xxxxx xxxxx xxxxx xxxxx xxxxx
Gambar 3.6. Iterasi pada K-means berbasis HMM
Iterasi dilanjutkan sampai keanggotaan cluster tidak berubah (konvergen).
3.5. ValidasiHasil
Gagasan tentang validasi cluster mengacu pada konsep dan metode untuk kuantitatif dan objek evaluasi output dari algoritma clustering (Jain et al., 1999; Gordon, 1999; Jain and Dubes, 1988 di dalam Adi, C.K., 2008). Sebuah prinsip umum untuk validasi cluster harus berlaku bagi setiap algoritma clustering dan tidak dibatasi pada kelompok tertentu dengan metode clustering. Prinsip umum diusulkan
M.1 M.2 M.3 M.4 M.5
M.1.1 M.2.1 M.3.1 M.4.1 M.5.1
M.1.2 M.2.2 M.3.2 M.4.2 M.5.2
dengan memperkenalkan gagasan stabilitas clustering sebagai solusi (Lange et al, 2004).
Pendekatan validasi cluster mengharuskan bahwa untuk dua data set yang berbeda harus dihasilkan oleh sumber yang sama. Karena dengan seperti itu solusi clustering dapat dinilai. Beberapa metode (Ben Hur et al, di dalam Adi, C.K., 2008) dua set data cluster yang berbeda digunakan untuk mengukur perbedaan dari dua set data cluster. Sementara itu untuk mengukur kesamaan klustering yang dihasilkan oleh suatu algoritma clustering menggunakan data set data cluster kedua (Breckenridge di dalam Adi, C.K., 2008).
Berikut algoritma yang digunakan (Lange et al,2004), : Ulangi untuk setiap k {kmin, …, kmax}
1. Ulangi langkah-langkah berikut ini untuk r membagi data untuk mendapatkan estimasi Sˆ(Ak)dengan nilai rata-rata :
Bagilah data yang diberikan menjadi dua bagian X,X’ dan terapkan
A
k pada keduanya. Gunakan (X, Ak(X)) untuk melatih pengelompokan dan menghitung (X‘).
Hitung jarak dari dua pemecahan (X‘) dan Ak(X’). 2. Contoh s k-labeling acak, bandingkan sepasang kelompok dan
hitung rata-rata empiris dari disimilaritas untuk memperkirakan )
( ˆ Rk
3. Normalisasi masing-masing Sˆ(Ak) dengan Sˆ(Rk)untuk memperkirakan S(Ak)
Hitung kˆargminkS(Ak)untuk mendapatkan perkiraan jumlah cluster.
Untuk lebih jelasnya dapat dilihat pada flowchart dibawah ini
Mulai
Gambar 3.7. Flowchart validasi hasil
masing-masing data set titik acuan tersebut kita bandingkan dengan kesembilan data set yang ada dengan mengganti kesembilan data set yang ada dengan nilai permutasi yang dihasilkan. Kemudian hitung nilai disimilaritasnya. Sebagai contoh percobaan misalkan k=2, dari k=2 dilakukan percobaan sebanyak 10 kali, sehingga akan terbentuk 10 jenis kelompok dari k=2.
Tabel 3.1. Contoh Kelompok K=2
1 2 3 4 5 6 7 8 9 10 1 2 1 2 2 1 2 2 1 2 1 2 1 2 2 1 2 2 1 2 1 2 1 2 2 1 2 2 1 2 1 2 1 2 2 1 2 2 1 2 1 2 1 2 2 1 2 2 1 2 1 2 1 2 2 1 2 2 1 2 1 2 1 2 2 1 2 2 1 2
Kelompok yang terbentuk K-2
Kelompok 1 sebagai acuan
Tabel 3.2. Perbandingan dengan nilai permutasi
1 2 hasil 1 Perm2 hasil
1 2 1 1 1 0
1 2 1 1 1 0
1 2 1 1 1 0
1 2 1 1 1 0
1 2 1 1 1 0
1 2 1 1 1 0
1 2 1 1 1 0
Disimilaritas jumlah hasil / jumlah data
1 Disimilaritas jumlah hasil / jumlah data
0
35
BAB IV
IMPLEMENTASI DAN HASIL
Bab ini berisi tentang implementasi system berupa hasil penelitian yang pada bab sebelumnya sudah dibahas, serta analisa dari hasil penelitian yang didapatkan.
Bagian pertama menganalisa hasil penelitian untuk setiap percobaan yang dilakukan. Hasil penelitian berupa tabel hasil akurasi untuk akurasi yang terbaik. Dalam penelitian ini, untuk mendapatkan akurasi terbaik dipengaruhi oleh tipe parameter feature, ukuran window (windows size) dan jumlah state.
4.1. Data
Data nyanyian burung Ortolan Bunting sebelum dikelompokan berformat wave sound (*.wav) dan memiliki bit rate 786 kbps. Wave sound (*.wav) dipilih karena format wave sound pada umumnya dapat menampung format audio dalam bentuk terkompresi. Data yang digunakan didapat dari sumber yang pernah merekam nyanyian burung Ortolan Bunting untuk keperluan penilitian. Data terdiri dari 5 song-type yang setiap song-type memiliki 100 sample data acak.
4.2. Implementasi Ekstraksi ciri
suara kedalam beberapa vektor data yang berguna bagi proses pengenalan nyanyian burung ortolan bunting.
Ketika menjalankan codeAll.scp yang berisikan file : gfccConfig yang digunakan untuk mengekstraksi ciri berdasarkan amplitudo dan mengubah data *.wav menjadi *.mfc.
4.3. Implementasi pengelompokan.
Pengelompokan menggunakan K-means klastering berbasis HMM ini dapat dikerjakan setelah ekstraksi ciri karena program akan mengelompokan data-data yang sudah diekstraksi ciri. Program akan membaca alldata.scp yang berisi tentang alamat *.mfc dari semua data. Berikut ini contohnya.
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_1 .mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_1 0.mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_2 .mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_3 .mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_4 .mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_5 .mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_7 .mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_8 .mfc"
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_106_9 .mfc"
Untuk menentukan jumlah klasternya diperlukan gramar yang berfungsi untuk mengidentifikasi klaster-klaster yang akan dibentuk. Gramar akan terbentuk ketika proses pengelompokan dimulai. Berikut isi dari gramar untuk k= 7.
$song = <s1> <t1> | <s2> <t2> | <s3> <t3> | <s4> <t4> | <s5> <t5> | <s6> <t6> | <s7> <t7> ;
s merupakan song, dan t merupakan tipe ( s1 t1 berarti song jenis 1
tipe 1)
Setelah memiliki gramar program akan menentukan titik klaster pertama, sebagai acuan untuk mengelompokan data yang ada. Kemudian data akan dibandingkan dengan setiap titik yang ada sampai data konvergen.
4.4. Hasil Penelitian
serta menggunakan windows size 3ms dengan jumlah state 15. Percobaan ini dilakukan untuk mengetahui tingkat akurasi pengelompokan nyanyian burung ortolan buting dari setiap parameter yang digunakan untuk mendapatkan tingkat akurasi terbaik. Setelah data diekstraksi cirinya data tersebut akan dikelompokan menggunakan algoritma K-means Clustering dengan K = ( 2, 3, 4, 5, 6, dan 7) dan masing-masing K dilakukan sebanyak 10 kali percobaan. Pengujian validasi juga dilakukan pada setiap klaster untuk K = ( 2, 3, 4, 5, 6, dan 7). Seperti yang dapat dilihat Gambar 4.1 yang memberikan contoh pengelompokan dan validasi.
Masing-masing K dikelompokan sebanyak 10 kali. Pada pengujian untuk K = 2 didapat hasil kelompok sebagai berikut seperti terlihat pada tabel 4.1.
Tabel 4.1. Contoh Hasil Pengelompokan untuk K=2
Hasil pengelompokan ke
Gambar 4.1. Nilai Disimilaritas K=2
Dari gambar 4.1. diatas dapat dilihat bahwa pada K=2 memiliki tingkat disimilaritas paling rendah pada perbandingan antara hasil percobaan 1 dengan hasil percobaan 10 dengan nilai disimilaritas sebesar 11,20. Hal tersebut diatas dilakukan terhadap semua percobaan dan akan didapat hasil seperti pada gambar 4.2 untuk proses ekstraksi cirri menggunakan GFCC.
Percobaan pertama dilakukan menggunakan tipe parameter GFCC, windows size 3 ms, dan jumlah state 15. Dari seluruh proses yang dilakukan seperti diatas dan diambil nilai disimilaritas terendah dari masing-masing K didapatkan hasil sebagai berikut.
0 5 10 15 20 25 30 35 40 45 50
Nilai Disimilaritas
Gambar 4.2. Grafik Hasil pengelompokan dari ekstraksi GFCC
Dari gambar 4.2 diatas dapat diketahui bahwa menggunakan ekstraksi ciri GFCC yang jumlah parameternya 12 menempatkan K=2 dengan nilai disimilaritas paling kecil yaitu 11,2 .
Percobaan kedua menggunakan tipe parameter GFCC_D yang memiliki 24 parameter, windows size 3ms, dan jumlah state 15.
Gambar 4.3. Grafik Hasil Pengelompokan dari ekstraksi GFCC_D
rendah 21,2.
Pada percobaan selanjutnya menggunakan ekstraksi ciri GFCC_D_A yang memiliki jumlah parameter 36, namun masih menggunakan windows size 3 ms, dan jumlah state 15.
Gambar 4.4. Grafik Hasil Pengelompokan dari ekstraksi GFCC_D_A
Dari gambar 4.3 dapat dilihat bahwa nilai disimilaritas paling rendah 8,2 dan terdapat posisi K=5.
Nilai disimilaritas adalah nilai ketidaksamaan, jadi semakin rendah nilai disimilaritas maka makin tinggi nilai similaritas atau tingkat kesamaan sebuah kelompok dan semakin tinggi tingkat akurasinya.
21,8
27
14,2
8,2
23,6
20,8
0 5 10 15 20 25 30
k=2 k=3 k=4 k=5 k=6 k=7
Gambar 4.5. Grafik Hasil Gabungan Pengelompokan dari ekstraksi GFCC, GFCC_D, dan GFCC_D_A
Tabel 4.2. Hasil Pengelompokan Nyanyian Burung
Gambar 4.4 menunjukan grafik nilai disimilaritas dari parameter GFCC, GFCC_D dan GFCC_D_A. Dari hasil seluruh pengujian diatas menunjukan tingkat disimilaritas yang bervariasi mulai dari nilai disimilaritas yang tertinggi 35.6 dan terendah 8.2. Pengelompokan menggunakan feature GFCC memiliki nilai disimilaritas paling rendah pada K=2 dengan nilai disimilaritas 11.2 % atau 88.8 % nilai similaritas. GFCC menemukan 2 kelompok dalam keseluruhan data yang diujikan. Sedangkan pengelompokan menggunakan ekstraksi cirri GFCC_D didapatkan 6 kelompok dengan tingkat disimilaritas 21.2 atau 78.8 %
Feature Disimilaritas
GFCC 11.2
GFCC_D 21.2
similaritas/kesamaan. Pengelompokan dengan menggunakan ekstraksi cirri GFCC_D_A menemukan 5 kelompok dalam sebuah data yang diujikan yaitu dengan nilai disimilaritas 8.2 atau 91.8 % nilai similaritasnya.
44
BAB V KESIMPULAN DAN SARAN
Pada bab V akan dibahas mengenai saran-saran dan kesimpulan yang dapat diambil dari pengelompokan nyanyian burung yang menggunakan algortima K-means clustering berbasis Hidden Markov Model (HMM).
5.1. Kesimpulan
1. Data yang digunakan dalam penelitian ini berjumlah 500 data dari 5 kelompok nyanyian ab, cb, cd, eb, dan ef, yang masing-masing kelompok diwakili 100 data.
2. Proses ekstraksi ciri dari file suara *.wav menjadi *.mfc dan menggunakan feature dengan tipe parameter GFCC, GFCC_D, dan GFCC_D_A dengan window-sizes yang digunakan 3ms dan jumlah state dan 15.
3. Pada penelitian ini HMM berfungsi untuk mengidentifikasi sebuah suara yang akan dikelompokan, sedangkan k-means clustering digunakan untuk mengelompokan.
5. Penilitian ini menggunakan jenis feature Greenwood function cepstral coefficients (GFCC).
6. Waktu yang dibutuhkan untuk melakukan pengelompokan termasuk lama yaitu antara 15-35 menit setiap sekali proses pengelompokan.
5.2. Saran
Beberapa saran yang dapat penulis uraikan sebagai berikut :
1. Penggunaan ekstraksi ciri yang berbeda dapat mempengaruhi hasil pengelompokan. Semakin banyak kombinasi dengan windows size yang berbeda diharapkan hasilnya akan lebih baik pula.
2. Untuk mendapatkan hasil yang lebih maksimal window size dapat diubah-ubah dari 3ms sampai 6ms dengan overlap 1.5ms sampai 3ms.
DAFTAR PUSTAKA
Adi, C. Kuntoro, S.J., M.A., M.S. (2008), ―Hidden Markov Model Based Animal Acoustic Censusing: A Learning From Speech Recognition Technology.‖
Anonim.(2008). www.charliesbirdblog.com/.../.diakses tanggal 10 September 2009.
Anonim.10000birds.com/ortolan-buntings-qatar.htm / . diakses tanggal 10 September 2009.
Cramp, S., Perrins, C.M., (1994), The Birds of the western paleartic. Volume IX, Buntings and new world warblers, Oxford:Oxford University Press.
Greenwood, D.D, (1961), ―Critical bandwith and the frequency oordinates of the basilar membrance, ― The Journal of the Acoustical Society of America 33(10):1344-1356.
http://en.wikipedia.org/wiki/Hidden_Markov_model
Jurnal Seminar Nasional Teknologi 2007 (SNT 2007) ISSN : 1978 –
9777,Yogyakarta, 24 November 2007, diakses tanggal 10 september 2009.
Jurnal Sistem dan Informatika Vol. 3 (Februari 2007), 47-60.
Rabiner, L.R. (1989), ―A tutorial on hidden Markov models and selected applications in speech recognition,‖ Proc. IEEE, vol. 77, pp. 257-286.
Santosa, Budi, 2007, ―Teknik Pemanfaatan Data untuk Keperluan Bisnis‖, Graha Ilmu, yogyakarta.
Tilman Lange et al.,(2004), ―Stability-based validation of clustering solutions‖, Neural Computation 16, 1299-1323, Massachusetts Institute of Technology.
2 2 5 5 1 1 4 3 1 5 data 4
Gambar 1. Nilai Disimilaritas K=2
Gambar 2. Nilai Disimilaritas K=3 0
5 10 15 20 25 30 35 40 45 50
Nilai Disimilaritas
Nilai Disimilaritas
Nilai Disimilaritas
0 10 20 30 40 50 60 70
Nilai Disimilaritas
Gambar 3. Nilai Disimilaritas K=4
Gambar 4. Nilai Disimilaritas K=5 0
10 20 30 40 50 60
Nilai Disimilaritas
Nilai Disimilaritas
0 10 20 30 40 50 60
Nilai Disimilaritas
Gambar 5. Nilai Disimilaritas K=6
Gambar 6. Nilai Disimilaritas K=7
Dari setiap percobaan diatas dapat diketahui bahwa pada K=2, K=5 dan K=7 memiliki nilai disimilaritas paling rendah dengan 11,2 (88,8) , 24,4 (75,6) , 23,40 ( 76,6%). Hal ini dapat dilihat pada gambar 7. 0
10 20 30 40 50 60
Nilai Disimilaritas
Nilai Disimilaritas
0 5 10 15 20 25 30 35 40 45 50
Nilai Disimilaritas
Lampiran 2 Listing program yang digunakan.
1. createscpbaru.m : % File :createScpBaru.m
% Goal : membuat scp file dari direktori berbeda-beda
% 1. Directori asal dan target
dirAsal={'songab1'; 'songcb1'; 'songcd1'; 'songeb1'; 'songef1'};
% 2. Membaca wav file di masing-masing directory
% 1. Membaca wave file dari suatu directory
files=[];
filename{i}=fileWav(i).name(1:length(fileWav(i).name)-4);
% 2. mencetak file codeAll.scp
srcDirectory ='C:\Users\bagas\Documents\MATLAB\bagas\'; % directory asal
targetDirectory
='C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG'; % directory tujuan
fid1=fopen('codeAll.scp','w');
for m=1:length(files) fileBaru=files{m};
for n=1:length(fileBaru)
fwrite(fid1, ['"' srcDirectory dirAsal{m} '\'
fileBaru{n} '.wav" ' '"' targetDirectory dirAsal{m} '\'
fileBaru{n} '.mfc"']);
% File :createScpBaru.m
% Goal : membuat scp file dari direktori berbeda-beda
% 1. Directori asal dan target
dirAsal={'songab1'; 'songcb1'; 'songcd1'; 'songeb1'; 'songef1'};
% 2. Membaca wav file di masing-masing directory
% 1. Membaca wave file dari suatu directory
files=[];
filename{i}=fileWav(i).name(1:length(fileWav(i).name)-4);
% 2. mencetak file codeAll.scp
targetDirectory
='C:\Users\bagas\Documents\MATLAB\bagas\HASILALLDATA'; % directory tujuan
fid1=fopen('allData.scp','w');
"C:\Users\bagas\Documents\MATLAB\bagas\HASILDATABURUNG1\ab01_73_
% 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, [' <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');
fwrite(fid1,[ '<Variance> ' num2str(numparam)]); fprintf(fid1, '\n');
% Transition matrix
fwrite(fid1,[' <TransP> ' num2str(numstates)]); fprintf(fid1, '\n');
TP = transmat(numstates); % calling transmat function
for i=1:m
%function [GMD, GMF] = htkinitialization2(numofClusters) %
function [GMD, GMF] = htkinitialization2(numofClusters,songtype)
% [GMD, GMF] = htkinitialization2(numofClusters) % Function to initialize HTK stuffs
% Input : numofClusters (number of clusters) % Output:
% Integrated on Sept 26, 2006, updated from htkinitialization for song-type
% based bird clustering on March 7, 07 %
================================================================ =========
% song-type: AB
% songtype='ab'; % june 18,07
% songtype='st'; % make them more general december 7,2007
GMD = {};
for i = 1:numofClusters
GMD{i} = [songtype(1) num2str(i); songtype(2) num2str(i)];
end
GMD=GMD';
% 2. Grammar file (GMF)
GMF = {};
for i = 1:numofClusters
GMF{i} = ['grammar' num2str(i)];
end
GMF=GMF';
% 3. grammar file (grammar)
fid1 = fopen('initialGrammar','w'); % check naming 'grammar' or 'initialGrammar'
fwrite(fid1,'$song =');
for i = 1:numofClusters-1
fwrite(fid1,[' <' GMD{i}(1,:) '>' ' <' GMD{i}(2,:) '> |']);
end
fwrite(fid1,[' <' GMD{end}(1,:) '>' ' <' GMD{end}(2,:) '> ;']); fprintf(fid1, '\n');
fwrite(fid1,'( SENT-START ( $song ) SENT-END )'); fclose(fid1);
% 4. grammar definition for each cluster for i = 1:numofClusters
fid1 = fopen(GMF{i},'w');
fwrite(fid1, ['$song = <' GMD{i}(1,:) '>' ' <' GMD{i}(2,:)
fprintf(fid1, '\n');
fwrite(fid1,'( SENT-START ( $song ) SENT-END )'); fclose(fid1);
end
% 4. model file (model.list)
fid1=fopen('model.list','w');
for i = 1:numofClusters
fwrite(fid1, GMD{i}(1,:)); fprintf(fid1, '\n');
fwrite(fid1, GMD{i}(2,:)); fprintf(fid1, '\n');
end
fwrite(fid1, 'sil'); fclose(fid1);
% 4b. model list updated january 25, 2007 % for i = 1:numofClusters
% fid1 =fopen(['model' num2str(i) '.list'], 'w');
% 5. dictionary file (dict)
fid1 = fopen('dict','w');
fwrite(fid1,'SENT-START [] sil'); fprintf(fid1, '\n');
fwrite(fid1,'SENT-END [] sil'); fprintf(fid1, '\n');
for i = 1:numofClusters
fprintf(fid1, '\n');
% kmeansSongClustering.m please compare kmeansBird2.m %
================================================================
=========
% Function to implement HMM-based kmeans clustering algorithm
(for Songtype % data
% Input :
% numCluster [number of clusters]
% Output :
% LL [total loglikelihood value]
% Date : 21 february 2007, revised for songtype 10 Oct 2007 %
================================================================ =========
% 1. Prepare necessary stuffs
---
% a. Data preparation
% Input : raw data at a directory % Output :
% allData.scp [list of data for clustering]
% b. Create grammar definition, grammar file etc % Input : numCluster
% Output :
% GMD [grammar definition] % GMF [grammar file]
% initialGrammar
% grammar definition for each cluster % dict [dictionary]
% model.list [list of hmm model]
tic
[GMD,GMF]=htkinitialization2 (numCluster, songtype); % for songtype 'st'
disp ('setelah init'); pause
% 2. Initialize HMM models
--- % Input :
% initialGrammar, allData, model.list % Output :
% initial hmmdefs in \hmm0
% a. Clean directory hmm0
dos ('del hmm0\hmmdefs'); dos ('del hmm0\proto'); dos ('del hmm0\vFloors'); disp ('hapus');
pause
% b. New initialization
dos ('copy initialGrammar grammar'); disp ('copy grammar');
pause
% create proto file please
dos ('Hparse -A grammar wordnet');
dos ('HCompV -A -f 0.01 -m -S allData.scp -M hmm0 proto'); dos ('set CLASSPATH=');
dos ('java CloneHMM ./hmm0 model.list');
% disp ('create file proto test'); % pause
% 3. Data assignment and model training (until converge)---
% Cf. convergenceValue2.m for reference
% 3.1. Initial data assignment
dos ('HVite -A -w wordnet -l . -i rec.mlf -S allData.scp -H hmm0/hmmdefs dict model.list');
% Cluster membership, update cluster.mlf
[fname,LBL,LLL]=updatecluster2('rec.mlf'); % output: cluster.mlf
% Initial label
LBV = {};
lbval = convertInitcluster(LBL); LBV{1}=lbval;
% 3.2. Iteration until cluster membership doesn't change
i = 1;
conVal=1; %convergence value initialization while conVal ~= length(fname)
% update HMM models
dos ('HERest -A -t 600.0 -I cluster.mlf -S allData.scp -H hmm0/hmmdefs -M hmm0 model.list');
dos ('HERest -A -t 600.0 -I cluster.mlf -S allData.scp -H hmm0/hmmdefs -M hmm0 model.list');
dos ('HERest -A -t 600.0 -I cluster.mlf -S allData.scp -H hmm0/hmmdefs -M hmm0 model.list');
dos ('HERest -A -t 600.0 -I cluster.mlf -S allData.scp -H hmm0/hmmdefs -M hmm0 model.list');
dos ('HERest -A -t 600.0 -I cluster.mlf -S allData.scp -H hmm0/hmmdefs -M hmm0 model.list');
% reassign data to clusters
dos ('HVite -A -w wordnet -l . -i rec.mlf -S allData.scp -H hmm0/hmmdefs dict model.list');
% extract label assignment
[fname,LBL,LLL]=updatecluster2('rec.mlf');
% compare new label with old label
lbval = convertInitcluster(LBL); compareLabel = LBV{i}==lbval; conVal = sum(compareLabel); i = i+1;
LBV{i}=lbval;
display(['iteration :' num2str(i)]);
end
display(['Clusters converge after: ' num2str(i) ' iteration']); toc
% 4. fname, label, loglikelihood value
7. ekstrakMlf.m
clear FB_final; max_index = 10;
for index = 1 : max_index
filename=sprintf('rec%d.mlf',index)
%filename='rec1.mlf';
[fname,LB,LL]=updatecluster2(filename);
%index=1;
[n,m]=size(LB);
for i=1:m a=LB{i};
b=str2num(a(2)); LB_final (i,index)=b;
end;
end;
disp (LB_final);
save LBFinal LB_final; %untuk load LB_final, tinggal panggil load LBFinal;
8. updateCluster2.m
function [fname,LB,LLL]=updatecluster2(recfile)
% Create "cluster.mlf" file from "rec.mlf" file % Date: March 20, 2006
% Function needed for new grammar - clustering! % Input : rec.mlf
% Output: cluster.mlf
%===============================================
% 1. Read mlf file
REC = textread(recfile,'%s');
% REC = textread('rec1.mlf','%s');
% 2. Extract filenames and their values % Find the filename boundary
BD=[];
% clean fname file (delete "./ and .rec") for i = 1:length(fname)
fname{i} = fname{i}(4:end-5);
end
% group data according to their files
% 3. Extract label LB and loglikelihood LL % LB={};LL={};
% for i=1:length(AA)
% b=4:4:length(AA{i});
% 4. Loglikelihood matrix (use mean LL above)
LLL=[];
% 4. Create "cluster.mlf" file - using fname and LB matrices
fid1=fopen('cluster.mlf','w'); fwrite(fid1,'#!MLF!#');
for i = 1: length(fname)
fwrite(fid1,['"*/' fname{i} '.lab"']); fprintf(fid1, '\n');
% for j=1:length(LB{i}) % for songtype based clustering % fwrite(fid1,LB{i}{j});
k=3; % tergantung nilai k yang dikelompokan
ntotal=500; % jumlah data tiap kolom
A= LB_final (:,1); % acuan
P=perms(1:k); % permutasi
np=max (size(P)); n=10; %jumlah kolom for i=2:n
index_permutasi(i-1,:)=P(i,:); %index_permutasi=1;
B=LB_final(:,i); %ambil kolom yang akan dibandingkan
hasil(i-1)=100; %hasil=100; % default nilai hasil
for perm=1:np
for j=1:k presentase dan indexnya
hasil (i-1)=h;
10. convergenceValue2.m % convergenceValue2.m
% Script to find out the convergence Value of an iteration (data
assignment
% to clusters) - This will be used in initialAnalysis2.m % Date 20 December 2006
% Reference: convergenceValue.m
% clc;
% [GMD,GMF]= htkinitialization(20); % number of initial clusters
20
% %createProto('MFCC_D_A',36,15); % dos htkstuff5.bat;
% 1. Initial data assignment % assignData.scp = allData.scp
dos (['HVite -A -w wordnet -l . -i rec.mlf -S assignData.scp -H hmm0/hmmdefs dict model.list']);
% 2. Label (cluster) membership, update cluster.mlf
[fname,LB,LLL]=updatecluster2('rec.mlf'); % output: cluster.mlf
% a. Initial label
LBV = {};
lbval = convertInitcluster(LB); LBV{1}=lbval;
% 3. Iteration until cluster membership doesn't change
i = 1;
conVal=1; %convergence value initialization while conVal ~= length(fname)
% update HMM models
dos movecenter5.bat;
% reassign data to clusters
dos (['HVite -A -w wordnet -l . -i rec.mlf -S assignData.scp -H hmm0/hmmdefs dict model.list']);
% extract label assignment
[fname,LB,LLL]=updatecluster2('rec.mlf');
% compare new label with old label
lbval = convertInitcluster(LB); compareLabel = LBV{i}==lbval; conVal = sum(compareLabel); i = i+1;
display(['iteration :' num2str(i)]);
end
display(['Clusters converge after: ' num2str(i) ' iteration']);
11.convertInitcluster.m
function CT= convertInitcluster(labfile)
% Function to convert cluster type in labfile into integer type % Input
% labfile[c1 c2 c3.... c20] %20 initial clusters % Output
% CT [1 2 3 etc]
% Note: this function is used for syllable-based clustering
CT=[];
for i = 1:length(labfile)
clust = str2num(labfile{i}(2:end)); CT = [CT clust];
end
12.transmat.m
function TransP=transmat(numOfStates)
%numOfStates = 20;
TransP=zeros(numOfStates);
TransP(1,2)=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;
13.gfccconfig3MFCC
18.dict k=6
$song = <s1> <t1> | <s2> <t2> | <s3> <t3> | <s4> <t4> | <s5> <t5> | <s6> <t6> | <s7> <t7> ;
( SENT-START ( $song ) SENT-END )
$song = <s1> <t1> | <s2> <t2> | <s3> <t3> | <s4> <t4> | <s5> <t5> | <s6> <t6> ;
( SENT-START ( $song ) SENT-END )
22.grammar k=5
$song = <s1> <t1> | <s2> <t2> | <s3> <t3> | <s4> <t4> | <s5> <t5> ;
( SENT-START ( $song ) SENT-END )
23.grammar k=4
$song = <s1> <t1> | <s2> <t2> | <s3> <t3> | <s4> <t4>; ( SENT-START ( $song ) SENT-END )
24.grammar k=3
$song = <s1> <t1> | <s2> <t2> | <s3> <t3>; ( SENT-START ( $song ) SENT-END )
25.grammar k=2
$song = <s1> <t1> | <s2> <t2>; ( SENT-START ( $song ) SENT-END )
26.Model.list
t5
27.File Proto sebelum proses klastering ~o <VecSize> 12 <MFCC>
~h "proto" <BeginHMM>
0.4 0 0 0 0
28.File proto sesudah proses klastering ~o
<STREAMINFO> 1 12
<VECSIZE> 12<NULLD><MFCC>
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
2.698003e+001 2.405364e+001 3.303415e+001 6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
<STATE> 3 <MEAN> 12
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
<STATE> 4 <MEAN> 12
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
2.698003e+001 2.405364e+001 3.303415e+001 6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
<STATE> 5 <MEAN> 12
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
2.698003e+001 2.405364e+001 3.303415e+001 6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
<STATE> 6 <MEAN> 12
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
2.698003e+001 2.405364e+001 3.303415e+001 6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
2.698003e+001 2.405364e+001 3.303415e+001 6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
<STATE> 8 <MEAN> 12
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
2.698003e+001 2.405364e+001 3.303415e+001 6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
<STATE> 9 <MEAN> 12
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12
2.698003e+001 2.405364e+001 3.303415e+001 6.577885e+001 9.071447e+001 9.425159e+001 1.860840e+002 1.286716e+002 1.323822e+002 1.288264e+002 1.000127e+002 7.256332e+001 <GCONST> 7.398481e+001
<STATE> 10 <MEAN> 12
7.201719e+000 7.284534e+000 1.837940e+001 -1.111463e+001 3.849891e+000 8.179285e+000
1.267514e+000 5.293317e+000 6.233066e+000 -6.754410e+000 -3.481625e+000 -3.218655e+000 <VARIANCE> 12