PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
iii
Tanggal : ...............................
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
2.5.
2.6.
Mel Frequency Cepstral Coefficients ........................................... 8
Jaringan Syaraf Tiruan ......................................................................... 12 2.5.1.
Arsitektur Jaringan .................................................................... 12
2.5.2.
Back Propagation ...................................................................... 14
Mempercepat Pelatihan Backpropagation............................................. 18
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
4.2.
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
Analisa Hasil ....................................................................................... 53
BAB V PENUTUP ............................................................................................ 55 5.1.
Kesimpulan.......................................................................................... 55
5.2.
Saran ................................................................................................... 55
DAFTAR PUSTAKA ........................................................................................ 56 LAMPIRAN ...................................................................................................... 57
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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. 1
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. Batasanbatasan 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
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
5
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. Ztransform 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 masingmasing 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 penghubungpenghubung. 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 ratarata 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 𝒑𝟎 = −𝒈𝟎 , b.
( 2.30 )
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
Model
Positif Negatif
Target Positif Negatif a b c d sensitivity specitivity a/(a+c) d/(b+d)
Positive predictive value a/(a+b) Negative predictive value d/(c+d) Accuracy = (a+d)/(a+b+c+d)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Preprocessing
Jaringan Syaraf Tiruan training feature
Ekstraksi Ciri
Model Jaringan testing feature
Hasil Klasifikasi
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. 25
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 Without Delta or Delta Delta (13 coefficients) Delta (26 coefficients) Delta Delta (39 coefficients)
Statistic Features Indices Total Mean Variance Minimum Maximum Coefficients 1-13
40-52
79-91
118-130
52
1-26
40-65
79-104
118-143
104
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) masingmasing 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 1 2 3 4 5
Train Validation Test 3,4,5 1 2 1,4,5 2 3 1,2,5 3 4 1,2,3 4 5 2,3,4 5 1
Tabel 3.4 10 Fold Cross Validation Percobaan 1 2 3 4 5 6 7 8 9 10
Train Validation Test 3,4,5,6,7,8,9,10 1 2 1,4,5,6,7,8,9,10 2 3 1,2,5,6,7,8,9,10 3 4 1,2,3,6,7,8,9,10 4 5 1,2,3,4,7,8,9,10 5 6 1,2,3,4,5,8,9,10 6 7 1,2,3,4,5,6,9,10 7 8 1,2,3,4,5,6,7,10 8 9 1,2,3,4,5,6,7,8 9 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
z1
x2
z2 x3
z3 x4
y1
y2
y3 Output
zj
xi
Hidden Layer 1
Input
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
z1
z1
z2
z2
x2
x3
y1
z3
z3
x4
y2
y3 Output
xi
zj
zk
Hidden Layer 1
Hidden Layer 2
Input
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 preemphasis. 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 parameterparameter 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
3 Fold Cross Validation 90 80
70
Akurasi (%)
60 50 40 30 20 10 0
V,Ma
Mi,Ma
M,V,Mi
M,V,Ma
V,Mi,Ma
M,V,Mi, Ma
71.39
73.33
82.5
70.83
71.94
83.33
79.44
73.61
73.06
76.11
78.61
74.72
76.39
78.89
73.61
75.28
73.06
73.89
73.61
72.5
69.72
72.5
79.72
M
V
Mi
Ma
M,V
M,Mi
M,Ma
85.28
80.28
80.83
79.72
68.61
78.61
75
MFCC 26
72.5
76.94
77.5
73.61
75
72.78
MFCC 39
72.22
79.17
83.89
71.67
76.39
75.56
V,Mi
Feature MFCC 13
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 44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dengan feature lainnya menghasilkan akurasi yang jauh lebih besar dibandingkan dengan kombinasi feature variance, min, dan max tersebut yaitu sebesar 85.28%.
5 Fold Cross Validation 100
Akurasi (%)
95
90
85
80
75 M
V
Mi
Ma
M,V
M,Mi
M,Ma
V,Mi
V,Ma
Mi,Ma
M,V,Mi
M,V,Ma
V,Mi,Ma
M,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
Gambar 4.3 Grafik akurasi untuk 5 fold cross validation 45
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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%.
46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10 Fold Cross Validation 100 98
Akurasi (%)
96 94
92 90 88 86 84 M
V
Mi
Ma
M,V
M,Mi
M,Ma
V,Mi
V,Ma
Mi,Ma
M,V,Mi
M,V,Ma
V,Mi,Ma
M,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
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 47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
48
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 49
4.1.2. Optimalisasi Jaringan Syaraf Tiruan
Akurasi Feature Mean (%)
Optimasilasi JST K-fold = 10 100 99.5 99 98.5 98 97.5 97 96.5
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
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%.
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.
Akurasi (%)
Percobaan Metode Training 100 90 80 70 60 50 40 30 20 10 0
traingd m
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
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.
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 1 2 3
File Rekaman Suara Burung Lima rekaman suara burung cucak hijau Lima rekaman suara burung cucak rawa Lima rekaman suara burung kenari
Hasil Benar semua Benar semua 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
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.
55
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*.
%
applied to the GUI before MainMenu_OpeningFcn gets called.
%
unrecognized property name or invalid value makes property application
%
stop.
Starting from the left, property value pairs are An
All inputs are passed to MainMenu_OpeningFcn via varargin.
% %
*See GUI Options on GUIDE's Tools menu.
%
instance to run (singleton)".
Choose "GUI allows only one
% % 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', 'gui_Singleton',
mfilename, ... 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*.
%
applied to the GUI before Preprocess_OpeningFcn gets called.
Starting from the left, property value pairs are
%
unrecognized property name or invalid value makes property application
%
stop.
An
All inputs are passed to Preprocess_OpeningFcn via varargin.
% %
*See GUI Options on GUIDE's Tools menu.
%
instance to run (singleton)".
Choose "GUI allows only one
% % 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', 'gui_Singleton',
mfilename, ... 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*.
%
applied to the GUI before FeatureExtractionAndDatabase_OpeningFcn gets
called.
Starting from the left, property value pairs are
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.
%
instance to run (singleton)".
Choose "GUI allows only one
% % 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', 'gui_Singleton',
mfilename, ... 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*.
%
applied to the GUI before TrainingAndTesting_OpeningFcn gets called.
Starting from the left, property value pairs are
%
unrecognized property name or invalid value makes property application
%
stop.
An
All inputs are passed to TrainingAndTesting_OpeningFcn via varargin.
% %
*See GUI Options on GUIDE's Tools menu.
%
instance to run (singleton)".
Choose "GUI allows only one
% % 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*.
%
applied to the GUI before Classify_OpeningFcn gets called.
%
unrecognized property name or invalid value makes property application
%
stop.
Starting from the left, property value pairs are An
All inputs are passed to Classify_OpeningFcn via varargin.
% %
*See GUI Options on GUIDE's Tools menu.
%
instance to run (singleton)".
Choose "GUI allows only one
% % 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', 'gui_Singleton',
mfilename, ... 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);