View
249
Download
14
Category
Preview:
Citation preview
i
KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG
MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana
Komputer Program Studi Teknik Informatika
Oleh :
Lorencius Echo Sujianto Putera
125314085
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
BIRD CLASSIFICATION BASED ON ITS CHIRPING SOUND USING
NEURAL NETWORK BACK PROPAGATION
A THESIS
Presented as Partial Fulfillment of Requirements to Obtain Sarjana
Komputer Degree in Informatics Engineering Department
By :
Lorencius Echo Sujianto Putera
125314085
INFORMATICS ENGINEERING STUDY PROGRAM
INFORMATICS ENGINEERING DEPARTMENT
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
HALAMAN PERSETUJUAN PEMBIMBING
SKRIPSI
KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG
MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK
Oleh :
Lorencius Echo Sujianto Putera
125314085
Telah disetujui oleh :
Pembimbing,
Dr. Cyprianus Kuntoro Adi, S.J., M.A., M.Sc. Tanggal : ...............................
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
HALAMAN PENGESAHAN
KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG
MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK
Dipersiapkan dan ditulis oleh :
LORENCIUS ECHO SUJIANTO PUTERA
NIM : 125314085
Telah dipertahankan di depan Panitia Penguji
pada tanggal 26 Agustus 2016
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap Tanda Tangan
Ketua : Eko Hari Parmadi S.Si, M.Kom .......................
Sekretaris : Dr. Anastasia Rita Widiarti .......................
Anggota : Dr. C. Kuntoro Adi, S.J., M.A., M.Sc. .......................
Yogyakarta ...............................
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
MOTTO
“Strength does not come from WINNING. Your struggles develop your strengths.
When you go through HARDSHIPS and decide not to SURRENDER, that is
strength.” – Arnold Schwarzenegger
“If you can do what you do best and be HAPPY you’re further along in life than
most people.” – Leonardo DiCaprio
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa di dalam skripsi yang saya
tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah
disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, ................................
Penulis
Lorencius Echo Sujianto Putera
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Lorencius Echo Sujianto Putera
NIM : 125314085
Demi pengembangan ilmu pengetahuan, saya memberikan kepada
Perpustakaan Universitas Sanata Dharma karya ilmiah yang berjudul :
KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG
MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya
memberikan kepada perpustakaan Universitas Sanata Dharma hak untuk
menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk
pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di
internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari
saya maupun memberikan royalti kepada saya selama tetap mencantumkan nama
saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di Yogyakarta
Pada tanggal .............................
Yang menyatakan
Lorencius Echo Sujianto Putera
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
ABSTRAK
Perkembangan teknologi yang semakin pesat memberikan kemudahan bagi
masyarakat dalam memenuhi kebutuhan, khususnya menyalurkan hobi terutama
untuk komunitas kicau mania. Burung selain memiliki keindahan fisik juga
memiliki keindahan suara yaitu suara kicaunya, terutama burung passerine atau
burung yang termasuk dalam ordo Passeriformes. Teknologi selain berperan
penting sebagai media untuk bertukar informasi mengenai seputar tips dalam
merawat burung, juga diharapkan untuk dapat memberikan fungsi lain, yaitu
mendeteksi suara kicau burung, sehingga masyarakat yang memiliki hobi serupa
dapat dengan mudah menentukan jenis burung berdasarkan suara kicaunya. Oleh
karena itu diperlukan sebuah sistem yang dapat mengklasifikasikan jenis burung
berdasarkan suara kicaunya.
Penelitian ini menghasilkan sebuah model klasifikasi untuk jenis burung.
Data yang digunakan merupakan data rekaman suara burung Cucak Hijau, Cucak
Rawa, dan Kenari yang didapatkan dari situs omkicau. Sistem menerapkan metode
MFCC (Mel Frequency Cepstral Coefficients) untuk cirinya dan Jaringan Syaraf
Tiruan Propagasi Balik untuk klasifikasinya.
Percobaan proses klasifikasi dengan Jaringan Syaraf Tiruan Propagasi Balik
dengan melakukan optimalisasi arsitektur jaringan dan pemilihan ciri menghasilkan
akurasi 100% untuk 13 koefisien, 99.72% untuk 26 dan 39 koefisien.
Kata Kunci : Klasifikasi, Passeriformes, MFCC, Jaringan Syaraf Tiruan
Backpropagation
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
Fast technological development gives people an easiness to occupy their
own needs, especially the hobby for community of chirping mania. Not only having
physical beauty but also bird has its beautiful sound which is its chirping sound,
mainly passerine birds or birds of Passeriformes order. The technology plays an
important role as a medium for exchanging information about tips on caring for
birds, but it is also expected to be able to provide another purpose, that is to detect
birds chirping sound, so that people who have the same hobby can easily determine
the type of bird by its chirping sound. Therefore we need a system that can classify
them.
This study resulted in a classification model for the type of birds. The
selected bird recording are used: Greater Green Leafbird, Straw-headed Bulbul, and
Canary. The recordings were obtained from omkicau sites. The system applies
MFCC (Mel Frequency Cepstral Coefficients) method for its feature and Neural
Network Backpropagation for classification.
Classification process experiment using Neural Network Backpropagation
by optimizing network architecture and selecting the feature give 100% accuracy
for 13 coefficients, 99.72% accuracy for 26 and 39 coefficients.
Keyword : Classification, Passeriformes, MFCC, Neural Network
Backpropagation
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus, yang telah
memberikan rahmat dan karunia yang berlimpah sehingga penulis dapat
menyelesaikan tugas akhir dengan baik.
Penulis menyadari bahwa pada saat pengerjaan tugas akhir ini penulis
mendapatkan banyak bantuan dari berbagai pihak, baik berupa dukungan,
perhatian, kritik, dan saran serta doa yang sangat penulis butuhkan demi kelancaran
dan mendapatkan hasil yang baik. Pada kesempatan ini penulis akan menyampaikan
ucapan terima kasih kepada :
1. Tuhan Yesus Kristus yang senantiasa mencurahkan kasih karunia-Nya serta
memberikan bimbingan dan berkat dalam setiap langkah yang telah penulis
lalui.
2. Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D. selaku Dekan Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
3. Dr. Cyprianus Kuntoro Adi, SJ., M.A., M.Sc. selaku dosen pembimbing
akademik dan pembimbing tugas akhir yang telah dengan sabar dan penuh
perhatian membimbing saya dalam penyusunan tugas akhir.
4. Dr. Anastasia Rita Widiarti M.Kom selaku Ketua Program Studi Teknik
Informatika yang selalu memberikan dukungan dan perhatian serta saran
kepada mahasiswa tugas akhir dalam pengerjaan tugas akhir.
5. Kedua orang tua tercinta Bapak Paulus Hari Kristanto dan Ibu Anastasia Sujiati
yang selalu mendoakan, memotivasi, dan memberikan dukungan moral maupun
materi kepada penulis, sehingga penulis dapat menyelesaikan tugas akhir ini.
6. Seluruh dosen Teknik Informatika atas ilmu yang telah diberikan selama
perkuliahan dan pengalaman-pengalaman yang sangat berarti bagi penulis.
7. Teman-temanku Kevin, Eva, Agustin, Pius, serta seluruh teman-temanku
sesama peminatan komputasi yang telah berjuang bersama dan saling
mendukung dalam penyusunan tugas akhir ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
8. Teman-teman Teknik Informatika 2012 Sanata Dharma, terima kasih atas
semangat dan perjuangan bersama yang telah kalian berikan kepada satu sama
lain.
9. Teman-temanku selain dari prodi TI, terima kasih atas dukungan yang telah
kalian berikan.
10. Terima kasih kepada semua pihak yang tidak dapat penulis sebutkan satu
persatu yang telah mendukung penyelesaian tugas akhir ini baik secara
langsung maupun tidak langsung.
Penulis menyadari bahwa masih adanya kekurangan dalam penulisan
laporan tugas akhir ini. Kritik dan saran sangat penulis harapkan untuk perbaikan
yang akan datang. Akhir kata, penulis berharap tulisan ini dapat berguna bagi
perkembangan ilmu pengetahuan dan wawasan pembaca.
Yogyakarta, .......................
Penulis
Lorencius Echo Sujianto Putera
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
DAFTAR ISI
HALAMAN JUDUL ............................................................................................ i
TITLE PAGE....................................................................................................... ii
HALAMAN PERSETUJUAN ............................................................................ iii
HALAMAN PENGESAHAN ............................................................................. iv
MOTTO............................................................................................................... v
PERNYATAAN KEASLIAN KARYA .............................................................. vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS ........................................................... vii
ABSTRAK ....................................................................................................... viii
ABSTRACT ....................................................................................................... ix
KATA PENGANTAR ......................................................................................... x
DAFTAR ISI ..................................................................................................... xii
DAFTAR TABEL ............................................................................................ xiv
DAFTAR GAMBAR ......................................................................................... xv
BAB I PENDAHULUAN .................................................................................... 1
1.1. Latar Belakang....................................................................................... 1
1.2. Perumusan Masalah ............................................................................... 2
1.3. Tujuan ................................................................................................... 2
1.4. Batasan Masalah .................................................................................... 2
1.5. Luaran Tugas Akhir ............................................................................... 3
1.6. Sistematika Penulisan ............................................................................ 3
BAB II LANDASAN TEORI .............................................................................. 5
2.1. Suara Burung ......................................................................................... 5
2.2. Passeriformes ......................................................................................... 5
2.3. Jenis-jenis Passeriformes ....................................................................... 6
2.4. Ekstraksi Ciri ......................................................................................... 8
2.4.1. Mel Frequency Cepstral Coefficients ........................................... 8
2.5. Jaringan Syaraf Tiruan ......................................................................... 12
2.5.1. Arsitektur Jaringan .................................................................... 12
2.5.2. Back Propagation ...................................................................... 14
2.6. Mempercepat Pelatihan Backpropagation............................................. 18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
2.7. K-Fold Cross Validation ...................................................................... 23
2.8. Confusion Matrix ................................................................................. 24
BAB III METODOLOGI ................................................................................... 25
3.1. Gambaran Penelitian ............................................................................ 25
3.1.1. Data .......................................................................................... 25
3.1.2. Preprocessing ............................................................................ 27
3.1.3. Ekstraksi Ciri ............................................................................ 28
3.1.4. Jaringan Syaraf Tiruan .............................................................. 31
3.1.5. Arsitektur Jaringan Syaraf Tiruan .............................................. 32
3.1.6. Metode Pengujian ..................................................................... 36
3.2. Kebutuhan Sistem ................................................................................ 36
3.3. Perancangan Antarmuka Sistem ........................................................... 37
BAB IV IMPLEMENTASI DAN ANALISA ..................................................... 42
4.1. Hasil Penelitian .................................................................................... 42
4.1.1. Pengujian Kombinasi Feature .................................................... 42
4.1.2. Optimalisasi Jaringan Syaraf Tiruan .......................................... 49
4.1.3. Percobaan Metode Training ....................................................... 50
4.1.4. Pengujian Data Tunggal ............................................................ 51
4.2. Analisa Hasil ....................................................................................... 53
BAB V PENUTUP ............................................................................................ 55
5.1. Kesimpulan.......................................................................................... 55
5.2. Saran ................................................................................................... 55
DAFTAR PUSTAKA ........................................................................................ 56
LAMPIRAN ...................................................................................................... 57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
DAFTAR TABEL
Tabel 2.1 Confusion Matrix (Diana dan Shidik, 2014) ....................................... 24
Tabel 3.1 Statistic Features Indices .................................................................... 30
Tabel 3.2 3 Fold Cross Validation ...................................................................... 31
Tabel 3.3 5 Fold Cross Validation ...................................................................... 31
Tabel 3.4 10 Fold Cross Validation .................................................................... 31
Tabel 4.1 Tabel Hasil Uji Data Tunggal ............................................................. 51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
DAFTAR GAMBAR
Gambar 2.1 Burung Cucak Hijau (Sandi, 2012) ................................................... 6
Gambar 2.2 Burung Cucak Rawa (Bellerby, 2014) ............................................... 7
Gambar 2.3 Burung Kenari (Emilio, 2013)........................................................... 7
Gambar 2.4 Ilustrasi Arsitektur Jaringan Lapis Tunggal (Siang, 2005) ............... 13
Gambar 2.5 Ilustrasi Arsitektur Jaringan Lapis Majemuk (Siang, 2005) ............. 14
Gambar 2.6 Ilustrasi Arsitektur JST Back Propagation (Siang, 2005) ................. 14
Gambar 2.7 Efek Penghalusan Momentum (Hagan & Demuth, 1996) ................ 19
Gambar 2.8 Lintasan dengan momentum (Hagan & Demuth, 1996) ................... 20
Gambar 2.9 Lintasan Variable Learning Rate (Hagan & Demuth, 1996) ............ 22
Gambar 3.1 Diagram blok sistem ....................................................................... 25
Gambar 3.2 Contoh Sinyal dan Spectogram Suara Burung Cucak Hijau ............. 26
Gambar 3.3 Contoh Sinyal dan Spectogram Suara Burung Cucak Rawa ............ 26
Gambar 3.4 Contoh Sinyal dan Spectogram Suara Burung Kenari...................... 27
Gambar 3.5 Contoh hasil ekstraksi ciri MFCC ................................................... 28
Gambar 3.6 Arsitektur jaringan pelatihan dan pengujian 1 hiddel layer .............. 32
Gambar 3.7 Contoh model jaringan 1 hidden layer dengan MFCC 13 coefficients
dan feature mean ................................................................................................ 33
Gambar 3.8 Arsitektur jaringan pelatihan dan pengujian 2 hidden layer ............. 34
Gambar 3.9 Contoh model jaringan 2 hidden layer dengan MFCC 13 coefficients
dan feature mean ................................................................................................ 35
Gambar 3.10 Rancangan Antarmuka Menu Utama Sistem ................................. 37
Gambar 3.11 Rancangan Antarmuka Ekstraksi Ciri ............................................ 38
Gambar 3.12 Rancangan Antarmuka Klasifikasi ................................................ 40
Gambar 4.1 Hasil Ekstraksi Ciri Suara ............................................................... 42
Gambar 4.2 Grafik akurasi untuk 3 fold cross validation .................................... 44
Gambar 4.3 Grafik akurasi untuk 5 fold cross validation .................................... 45
Gambar 4.4 Grafik akurasi untuk 10 fold cross validation .................................. 47
Gambar 4.5 Grafik hasil optimalisasi ................................................................. 49
Gambar 4.6 Grafik akurasi percobaan metode training ....................................... 50
Gambar 4.7 Tampilan hasil uji coba data tunggal burung cucak hijau ................. 51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
Gambar 4.8 Tampilan hasil uji coba data tunggal burung cucak rawa ................. 52
Gambar 4.9 Tampilan hasil uji coba data tunggal burung kenari ......................... 52
Gambar 4.10 Potongan grafik hasil percobaan 3 fold cross validation ................ 53
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Dengan perkembangan teknologi yang semakin pesat ini tentunya dapat
memberikan keuntungan bagi masyarakat, salah satunya adalah memberikan
kemudahan dalam memenuhi kebutuhan khususnya dalam menyalurkan hobinya
terutama untuk komunitas kicau mania. Burung selain memiliki keindahan fisik
juga memiliki keindahan suara, yaitu suara kicaunya. Di Indonesia sendiri ada
beberapa jenis burung yang umum di pelihara oleh masing-masing individu dalam
sebuah komunitas kicau mania, terutama burung passerine atau burung yang
termasuk dalam ordo Passeriformes. Dalam hal ini teknologi selain berperan
penting sebagai media untuk bertukar informasi mengenai seputar tips dalam
merawat burung, juga diharapkan untuk dapat memberikan fungsi lain, yaitu
mendeteksi suara kicau burung, sehingga masyarakat yang memiliki hobi serupa
dapat dengan mudah menentukan jenis burung. Maka, untuk memenuhi hal itu
diperlukan sebuah sistem yang dapat mengklasifikasikan jenis burung berdasarkan
suara kicaunya.
Pada tahun 2012 terdapat penelitian dengan judul “Klasifikasi Jenis Burung
Berdasarkan Suara Kicau Burung Menggunakan Wavelet Packet Decomposition
Dan Jaringan Syaraf Tiruan Self Organizing Map” (Annisa, dkk 2012). Penelitian
tersebut bertujuan untuk membuat sebuah sistem yang mampu mengklasifikasikan
jenis burung berdasarkan suara kicaunya dalam sebuah perlombaan kicau burung.
Nilai akurasi yang dihasilkan pada penelitian tersebut adalah 83.13% dengan
menggunakan parameter JST SOM, dan 93.75% dengan parameter Euclidean
Distance.
Pada tugas akhir ini penulis akan mencoba untuk mengklasifikasikan jenis
burung tersebut berdasarkan suara kicaunya dengan menggunakan Jaringan Syaraf
Tiruan metode Back Propagation.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
1.2. Perumusan Masalah
Ada beberapa hal yang harus diperhatikan berkaitan dengan proses
klasifikasi jenis burung berdasarkan suara kicaunya, mulai dari proses awal hingga
akhir. Hal tersebut dapat dirumuskan menjadi beberapa rumusan masalah, yaitu
sebagai berikut :
1. Bagaimana metode Jaringan Syaraf Tiruan Back Propagation mampu
mengklasifikasikan jenis burung berdasarkan perbedaan suaranya.
2. Berapakah akurasi yang dihasilkan oleh Jaringan Syaraf Tiruan Back
Propagation dalam mengklasifikasikan jenis burung.
Sebuah alat uji dapat dikatakan baik jika menghasilkan akurasi di atas 50%,
oleh karena itu perlu diketahui berapa nilai akurasi yang akan dihasilkan ketika
dilakukan proses klasifikasi dengan menggunakan Jaringan Syaraf Tiruan metode
Back Propagation.
1.3. Tujuan
Untuk menjawab rumusan-rumusan masalah yang ada, maka tujuan dari
tugas akhir ini dapat dijabarkan menjadi beberapa poin penting, yaitu sebagai
berikut :
1. Ekstraksi ciri suara kicau burung untuk mengetahui perbedaan dari
setiap suara kicau burung menggunakan metode Mel Frequency
Cepstral Coefficient.
2. Mengetahui hasil akurasi dalam mengklasifikasikan jenis burung
menggunakan Jaringan Syaraf Tiruan Back Propagation.
1.4. Batasan Masalah
Agar tahapan-tahapan pengerjaan tugas akhir ini lebih terfokus pada tujuan
yang telah ditetapkan, maka perlu adanya batasan-batasan masalah. Batasan-
batasan masalah tersebut, yaitu :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1. Suara burung kicau didapatkan dari sebuah situs berbagi informasi
seputar burung kicau yang bernama omkicau.
2. Format rekaman berekstensi .wav yang didapatkan dari hasil konversi
file .mp3.
3. Jenis burung yang dianalisa adalah burung Cucak Hijau, Cucak Rawa,
dan Kenari.
4. Alat uji yang dibangun bersifat tidak real time.
5. Jumlah sampel yang akan dianalisis sebanyak 120 sampel per jenis
burung.
6. Proses untuk ekstraksi ciri menggunakan toolbox yang telah disediakan
oleh Roger Jang (Jang, 2005).
1.5. Luaran Tugas Akhir
Suatu sistem yang mampu menerima masukkan berupa rekaman suara
burung kemudian menampilkan luaran berupa hasil klasifikasi, yaitu gambar dan
nama burung tersebut.
1.6. Sistematika Penulisan
Sistematika penulisan tugas akhir ini dibagi menjadi beberapa bab dengan
susunan sebagai berikut :
BAB I : PENDAHULUAN
Bab ini membahas latar belakang, rumusan masalah, tujuan, batasan
masalah, dan sistematika penulisan.
BAB II : LANDASAN TEORI
Bab ini membahas teori-teori yang mendukung dan menjadi dasar
pemecahan masalah, antara lain teori mengenai suara burung, dan jenis burung,
serta metode-metode seperti: Mel Frequency Cepstral Coefficient, dan Back
Propagation.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
BAB III : METODOLOGI PENELITIAN
Bab ini membahas analisa komponen-komponen yang akan digunakan
untuk pengerjaan tugas akhir, serta perancangan sistem secara lengkap.
BAB IV : IMPLEMENTASI DAN ANALISA HASIL
Bab ini membahas analisa hasil perancangan sistem, dan pengujian rekaman
suara burung.
BAB V : KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan dari hasil analisa dan saran-saran untuk
pengembangan lebih lanjut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB II
LANDASAN TEORI
Bab ini membahas penjabaran teori-teori yang bersangkutan dengan
penulisan Tugas Akhir ini. Teori-teori tersebut adalah Suara Burung, Pengertian
Passeriformes serta beberapa jenis Passeriformes yang akan dianalisa, Ekstraksi
Ciri, Jaringan Syaraf Tiruan, K-Fold Cross Validation, Confusion Matrix.
2.1. Suara Burung
Bagian utama mekanisme produksi suara pada burung adalah paru-paru,
bronkus, syrinx, trakea, larynx, mulut, dan paruh (Fagerlund, 2004). Syrinx burung
merupakan instrumen ganda yang ada dalam dada, pada bagian trakea yang terbagi
menjadi dua bronkus. Sebagian dari syrinx terletak pada masing-masing bronkus
dan mampu membuat suara. Hal ini berarti bahwa burung dapat bernyanyi dengan
nada yang berbeda secara bersamaan, atau bahkan dapat bernyanyi duet dengan
dirinya sendiri.
Tidak semua burung bernyanyi dan tidak semua suara yang dihasilkan
merupakan nyanyian (songs). Bernyanyi hanya terbatas pada ordo Passeriformes,
atau burung bertengger. Ini berarti bahwa setidaknya setengah dari burung-burung
yang ada di dunia tidak dapat bernyanyi. Kebanyakan burung menggunakan
vokalisasi pendek, suara tersebut memiliki banyak fungsi, dan secara umum
dinamakan panggilan (calls) untuk membedakannya dengan nyanyian (songs).
Nyanyian (songs) digunakan untuk tujuan yang berbeda dari panggilan
(calls). Hal inilah yang menarik hati manusia.
2.2. Passeriformes
Passeriform (ordo Passeriformes) dikenal sebagai burung passerine atau
burung bertengger, merupakan ordo burung terbesar yang ada di bumi. Ordo
Passeriformes terbagi menjadi dua subordo, yaitu Tyranni dan Passeri. Subordo
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
Tyranni terdiri dari sekitar 1.250 spesies yang dianggap sederhana dan
dikelompokkan sebagai suboscines. Sedangkan burung pada subordo Passeri
dikelompokkan sebagai oscines atau burung penyanyi, Passeri terdiri dari sekitar
4.500 spesies (Passeriform, 2015).
2.3. Jenis-jenis Passeriformes
Dengan melihat kembali trend yang pernah terjadi pada beberapa tahun ini
(perlombaan-perlombaan yang pernah digelar), ada beberapa jenis burung
passerine yang umum dipelihara oleh kicau mania. Maka dari itu, jenis burung
passerine yang akan di analisa pada tugas akhir ini adalah: Cucak Hijau (Chloropsis
sonnerati), Cucak Rawa (Pycnonotus zeylanicus), dan Kenari (Serinus canaria).
Informasi rinci ketiga jenis burung tersebut adalah sebagai berikut :
1. Cucak Hijau
Gambar 2.1 Burung Cucak Hijau (Sandi, 2012)
Ordo : Passeriformes
Famili : Chloropseidae
Genus : Chloropsis
Nama Ilmiah : Chloropsis sonnerati
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
2. Cucak Rawa
Gambar 2.2 Burung Cucak Rawa (Bellerby, 2014)
Ordo : Passeriformes
Famili : Pycnonotidae
Genus : Pycnonotus
Nama Ilmiah : Pycnonotus zeylanicus
3. Kenari
Gambar 2.3 Burung Kenari (Emilio, 2013)
Ordo : Passeriformes
Famili : Fringillidae
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
Genus : Serinus
Nama Ilmiah : Serinus canaria
2.4. Ekstraksi Ciri
Proses ini merupakan tahapan yang paling penting dalam
mengklasifikasikan suara kicau burung passerine. Dalam ekstraksi ciri ini akan
menghasilkan informasi penting yang dapat membedakan suara kicau ketiga jenis
burung tersebut, seperti frekuensi, amplitudo, intensitas, dan sebagainya.
2.4.1. Mel Frequency Cepstral Coefficients
MFCC didasarkan atas variasi bandwith kritis terhadap frekuensi pada
telinga manusia yang merupakan filter yang bekerja secara linier pada frekuensi
rendah dan bekerja secara logaritmik pada frekuensi tinggi. Filter ini digunakan
untuk menangkap karakteristik fonetis penting dari sinyal ucapan. Untuk meniru
kondisi telinga, karakteristik ini digambarkan dalam skala mel-frekuensi, yang
merupakan frekuensi linier di bawah 1000 Hz dan frekuensi logaritmik di atas 1000
Hz (Setiawan, dkk 2011).
1. Pre-emphasis
Menurut Jang (2005), sinyal suara 𝑠(𝑛) dikirim ke filter high-pass :
𝒔𝟐(𝒏) = 𝒔(𝒏) − 𝒂 ∗ 𝒔(𝒏 − 𝟏), ( 2.1 )
dimana 𝑠2(𝑛) adalah sinyal output dan nilai 𝑎 biasanya antara 0.9 dan 1.0. Z-
transform dari filter adalah
𝑯(𝒛) = 𝟏 − 𝒂 ∗ 𝒛−𝟏. ( 2.2 )
Tujuan dari pre-emphasis adalah untuk mengkompensasi bagian frekuensi tinggi
yang ditekan pada saat produksi suara manusia. Selain itu juga dapat memperkuat
forman penting dari frekuensi tinggi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2. Frame Blocking
Dalam langkah ini sinyal wicara kontinyu diblok menjadi frame-frame N
sampel, dengan frame-frame berdekatan dengan spasi M (M < N). Frame pertama
terdiri dari N sampel pertama. Frame kedua dengan M sampel setelah frame
pertama, dan overlap dengan N–M sampel. Dengan cara yang sama, frame ketiga
dimulai 2M sampel setelah frame pertama (atau M sampel setelah frame kedua) dan
overlap dengan N–2M sampel. Proses ini berlanjut hingga semua wicara dihitung
dalam satu atau banyak frame. Nilai tipikal untuk N dan M adalah N = 256 dan M
=100 (Mustofa, 2007).
3. Hamming Windowing
Langkah berikutnya adalah pemrosesan dengan window pada masing-
masing frame individual untuk meminimalisasi sinyal tak kontinyu pada awal dan
akhir masing-masing frame. Window dinyatakan sebagai w(n), 0 ≤ n ≤ N−1, dengan
N adalah jumlah sampel dalam masing-masing frame, 𝑥1(𝑛) adalah sinyal input
dan hasil windowing adalah 𝑦1(𝑛).
𝒚𝟏(𝒏) = 𝒙𝟏(𝒏)𝒘(𝒏), 𝟎 ≤ 𝒏 ≤ 𝑵 − 𝟏 ( 2.3 )
Jenis window yang digunakan adalah window Hamming.
𝒘(𝒏) = 𝟎. 𝟓𝟒 − 𝟎. 𝟒𝟔 𝐜𝐨𝐬 [𝟐𝝅𝒏
𝑵−𝟏] , 𝟎 ≤ 𝒏 ≤ 𝑵 − 𝟏 ( 2.4 )
Dengan N adalah jumlah sampel.
4. Fast Fourier Transform
Langkah pemrosesan berikutnya adalah transformasi fourier cepat/ fast
fourier transform (FFT), FFT ini mengubah masing-masing frame N sampel dari
domain waktu menjadi domain frekuensi. FFT adalah algoritma cepat untuk
mengimplementasikan discrete fourier transform (DFT) dengan didefinisikan pada
kumpulan (set) N sampel, {𝑋𝑛}, seperti berikut ini
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
𝑿𝒏 = ∑ 𝒙𝒌𝒆−𝟐𝝅𝒋𝒌𝒏 𝑵⁄𝑵−𝟏𝒌=𝟎 , 𝒏 = 𝟎, 𝟏, 𝟐, … , 𝑵 − 𝟏 ( 2.5 )
dengan,
𝑥𝑘 = deretan aperiodik dengan nilai 𝑁
𝑁 = jumlah sampel
5. Triangular Bandpass Filters
Studi psikofisikal menunjukkan bahwa persepsi manusia dari kandungan
frekuensi suara pada sinyal wicara tidak mengikuti skala linier. Untuk
masingmasing nada dengan frekuensi aktual, f dalam Hz, pitch diukur dengan skala
‘mel’. Skala mel-frequency adalah frekuensi linier berada dibawah 1000 Hz dan
bentuk logaritmik berada diatas 1000 Hz. Sebagai titik referensi adalah pitch
dengan tone 1 kHz, 40 dB diatas nilai batas ambang pendengaran, ini dinyatakan
1000 mel. Pendekatan persamaan untuk menghitung mel dalam frekuensi f (Hz)
adalah
𝒎𝒆𝒍(𝒇) = 𝟐𝟓𝟗𝟓𝒙 𝐥𝐨𝐠𝟏𝟎(𝟏 + 𝒇 𝟕𝟎𝟎⁄ ) ( 2.6 )
Salah satu pendekatan simulasi spektrum yaitu menggunakan filter bank,
satu filter untuk masing-masing komponen mel-frequency yang diinginkan. Filter
bank mempunyai respon frekuensi bandpass segitiga dan jarak bandwidth
ditentukan oleh konstanta interval mel-frequency.
6. Dicrete Cosine Transform
Langkah selanjutnya yaitu mengubah spektrum log mel menjadi domain
waktu. Hasil ini disebut mel frequency cepstrum coefficient (MFCC). Reprentasi
cepstral dari spectrum wicara memberikan reprentasi baik dari sifat-sifat spektral
lokal sinyal untuk analisis frame yang diketahui. Karena koefisien mel spectrum
adalah bilangan nyata. Dengan mengubahnya menjadi domain waktu menggunakan
discrete cosine transform (DCT). Jika koefisien spektrum daya mel hasilnya adalah
�̃�𝑘 , 𝑘 = 1,2, … , 𝐾, sehingga MFCC dapat dihitung, 𝑐�̃� adalah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
�̃�𝒏 = ∑ (𝐥𝐨𝐠 �̃�𝒌) 𝐜𝐨𝐬 [𝒏 (𝒌 −𝟏
𝟐)
𝝅
𝒌]𝒌
𝒌=𝟏 , 𝒏 = 𝟏, 𝟐, … , 𝒌 ( 2.7 )
Dimana 𝑐�̃� adalah koefisien cepstrum mel-frequency dan �̃�𝑘 adalah
koefisien daya mel.
7. Log Energy
Merupakan salah satu cara untuk menambah nilai koefisien yang dihitung
dari linear prediction atau mel-cepstrum, nilai tersebut merupakan log energy
signal. Ini berarti pada setiap frame terdapat nilai energi yang ditambahkan, berikut
rumus untuk menghitung nilai energi :
𝑬𝒎 = 𝐥𝐨𝐠 ∑ 𝒙_𝒘𝒊𝒏𝒅𝒐𝒘𝒆𝒅𝟐(𝒌; 𝒎)𝑲−𝟏𝑲=𝟎 ( 2.8 )
x_windowed = sinyal hasil windowing, k = jumlah frame, dan m = panjang frame
(Sidiq, dkk 2015).
8. Delta Cepstrum
Secara umum metode yang digunakan untuk mandapatkan informasi dari
ciri yang dinamis biasa disebut dengan delta-features. Turunan waktu dari ciri dapat
dihitung dengan beberapa metode, hasil dari perhitungan delta akan ditambahkan
ke vektor ciri, sehingga menghasilkan vektor ciri yang lebih besar. Nilai dari delta
akan diturunkan sekali lagi terhadap waktu menjadi nilai delta-delta pada beberapa
kasus delta-delta disebut dengan koefisien percepatan, karena nilai tersebut turunan
dari kuadrat waktu dari koefisien.
Persamaan untuk menghitung feature ini adalah
∆𝑪𝒎(𝒕) = [𝑺𝒕 = −𝑴𝑴𝑪𝒎(𝒕 + 𝒕)𝒕]/[𝑺𝒕 = −𝑴𝑴𝒕𝟐], ( 2.9 )
Nilai M biasanya bernilai 2. Jika menambahkan kecepatan, feature berdimensi 26.
Jika menambahkan baik kecepatan dan akselerasi, dimensi feature menjadi 39.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Pada umumnya sistem pengenalan suara menggunakan 39 feature ini untuk
mengenali (Jang, 2005).
2.5. Jaringan Syaraf Tiruan
Jaringan syaraf tiruan (JST) adalah sistem pemroses informasi yang
memiliki karakteristik mirip dengan jaringan syaraf biologis (Siang, 2005).
Jaringan syaraf tiruan dibentuk sebagai generalisasi model matematika dari
jaringan syaraf biologis, dengan asumsi bahwa :
1. Pemrosesan informasi terjadi pada banyak elemen sederhana (neuron).
2. Sinyal dikirimkan diantara neuron-neuron melalui penghubung-
penghubung.
3. Penghubung antar neuron memiliki bobot yang akan memperkuat atau
memperlemah sinyal.
4. Untuk menentukan output, setiap neuron menggunakan fungsi aktivasi
(biasanya bukan fungsi linier) yang dikenakan pada jumlahan input yang
diterima. Besarnya output ini selanjutnya dibandingkan dengan suatu
batas ambang.
Jaringan Syaraf Tiruan ditentukan oleh 3 hal :
1. Pola hubungan antar neuron (disebut arsitektur jaringan).
2. Metode untuk menentukan bobot penghubung (disebut metode
training/learning/algoritma).
3. Fungsi aktivasi.
2.5.1. Arsitektur Jaringan
Beberapa arsitektur jaringan yang sering dipakai dalam jaringan syaraf
tiruan antara lain :
1. Jaringan Lapis Tunggal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Dalam jaringan ini, sekumpulan input neuron dihubungkan langsung
dengan sekumpulan output-nya. Dalam beberapa model (misal perceptron), hanya
ada sebuah unit neuron output.
Gambar 2.4 Ilustrasi Arsitektur Jaringan Lapis Tunggal (Siang, 2005)
Pada gambar 2.4 terdapat n unit input (𝑥1, 𝑥𝑖, … , 𝑥𝑛) dan m buah unit output
(𝑌1, 𝑌𝑗 , … , 𝑌𝑚) kemudian (𝑤11 , 𝑤𝑗1, … , 𝑤𝑚) yang menyatakan bobot hubungan
antara unit ke-i dalam input dengan unit ke-j dalam output. Bobot-bobot ini saling
independen. Selama proses pelatihan, bobot-bobot tersebut akan dimodifikasi untuk
meningkatkan keakuratan hasil.
2. Jaringan Lapis Majemuk
Jaringan lapis majemuk merupakan perluasan dari jaringan lapis tunggal.
Dalam jaringan ini, selain unit input dan output, ada unit-unit lain diantara unit input
dan output (sering disebut lapis tersembunyi). Dalam jaringan ini dimungkinkan
ada beberapa lapis tersembunyi. Unit dalam satu lapis tidak saling berhubungan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
Gambar 2.5 Ilustrasi Arsitektur Jaringan Lapis Majemuk (Siang, 2005)
Pada gambar 2.5 terdapat n buah unit input (𝑥1, 𝑥𝑖, … , 𝑥𝑛) dan m buah unit
output (𝑌1, 𝑌𝑗, … , 𝑌𝑚) , sebuah lapis tersembunyi yang terdiri dari p buah unit
(𝑧1, … , 𝑧𝑝). Jaringan ini dapat menyelesaikan masalah yang lebih kompleks.
2.5.2. Back Propagation
Jaringan Syaraf Tiruan Back Propagation membandingkan perhitungan
keluaran dengan target keluaran dan menghitung nilai error untuk setiap unit
jaringan.
1. Arsitektur Back Propagation
Gambar 2.6 Ilustrasi Arsitektur JST Back Propagation (Siang, 2005)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
Gambar 2.6 merupakan arsitektur jaringan syaraf tiruan back propagation
dengan n buah input ditambah sebuah bias, sebuah lapis tersembunyi yang terdiri
dari p unit ditambah sebuah bias, dan sebuah lapis unit keluaran.
2. Fungsi Aktivasi
Dalam jaringan syaraf tiruan back propagation, fungsi aktivasi yang dipakai
harus memenuhi beberapa syarat, yaitu : kontinu, terdeferensial dengan mudah dan
merupakan fungsi yang tidak turun. Salah satu fungsi yang memenuhi ketiga syarat
tersebut sehingga sering dipakai adalah fungsi sigmoid biner yang memiliki range
(0,1).
𝒇(𝒙) =𝟏
𝟏+𝒆−𝒙 dengan turunan 𝒇′(𝒙) = 𝒇(𝒙)(𝟏 − 𝒇(𝒙)) ( 2.10 )
Fungsi lain yang sering dipakai adalah sigmoid bipolar dengan range (-1,1).
𝒇(𝒙) =𝟐
𝟏+𝒆−𝒙 − 𝟏 dengan turunan 𝒇′(𝒙) =(𝟏+𝒇(𝒙))(𝟏−𝒇(𝒙))
𝟐 ( 2.11 )
Fungsi sigmoid memiliki nilai maksimum = 1. Maka untuk pola yang
targetnya > 1, pola masukkan dan keluaran harus terlebih dahulu ditransformasi
sehingga semua polanya memiliki range yang sama seperti fungsi sigmoid yang
dipakai. Alternatif lain adalah menggunakan fungsi aktivasi sigmoid hanya pada
lapis yang bukan lapis keluaran. Pada lapis keluaran, fungsi aktivasi yang dipakai
adalah fungsi identitas : 𝑓(𝑥) = 𝑥.
3. Proses Pelatihan Back Propagation
Proses Pelatihan Jaringan Syaraf Tiruan Back Propagation terdiri dari 3
proses, yaitu propagasi maju, propagasi mundur, dan perubahan bobot. Ketiga
proses tersebut dilakukan secara berulang sampai kondisi penghentian terpenuhi.
Umumnya penghentian yang dipakai adalah iterasi dan error.
1. Propagasi Maju
Selama propagasi maju, sinyal masukkan (= 𝑥𝑖) dipropagasikan ke
lapis tersembunyi menggunakan fungsi aktivasi yang ditentukan. Keluaran
dari setiap unit lapis tersembunyi (= 𝑧𝑗) tersebut selanjutnya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
dipropagasikan maju lagi ke lapis tersembunyi di atasnya. Demikian
seterusnya hingga mendapatkan luaran jaringan (= 𝑦𝑘).
Berikutnya, luaran jaringan (= 𝑦𝑘) dibandingkan dengan target
yang harus dicapai (= 𝑡𝑘). Selisih 𝑡𝑘 − 𝑦𝑘 adalah error yang terjadi. Jika
nilai error lebih kecil dari yang telah ditentukan, maka iterasi dihentikan,
jika tidak, maka bobot setiap garis dimodifikasi untuk mengurangi error
yang terjadi.
2. Propagasi Mundur
Berdasarkan error 𝑡𝑘 − 𝑦𝑘 , dihitung faktor 𝛿𝑘(𝑘 = 1,2, … , 𝑚) yang
dipakai untuk mendistribusikan error di unit 𝑦𝑘 ke semua unit tersembunyi
yang terhubung langsung dengan 𝑦𝑘 . 𝛿𝑘 juga dipakai untuk mengubah bobot
garis yang berhubungan langsung dengan unit luaran.
Dengan cara yang sama, dihitung faktor 𝛿𝑗 di setiap unit lapis
tersembunyi sebagai dasar perubahan bobot semua garis yang berasal dari unit
tersembunyi di bawahnya. Demikian seterusnya hingga semua faktor 𝛿 di unit
tersembunyi yang berhubungan langsung dengan unit masukkan dihitung.
3. Perbaikan Bobot
Setelah semua faktor 𝛿 dihitung, bobot semua garis dimodifikasi
bersamaan. Perubahan bobot suatu garis didasarkan atas faktor 𝛿 neuron di
lapis atasnya.
Secara umum, algoritma pelatihan untuk jaringan back propagation
adalah sebagai berikut :
1. Inisialisasi semua bobot dengan bilangan acak kecil.
2. Jika kondisi penghentian belum terpenuhi, lakukan langkah 3-10.
3. Untuk setiap pasang data pelatihan, lakukan langkah 4-9.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
4. Tiap unit masukkan menerima sinyal dan meneruskannya ke unit
tersembunyi di atasnya.
5. Hitung semua luaran di unit tersembunyi 𝑧𝑗(𝑗 = 1,2, … , 𝑝)
𝒛_𝒏𝒆𝒕𝒋 = 𝒗𝒋𝟎 + ∑ 𝒙𝒊𝒗𝒋𝒊𝒏𝒊=𝟏 ( 2.12 )
𝒛𝒋 = 𝒇(𝒛_𝒏𝒆𝒕𝒋) =𝟏
𝟏+𝒆−𝒛_𝒏𝒆𝒕𝒋
( 2.13 )
6. Hitung semua luaran jaringan di unit 𝑦𝑘(𝑘 = 1,2, … , 𝑚)
𝒚_𝒏𝒆𝒕𝒌 = 𝒘𝒌𝟎 + ∑ 𝒙𝒋𝒘𝒌𝒋𝒏𝒋=𝟏 ( 2.14 )
𝒚𝒌 = 𝒇(𝒚_𝒏𝒆𝒕𝒌) =𝟏
𝟏+𝒆−𝒚_𝒏𝒆𝒕𝒌 ( 2.15 )
7. Hitung faktor 𝛿 unit luaran berdasarkan error di setiap unit luaran
𝑦𝑘(𝑘 = 1,2, … , 𝑚)
𝜹𝒌 = (𝒕𝒌 − 𝒚𝒌)𝒇′(𝒚𝒏𝒆𝒕𝒌) = (𝒕𝒌 − 𝒚𝒌)𝒚𝒌(𝟏 − 𝒚𝒌) ( 2.16 )
Hitung suku perubahan bobot 𝑤𝑘𝑗 dengan laju percepatan α
∆𝒘𝒌𝒋 = 𝜶𝜹𝒌𝒛𝒋 ; 𝒌 = 𝟏, 𝟐, … , 𝒎 ; 𝒋 = 𝟎, 𝟏, … , 𝒑 ( 2.17 )
8. Hitung faktor 𝛿 unit tersembunyi berdasarkan error di setiap unit
tersembunyi 𝑧𝑗(𝑗 = 1,2, … , 𝑝)
𝜹_𝒏𝒆𝒕𝒋 = ∑ 𝜹𝒌𝒘𝒌𝒋𝒎𝒌=𝟏 ( 2.18 )
Faktor 𝛿 unit tersembunyi :
𝜹𝒋 = 𝜹_𝒏𝒆𝒕 𝒋𝒇′(𝒛_𝒏𝒆𝒕𝒋) = 𝜹_𝒏𝒆𝒕𝒋𝒛𝒋(𝟏 − 𝒛𝒋) ( 2.19 )
Hitung suku perubahan bobot 𝑣𝑖𝑗
∆𝒗𝒊𝒋 = 𝜶𝜹𝒋𝒙𝒊 ; 𝒋 = 𝟏, 𝟐, … , 𝒑 ; 𝒊 = 𝟎, 𝟏, … , 𝒏 ( 2.20 )
9. Hitung semua perubahan bobot
Perubahan bobot garis yang menuju ke unit luaran :
𝒘𝒌𝒋(𝒃𝒂𝒓𝒖) = 𝒘𝒌𝒋(𝒍𝒂𝒎𝒂) + ∆𝒘𝒌𝒋 (𝒌 = 𝟏, 𝟐, … , 𝒎 ; 𝒋 = 𝟎, 𝟏, … , 𝒑)
( 2.21)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
Perubahan bobot garis yang menuju ke unit tersembunyi :
𝒗𝒋𝒊(𝒃𝒂𝒓𝒖) = 𝒗𝒋𝒊(𝒍𝒂𝒎𝒂) + ∆𝒗𝒋𝒊 (𝒋 = 𝟏, 𝟐, … , 𝒑 ; 𝒊 = 𝟎, 𝟏, … , 𝒏)
( 2.22 )
10. Bandingkan kondisi penghentian.
2.6. Mempercepat Pelatihan Backpropagation
Metode standar backpropagation seringkali terlalu lambat untuk keperluan
praktis. Beberapa modifikasi dilakukan terhadap standar backpropagation dengan
cara mengganti fungsi pelatihannya (Siang, 2005).
Secara umum, modifikasi dapat dikelompokkan dalam 2 kategori. Kategori
pertama adalah metode yang menggunakan teknik heuristik yang dikembangkan
dari metode penurunan tercepat yang dipakai dalam standar backpropagation.
Kategori kedua adalah menggunakan metode optimisasi numerik selain penurunan
tercepat. Beberapa metode yang dipakai sebagai modifikasi adalah metode gradien
conjugate, quasi Newton, dll. Dalam subbab berikut ini dibicarakan dahulu tentang
beberapa modifikasi yang masuk dalam kategori pertama (backpropagation dengan
momentum, variabel laju pemahaman, dan backpropagation resilient). Berikutnya
barulah dibahas tentang beberapa metode yang masuk dalam kategori kedua.
Beberapa metode yang dipakai untuk mempercepat pelatihan
backpropagation adalah sebagai berikut :
1. Metode Penurunan Gradien dengan Momentum (traingdm)
Meskipun metodenya paling sederhana, tapi metode penurunan gradien
sangat lambat dalam kecepatan proses iterasinya. Ini terjadi karena kadang-kadang
arah penurunan tercepat bukanlah arah yang tepat untuk mencapai titik minimum
globalnya.
Modifikasi metode penurunan tercepat dilakukan dengan menambahkan
momentum. Dengan momentum, perubahan bobot tidak hanya didasarkan atas
error yang terjadi pada epoch pada waktu itu. Perubahan bobot saat ini dilakukan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
dengan memperhitungkan juga perubahan bobot pada epoch sebelumnya. Dengan
demikian kemungkinan terperangkap ke titik minimum lokal dapat dihindari.
Menurut Hagan dan Demuth (1996), sebelum mengaplikasikan momentum
ke dalam sebuah aplikasi jaringan syaraf, akan dibuktikan dalam sebuah ilustrasi
efek penghalusan dengan mempertimbangkan urutan pertama filter berikut :
𝒚(𝒌) = 𝜸𝒚(𝒌 − 𝟏) + (𝟏 − 𝜸) 𝒘(𝒌), ( 2.23 )
dimana 𝑤(𝑘) adalah input ke filter, 𝑦(𝑘) adalah output dari filter, dan 𝛾 adalah
koefisien momentum yang harus memenuhi
𝟎 ≤ 𝜸 < 𝟏. ( 2.24 )
Efek dari filter ini ditunjukkan pada gambar 2.7. Pada contoh ini, input ke filter
diambil dari gelombang sinus:
𝒘(𝒌) = 𝟏 + 𝐬𝐢𝐧 (𝟐𝝅𝒌
𝟏𝟔), ( 2.25 )
dan koefisien momentum yang ditetapkan pada 𝛾 = 0.9 (grafik kiri) dan 𝛾 = 0.98
(grafik kanan). Dari gambar tersebut dapat dilihat bahwa osilasi dari filter output
kurang dari osilasi filter input. Selain itu, dengan meningkatnya 𝛾, osilasi pada filter
output berkurang. Perhatikan juga bahwa rata-rata filter output sama dengan rata-
rata filter input, meskipun dengan meningkatnya 𝛾, filter output merespon dengan
lebih lambat.
Gambar 2.7 Efek Penghalusan Momentum (Hagan & Demuth, 1996)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Untuk memperingkas, filter cenderung mengurangi jumlah osilasi, sementara masih
melacak nilai rata-rata. Untuk melihat bagaimana hal ini bekerja pada permasalahan
jaringan syaraf, pertama-tama parameter pada persamaan berikut diperbarui :
∆𝑾𝒎(𝒌) = −𝜶𝒔𝒎(𝜶𝒎−𝟏)𝑻, ( 2.26 )
∆𝒃𝒎(𝒌) = −𝒂𝒔𝒎. ( 2.27 )
Ketika filter momentum ditambahkan untuk menggantikan parameter, maka
didapatkan persamaan untuk modifikasi momentum backpropagation :
∆𝑾𝒎(𝒌) = 𝜸∆𝑾𝒎(𝒌 − 𝟏) − (𝟏 − 𝜸) 𝒂𝒔𝒎(𝒂𝒎−𝟏)𝑻, ( 2.28 )
∆𝒃𝒎(𝒌) = 𝛄∆𝒃𝒎(𝒌 − 𝟏) − (𝟏 − 𝜸)𝒂𝒔𝒎. ( 2.29 )
Ketika mengaplikasikan persamaan modifikasi ini, maka akan memperoleh hasil
seperti pada gambar 2.8.
Gambar 2.8 Lintasan dengan momentum (Hagan & Demuth, 1996)
Dari gambar di atas filter cenderung membuat lintasan berjalan terus ke arah yang
sama, semakin besar nilai 𝛾 maka semakin banyak momentum yang terdapat pada
lintasan.
2. Variable Learning Rate (traingda, traingdx)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Dalam standar backpropagation, laju pemahaman berupa suatu konstanta
yang nilainya tetap selama iterasi. Akibatnya, unjuk kerja algoritma sangat
dipengaruhi oleh besarnya laju pemahaman yang dipakai. Secara praktis, sulit untuk
menentukan besarnya laju pemahaman yang paling optimal sebelum pelatihan
dilakukan. Laju pemahaman yang terlalu besar maupun terlalu kecil akan
menyebabkan pelatihan menjadi lambat.
Pelatihan akan lebih cepat apabila laju pemahaman dapat diubah ubah
besarnya selama proses pelatihan. Jika error sekarang lebih besar dibandingkan
error sebelumnya, maka laju pemahaman diturunkan. Jika sebaliknya, maka laju
pemahaman diperbesar. Dengan demikian laju pemahaman dapat dibuat sebesar
besarnya dengan tetap mempertahankan kestabilan proses.
Menurut Hagan dan Demuth (1996), ada banyak pendekatan untuk
mengubah learning rate (laju pemahaman). Salah satunya dengan cara yang paling
mudah, dimana learning rate berubah berdasarkan performa sebuah algoritma.
Aturan untuk variable learning rate backpropagation adalah sebagai berikut :
a. Jika error kuadrat (pada semua training set) meningkat lebih dari
persentase yang ditentukan 𝜁 (umumnya satu hingga lima persen)
setelah perubahan bobot, maka perubahan bobot diabaikan, learning
rate dikalikan dengan faktor 0 < 𝑝 < 1, dan koefisien momentum 𝛾
(jika digunakan) diberi nilai nol.
b. Jika error kuadrat berkurang setelah perubahan bobot, maka perubahan
bobot diterima dan learning rate dikalikan dengan faktor 𝜂 > 1. Jika 𝛾
sebelumnya diberi nilai nol, maka akan diubah menjadi nilai aslinya.
c. Jika error kuadrat meningkat namun kurang dari 𝜁 , maka perubahan
bobot diterima tetapi learning rate dan koefisien momentum tidak
berubah.
Dengan menggunakan parameter awal yang telah digunakan pada gambar
2.8 dan menambahkan parameter baru :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
𝜂 = 1.05, 𝑝 = 0.7, dan 𝜁 = 4%, maka akan didapatkan hasil seperti pada
gambar 2.9.
Gambar 2.9 Lintasan Variable Learning Rate (Hagan & Demuth, 1996)
3. Resilient Backpropagation (trainrp)
Jaringan backpropagation umumnya menggunakan fungsi aktivasi sigmoid.
Fungsi sigmoid akan menerima masukan dari range tak berhingga menjadi keluaran
pada range [0,1]. Semakin jauh titik dari 𝑥 = 0, semakin kecil gradiennya. Pada
titik yang cukup jauh dari 𝑥 = 0, gradiennya mendekati 0. Hal ini menimbulkan
masalah pada waktu menggunakan metode penurunan tercepat (yang iterasinya
didasarkan atas gradien). Gradien yang kecil menyebabkan perubahan bobot juga
kecil, meskipun masih jauh dari titik optimal.
Masalah ini diatasi dalam resilient backpropagation dengan cara membagi
arah dan perubahan bobot menjadi dua bagian yang berbeda. Ketika menggunakan
penurunan tercepat, yang diambil hanya arahnya saja. Besarnya perubahan bobot
dilakukan dengan cara lain (Siang, 2009).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
4. Gradien Conjugate (traincgf, traincgp, traincgb)
Dalam standar backpropagation, bobot dimodifikasi pada arah penurunan
tercepat. Meskipun penurunan fungsi berjalan cepat, tapi tidak menjamin akan
konvergen dengan cepat. Dalam algoritma gradien conjugate, pencarian dilakukan
sepanjang arah conjugate. Dalam banyak kasus, pencarian ini lebih cepat. Ada
berbagai metode pencarian yang dilakukan berdasarkan prinsip gradien conjugate,
antara lain Fletcher-Reeves (‘traincgf’), Polak-Ribiere (‘traincgp’), Powel Beale
(‘traincgb’).
Menurut Hagan & Demuth (1996), langkah-langkah dalam gradien
conjugate adalah sebagai berikut :
a. Memilih arah pencarian pertama 𝑝0 menjadi gradien negatif
𝒑𝟎 = −𝒈𝟎, ( 2.30 )
b. Kemudian memilih learning rate 𝛼𝑘 untuk meminimalisasi fungsi
bersamaan dengan arah pencarian :
𝒙𝒌+𝟏 = 𝒙𝒌 + 𝜶𝒌𝒑𝒌, ( 2.31 )
c. Lalu memilih arah pencarian selanjutnya berdasarkan persamaan
𝒑𝒌 = −𝒈𝒌 + 𝜷𝒌𝒑𝒌−𝟏, ( 2.32 )
dengan persamaan berikut ini untuk menghitung nilai 𝛽𝑘
𝜷𝒌 =∆𝒈𝒌−𝟏
𝑻 𝒈𝒌
∆𝒈𝒌−𝟏𝑻 𝒑𝒌−𝟏
atau 𝜷𝒌 =𝒈𝒌
𝑻𝒈𝒌
𝒈𝒌−𝟏𝑻 𝒈𝒌−𝟏
atau 𝜷𝒌 =∆𝒈𝒌−𝟏
𝑻 𝒈𝒌
𝒈𝒌−𝟏𝑻 𝒈𝒌−𝟏
( 2.33 )
d. Jika algoritma belum konvergen maka lanjut pada langkah ke-2.
2.7. K-Fold Cross Validation
K-Fold Cross Validation merupakan teknik umum untuk menguji kinerja
dari classifier. Data dibagi menjadi k bagian (fold), kemudian selama 𝑖 = 1, … , 𝑘
dilakukan pelatihan terhadap data selain fold ke-i dan dilakukan pengujian terhadap
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
data fold ke-i tersebut, lalu menghitung jumlah pengujian yang mengalami
kesalahan klasifikasi.
2.8. Confusion Matrix
Confusion Matrix menunjukkan jumlah prediksi yang benar dan salah yang
dibuat oleh model klasifikasi dibandingkan dengan hasil yang sebenarnya (nilai
target) dalam data. Matrix adalah n x n, dimana n adalah jumlah nilai target (kelas).
Kinerja model seperti ini biasanya dievaluasi dengan menggunakan data dalam
matrix. Tabel berikut menampilkan confusion matrix 2 x 2 untuk dua kelas (positif
dan negatif) (Diana dan Shidik, 2014).
Tabel 2.1 Confusion Matrix (Diana dan Shidik, 2014)
Confusion Matrix Target
Positif Negatif
Model Positif a b Positive predictive value a/(a+b)
Negatif c d Negative predictive value d/(c+d)
sensitivity specitivity Accuracy = (a+d)/(a+b+c+d)
a/(a+c) d/(b+d)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
BAB III
METODOLOGI PENELITIAN
Bab ini membahas analisa kebutuhan sistem mencakup metode yang
digunakan untuk ekstraksi ciri suara burung, klasifikasi, dan pengujian sistem.
Selain kebutuhan sistem, bab ini juga berisi perancangan sistem mencakup ekstraksi
ciri, klasifikasi, pengujian, dan perancangan antarmuka sistem.
3.1. Gambaran Penelitian
Data
Ekstraksi Ciri
Jaringan Syaraf Tiruan
Model Jaringan
Hasil Klasifikasi
training feature
testing feature
Preprocessing
Gambar 3.1 Diagram blok sistem
3.1.1. Data
Suara burung yang dipilih dalam klasifikasi ini adalah Cucak Hijau, Cucak
Rawa, dan Kenari. Ketiga suara burung tersebut merupakan jenis burung yang
termasuk populer di kalangan para kicau mania, oleh karena itu pemilihan jenis
suara tersebut dilakukan karena banyaknya data suara yang dapat di akses oleh
publik sebab cukup banyak orang-orang yang berbagi rekaman suara burung
kicaunya pada situs online seperti pada situs omkicau.
Data yang digunakan pada sistem berupa 3 buah rekaman suara burung, 1
rekaman untuk masing-masing jenis burung. Ketiga rekaman tersebut akan melalui
tahap preprosesing terlebih dahulu sebelum dilakukan ekstraksi ciri.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Contoh data audio berupa sinyal digital dan spektogram yang digunakan
pada penelitian ini dapat dilihat pada gambar-gambar di bawah ini.
Gambar 3.2 Contoh Sinyal dan Spectogram Suara Burung Cucak Hijau
Gambar 3.3 Contoh Sinyal dan Spectogram Suara Burung Cucak Rawa
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
Gambar 3.4 Contoh Sinyal dan Spectogram Suara Burung Kenari
3.1.2. Preprocessing
Proses preprosesing yang dilakukan adalah konversi file .mp3 dengan
frekuensi 44100 Hz dan stereo channel yang sudah mengalami pengompresan ke
dalam bentuk file .wav dengan format PCM, frekuensi 16000 Hz, 8 bit, tipe mono.
Proses ini membutuhkan aplikasi Audacity 2.1.2. Aplikasi tersebut tidak hanya
digunakan untuk konversi rekaman tipe .mp3 ke .wav, tetapi juga digunakan untuk
memotong-motong rekaman secara acak menjadi beberapa file rekaman berdurasi
5 detik yang digunakan sebagai data pengujian tunggal. Kemudian pemotongan
juga dilakukan dengan menggunakan fungsi yang telah dibuat pada Matlab,
memotong rekaman menjadi 120 rekaman dengan durasi masing-masing 5 detik
dan masing-masing rekaman tersebut dipotong secara berurutan sampai
menghasilkan 120 rekaman, sehingga akan menghasilkan total rekaman sebanyak
360 file .wav yang siap untuk dilakukan proses ekstraksi ciri dan pelatihan model
jaringan syaraf tiruan yang akan digunakan untuk proses klasifikasi data kelompok
dan klasifikasi data tunggal.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
3.1.3. Ekstraksi Ciri
Metode ekstraksi ciri menggunakan metode yang bernama MFCC (Mel
Frequency Cepstral Coefficient). Metode tersebut dipilih karena banyak digunakan
dalam bidang speech processing, baik itu speech recognition maupun speaker
recognition.
Proses ekstraksi ciri dalam tahap pelatihan dilakukan pada semua file suara
dengan menentukan terlebih dahulu ukuran frame dan overlap yang akan digunakan
pada saat proses perhitungan nilai MFCC. Kemudian masing-masing nilai MFCC
yang dihasilkan dari setiap rekaman yang ada, dilakukan proses reduksi ciri yaitu
dengan menghitung nilai statistik berupa nilai mean, variance, min, dan max dari
nilai MFCC, yang kemudian akan digunakan sebagai input dari jaringan syaraf
tiruan.
Gambar 3.5 Contoh hasil ekstraksi ciri MFCC
Pada gambar 3.5 merupakan contoh hasil ekstraksi ciri MFCC sebelum
dilakukan proses reduksi ciri atau mengubah dimensi ciri MxN menjadi Mx1. 39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
merupakan jumlah koefisien MFCC yang dihasilkan, sedangkan 332 merupakan
jumlah frame yang dihasilkan pada saat proses frame blocking. Jumlah frame
sebanyak 332 dihasilkan melalui perhitungan sebagai berikut :
Sample rate = 16000,
Frame size = 25ms = (25/1000)*16000 = 400 sample point,
Overlap = 10 ms = (10/1000)*16000 = 160 sample point,
Step = 400 – 160 = 240,
Duration = 5s,
Sample Total = 5*16000 = 80000,
Jumlah frame = (80000-160)/240 = 332
Proses reduksi ciri dilakukan dengan cara menghitung nilai mean, variance,
minimum, dan maximum setiap baris koefisien MFCC yaitu 1-39. Sebagai contoh
baris pertama / koefisien pertama MFCC dilakukan perhitungan nilai mean dengan
data nilai dari frame 1-332, sehingga akan menghasilkan 1 baris baru. Perhitungan
dilakukan hingga mencapai koefisien ke 39, hal ini juga dilakukan ketika mencari
nilai variance, minimum dan maximum. Pada akhir proses, akan menghasilkan ciri
baru sebanyak 156x1 dengan rincian nilai mean, variance, minimum, dan maximum
masing-masing sebanyak 39 untuk masing-masing file rekaman.
Ada 9 tahap yang dilakukan pada proses ekstraksi ciri, dengan 8 tahap
merupakan proses dari MFCC dan 1 tahap lainnya merupakan perhitungan terhadap
nilai MFCC yang telah dihasilkan. Tahap-tahap tersebut adalah :
1. Pre-emphasis
2. Frame blocking
3. Hamming windowing
4. Fast Fourier Transform (FFT)
5. Triangular Bandpass Filters
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
6. Discrete Cosine Transform (DCT)
7. Log Energy
8. Delta Cepstrum
9. Menghitung nilai mean, variance, minimum, dan maximum
Sebelum masuk pada jaringan syaraf tiruan, data terlebih dahulu diseleksi
sesuai dengan feature yang diinginkan, dengan rincian dalam tabel berikut ini :
Tabel 3.1 Statistic Features Indices
MFCC Statistic Features Indices Total
Coefficients Mean Variance Minimum Maximum
Without Delta or
Delta Delta (13
coefficients)
1-13 40-52 79-91 118-130 52
Delta (26 coefficients) 1-26 40-65 79-104 118-143 104
Delta Delta (39
coefficients) 1-39 40-78 79-117 118-156 156
Keterangan :
Untuk MFCC (13 coefficients) masing-masing feature (mean, variance, minimum,
maximum) akan memiliki nilai sebanyak 13, sehingga total keseluruhan ada 52 nilai
jika semua feature tersebut dipilih.
Begitu pula dengan MFCC (26 coefficients) dan MFCC (39 coefficients) masing-
masing feature (mean, variance, minimum, maximum) akan memiliki nilai
sebanyak 26 dan 39, sehingga total keseluruhan ada 104 nilai untuk MFCC (26
coefficients) dan 156 nilai untuk MFCC (39 coefficients).
Angka-angka pada kolom mean, variance, minimum, maximum merupakan nilai
indeks yang menyatakan letak keberadaan feature tersebut pada masing-masing
MFCC-nya dalam sebuah database feature.
Kemudian data dibagi menjadi k bagian, untuk train, validation, test set.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
Tabel 3.2 3 Fold Cross Validation
Percobaan Train Validation Test
1 3 1 2
2 1 2 3
3 2 3 1
Tabel 3.3 5 Fold Cross Validation
Percobaan Train Validation Test
1 3,4,5 1 2
2 1,4,5 2 3
3 1,2,5 3 4
4 1,2,3 4 5
5 2,3,4 5 1
Tabel 3.4 10 Fold Cross Validation
Percobaan Train Validation Test
1 3,4,5,6,7,8,9,10 1 2
2 1,4,5,6,7,8,9,10 2 3
3 1,2,5,6,7,8,9,10 3 4
4 1,2,3,6,7,8,9,10 4 5
5 1,2,3,4,7,8,9,10 5 6
6 1,2,3,4,5,8,9,10 6 7
7 1,2,3,4,5,6,9,10 7 8
8 1,2,3,4,5,6,7,10 8 9
9 1,2,3,4,5,6,7,8 9 10
10 2,3,4,5,6,7,8,9 10 1
Setelah itu data feature yang telah dipilih akan dijadikan sebagai input pada
jaringan syaraf tiruan, pada subbab selanjutnya akan dijelaskan mengenai arsitektur
jaringan yang akan digunakan pada saat proses pelatihan dan pengujian.
3.1.4. Jaringan Syaraf Tiruan
Metode klasifikasi jaringan syaraf tiruan propagasi balik dipilih karena
kemampuannya untuk menghasilkan decision boundaries yang kompleks pada
fitur-fitur yang ada. Hasil ini dapat dilihat dengan nilai keakuratan yang dihasilkan
dari pengujian sampel diluar kumpulan sampel yang digunakan pada saat pelatihan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
Beberapa nilai parameter yang akan diatur pada jaringan syaraf tiruan
propagasi balik :
1. Epoch/iterasi
2. Hidden layer/lapis tersembunyi
3. Fungsi training
3.1.5. Arsitektur Jaringan Syaraf Tiruan
Ada 2 jenis arsitektur jaringan syaraf tiruan yang akan digunakan untuk
proses pelatihan dan pengujian, yaitu arsitektur dengan 1 hidden layer dan 2 hidden
layer. Untuk masing-masing arsitektur akan dilakukan percobaan dengan
mengkombinasikan beberapa parameter seperti jumlah neuron input yang akan
bervariasi sesuai dengan feature yang dipilih, jumlah neuron pada masing-masing
hidden layer serta fungsi training.
Satu hidden layer
x1
x2
x3
x4
xi
z1
z2
z3
zj
y1
y2
y3
Input
Hidden Layer 1
Output
Gambar 3.6 Arsitektur jaringan pelatihan dan pengujian 1 hiddel layer
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Pada gambar 3.6, merupakan gambaran arsitektur jaringan dengan 1 hidden
layer yang akan digunakan untuk pengujian pemilihan feature yang menghasilkan
nilai akurasi yang baik, yaitu dengan memilih feature mean, variance, min atau max
dan atau mengkombinasikan feature-feature tersebut sebagai input pada model
jaringan. Adapun penjelasan mengenai gambar di atas adalah sebagai berikut :
1. Input (x1, x2, x3, ..... xi) merupakan lapisan input pada jaringan yang akan
mewakili feature terpilih, sesuai dengan tabel 3.1. Sebagai contoh, jika
feature yang dipilih adalah MFCC (13 coefficients) dengan nilai statistik
mean maka nilai-nilai yang akan mengisi lapisan input jaringan adalah nilai
yang ada pada indeks 1-13 dalam database, sehingga secara otomatis
jumlah neuron pada lapisan input berjumlah sebanyak 13, mengikuti jumlah
nilai feature yang dipilih.
2. Hidden layer 1 (z1, z2, z3, ..... zj) merupakan lapisan tersembunyi yang
digunakan untuk mentransformasikan nilai-nilai input menjadi nilai yang
dapat digunakan pada lapisan output. Jumlah neuron pada lapisan ini secara
default sebanyak 10 neuron, karena pada dasarnya arsitektur jaringan
dengan 1 hidden layer digunakan untuk mencari feature yang menghasilkan
nilai akurasi paling baik.
3. Output (y1, y2, y3) merupakan lapisan output dengan neuron berjumlah 3,
yaitu sebagai target luaran dari jaringan, bernilai antara 0 dan 1. Ada tiga
target luaran yaitu 1 0 0, 0 1 0, dan 0 0 1, masing-masing mewakili jenis
burung Cucak Hijau, Cucak Rawa dan Kenari secara berturut-turut.
Gambar 3.7 Contoh model jaringan 1 hidden layer dengan MFCC 13
coefficients dan feature mean
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
Dua hidden layer
x1
x2
x3
x4
xi
z1
z2
z3
zj
y1
y2
y3
z1
z2
z3
zk
Input
Hidden Layer 1 Hidden Layer 2
Output
Gambar 3.8 Arsitektur jaringan pelatihan dan pengujian 2 hidden layer
Pada gambar 3.7, merupakan gambaran arsitektur jaringan dengan 2 hidden
layer yang akan digunakan untuk optimalisasi jaringan yang telah dihasilkan
sebelumnya pada arsitektur jaringan dengan 1 hidden layer. Sama halnya dengan
arsitektur jaringan 1 hidden layer, adapun penjelasan mengenai gambar di atas
adalah sebagai berikut :
1. Input (x1, x2, x3, ..... xi) merupakan lapisan input pada jaringan yang akan
mewakili feature terpilih, sesuai dengan tabel 3.1. Sebagai contoh, jika
feature yang dipilih adalah MFCC (13 coefficients) dengan nilai statistik
mean maka nilai-nilai yang akan mengisi lapisan input jaringan adalah nilai
yang ada pada indeks 1-13 dalam database, sehingga secara otomatis
jumlah neuron pada lapisan input berjumlah sebanyak 13, mengikuti jumlah
nilai feature yang dipilih.
2. Hidden layer 1 (z1, z2, z3, ..... zj) merupakan lapisan tersembunyi yang
digunakan untuk mentransformasikan nilai-nilai input menjadi nilai yang
dapat digunakan pada lapisan tersembunyi yang kedua. Jumlah neuron pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
lapisan ini secara default sebanyak 10 neuron, sesuai dengan tujuan yang
dicapai pada arsitektur jaringan dengan 1 hidden layer.
3. Hidden layer 2 (z1, z2, z3, ..... zk) merupakan lapisan tersembunyi yang
digunakan untuk mentransformasikan nilai-nilai pada lapis tersembunyi
yang pertama menjadi nilai yang dapat digunakan pada lapisan output.
Tujuan penggunaan lapisan tersembunyi kedua ini adalah untuk mengetahui
nilai akurasi yang dihasilkan, apakah akan bertambah atau berkurang dari
nilai akurasi yang dihasilkan pada penggunaan satu lapis tersembunyi.
4. Output (y1, y2, y3) merupakan lapisan output dengan neuron berjumlah 3,
yaitu sebagai target luaran dari jaringan, bernilai antara 0 dan 1. Ada tiga
target luaran yaitu 1 0 0, 0 1 0, dan 0 0 1, masing-masing mewakili jenis
burung Cucak Hijau, Cucak Rawa dan Kenari secara berturut-turut.
Gambar 3.9 Contoh model jaringan 2 hidden layer dengan MFCC 13
coefficients dan feature mean
Secara garis besar, kedua gambar di atas merupakan arsitektur jaringan yang
akan digunakan selama proses pelatihan model jaringan, dengan rincian sebagai
berikut :
1. Untuk lapisan input terdiri dari 1 – i neuron, i merupakan jumlah total
coefficients yang dipilih sesuai yang tertera pada tabel ekstraksi ciri.
2. Untuk mendapatkan jaringan yang optimal, lapisan hidden layer yang kedua
akan memiliki jumlah neuron yang bervariasi antara 10 – 40, untuk fungsi
transfer yang digunakan adalah tansig (tan-sigmoid) karena data input telah
dilakukan normalisasi dengan mapminmax sehingga memiliki nilai dengan
rentang [-1,1].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
3. Mempunyai 3 neuron output dengan fungsi transfer softmax.
3.1.6. Metode Pengujian
Metode pengujian menggunakan K-Fold Cross Validation, dengan k = 3, k
= 5, dan k = 10. Metode ini dipakai karena menghasilkan data yang berbeda untuk
proses pelatihan dan pengujian, sehingga dapat diketahui rata-rata akurasi yang
dihasilkan pada tiap k percobaan berdasarkan confusion matrix yang dihasilkan.
Tahap pengujian dilakukan untuk mencari ciri suara dan arsitektur jaringan
syaraf tiruan terbaik.
3.2. Kebutuhan Sistem
Alat yang akan dipergunakan dalam proses perancangan sistem :
1. Perangkat Keras
Perangkat Keras dengan spesifikasi sebagai berikut :
1) Processor : Intel Core i5 4200M, dual core, 2.5GHz
2) Memory : 4GB
3) Hard Drive : 500GB
4) Soundcard : Conexant SmartAudio HD
2. Perangkat Lunak
Perangkat Lunak yang digunakan adalah sebagai berikut :
1) Microsoft Windows 10
Sistem operasi yang digunakan untuk mengoperasikan kedua
perangkat lunak lainnya.
2) Audacity 1.2.1
Perangkat lunak yang digunakan untuk melakukan proses
preprosesing pada file suara burung sebelum diolah oleh sistem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
3) Matlab 2015a
Perangkat lunak yang digunakan untuk membuat sistem sekaligus
menjalankan sistem.
3.3. Perancangan Antarmuka Sistem
Gambar 3.10 Rancangan Antarmuka Menu Utama Sistem
Pada gambar 3.3 merupakan tampilan antarmuka menu utama sistem,
terdapat 3 tombol yaitu feature extraction & database, training & testing, classify.
1. Feature extraction & database
Tombol ini digunakan untuk membuka tampilan proses ekstraksi ciri
dan pembuatan info untuk jenis burung yang dianalisa.
2. Training & testing
Tombol ini digunakan untuk membuka tampilan proses pelatihan
dan pengujian ciri-ciri yang dihasilkan terhadap jaringan syaraf tiruan
propagasi balik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
3. Classify
Tombol ini digunakan untuk membuka tampilan proses klasifikasi
data suara burung diluar sampel yang telah digunakan pada proses pelatihan
terhadap model jaringan syaraf tiruan propagasi balik.
Gambar 3.11 Rancangan Antarmuka Ekstraksi Ciri
Pada gambar 3.4 merupakan tampilan antarmuka untuk melakukan proses
ekstraksi ciri dan pembuatan info jenis burung yang dianalisa. Terdapat 3 panel
pada antarmuka di atas, yaitu :
1. Audio File List
Pada panel ini terdapa komponen-komponen sebagai berikut :
a. Tombol browse – berfungsi untuk membuka jendela pencarian
direktori data suara.
b. Edit text – berfungsi untuk alamat direktori data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
c. Listbox audio – berfungsi untuk menampilkan daftar semua data
suara yang ada pada direktori yang dipilih.
2. MFCC Options
Pada panel ini terdapat komponen-komponen sebagai berikut :
a. Edit text frame size – berfungsi untuk menentukan frame size /
duration yang digunakan pada saat proses frame blocking dalam
MFCC.
b. Edit text frame overlap – berfungsi untuk menentukan frame overlap
yang digunakan pada saat proses frame blocking dalam MFCC.
3. Database Options
Pada panel ini terdapat komponen-komponen sebagai berikut :
a. Radio button bird – berfungsi untuk memilih jenis burung 1,2,3
b. Edit text target/class – berfungsi untuk menentukan jumlah sampel
masing-masing jenis burung, nilai ini kemudian akan digunakan
untuk membuat target berdasarkan jumlah tersebut.
c. Edit text scientific name – berfungsi untuk menentukan nama ilmiah
jenis burung.
d. Edit text family – berfungsi untuk menentukan famili dari jenis
burung.
e. Edit text genus – berfungsi untuk menentukan genus dari jenis
burung.
f. Tombol select picture – berfungsi untuk membuka jendela yang
digunakan untuk memilih file gambar jenis burung.
g. Tombol save info – berfungsi untuk menyimpan info jenis burung
yang telah ditentukan ke dalam sebuah variabel.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Serta ada komponen extract features button yang digunakan untuk
melakukan proses ekstraksi ciri, kemudia hasil nilai-nilai ciri yang didapatkan
ditampilkan pada tabel features.
Gambar 3.12 Rancangan Antarmuka Klasifikasi
Pada gambar 3.5 merupakan tampilan antarmuka proses klasifikasi.
Terdapat 2 panel pada antarmuka di atas, yaitu :
1. Classify
Pada panel ini terdapat komponen-komponen sebagai berikut :
a. Edit text browse – berfungsi untuk menampilkan alamat file suara
yang dipilih.
b. Tombol browse – berfungsi untuk membuka jendela pencarian file
suara.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
c. Tombol classify – berfungsi untuk melakukan proses klasifikasi
terhadap file suara yang telah dipilih.
d. Tombol view original and pre-emphasis – berfungsi untuk
membuka jendela yang berisikan spectogram dari suara original dan
setelah dilakukan proses pre-emphasis serta tombol play yang
berguna untuk memutar suara original dan setelah dilakukan pre-
emphasis.
e. Tombol view signal and spectogram – berfungsi untuk
menampilkan grafik sinyal dan spectogram suara uji.
2. Result
Pada panel ini terdapat komponen-komponen sebagai berikut :
a. Axes picture – berfungsi untuk menampilkan gambar jenis burung
sesuai dengan hasil klasifikasi.
b. Static text scientific name – berfungsi untuk menampilkan nama
ilmiah jenis burung sesuai dengan hasil klasifikasi.
c. Static text family – berfungsi untuk menampilkan famili jenis burung
sesuai dengan hasil klasifikasi.
d. Static text genus – berfungsi untuk menampilkan genus jenis burung
sesuai dengan hasil klasifikasi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
BAB IV
IMPLEMENTASI DAN ANALISA
Bab ini membahas uraian implementasi sistem yang berupa hasil penelitian
dalam melakukan pengujian kombinasi feature, optimalisasi jaringan syaraf tiruan,
percobaan metode training dalam jaringan, serta pengujian data tunggal dan uraian
mengenai analisa hasil output terkait dengan keberhasilan pemilihan atribut/feature
dan akurasinya.
4.1. Hasil Penelitian
4.1.1. Pengujian Kombinasi Feature
Gambar 4.1 Hasil Ekstraksi Ciri Suara
Hasil penelitian berupa nilai akurasi dari pengenalan jenis burung
berdasarkan suara kicaunya. Data yang digunakan untuk pelatihan sejumlah 120
data untuk masing-masing jenis burung. Ada beberapa kombinasi yang dilakukan
dalam penelitian ini, yaitu kombinasi nilai statistik dari feature MFCC yang telah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
dihasilkan pada saat proses ekstraksi ciri, nilai neuron pada satu atau dua hidden
layer terhadap jenis feature yang digunakan, masing-masing hidden layer akan
diberikan nilai H dimana, 10 ≤ 𝐻 ≤ 40 dan nilai H akan bertambah sebanyak 10
untuk setiap percobaannya. Percobaan awal yang dilakukan adalah uji coba
kombinasi feature pada beberapa k-fold sehingga dapat diketahui kombinasi feature
mana saja yang menghasilkan akurasi terbaik dan dihasilkan pada k-fold berapa,
lalu kombinasi tersebut akan dilakukan uji coba lagi dengan mengubah parameter-
parameter yang ada pada jaringan, yaitu jumlah hidden layer dan jumlah neuron
pada masing-masing hidden layer tersebut.
Untuk percobaan awal, parameter jaringan yang digunakan adalah sebagai
berikut :
1. Fungsi transfer hidden layer 1: tansig
2. Fungsi aktivasi: softmax
3. Fungsi training: trainscg
4. Batas epoch: 100
Hasil dari percobaan awal tersebut dapat dilihat pada grafik akurasi gambar
4.2, gambar 4.3, dan gambar 4.4.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
Gambar 4.2 Grafik akurasi untuk 3 fold cross validation
Pada gambar 4.2 dari hasil pengujian kombinasi feature pada 3 fold cross validation dapat dilihat bahwa akurasi pada kombinasi
feature variance, min, dan max pada MFCC 13 menghasilkan nilai tertinggi yaitu 83.33% dibandingkan dengan kombinasi feature
lainnya pada MFCC yang sama maupun berbeda. Namun dapat dilihat juga bahwa feature mean pada MFCC 13 tanpa kombinasi
M V Mi Ma M,V M,Mi M,Ma V,Mi V,Ma Mi,Ma M,V,Mi M,V,Ma V,Mi,MaM,V,Mi,
Ma
Feature
MFCC 13 85.28 80.28 80.83 79.72 68.61 78.61 75 71.39 73.33 82.5 70.83 71.94 83.33 79.44
MFCC 26 72.5 76.94 77.5 73.61 75 72.78 73.61 73.06 76.11 78.61 74.72 76.39 78.89 73.61
MFCC 39 72.22 79.17 83.89 71.67 76.39 75.56 75.28 73.06 73.89 73.61 72.5 69.72 72.5 79.72
0
10
20
30
40
50
60
70
80
90
Aku
rasi
(%
)
3 Fold Cross Validation
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
dengan feature lainnya menghasilkan akurasi yang jauh lebih besar dibandingkan dengan kombinasi feature variance, min, dan max
tersebut yaitu sebesar 85.28%.
Gambar 4.3 Grafik akurasi untuk 5 fold cross validation
M V Mi Ma M,V M,Mi M,Ma V,Mi V,Ma Mi,Ma M,V,Mi M,V,Ma V,Mi,MaM,V,Mi,
Ma
Feature
MFCC 13 98.61 84.17 94.44 90.28 98.89 95.28 98.61 91.39 92.5 95.56 94.72 96.94 90.83 94.72
MFCC 26 98.33 88.61 92.5 83.61 95.28 96.67 95.83 96.11 89.17 91.39 94.44 93.33 95.56 91.11
MFCC 39 97.22 91.11 95.28 84.72 95.28 95 93.33 88.06 86.11 90.56 93.06 91.11 97.22 95.56
75
80
85
90
95
100
Aku
rasi
(%
)
5 Fold Cross Validation
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Pada gambar 4.3 dari hasil pengujian kombinasi feature pada 5 fold cross validation dapat dilihat bahwa akurasi pada kombinasi
feature mean, dan variance pada MFCC 13 menghasilkan nilai tertinggi yaitu 98.89% dibandingkan dengan kombinasi feature lainnya
pada MFCC yang sama maupun berbeda. Namun dapat dilihat juga bahwa feature mean pada MFCC 13 tanpa kombinasi dengan
feature lainnya juga mampu menghasilkan nilai akurasi yang cukup besar dibandingkan dengan feature tanpa kombinasi feature lainnya
maupun feature dengan kombinasi feature lainnya, yaitu sebesar 98.61%.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
Gambar 4.4 Grafik akurasi untuk 10 fold cross validation
Pada gambar 4.4 dari hasil pengujian kombinasi feature pada 10 fold cross validation dapat dilihat bahwa akurasi pada
kombinasi feature mean, dan variance pada MFCC 13 menghasilkan nilai tertinggi yaitu 99.17% dibandingkan dengan kombinasi
feature lainnya pada MFCC yang sama maupun berbeda. Namun dapat dilihat juga bahwa feature mean pada MFCC 13 dan MFCC 26
M V Mi Ma M,V M,Mi M,Ma V,Mi V,Ma Mi,Ma M,V,Mi M,V,Ma V,Mi,MaM,V,Mi,
Ma
Feature
MFCC 13 99.44 93.89 93.89 95.28 99.17 96.94 98.89 93.61 97.22 96.67 97.5 98.89 96.39 98.06
MFCC 26 99.44 95.56 94.72 95.83 97.78 97.22 98.33 97.22 97.22 98.06 98.33 98.89 94.72 97.78
MFCC 39 99.17 90.56 96.39 92.78 98.06 96.39 97.5 95.28 96.39 96.94 96.39 98.89 92.5 97.78
84
86
88
90
92
94
96
98
100
Aku
rasi
(%
)
10 Fold Cross Validation
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
tanpa kombinasi dengan feature lainnya menghasilkan akurasi yang jauh lebih besar dibandingkan dengan kombinasi feature mean,
dan variance tersebut yaitu sebesar 99.44%.
Berdasarkan ketiga grafik hasil akurasi di atas, dapat disimpulkan bahwa feature mean pada MFCC 13, MFCC 26, dan MFCC
39 sudah mampu menghasilkan akurasi yang baik tanpa harus dilakukan kombinasi dengan feature lainnya. Selain itu dapat
disimpulkan juga bahwa semakin besarnya nilai k-fold, akurasi yang dihasilkan juga semakin baik, hal ini terjadi karena pada dasarnya
pembagian data training akan jauh lebih banyak dibandingan dengan k-fold yang bernilai kecil. Sehingga pada ujicoba optimalisasi
jaringan syaraf tiruan dapat dilakukan hanya dengan feature mean saja tanpa harus dikombinasikan dengan feature lainnya dan
dilakukan dengan k-fold = 10.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
4.1.2. Optimalisasi Jaringan Syaraf Tiruan
Gambar 4.5 Grafik hasil optimalisasi
Pada gambar 4.5 dari hasil pengujian optimalisasi jaringan syaraf tiruan,
dengan mengubah nilai neuron pada hidden layer 2 dapat dilihat bahwa
menambahkan nilai neuron pada hidden layer 2 dengan feature mean meningkatkan
akurasi di semua nilai MFCC, dengan akurasi tertinggi yaitu 100% pada MFCC 13
dengan jumlah neuron pada hidden layer 2 yaitu 30 dan 40.
Setelah melihat hasil yang ada pada gambar grafik di atas dan grafik
sebelumnya, dapat disimpulkan bahwa nilai akurasi yang baik sudah dapat dicapai
dengan hanya menggunakan feature mean dan 1 hidden layer saja tanpa harus
mengkombinasikan dengan feature lainnya dan menambahkan jumlah hidden
layer-nya, karena nilai akurasi mampu mencapai di atas 90%.
MFCC 13 MFCC 26 MFCC 39
10 N 99.44 99.72 98.33
20 N 99.72 98.33 97.78
30 N 100 99.17 98.33
40 N 100 99.72 99.44
96.5
97
97.5
98
98.5
99
99.5
100
Aku
rasi
Fea
ture
Mea
n (
%)
Optimasilasi JST K-fold = 10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
4.1.3. Percobaan Metode Training
Setelah mendapatkan kombinasi feature dan arsitektur jaringan syaraf tiruan
terbaik, akan dilakukan percobaan terhadap metode training pada jaringan syaraf
tiruan untuk melihat perubahan terhadap nilai akurasi yang dihasilkan.
Gambar 4.6 Grafik akurasi percobaan metode training
Dengan menggunakan arsitektur jaringan yang sama seperti percobaan
sebelumnya dan mengubah metode training maka didapatkan hasil akurasi seperti
pada gambar 4.6. Dapat dilihat bahwa terjadi penurunan akurasi pada metode
training traingdm, ini disebabkan dengan nilai batas epoch yang diberikan hanya
100 saja, akan berbeda jika epoch dinaikkan namun tentu saja proses pengujian
akan menjadi lebih lama. Selain itu terdapat peningkatan dan penurunan pada hasil
metode training lainnya meskipun tidak terlalu signifikan namun dapat disimpulkan
bahwa hasil akurasi yang optimal didapatkan dengan menggunakan metode training
traincgf, traincgp, traincgb, trainscg, trainlm, dan trainrp.
traingdm
traingda traingdx traincgf traincgp traincgb trainlm trainrp
MFCC 13 46.47 95 86.67 100 99.44 100 100 99.17
MFCC 26 33.33 91.67 85.83 98.61 98.61 99.44 98.89 99.17
MFCC 39 42.78 88.89 84.17 99.72 99.44 99.44 99.17 98.06
0102030405060708090
100
Aku
rasi
(%
)
Percobaan Metode Training
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
4.1.4. Pengujian Data Tunggal
Setelah dilakukan pelatihan pada arsitektur jaringan syaraf tiruan,
selanjutnya akan dilakukan pengujian terhadap data tunggal, data yang di uji
merupakan data yang tidak termasuk dalam proses pelatihan atau pengujian data
kelompok.
Data uji untuk masing-masing jenis burung berjumlah 5 file rekaman, setiap
rekaman akan dilakukan uji klasifikasi terhadap model jaringan syaraf tiruan yang
sudah dibentuk sebelumnya.
Hasil uji coba terhadap 15 file rekaman tersebut dapat dilihat pada tabel di
bawah ini.
Tabel 4.1 Tabel Hasil Uji Data Tunggal
No File Rekaman Suara Burung Hasil
1 Lima rekaman suara burung cucak hijau Benar semua
2 Lima rekaman suara burung cucak rawa Benar semua
3 Lima rekaman suara burung kenari Benar semua
Gambar 4.7 Tampilan hasil uji coba data tunggal burung cucak hijau
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Gambar 4.8 Tampilan hasil uji coba data tunggal burung cucak rawa
Gambar 4.9 Tampilan hasil uji coba data tunggal burung kenari
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
4.2. Analisa Hasil
Dalam hasil proses pengujian kombinasi feature mean, variance, min, dan
max pada MFCC (13 coefficients), ∆MFCC (26 coefficients), ∆∆MFCC (39
coefficients) menghasilkan nilai akurasi yang bervariasi, sebagai contoh seperti
yang terlihat pada gambar grafik di bawah ini yang merupakan potongan terhadap
gambar grafik pada gambar 4.2
Gambar 4.10 Potongan grafik hasil percobaan 3 fold cross validation
Pada gambar di atas terlihat bahwa penggunaan MFCC dengan feature
mean menghasilkan nilai akurasi sebesar 85.28% akan tetapi pada penggunaan
∆MFCC, ∆∆MFCC nilai akurasi mengalami penurunan, hal ini disebabkan oleh
bertambahnya jumlah nilai/atribut yang digunakan ke dalam jaringan syaraf tiruan,
yang semula 13 atribut menjadi 26 dan 39 atribut. Dengan bertambahnya atribut
yang diinputkan ke dalam jaringan maka akan bertambah pula tingkat kompleksitas
perhitungan dalam jaringan, dan terkadang terjadi juga kondisi dimana beberapa
atribut memberikan sumbangan penting terhadap perhitungan dalam jaringan dan
juga ada beberapa atribut yang memberikan sumbangan tidak terlalu penting.
Penggunaan feature mean, variance, min, dan max juga memberikan pengaruh
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
terhadap perubahan nilai akurasi, pada dasarnya nilai mean merupakan rata-rata
dari populasi data MFCC sehingga penggunaan feature mean sudah mampu
menjelaskan data MFCC itu sendiri.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
BAB V
PENUTUP
5.1. Kesimpulan
Dalam hasil penelitian klasifikasi burung berdasarkan suara kicau burung
menggunakan jaringan syaraf tiruan propagasi balik dapat disimpulkan sebagai
berikut :
1. Hasil percobaan beberapa kombinasi feature dan arsitektur jaringan untuk
klasifikasi jenis burung, sebagai berikut :
a. Penggunaan feature mean sebagai input sudah cukup untuk
menghasilkan model jaringan yang baik.
b. Pada 3 fold cross validation, feature mean menghasilkan akurasi sebesar
85,28%, pada 5 fold cross validation menghasilkan akurasi sebesar
98,61%, dan pada 10 fold cross validation menghasilkan akurasi sebesar
99,17% dengan menggunakan 1 hidden layer 10 neuron.
c. Akurasi tertinggi didapatkan pada 13 koefisien mfcc dengan 2 hidden
layer, 10 neuron hidden layer 1 dan 30 neuron hidden layer 2.
2. Model jaringan syaraf tiruan yang dihasilkan sudah mampu
mengklasifikasikan jenis burung berdasarkan suara kicaunya dengan baik
karena setelah dilakukan klasifikasi data tunggal dengan data di luar data
pelatihan, sistem mampu mengklasifikasikannya dengan cukup akurat atau
hasilnya sesuai dengan target aslinya.
5.2. Saran
Dari hasil penelitian klasifikasi jenis burung ini, ada beberapa saran yang
dapat diberikan penulis untuk penelitian selanjutnya dengan topik yang sama yaitu:
a. Menambahkan data jenis burung yang lainnya, sehingga lebih bervariasi.
b. Menggunakan metode ekstraksi ciri yang berbeda.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
DAFTAR PUSTAKA
Annisa, R., Hidayat, B., & Wijayanto, I. (2012). Klasifikasi Jenis Burung
Berdasarkan Suara Kicau Burung Menggunakan Wavelet Packet
Decomposition Dan Jaringan Syaraf Tiruan Self Organizing Map.
Bandung: Universitas Telkom.
Diana, L., & Shidik, G. F. (2014). Analisis Data Transaksi Penjualan Untuk
Klasifikasi Jenis Barang Dan Relasi Daya Beli Relatif Masyarakat
Menggunakan Algoritam K-Means Serta Asosiasi Apriori. Jurnal
Teknologi Informasi, 212-219.
Fagerlund, S. (2004). Automatic Recognition of Bird Species by Their Sounds.
Otaniemi: Helsinki University of Technology.
Hagan, M., & Demuth, H. (1996). Neural Network Design. Boston: PWS
Publishing Company.
Jang, J.-S. R. (2005). ASR (Automatic Speech Recognition) Toolbox. Diambil
kembali dari Mirlab: http://mirlab.org/jang/matlab/toolbox/asr/
Jang, J.-S. R. (2015, February 6). Audio Signal Processing and Recognition.
Diambil kembali dari Mirlab:
http://mirlab.org/jang/books/audiosignalprocessing/
Mustofa, A. (2007). Sistem Pengenalan Penutur dengan Metode Mel-Frequency
Wrapping. Malang: Universitas Brawijaya.
Passeriform. (2015, December 4). Diambil kembali dari Encyclopaedia Britannica:
http://www.britannica.com/animal/passeriform
Setiawan, A., Hidayanto, A., & Isnanto, R. (2011). Aplikasi Pengenalan Ucapan
dengan Ekstraksi Mel-Frequency Cepstrum Coefficients (MFCC) Melalui
Jaringan Syaraf Tiruan Learning Vector Quantization (LVQ) untuk
Mengoperasikan Kursor Komputer. Transmisi, 82-86.
Siang, J. J. (2005). Dalam Jaringan Syaraf Tiruan & Pemorgramannya
Menggunakan MATLAB. Yogyakarta: Penerbit Andi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
LAMPIRAN
Source code Main Menu GUI
function varargout = MainMenu(varargin)
% MAINMENU MATLAB code for MainMenu.fig
% MAINMENU, by itself, creates a new MAINMENU or raises the existing
% singleton*.
%
% H = MAINMENU returns the handle to a new MAINMENU or the handle to
% the existing singleton*.
%
% MAINMENU('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MAINMENU.M with the given input arguments.
%
% MAINMENU('Property','Value',...) creates a new MAINMENU or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before MainMenu_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to MainMenu_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 MainMenu
% Last Modified by GUIDE v2.5 21-May-2016 09:52:34
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @MainMenu_OpeningFcn, ...
'gui_OutputFcn', @MainMenu_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 MainMenu is made visible.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
function MainMenu_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 MainMenu (see VARARGIN)
% Choose default command line output for MainMenu
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes MainMenu wait for user response (see UIRESUME)
% uiwait(handles.mainMenuFigure);
addMyPath;
if exist('classification.mat', 'file')
evalin('base','load(''classification.mat'')');
end
autosave(5,'classification.mat')
% --- Outputs from this function are returned to the command line.
function varargout = MainMenu_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 featureExtractionDatabase.
function featureExtractionDatabase_Callback(hObject, eventdata, handles)
% hObject handle to featureExtractionDatabase (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
FeatureExtractionAndDatabase;
% --- Executes on button press in trainingTesting.
function trainingTesting_Callback(hObject, eventdata, handles)
% hObject handle to trainingTesting (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
TrainingAndTesting;
% --- Executes on button press in classify.
function classify_Callback(hObject, eventdata, handles)
% hObject handle to classify (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
% handles structure with handles and user data (see GUIDATA)
Classify;
% --- Executes when user attempts to close mainMenuFigure.
function mainMenuFigure_CloseRequestFcn(hObject, eventdata, handles)
% hObject handle to mainMenuFigure (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
autosave stop
% Hint: delete(hObject) closes the figure
delete(hObject);
Source code Preprocess GUI
function varargout = Preprocess(varargin)
% PREPROCESS MATLAB code for Preprocess.fig
% PREPROCESS, by itself, creates a new PREPROCESS or raises the existing
% singleton*.
%
% H = PREPROCESS returns the handle to a new PREPROCESS or the handle to
% the existing singleton*.
%
% PREPROCESS('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in PREPROCESS.M with the given input arguments.
%
% PREPROCESS('Property','Value',...) creates a new PREPROCESS or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Preprocess_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Preprocess_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 Preprocess
% Last Modified by GUIDE v2.5 20-May-2016 08:22:51
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Preprocess_OpeningFcn, ...
'gui_OutputFcn', @Preprocess_OutputFcn, ...
'gui_LayoutFcn', [] , ...
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
'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 Preprocess is made visible.
function Preprocess_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 Preprocess (see VARARGIN)
% Choose default command line output for Preprocess
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Preprocess wait for user response (see UIRESUME)
% uiwait(handles.preprocessFigure);
set(handles.busy, 'String', 'Ready');
set(handles.bird, 'SelectedObject', handles.bird1);
if evalin('base', 'exist(''bird1'')')
set(handles.filenameTable, 'Data', evalin('base', 'bird1'));
set(handles.preprocessBtn, 'Enable', 'off');
else
set(handles.filenameTable, 'Data', cell(0,0));
end
% --- Outputs from this function are returned to the command line.
function varargout = Preprocess_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 loadBtn.
function loadBtn_Callback(hObject, eventdata, handles)
% hObject handle to loadBtn (see GCBO)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, path] = uigetfile({'*.wav;', 'Wave Files'}, ' Select audio file');
if ~isequal(filename, 0) || ~isequal(path, 0)
pathfile = strcat(path, filename);
[pathpart, namepart, ext] = fileparts(pathfile);
set(handles.pathToFile, 'String', pathfile);
info = audioinfo(pathfile);
info.Name = namepart;
gui.data.info = info;
numchannel = info.NumChannels;
set(handles.filename, 'String', namepart);
if(numchannel == 1)
set(handles.channel, 'String', strcat(num2str(numchannel), ' (mono)'));
else
set(handles.channel, 'String', strcat(num2str(numchannel), ' (stereo)'));
end
set(handles.duration, 'String', strcat(num2str(info.Duration), ' secs'));
set(handles.samplerate, 'String', strcat(num2str(info.SampleRate), ' Hz'));
else
return
end
% --- Executes on button press in preprocessBtn.
function preprocessBtn_Callback(hObject, eventdata, handles)
% hObject handle to preprocessBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.busy, 'String', 'Busy');
drawnow
h = get(handles.bird, 'SelectedObject');
birdTag = get(h, 'Tag');
info = gui.data.info;
duration = str2double(get(handles.chunkDuration, 'string'));
if strcmp(birdTag, 'bird1')
bird1 = chunkAudioV2(info, duration, 'bird/1/');
set(handles.filenameTable, 'Data', bird1);
assignin('base', 'bird1', bird1);
elseif strcmp(birdTag, 'bird2')
bird2 = chunkAudioV2(info,duration, 'bird/2/');
set(handles.filenameTable, 'Data', bird2);
assignin('base', 'bird2', bird2);
else
bird3 = chunkAudioV2(info,duration, 'bird/3/');
set(handles.filenameTable, 'Data', bird3);
assignin('base', 'bird3', bird3);
end
set(handles.busy, 'String', '');
% --- Executes on button press in clearBtn.
function clearBtn_Callback(hObject, eventdata, handles)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
% hObject handle to clearBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes when selected object is changed in bird.
function bird_SelectionChangedFcn(hObject, eventdata, handles)
% hObject handle to the selected object in bird
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h = get(handles.bird, 'SelectedObject');
birdTag = get(h, 'Tag');
if strcmp(birdTag, 'bird1')
if evalin('base', 'exist(''bird1'')')
set(handles.filenameTable, 'Data', evalin('base', 'bird1'));
set(handles.preprocessBtn, 'Enable', 'off');
else
set(handles.filenameTable, 'Data', cell(0,0));
set(handles.preprocessBtn, 'Enable', 'on');
end
elseif strcmp(birdTag, 'bird2')
if evalin('base', 'exist(''bird2'')')
set(handles.filenameTable, 'Data', evalin('base','bird2'));
set(handles.preprocessBtn, 'Enable', 'off');
else
set(handles.filenameTable, 'Data', cell(0,0));
set(handles.preprocessBtn, 'Enable', 'on');
end
else
if evalin('base','exist(''bird3'')')
set(handles.filenameTable, 'Data', evalin('base','bird3'));
set(handles.preprocessBtn, 'Enable', 'off');
else
set(handles.filenameTable, 'Data', cell(0,0));
set(handles.preprocessBtn, 'Enable', 'on');
end
end
Source code Feature Extraction and Database GUI
function varargout = FeatureExtractionAndDatabase(varargin)
% FEATUREEXTRACTIONANDDATABASE MATLAB code for FeatureExtractionAndDatabase.fig
% FEATUREEXTRACTIONANDDATABASE, by itself, creates a new
FEATUREEXTRACTIONANDDATABASE or raises the existing
% singleton*.
%
% H = FEATUREEXTRACTIONANDDATABASE returns the handle to a new
FEATUREEXTRACTIONANDDATABASE or the handle to
% the existing singleton*.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
%
% FEATUREEXTRACTIONANDDATABASE('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in FEATUREEXTRACTIONANDDATABASE.M with the given
input arguments.
%
% FEATUREEXTRACTIONANDDATABASE('Property','Value',...) creates a new
FEATUREEXTRACTIONANDDATABASE or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before FeatureExtractionAndDatabase_OpeningFcn gets
called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to FeatureExtractionAndDatabase_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 FeatureExtractionAndDatabase
% Last Modified by GUIDE v2.5 19-Jun-2016 14:08:42
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @FeatureExtractionAndDatabase_OpeningFcn, ...
'gui_OutputFcn', @FeatureExtractionAndDatabase_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 FeatureExtractionAndDatabase is made visible.
function FeatureExtractionAndDatabase_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 FeatureExtractionAndDatabase (see VARARGIN)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
% Choose default command line output for FeatureExtractionAndDatabase
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes FeatureExtractionAndDatabase wait for user response (see UIRESUME)
% uiwait(handles.featureFigure);
addMyPath;
set(handles.busy, 'String', 'Ready');
set(handles.bird, 'SelectedObject', handles.bird1);
if exist('bird_dataset','file') && evalin('base', 'exist(''audioList'')') &&
evalin('base', 'exist(''dirName'')')
set(handles.audioList, 'String', evalin('base', 'audioList'));
set(handles.browse, 'String', evalin('base', 'dirName'));
[inputs,targets] = bird_dataset;
set(handles.featureTable, 'Data', inputs);
set(handles.extractBtn, 'String', 'Clear Features');
else
set(handles.featureTable, 'Data', cell(0,0));
end
if evalin('base', 'exist(''birdInfo'')')
birdInfo = evalin('base', 'birdInfo');
handles.birdInfo = birdInfo;
axes(handles.picture);
imshow(birdInfo(1).picture);
set(handles.sciName, 'String', birdInfo(1).sciname);
set(handles.family, 'String', birdInfo(1).family);
set(handles.genus, 'String', birdInfo(1).genus);
else
defpic = imread('bird picture/Unknown.jpg');
birdInfo = struct('picture',{defpic defpic
defpic},'sciname','default','family','default','genus','default');
handles.birdInfo = birdInfo;
assignin('base', 'birdInfo', birdInfo);
axes(handles.picture);
imshow(defpic);
end
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = FeatureExtractionAndDatabase_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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
% --- Executes on button press in extractBtn.
function extractBtn_Callback(hObject, eventdata, handles)
% hObject handle to extractBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.busy, 'String', 'Busy');
drawnow
extBtn = get(hObject, 'String');
if strcmp(extBtn, 'Extract Features')
list = get(handles.audioList, 'String');
listSize = size(list);
if listSize(:,1) < 2
msgbox('There are no data, please pick a folder contains audio files for
extraction.', 'Error', 'error');
set(handles.busy, 'String', '');
return
end
frameSize = (str2double(get(handles.frameSize, 'String'))/1000)*16000;
frameOverlap = (str2double(get(handles.frameOverlap, 'String'))/1000)*16000;
assignin('base','frameSize',frameSize);
assignin('base','frameOverlap',frameOverlap);
dirName = handles.dirName;
tic
fea = [];
wait = waitbar(0, '');
set(wait, 'Name', 'Extracting features...');
for i=1:listSize(:,1)
feature = [];
filename = strcat(dirName, list(i));
[y,fs] = audioread(char(filename));
opt = mfccOptSet(fs);
opt.frameSize = frameSize;
opt.overlap = frameOverlap;
opt.useDelta = 2;
mfcc = wave2mfcc(y, fs, opt);
feature(:,1) = mean(mfcc, 2); % Mean
feature(:,2) = var(mfcc, 1, 2); % Standard deviation
feature(:,3) = min(mfcc, [], 2); % Min
feature(:,4) = max(mfcc, [], 2); % Max
fea = [fea feature(:)];
waitbar(i/listSize(:,1), wait, list(i))
end
close(wait);
birdInputs = fea;
smpl = get(handles.targetClass, 'String');
sample = strsplit(smpl,',');
t1 = repmat([1 0 0],str2double(sample{1}),1)';
t2 = repmat([0 1 0],str2double(sample{2}),1)';
t3 = repmat([0 0 1],str2double(sample{3}),1)';
birdTargets = [t1 t2 t3];
save bird_dataset birdInputs birdTargets
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
set(handles.featureTable, 'Data', fea);
set(handles.elapseTime, 'String', strcat('Elapse Time : ', num2str(toc), '
seconds'));
set(handles.extractBtn, 'String', 'Clear Features');
else
evalin('base', 'clear dirName');
evalin('base', 'clear audioList');
delete('bird_dataset.mat');
set(handles.browse, 'String', '');
set(handles.audioList, 'String', {''});
set(handles.featureTable, 'Data', cell(0,0));
set(handles.extractBtn, 'String', 'Extract Features');
end
set(handles.busy, 'String', '');
guidata(hObject, handles);
% --- Executes on button press in picBtn.
function picBtn_Callback(hObject, eventdata, handles)
% hObject handle to picBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, path] = uigetfile({'*.jpg;*.jpeg;', 'JPG Files'}, ' Select picture
file');
if ~isequal(filename, 0) || ~isequal(path, 0)
birdpic = imread([path filename]);
handles.birdpic = birdpic;
axes(handles.picture);
imshow(birdpic);
else
return
end
guidata(hObject, handles);
% --- Executes on button press in svinfoBtn.
function svinfoBtn_Callback(hObject, eventdata, handles)
% hObject handle to svinfoBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h = get(handles.bird, 'SelectedObject');
birdTag = get(h, 'Tag');
birdInfo = handles.birdInfo;
sciname = get(handles.sciName, 'String');
family = get(handles.family, 'String');
genus = get(handles.genus, 'String');
if strcmp(birdTag, 'bird1')
birdInfo(1).picture = handles.birdpic;
birdInfo(1).sciname = sciname;
birdInfo(1).family = family;
birdInfo(1).genus = genus;
elseif strcmp(birdTag, 'bird2')
birdInfo(2).picture = handles.birdpic;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
birdInfo(2).sciname = sciname;
birdInfo(2).family = family;
birdInfo(2).genus = genus;
else
birdInfo(3).picture = handles.birdpic;
birdInfo(3).sciname = sciname;
birdInfo(3).family = family;
birdInfo(3).genus = genus;
end
handles.birdInfo = birdInfo;
assignin('base', 'birdInfo', birdInfo);
guidata(hObject, handles);
% --- Executes when selected object is changed in bird.
function bird_SelectionChangedFcn(hObject, eventdata, handles)
% hObject handle to the selected object in bird
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% h = get(handles.bird, 'SelectedObject');
birdTag = get(hObject, 'Tag');
birdInfo = handles.birdInfo;
if strcmp(birdTag, 'bird1')
axes(handles.picture);
imshow(birdInfo(1).picture);
set(handles.sciName, 'String', birdInfo(1).sciname);
set(handles.family, 'String', birdInfo(1).family);
set(handles.genus, 'String', birdInfo(1).genus);
elseif strcmp(birdTag, 'bird2')
axes(handles.picture);
imshow(birdInfo(2).picture);
set(handles.sciName, 'String', birdInfo(2).sciname);
set(handles.family, 'String', birdInfo(2).family);
set(handles.genus, 'String', birdInfo(2).genus);
else
axes(handles.picture);
imshow(birdInfo(3).picture);
set(handles.sciName, 'String', birdInfo(3).sciname);
set(handles.family, 'String', birdInfo(3).family);
set(handles.genus, 'String', birdInfo(3).genus);
end
% --- Executes on button press in browseBtn.
function browseBtn_Callback(hObject, eventdata, handles)
% hObject handle to browseBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
currentDir = pwd;
dirName = uigetdir(currentDir, 'Pick a directory');
handles.dirName = strcat(dirName, '\');
if ~isequal(dirName, 0)
set(handles.browse, 'String', dirName);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
audiofiles = dir(fullfile(dirName,'*.wav'));
set(handles.audioList, 'String', {audiofiles.name});
else
return
end
guidata(hObject, handles);
assignin('base', 'dirName', dirName);
assignin('base', 'audioList', {audiofiles.name});
Source code fungsi chunkAudioV2
function [birdlist] = chunkAudioV2(monoinfo, sec, dir)
% chunkAudioV2: Split audio file into {sec} second long chunks
%
% Usage:
% birdlist = chunkAudioV2(monoinfo,sec,dir)
%
% Description:
% birdlist = chunkAudioV2(monoinfo,sec,dir) returns list birdlist of
generated audio
% chunk
% birdlist: Output list filename, duration, and directory name for
generated audio chunk files
%
if nargin < 2; sec = 10; end
Fs = monoinfo.SampleRate;
chunkDuration = sec;
numSamplesPerChunk = chunkDuration*Fs;
birdlist = cell(10,3);
audioName = monoinfo.Name;
mkdir(dir);
dirName = dir;
chunkCounter = 1;
for startLoc = 1:numSamplesPerChunk:monoinfo.TotalSamples
endLoc = min(startLoc + numSamplesPerChunk - 1, monoinfo.TotalSamples);
y = audioread(monoinfo.Filename, [startLoc endLoc]);
duration = (endLoc-startLoc)/Fs;
outFileName = sprintf(strcat(audioName, '%03d.wav'), chunkCounter);
name = strcat(dirName,outFileName);
birdlist{chunkCounter,1} = outFileName;
birdlist{chunkCounter,2} = round(duration);
birdlist{chunkCounter,3} = dirName;
audiowrite(name, y, Fs);
chunkCounter = chunkCounter + 1;
end
end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
Source code fungsi networkTrain
function [accuracy,net,yTst,tTst,trainingrecord] =
networkTrain(inputs,targets,k,netConfig)
clc
if nargin < 1
[inputs,targets] = bird_dataset;
k = 10;
end
[O,N] = size(targets);
%===============(all class)random=================================
% ind0 = randperm(N);
% ind0 = 1:N; %for debugging
% M = floor(N/k); %length(valind & tstind)
%===============(all class)random=================================
%===============(per class)not random=============================
trueclassind = vec2ind(targets);
t1 = find(trueclassind == 1);
t2 = find(trueclassind == 2);
t3 = find(trueclassind == 3);
ind0 = 1:N;
M = floor((N/3)/k); %length(valind & tstind)
% M = 12;
%===============(per class)not random=============================
% rng('default')
% rng('shuffle')
rng(0)
if nargin < 1
net = patternnet(10);
else
if netConfig.hiddenLayer2 ~= 0
net = patternnet([netConfig.hiddenLayer1 netConfig.hiddenLayer2]);
else
net = patternnet(netConfig.hiddenLayer1);
end
net.trainFcn = netConfig.trainFcn;
net.trainParam.epochs = netConfig.epochs;
end
net.divideFcn = 'divideind';
net.trainParam.showWindow = false;
net.trainParam.showCommandLine = true;
yTst = [];
tTst = [];
for i = 1:k
net = configure(net,inputs,targets);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
%%===============train,validation,test=============================
%random
% valind = 1 + M*(i-1):M*i;
% if i == k
% tstind = 1:M;
% trnind = [M+1:M*(k-1),M*k+1:N];
% else
% tstind = valind + M;
% trnind = [1:valind(1)-1,tstind(end)+1:N];
% end
% trnInd = ind0(trnind);
% valInd = ind0(valind);
% tstInd = ind0(tstind);
%not random
valind = 1 + M*(i-1):M*i;
if i == k
tstind = 1:M;
trnind = [M+1:M*(k-1),M*k+1:N/3];
else
tstind = valind + M;
trnind = [1:valind(1)-1,tstind(end)+1:N/3];
end
trnInd = [ind0(t1(trnind)),ind0(t2(trnind)),ind0(t3(trnind))];
valInd = [ind0(t1(valind)),ind0(t2(valind)),ind0(t3(valind))];
tstInd = [ind0(t1(tstind)),ind0(t2(tstind)),ind0(t3(tstind))];
net.divideParam.trainInd = trnInd;
net.divideParam.valInd = valInd;
net.divideParam.testInd = tstInd;
%%===============train,validation,test==============================
%%===============train,test=========================================
%random
% tstind = 1 + M*(i-1):M*i;
% if i == k
% trnind = 1:tstind(1)-1;
% else
% trnind = tstind(end)+1:N;
% end
% trnInd = ind0(trnind);
% tstInd = ind0(tstind);
%not random
% tstind = 1 + M*(i-1):M*i;
% if i == k
% trnind = 1:tstind(1)-1;
% else
% trnind = tstind(end)+1:N/3;
% end
% trnInd = [ind0(t1(trnind)),ind0(t2(trnind)),ind0(t3(trnind))];
% tstInd = [ind0(t1(tstind)),ind0(t2(tstind)),ind0(t3(tstind))];
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
% net.divideParam.trainInd = trnInd;
% net.divideParam.testInd = tstInd;
%%===============train,test=========================================
[net,tr,y,e] = train(net,inputs,targets);
% Test Confusion Plot Variables
ytst = net(inputs(:,tr.testInd));
yTst = [yTst ytst];
ttst = targets(:,tr.testInd);
tTst = [tTst ttst];
trainingrecord{i} = tr;
end
Nerr = sum(vec2ind(yTst) ~= vec2ind(tTst));
PctErr = 100*Nerr/size(yTst,2);
accuracy = 100 - PctErr;
end
Source code Training and Testing GUI
function varargout = TrainingAndTesting(varargin)
% TRAININGANDTESTING MATLAB code for TrainingAndTesting.fig
% TRAININGANDTESTING, by itself, creates a new TRAININGANDTESTING or raises
the existing
% singleton*.
%
% H = TRAININGANDTESTING returns the handle to a new TRAININGANDTESTING or
the handle to
% the existing singleton*.
%
% TRAININGANDTESTING('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in TRAININGANDTESTING.M with the given input
arguments.
%
% TRAININGANDTESTING('Property','Value',...) creates a new TRAININGANDTESTING
or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before TrainingAndTesting_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to TrainingAndTesting_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 TrainingAndTesting
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
% Last Modified by GUIDE v2.5 22-Jul-2016 15:39:32
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @TrainingAndTesting_OpeningFcn, ...
'gui_OutputFcn', @TrainingAndTesting_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 TrainingAndTesting is made visible.
function TrainingAndTesting_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 TrainingAndTesting (see VARARGIN)
% Choose default command line output for TrainingAndTesting
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes TrainingAndTesting wait for user response (see UIRESUME)
% uiwait(handles.figure1);
addMyPath;
set(handles.busy, 'String', 'Ready');
if evalin('base', 'exist(''templateData'')')
templateData = evalin('base', 'templateData');
else
templateData = struct('mean',{1:13 1:26 1:39},'variance',{40:52 40:65
40:78},'min',{79:91 79:104 79:117},'max',{118:130 118:143 118:156});
assignin('base', 'templateData', templateData);
end
if evalin('base', 'exist(''logDataTrain'')')
logDataTrain = evalin('base', 'logDataTrain');
set(handles.logTable, 'Data', logDataTrain);
else
logDataTrain = cell(0,0);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
set(handles.logTable, 'Data', logDataTrain);
assignin('base', 'logDataTrain', logDataTrain);
end
handles.templateData = templateData;
handles.logDataTrain = logDataTrain;
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = TrainingAndTesting_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 trainFcn_CreateFcn(hObject, eventdata, handles)
% hObject handle to trainFcn (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
set(hObject, 'String',
{'traingdm','traingda','traingdx','traincgf','traincgp','traincgb','trainscg','tra
inlm','trainrp'});
% --- Executes on button press in trainTest.
function trainTest_Callback(hObject, eventdata, handles)
% hObject handle to trainTest (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.busy, 'String', 'Busy');
drawnow
h = get(handles.mfccCoe, 'SelectedObject');
mfccTag = get(h, 'Tag');
mean = 0;
variance = 0;
min = 0;
max = 0;
if strcmp(mfccTag, 'noDelta')
x = 1;
elseif strcmp(mfccTag, 'delta')
x = 2;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
else
x = 3;
end
templateData = handles.templateData;
if (get(handles.mean,'Value') == 1)
mean = templateData(x).mean;
end
if (get(handles.variance,'Value') == 1)
variance = templateData(x).variance;
end
if (get(handles.min,'Value') == 1)
min = templateData(x).min;
end
if (get(handles.max,'Value') == 1)
max = templateData(x).max;
end
[x,targets] = bird_dataset;
data = x';
selected = [mean variance min max];
assignin('base', 'selected', selected);
inputs = data(:,selected(selected~=0));
trainFcnh = get(handles.trainFcn,'String');
trainFcnv = trainFcnh{get(handles.trainFcn,'Value')};
netConfig.hiddenLayer1 = str2double(get(handles.hiddenLayer1, 'String'));
netConfig.hiddenLayer2 = str2double(get(handles.hiddenLayer2, 'String'));
netConfig.epochs = str2double(get(handles.epochs, 'String'));
netConfig.trainFcn = trainFcnv;
k = str2double(get(handles.kfold, 'String'));
tic
% [accuracy, conmat, net] = netTrain(dataset',netConfig);
[accuracy,net,yTst,tTst,tr] = networkTrain(inputs',targets,k,netConfig);
tstop = toc;
set(handles.accuracy, 'String', strcat(num2str(accuracy),'%'));
set(handles.elapseTime, 'String', strcat(num2str(tstop), ' seconds'));
handles.yTst = yTst;
handles.tTst = tTst;
logDataTrain = handles.logDataTrain;
r = size(logDataTrain,1);
logDataTrain{r+1,1} = mfccTag;
logDataTrain{r+1,2} = get(handles.mean,'Value');
logDataTrain{r+1,3} = get(handles.variance,'Value');
logDataTrain{r+1,4} = get(handles.min,'Value');
logDataTrain{r+1,5} = get(handles.max,'Value');
logDataTrain{r+1,6} = str2double(get(handles.hiddenLayer1, 'String'));
logDataTrain{r+1,7} = str2double(get(handles.hiddenLayer2, 'String'));
logDataTrain{r+1,8} = trainFcnv;
logDataTrain{r+1,9} = k;
logDataTrain{r+1,10} = num2str(accuracy);
logDataTrain{r+1,11} = num2str(tstop);
handles.logDataTrain = logDataTrain;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
set(handles.logTable, 'Data', logDataTrain);
assignin('base', 'net', net);
assignin('base', 'logDataTrain', logDataTrain);
assignin('base', 'tr', tr);
set(handles.busy, 'String', '');
guidata(hObject, handles);
% --- Executes on button press in plotconf.
function plotconf_Callback(hObject, eventdata, handles)
% hObject handle to plotconf (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
figure,
plotconfusion(handles.tTst,handles.yTst)
Source code Classify GUI
function varargout = Classify(varargin)
% CLASSIFYBTN MATLAB code for classifybtn.fig
% CLASSIFYBTN, by itself, creates a new CLASSIFYBTN or raises the existing
% singleton*.
%
% H = CLASSIFYBTN returns the handle to a new CLASSIFYBTN or the handle to
% the existing singleton*.
%
% CLASSIFYBTN('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in CLASSIFYBTN.M with the given input arguments.
%
% CLASSIFYBTN('Property','Value',...) creates a new CLASSIFYBTN or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Classify_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Classify_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 classifybtn
% Last Modified by GUIDE v2.5 29-Jul-2016 03:44:18
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Classify_OpeningFcn, ...
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
'gui_OutputFcn', @Classify_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 classifybtn is made visible.
function Classify_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 classifybtn (see VARARGIN)
% Choose default command line output for classifybtn
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes classifybtn wait for user response (see UIRESUME)
% uiwait(handles.figure1);
set(handles.busy, 'String', 'Ready');
defpic = imread('bird picture/Unknown.jpg');
handles.defpic = defpic;
axes(handles.picture);
imshow(defpic);
set(handles.sciName, 'String', '-');
set(handles.family, 'String', '-');
set(handles.genus, 'String', '-');
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = Classify_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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
function browse_Callback(hObject, eventdata, handles)
% hObject handle to browse (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of browse as text
% str2double(get(hObject,'String')) returns contents of browse as a double
% --- Executes during object creation, after setting all properties.
function browse_CreateFcn(hObject, eventdata, handles)
% hObject handle to browse (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit 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 browseBtn.
function browseBtn_Callback(hObject, eventdata, handles)
% hObject handle to browseBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, path] = uigetfile({'*.wav;', 'Wave Files'}, ' Select audio file');
if ~isequal(filename, 0) || ~isequal(path, 0)
pathfile = strcat(path, filename);
set(handles.browse, 'String', pathfile);
handles.pathfile = pathfile;
else
return
end
guidata(hObject, handles);
% --- Executes on button press in classifyBtn.
function classifyBtn_Callback(hObject, eventdata, handles)
% hObject handle to classifyBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.busy, 'String', 'Busy');
axes(handles.picture);
imshow(handles.defpic);
set(handles.sciName, 'String', '-');
set(handles.family, 'String', '-');
set(handles.genus, 'String', '-');
drawnow
[y, fs] = audioread(handles.pathfile);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
sound(y,fs);
handles.y = y;
handles.fs = fs;
opt = mfccOptSet(fs);
opt.frameSize = evalin('base', 'frameSize');
opt.overlap = evalin('base', 'frameOverlap');
opt.useDelta = 2;
[mfcc, yPreEmp] = wave2mfcc(y, fs, opt);
handles.yPreEmp = yPreEmp;
feature(:,1) = mean(mfcc, 2); % Mean
feature(:,2) = var(mfcc, 1, 2); % Standard deviation
feature(:,3) = min(mfcc, [], 2); % Min
feature(:,4) = max(mfcc, [], 2); % Max
input = feature(:);
data = input';
selected = evalin('base', 'selected');
classData = data(:,selected(selected~=0));
net = evalin('base', 'net');
output = net(classData');
ind = vec2ind(output);
birdInfo = evalin('base', 'birdInfo');
axes(handles.picture);
imshow(birdInfo(ind(1)).picture);
set(handles.sciName, 'String', birdInfo(ind(1)).sciname);
set(handles.family, 'String', birdInfo(ind(1)).family);
set(handles.genus, 'String', birdInfo(ind(1)).genus);
set(handles.namaBahasa, 'String', birdInfo(ind(1)).namabahasa);
set(handles.busy, 'String', '');
guidata(hObject, handles);
% --- Executes on button press in oripreBtn.
function oripreBtn_Callback(hObject, eventdata, handles)
% hObject handle to oripreBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a = 0.95;
y = handles.y;
y2 = handles.yPreEmp;
fs = handles.fs;
time = (1:length(y))/fs;
assignin('base', 'y', y);
assignin('base', 'y2', y2);
assignin('base', 'fs', fs);
figure
subplot(2,1,1);
plot(time, y);
title('Original wave: s(n)');
subplot(2,1,2);
plot(time, y2);
title(sprintf('After pre-emphasis: s_2(n)=s(n)-a*s(n-1), a=%f', a));
subplot(2,1,1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
set(gca, 'unit', 'pixel');
axisPos = get(gca, 'position');
uicontrol('string', 'Play', 'position', [axisPos(1:2), 60, 20], 'callback',
'sound(y, fs)');
subplot(2,1,2);
set(gca, 'unit', 'pixel');
axisPos = get(gca, 'position');
uicontrol('string', 'Play', 'position', [axisPos(1:2), 60, 20], 'callback',
'sound(y2, fs)');
% --- Executes on button press in signal.
function signal_Callback(hObject, eventdata, handles)
% hObject handle to signal (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
y = handles.y;
fs = handles.fs;
figure
subplot(2,1,1);
plot(y), axis ('tight');
ylabel('Amplitude');
xlabel('Time');
subplot(2,1,2);
ylabel('Spectrogram');
xlabel('Frequency');
specgram(y,[],fs);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Recommended