klasifikasi jenis burung berdasarkan suara kicau burung … · menggunakan jaringan syaraf tiruan...

95
i KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK SKRIPSI Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika Oleh : Lorencius Echo Sujianto Putera 125314085 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2016 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Upload: donguyet

Post on 11-Apr-2018

249 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

i

KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG

MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK

SKRIPSI

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana

Komputer Program Studi Teknik Informatika

Oleh :

Lorencius Echo Sujianto Putera

125314085

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 2: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

ii

BIRD CLASSIFICATION BASED ON ITS CHIRPING SOUND USING

NEURAL NETWORK BACK PROPAGATION

A THESIS

Presented as Partial Fulfillment of Requirements to Obtain Sarjana

Komputer Degree in Informatics Engineering Department

By :

Lorencius Echo Sujianto Putera

125314085

INFORMATICS ENGINEERING STUDY PROGRAM

INFORMATICS ENGINEERING DEPARTMENT

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 3: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

iii

HALAMAN PERSETUJUAN PEMBIMBING

SKRIPSI

KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG

MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK

Oleh :

Lorencius Echo Sujianto Putera

125314085

Telah disetujui oleh :

Pembimbing,

Dr. Cyprianus Kuntoro Adi, S.J., M.A., M.Sc. Tanggal : ...............................

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

iv

HALAMAN PENGESAHAN

KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG

MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK

Dipersiapkan dan ditulis oleh :

LORENCIUS ECHO SUJIANTO PUTERA

NIM : 125314085

Telah dipertahankan di depan Panitia Penguji

pada tanggal 26 Agustus 2016

dan dinyatakan memenuhi syarat

Susunan Panitia Penguji

Nama Lengkap Tanda Tangan

Ketua : Eko Hari Parmadi S.Si, M.Kom .......................

Sekretaris : Dr. Anastasia Rita Widiarti .......................

Anggota : Dr. C. Kuntoro Adi, S.J., M.A., M.Sc. .......................

Yogyakarta ...............................

Fakultas Sains dan Teknologi

Universitas Sanata Dharma

Dekan,

Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

v

MOTTO

“Strength does not come from WINNING. Your struggles develop your strengths.

When you go through HARDSHIPS and decide not to SURRENDER, that is

strength.” – Arnold Schwarzenegger

“If you can do what you do best and be HAPPY you’re further along in life than

most people.” – Leonardo DiCaprio

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 6: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

vi

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa di dalam skripsi yang saya

tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah

disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.

Yogyakarta, ................................

Penulis

Lorencius Echo Sujianto Putera

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 7: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

vii

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH

UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :

Nama : Lorencius Echo Sujianto Putera

NIM : 125314085

Demi pengembangan ilmu pengetahuan, saya memberikan kepada

Perpustakaan Universitas Sanata Dharma karya ilmiah yang berjudul :

KLASIFIKASI BURUNG BERDASARKAN SUARA KICAU BURUNG

MENGGUNAKAN JARINGAN SYARAF TIRUAN PROPAGASI BALIK

Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya

memberikan kepada perpustakaan Universitas Sanata Dharma hak untuk

menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk

pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di

internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari

saya maupun memberikan royalti kepada saya selama tetap mencantumkan nama

saya sebagai penulis.

Demikian pernyataan ini saya buat dengan sebenarnya.

Dibuat di Yogyakarta

Pada tanggal .............................

Yang menyatakan

Lorencius Echo Sujianto Putera

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 8: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

viii

ABSTRAK

Perkembangan teknologi yang semakin pesat memberikan kemudahan bagi

masyarakat dalam memenuhi kebutuhan, khususnya menyalurkan hobi terutama

untuk komunitas kicau mania. Burung selain memiliki keindahan fisik juga

memiliki keindahan suara yaitu suara kicaunya, terutama burung passerine atau

burung yang termasuk dalam ordo Passeriformes. Teknologi selain berperan

penting sebagai media untuk bertukar informasi mengenai seputar tips dalam

merawat burung, juga diharapkan untuk dapat memberikan fungsi lain, yaitu

mendeteksi suara kicau burung, sehingga masyarakat yang memiliki hobi serupa

dapat dengan mudah menentukan jenis burung berdasarkan suara kicaunya. Oleh

karena itu diperlukan sebuah sistem yang dapat mengklasifikasikan jenis burung

berdasarkan suara kicaunya.

Penelitian ini menghasilkan sebuah model klasifikasi untuk jenis burung.

Data yang digunakan merupakan data rekaman suara burung Cucak Hijau, Cucak

Rawa, dan Kenari yang didapatkan dari situs omkicau. Sistem menerapkan metode

MFCC (Mel Frequency Cepstral Coefficients) untuk cirinya dan Jaringan Syaraf

Tiruan Propagasi Balik untuk klasifikasinya.

Percobaan proses klasifikasi dengan Jaringan Syaraf Tiruan Propagasi Balik

dengan melakukan optimalisasi arsitektur jaringan dan pemilihan ciri menghasilkan

akurasi 100% untuk 13 koefisien, 99.72% untuk 26 dan 39 koefisien.

Kata Kunci : Klasifikasi, Passeriformes, MFCC, Jaringan Syaraf Tiruan

Backpropagation

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 9: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

ix

ABSTRACT

Fast technological development gives people an easiness to occupy their

own needs, especially the hobby for community of chirping mania. Not only having

physical beauty but also bird has its beautiful sound which is its chirping sound,

mainly passerine birds or birds of Passeriformes order. The technology plays an

important role as a medium for exchanging information about tips on caring for

birds, but it is also expected to be able to provide another purpose, that is to detect

birds chirping sound, so that people who have the same hobby can easily determine

the type of bird by its chirping sound. Therefore we need a system that can classify

them.

This study resulted in a classification model for the type of birds. The

selected bird recording are used: Greater Green Leafbird, Straw-headed Bulbul, and

Canary. The recordings were obtained from omkicau sites. The system applies

MFCC (Mel Frequency Cepstral Coefficients) method for its feature and Neural

Network Backpropagation for classification.

Classification process experiment using Neural Network Backpropagation

by optimizing network architecture and selecting the feature give 100% accuracy

for 13 coefficients, 99.72% accuracy for 26 and 39 coefficients.

Keyword : Classification, Passeriformes, MFCC, Neural Network

Backpropagation

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 10: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

x

KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus, yang telah

memberikan rahmat dan karunia yang berlimpah sehingga penulis dapat

menyelesaikan tugas akhir dengan baik.

Penulis menyadari bahwa pada saat pengerjaan tugas akhir ini penulis

mendapatkan banyak bantuan dari berbagai pihak, baik berupa dukungan,

perhatian, kritik, dan saran serta doa yang sangat penulis butuhkan demi kelancaran

dan mendapatkan hasil yang baik. Pada kesempatan ini penulis akan menyampaikan

ucapan terima kasih kepada :

1. Tuhan Yesus Kristus yang senantiasa mencurahkan kasih karunia-Nya serta

memberikan bimbingan dan berkat dalam setiap langkah yang telah penulis

lalui.

2. Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D. selaku Dekan Fakultas Sains dan

Teknologi Universitas Sanata Dharma Yogyakarta.

3. Dr. Cyprianus Kuntoro Adi, SJ., M.A., M.Sc. selaku dosen pembimbing

akademik dan pembimbing tugas akhir yang telah dengan sabar dan penuh

perhatian membimbing saya dalam penyusunan tugas akhir.

4. Dr. Anastasia Rita Widiarti M.Kom selaku Ketua Program Studi Teknik

Informatika yang selalu memberikan dukungan dan perhatian serta saran

kepada mahasiswa tugas akhir dalam pengerjaan tugas akhir.

5. Kedua orang tua tercinta Bapak Paulus Hari Kristanto dan Ibu Anastasia Sujiati

yang selalu mendoakan, memotivasi, dan memberikan dukungan moral maupun

materi kepada penulis, sehingga penulis dapat menyelesaikan tugas akhir ini.

6. Seluruh dosen Teknik Informatika atas ilmu yang telah diberikan selama

perkuliahan dan pengalaman-pengalaman yang sangat berarti bagi penulis.

7. Teman-temanku Kevin, Eva, Agustin, Pius, serta seluruh teman-temanku

sesama peminatan komputasi yang telah berjuang bersama dan saling

mendukung dalam penyusunan tugas akhir ini.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 11: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

xi

8. Teman-teman Teknik Informatika 2012 Sanata Dharma, terima kasih atas

semangat dan perjuangan bersama yang telah kalian berikan kepada satu sama

lain.

9. Teman-temanku selain dari prodi TI, terima kasih atas dukungan yang telah

kalian berikan.

10. Terima kasih kepada semua pihak yang tidak dapat penulis sebutkan satu

persatu yang telah mendukung penyelesaian tugas akhir ini baik secara

langsung maupun tidak langsung.

Penulis menyadari bahwa masih adanya kekurangan dalam penulisan

laporan tugas akhir ini. Kritik dan saran sangat penulis harapkan untuk perbaikan

yang akan datang. Akhir kata, penulis berharap tulisan ini dapat berguna bagi

perkembangan ilmu pengetahuan dan wawasan pembaca.

Yogyakarta, .......................

Penulis

Lorencius Echo Sujianto Putera

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 12: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

xii

DAFTAR ISI

HALAMAN JUDUL ............................................................................................ i

TITLE PAGE....................................................................................................... ii

HALAMAN PERSETUJUAN ............................................................................ iii

HALAMAN PENGESAHAN ............................................................................. iv

MOTTO............................................................................................................... v

PERNYATAAN KEASLIAN KARYA .............................................................. vi

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH

UNTUK KEPENTINGAN AKADEMIS ........................................................... vii

ABSTRAK ....................................................................................................... viii

ABSTRACT ....................................................................................................... ix

KATA PENGANTAR ......................................................................................... x

DAFTAR ISI ..................................................................................................... xii

DAFTAR TABEL ............................................................................................ xiv

DAFTAR GAMBAR ......................................................................................... xv

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

1.1. Latar Belakang....................................................................................... 1

1.2. Perumusan Masalah ............................................................................... 2

1.3. Tujuan ................................................................................................... 2

1.4. Batasan Masalah .................................................................................... 2

1.5. Luaran Tugas Akhir ............................................................................... 3

1.6. Sistematika Penulisan ............................................................................ 3

BAB II LANDASAN TEORI .............................................................................. 5

2.1. Suara Burung ......................................................................................... 5

2.2. Passeriformes ......................................................................................... 5

2.3. Jenis-jenis Passeriformes ....................................................................... 6

2.4. Ekstraksi Ciri ......................................................................................... 8

2.4.1. Mel Frequency Cepstral Coefficients ........................................... 8

2.5. Jaringan Syaraf Tiruan ......................................................................... 12

2.5.1. Arsitektur Jaringan .................................................................... 12

2.5.2. Back Propagation ...................................................................... 14

2.6. Mempercepat Pelatihan Backpropagation............................................. 18

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 13: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

xiii

2.7. K-Fold Cross Validation ...................................................................... 23

2.8. Confusion Matrix ................................................................................. 24

BAB III METODOLOGI ................................................................................... 25

3.1. Gambaran Penelitian ............................................................................ 25

3.1.1. Data .......................................................................................... 25

3.1.2. Preprocessing ............................................................................ 27

3.1.3. Ekstraksi Ciri ............................................................................ 28

3.1.4. Jaringan Syaraf Tiruan .............................................................. 31

3.1.5. Arsitektur Jaringan Syaraf Tiruan .............................................. 32

3.1.6. Metode Pengujian ..................................................................... 36

3.2. Kebutuhan Sistem ................................................................................ 36

3.3. Perancangan Antarmuka Sistem ........................................................... 37

BAB IV IMPLEMENTASI DAN ANALISA ..................................................... 42

4.1. Hasil Penelitian .................................................................................... 42

4.1.1. Pengujian Kombinasi Feature .................................................... 42

4.1.2. Optimalisasi Jaringan Syaraf Tiruan .......................................... 49

4.1.3. Percobaan Metode Training ....................................................... 50

4.1.4. Pengujian Data Tunggal ............................................................ 51

4.2. Analisa Hasil ....................................................................................... 53

BAB V PENUTUP ............................................................................................ 55

5.1. Kesimpulan.......................................................................................... 55

5.2. Saran ................................................................................................... 55

DAFTAR PUSTAKA ........................................................................................ 56

LAMPIRAN ...................................................................................................... 57

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 14: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

xiv

DAFTAR TABEL

Tabel 2.1 Confusion Matrix (Diana dan Shidik, 2014) ....................................... 24

Tabel 3.1 Statistic Features Indices .................................................................... 30

Tabel 3.2 3 Fold Cross Validation ...................................................................... 31

Tabel 3.3 5 Fold Cross Validation ...................................................................... 31

Tabel 3.4 10 Fold Cross Validation .................................................................... 31

Tabel 4.1 Tabel Hasil Uji Data Tunggal ............................................................. 51

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 15: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

xv

DAFTAR GAMBAR

Gambar 2.1 Burung Cucak Hijau (Sandi, 2012) ................................................... 6

Gambar 2.2 Burung Cucak Rawa (Bellerby, 2014) ............................................... 7

Gambar 2.3 Burung Kenari (Emilio, 2013)........................................................... 7

Gambar 2.4 Ilustrasi Arsitektur Jaringan Lapis Tunggal (Siang, 2005) ............... 13

Gambar 2.5 Ilustrasi Arsitektur Jaringan Lapis Majemuk (Siang, 2005) ............. 14

Gambar 2.6 Ilustrasi Arsitektur JST Back Propagation (Siang, 2005) ................. 14

Gambar 2.7 Efek Penghalusan Momentum (Hagan & Demuth, 1996) ................ 19

Gambar 2.8 Lintasan dengan momentum (Hagan & Demuth, 1996) ................... 20

Gambar 2.9 Lintasan Variable Learning Rate (Hagan & Demuth, 1996) ............ 22

Gambar 3.1 Diagram blok sistem ....................................................................... 25

Gambar 3.2 Contoh Sinyal dan Spectogram Suara Burung Cucak Hijau ............. 26

Gambar 3.3 Contoh Sinyal dan Spectogram Suara Burung Cucak Rawa ............ 26

Gambar 3.4 Contoh Sinyal dan Spectogram Suara Burung Kenari...................... 27

Gambar 3.5 Contoh hasil ekstraksi ciri MFCC ................................................... 28

Gambar 3.6 Arsitektur jaringan pelatihan dan pengujian 1 hiddel layer .............. 32

Gambar 3.7 Contoh model jaringan 1 hidden layer dengan MFCC 13 coefficients

dan feature mean ................................................................................................ 33

Gambar 3.8 Arsitektur jaringan pelatihan dan pengujian 2 hidden layer ............. 34

Gambar 3.9 Contoh model jaringan 2 hidden layer dengan MFCC 13 coefficients

dan feature mean ................................................................................................ 35

Gambar 3.10 Rancangan Antarmuka Menu Utama Sistem ................................. 37

Gambar 3.11 Rancangan Antarmuka Ekstraksi Ciri ............................................ 38

Gambar 3.12 Rancangan Antarmuka Klasifikasi ................................................ 40

Gambar 4.1 Hasil Ekstraksi Ciri Suara ............................................................... 42

Gambar 4.2 Grafik akurasi untuk 3 fold cross validation .................................... 44

Gambar 4.3 Grafik akurasi untuk 5 fold cross validation .................................... 45

Gambar 4.4 Grafik akurasi untuk 10 fold cross validation .................................. 47

Gambar 4.5 Grafik hasil optimalisasi ................................................................. 49

Gambar 4.6 Grafik akurasi percobaan metode training ....................................... 50

Gambar 4.7 Tampilan hasil uji coba data tunggal burung cucak hijau ................. 51

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 16: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

xvi

Gambar 4.8 Tampilan hasil uji coba data tunggal burung cucak rawa ................. 52

Gambar 4.9 Tampilan hasil uji coba data tunggal burung kenari ......................... 52

Gambar 4.10 Potongan grafik hasil percobaan 3 fold cross validation ................ 53

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 17: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

1

BAB I

PENDAHULUAN

1.1. Latar Belakang

Dengan perkembangan teknologi yang semakin pesat ini tentunya dapat

memberikan keuntungan bagi masyarakat, salah satunya adalah memberikan

kemudahan dalam memenuhi kebutuhan khususnya dalam menyalurkan hobinya

terutama untuk komunitas kicau mania. Burung selain memiliki keindahan fisik

juga memiliki keindahan suara, yaitu suara kicaunya. Di Indonesia sendiri ada

beberapa jenis burung yang umum di pelihara oleh masing-masing individu dalam

sebuah komunitas kicau mania, terutama burung passerine atau burung yang

termasuk dalam ordo Passeriformes. Dalam hal ini teknologi selain berperan

penting sebagai media untuk bertukar informasi mengenai seputar tips dalam

merawat burung, juga diharapkan untuk dapat memberikan fungsi lain, yaitu

mendeteksi suara kicau burung, sehingga masyarakat yang memiliki hobi serupa

dapat dengan mudah menentukan jenis burung. Maka, untuk memenuhi hal itu

diperlukan sebuah sistem yang dapat mengklasifikasikan jenis burung berdasarkan

suara kicaunya.

Pada tahun 2012 terdapat penelitian dengan judul “Klasifikasi Jenis Burung

Berdasarkan Suara Kicau Burung Menggunakan Wavelet Packet Decomposition

Dan Jaringan Syaraf Tiruan Self Organizing Map” (Annisa, dkk 2012). Penelitian

tersebut bertujuan untuk membuat sebuah sistem yang mampu mengklasifikasikan

jenis burung berdasarkan suara kicaunya dalam sebuah perlombaan kicau burung.

Nilai akurasi yang dihasilkan pada penelitian tersebut adalah 83.13% dengan

menggunakan parameter JST SOM, dan 93.75% dengan parameter Euclidean

Distance.

Pada tugas akhir ini penulis akan mencoba untuk mengklasifikasikan jenis

burung tersebut berdasarkan suara kicaunya dengan menggunakan Jaringan Syaraf

Tiruan metode Back Propagation.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 18: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

2

1.2. Perumusan Masalah

Ada beberapa hal yang harus diperhatikan berkaitan dengan proses

klasifikasi jenis burung berdasarkan suara kicaunya, mulai dari proses awal hingga

akhir. Hal tersebut dapat dirumuskan menjadi beberapa rumusan masalah, yaitu

sebagai berikut :

1. Bagaimana metode Jaringan Syaraf Tiruan Back Propagation mampu

mengklasifikasikan jenis burung berdasarkan perbedaan suaranya.

2. Berapakah akurasi yang dihasilkan oleh Jaringan Syaraf Tiruan Back

Propagation dalam mengklasifikasikan jenis burung.

Sebuah alat uji dapat dikatakan baik jika menghasilkan akurasi di atas 50%,

oleh karena itu perlu diketahui berapa nilai akurasi yang akan dihasilkan ketika

dilakukan proses klasifikasi dengan menggunakan Jaringan Syaraf Tiruan metode

Back Propagation.

1.3. Tujuan

Untuk menjawab rumusan-rumusan masalah yang ada, maka tujuan dari

tugas akhir ini dapat dijabarkan menjadi beberapa poin penting, yaitu sebagai

berikut :

1. Ekstraksi ciri suara kicau burung untuk mengetahui perbedaan dari

setiap suara kicau burung menggunakan metode Mel Frequency

Cepstral Coefficient.

2. Mengetahui hasil akurasi dalam mengklasifikasikan jenis burung

menggunakan Jaringan Syaraf Tiruan Back Propagation.

1.4. Batasan Masalah

Agar tahapan-tahapan pengerjaan tugas akhir ini lebih terfokus pada tujuan

yang telah ditetapkan, maka perlu adanya batasan-batasan masalah. Batasan-

batasan masalah tersebut, yaitu :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 19: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 20: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 21: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

5

BAB II

LANDASAN TEORI

Bab ini membahas penjabaran teori-teori yang bersangkutan dengan

penulisan Tugas Akhir ini. Teori-teori tersebut adalah Suara Burung, Pengertian

Passeriformes serta beberapa jenis Passeriformes yang akan dianalisa, Ekstraksi

Ciri, Jaringan Syaraf Tiruan, K-Fold Cross Validation, Confusion Matrix.

2.1. Suara Burung

Bagian utama mekanisme produksi suara pada burung adalah paru-paru,

bronkus, syrinx, trakea, larynx, mulut, dan paruh (Fagerlund, 2004). Syrinx burung

merupakan instrumen ganda yang ada dalam dada, pada bagian trakea yang terbagi

menjadi dua bronkus. Sebagian dari syrinx terletak pada masing-masing bronkus

dan mampu membuat suara. Hal ini berarti bahwa burung dapat bernyanyi dengan

nada yang berbeda secara bersamaan, atau bahkan dapat bernyanyi duet dengan

dirinya sendiri.

Tidak semua burung bernyanyi dan tidak semua suara yang dihasilkan

merupakan nyanyian (songs). Bernyanyi hanya terbatas pada ordo Passeriformes,

atau burung bertengger. Ini berarti bahwa setidaknya setengah dari burung-burung

yang ada di dunia tidak dapat bernyanyi. Kebanyakan burung menggunakan

vokalisasi pendek, suara tersebut memiliki banyak fungsi, dan secara umum

dinamakan panggilan (calls) untuk membedakannya dengan nyanyian (songs).

Nyanyian (songs) digunakan untuk tujuan yang berbeda dari panggilan

(calls). Hal inilah yang menarik hati manusia.

2.2. Passeriformes

Passeriform (ordo Passeriformes) dikenal sebagai burung passerine atau

burung bertengger, merupakan ordo burung terbesar yang ada di bumi. Ordo

Passeriformes terbagi menjadi dua subordo, yaitu Tyranni dan Passeri. Subordo

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 22: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 23: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 24: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

8

Genus : Serinus

Nama Ilmiah : Serinus canaria

2.4. Ekstraksi Ciri

Proses ini merupakan tahapan yang paling penting dalam

mengklasifikasikan suara kicau burung passerine. Dalam ekstraksi ciri ini akan

menghasilkan informasi penting yang dapat membedakan suara kicau ketiga jenis

burung tersebut, seperti frekuensi, amplitudo, intensitas, dan sebagainya.

2.4.1. Mel Frequency Cepstral Coefficients

MFCC didasarkan atas variasi bandwith kritis terhadap frekuensi pada

telinga manusia yang merupakan filter yang bekerja secara linier pada frekuensi

rendah dan bekerja secara logaritmik pada frekuensi tinggi. Filter ini digunakan

untuk menangkap karakteristik fonetis penting dari sinyal ucapan. Untuk meniru

kondisi telinga, karakteristik ini digambarkan dalam skala mel-frekuensi, yang

merupakan frekuensi linier di bawah 1000 Hz dan frekuensi logaritmik di atas 1000

Hz (Setiawan, dkk 2011).

1. Pre-emphasis

Menurut Jang (2005), sinyal suara 𝑠(𝑛) dikirim ke filter high-pass :

𝒔𝟐(𝒏) = 𝒔(𝒏) − 𝒂 ∗ 𝒔(𝒏 − 𝟏), ( 2.1 )

dimana 𝑠2(𝑛) adalah sinyal output dan nilai 𝑎 biasanya antara 0.9 dan 1.0. Z-

transform dari filter adalah

𝑯(𝒛) = 𝟏 − 𝒂 ∗ 𝒛−𝟏. ( 2.2 )

Tujuan dari pre-emphasis adalah untuk mengkompensasi bagian frekuensi tinggi

yang ditekan pada saat produksi suara manusia. Selain itu juga dapat memperkuat

forman penting dari frekuensi tinggi.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 25: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

9

2. Frame Blocking

Dalam langkah ini sinyal wicara kontinyu diblok menjadi frame-frame N

sampel, dengan frame-frame berdekatan dengan spasi M (M < N). Frame pertama

terdiri dari N sampel pertama. Frame kedua dengan M sampel setelah frame

pertama, dan overlap dengan N–M sampel. Dengan cara yang sama, frame ketiga

dimulai 2M sampel setelah frame pertama (atau M sampel setelah frame kedua) dan

overlap dengan N–2M sampel. Proses ini berlanjut hingga semua wicara dihitung

dalam satu atau banyak frame. Nilai tipikal untuk N dan M adalah N = 256 dan M

=100 (Mustofa, 2007).

3. Hamming Windowing

Langkah berikutnya adalah pemrosesan dengan window pada masing-

masing frame individual untuk meminimalisasi sinyal tak kontinyu pada awal dan

akhir masing-masing frame. Window dinyatakan sebagai w(n), 0 ≤ n ≤ N−1, dengan

N adalah jumlah sampel dalam masing-masing frame, 𝑥1(𝑛) adalah sinyal input

dan hasil windowing adalah 𝑦1(𝑛).

𝒚𝟏(𝒏) = 𝒙𝟏(𝒏)𝒘(𝒏), 𝟎 ≤ 𝒏 ≤ 𝑵 − 𝟏 ( 2.3 )

Jenis window yang digunakan adalah window Hamming.

𝒘(𝒏) = 𝟎. 𝟓𝟒 − 𝟎. 𝟒𝟔 𝐜𝐨𝐬 [𝟐𝝅𝒏

𝑵−𝟏] , 𝟎 ≤ 𝒏 ≤ 𝑵 − 𝟏 ( 2.4 )

Dengan N adalah jumlah sampel.

4. Fast Fourier Transform

Langkah pemrosesan berikutnya adalah transformasi fourier cepat/ fast

fourier transform (FFT), FFT ini mengubah masing-masing frame N sampel dari

domain waktu menjadi domain frekuensi. FFT adalah algoritma cepat untuk

mengimplementasikan discrete fourier transform (DFT) dengan didefinisikan pada

kumpulan (set) N sampel, {𝑋𝑛}, seperti berikut ini

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 26: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 27: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 28: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

12

Pada umumnya sistem pengenalan suara menggunakan 39 feature ini untuk

mengenali (Jang, 2005).

2.5. Jaringan Syaraf Tiruan

Jaringan syaraf tiruan (JST) adalah sistem pemroses informasi yang

memiliki karakteristik mirip dengan jaringan syaraf biologis (Siang, 2005).

Jaringan syaraf tiruan dibentuk sebagai generalisasi model matematika dari

jaringan syaraf biologis, dengan asumsi bahwa :

1. Pemrosesan informasi terjadi pada banyak elemen sederhana (neuron).

2. Sinyal dikirimkan diantara neuron-neuron melalui penghubung-

penghubung.

3. Penghubung antar neuron memiliki bobot yang akan memperkuat atau

memperlemah sinyal.

4. Untuk menentukan output, setiap neuron menggunakan fungsi aktivasi

(biasanya bukan fungsi linier) yang dikenakan pada jumlahan input yang

diterima. Besarnya output ini selanjutnya dibandingkan dengan suatu

batas ambang.

Jaringan Syaraf Tiruan ditentukan oleh 3 hal :

1. Pola hubungan antar neuron (disebut arsitektur jaringan).

2. Metode untuk menentukan bobot penghubung (disebut metode

training/learning/algoritma).

3. Fungsi aktivasi.

2.5.1. Arsitektur Jaringan

Beberapa arsitektur jaringan yang sering dipakai dalam jaringan syaraf

tiruan antara lain :

1. Jaringan Lapis Tunggal

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 29: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 30: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 31: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 32: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 33: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 34: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 35: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

19

dengan memperhitungkan juga perubahan bobot pada epoch sebelumnya. Dengan

demikian kemungkinan terperangkap ke titik minimum lokal dapat dihindari.

Menurut Hagan dan Demuth (1996), sebelum mengaplikasikan momentum

ke dalam sebuah aplikasi jaringan syaraf, akan dibuktikan dalam sebuah ilustrasi

efek penghalusan dengan mempertimbangkan urutan pertama filter berikut :

𝒚(𝒌) = 𝜸𝒚(𝒌 − 𝟏) + (𝟏 − 𝜸) 𝒘(𝒌), ( 2.23 )

dimana 𝑤(𝑘) adalah input ke filter, 𝑦(𝑘) adalah output dari filter, dan 𝛾 adalah

koefisien momentum yang harus memenuhi

𝟎 ≤ 𝜸 < 𝟏. ( 2.24 )

Efek dari filter ini ditunjukkan pada gambar 2.7. Pada contoh ini, input ke filter

diambil dari gelombang sinus:

𝒘(𝒌) = 𝟏 + 𝐬𝐢𝐧 (𝟐𝝅𝒌

𝟏𝟔), ( 2.25 )

dan koefisien momentum yang ditetapkan pada 𝛾 = 0.9 (grafik kiri) dan 𝛾 = 0.98

(grafik kanan). Dari gambar tersebut dapat dilihat bahwa osilasi dari filter output

kurang dari osilasi filter input. Selain itu, dengan meningkatnya 𝛾, osilasi pada filter

output berkurang. Perhatikan juga bahwa rata-rata filter output sama dengan rata-

rata filter input, meskipun dengan meningkatnya 𝛾, filter output merespon dengan

lebih lambat.

Gambar 2.7 Efek Penghalusan Momentum (Hagan & Demuth, 1996)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 36: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 37: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 38: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 39: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

23

4. Gradien Conjugate (traincgf, traincgp, traincgb)

Dalam standar backpropagation, bobot dimodifikasi pada arah penurunan

tercepat. Meskipun penurunan fungsi berjalan cepat, tapi tidak menjamin akan

konvergen dengan cepat. Dalam algoritma gradien conjugate, pencarian dilakukan

sepanjang arah conjugate. Dalam banyak kasus, pencarian ini lebih cepat. Ada

berbagai metode pencarian yang dilakukan berdasarkan prinsip gradien conjugate,

antara lain Fletcher-Reeves (‘traincgf’), Polak-Ribiere (‘traincgp’), Powel Beale

(‘traincgb’).

Menurut Hagan & Demuth (1996), langkah-langkah dalam gradien

conjugate adalah sebagai berikut :

a. Memilih arah pencarian pertama 𝑝0 menjadi gradien negatif

𝒑𝟎 = −𝒈𝟎, ( 2.30 )

b. Kemudian memilih learning rate 𝛼𝑘 untuk meminimalisasi fungsi

bersamaan dengan arah pencarian :

𝒙𝒌+𝟏 = 𝒙𝒌 + 𝜶𝒌𝒑𝒌, ( 2.31 )

c. Lalu memilih arah pencarian selanjutnya berdasarkan persamaan

𝒑𝒌 = −𝒈𝒌 + 𝜷𝒌𝒑𝒌−𝟏, ( 2.32 )

dengan persamaan berikut ini untuk menghitung nilai 𝛽𝑘

𝜷𝒌 =∆𝒈𝒌−𝟏

𝑻 𝒈𝒌

∆𝒈𝒌−𝟏𝑻 𝒑𝒌−𝟏

atau 𝜷𝒌 =𝒈𝒌

𝑻𝒈𝒌

𝒈𝒌−𝟏𝑻 𝒈𝒌−𝟏

atau 𝜷𝒌 =∆𝒈𝒌−𝟏

𝑻 𝒈𝒌

𝒈𝒌−𝟏𝑻 𝒈𝒌−𝟏

( 2.33 )

d. Jika algoritma belum konvergen maka lanjut pada langkah ke-2.

2.7. K-Fold Cross Validation

K-Fold Cross Validation merupakan teknik umum untuk menguji kinerja

dari classifier. Data dibagi menjadi k bagian (fold), kemudian selama 𝑖 = 1, … , 𝑘

dilakukan pelatihan terhadap data selain fold ke-i dan dilakukan pengujian terhadap

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 40: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

24

data fold ke-i tersebut, lalu menghitung jumlah pengujian yang mengalami

kesalahan klasifikasi.

2.8. Confusion Matrix

Confusion Matrix menunjukkan jumlah prediksi yang benar dan salah yang

dibuat oleh model klasifikasi dibandingkan dengan hasil yang sebenarnya (nilai

target) dalam data. Matrix adalah n x n, dimana n adalah jumlah nilai target (kelas).

Kinerja model seperti ini biasanya dievaluasi dengan menggunakan data dalam

matrix. Tabel berikut menampilkan confusion matrix 2 x 2 untuk dua kelas (positif

dan negatif) (Diana dan Shidik, 2014).

Tabel 2.1 Confusion Matrix (Diana dan Shidik, 2014)

Confusion Matrix Target

Positif Negatif

Model Positif a b Positive predictive value a/(a+b)

Negatif c d Negative predictive value d/(c+d)

sensitivity specitivity Accuracy = (a+d)/(a+b+c+d)

a/(a+c) d/(b+d)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 41: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

25

BAB III

METODOLOGI PENELITIAN

Bab ini membahas analisa kebutuhan sistem mencakup metode yang

digunakan untuk ekstraksi ciri suara burung, klasifikasi, dan pengujian sistem.

Selain kebutuhan sistem, bab ini juga berisi perancangan sistem mencakup ekstraksi

ciri, klasifikasi, pengujian, dan perancangan antarmuka sistem.

3.1. Gambaran Penelitian

Data

Ekstraksi Ciri

Jaringan Syaraf Tiruan

Model Jaringan

Hasil Klasifikasi

training feature

testing feature

Preprocessing

Gambar 3.1 Diagram blok sistem

3.1.1. Data

Suara burung yang dipilih dalam klasifikasi ini adalah Cucak Hijau, Cucak

Rawa, dan Kenari. Ketiga suara burung tersebut merupakan jenis burung yang

termasuk populer di kalangan para kicau mania, oleh karena itu pemilihan jenis

suara tersebut dilakukan karena banyaknya data suara yang dapat di akses oleh

publik sebab cukup banyak orang-orang yang berbagi rekaman suara burung

kicaunya pada situs online seperti pada situs omkicau.

Data yang digunakan pada sistem berupa 3 buah rekaman suara burung, 1

rekaman untuk masing-masing jenis burung. Ketiga rekaman tersebut akan melalui

tahap preprosesing terlebih dahulu sebelum dilakukan ekstraksi ciri.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 42: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 43: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 44: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 45: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 46: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

30

6. Discrete Cosine Transform (DCT)

7. Log Energy

8. Delta Cepstrum

9. Menghitung nilai mean, variance, minimum, dan maximum

Sebelum masuk pada jaringan syaraf tiruan, data terlebih dahulu diseleksi

sesuai dengan feature yang diinginkan, dengan rincian dalam tabel berikut ini :

Tabel 3.1 Statistic Features Indices

MFCC Statistic Features Indices Total

Coefficients Mean Variance Minimum Maximum

Without Delta or

Delta Delta (13

coefficients)

1-13 40-52 79-91 118-130 52

Delta (26 coefficients) 1-26 40-65 79-104 118-143 104

Delta Delta (39

coefficients) 1-39 40-78 79-117 118-156 156

Keterangan :

Untuk MFCC (13 coefficients) masing-masing feature (mean, variance, minimum,

maximum) akan memiliki nilai sebanyak 13, sehingga total keseluruhan ada 52 nilai

jika semua feature tersebut dipilih.

Begitu pula dengan MFCC (26 coefficients) dan MFCC (39 coefficients) masing-

masing feature (mean, variance, minimum, maximum) akan memiliki nilai

sebanyak 26 dan 39, sehingga total keseluruhan ada 104 nilai untuk MFCC (26

coefficients) dan 156 nilai untuk MFCC (39 coefficients).

Angka-angka pada kolom mean, variance, minimum, maximum merupakan nilai

indeks yang menyatakan letak keberadaan feature tersebut pada masing-masing

MFCC-nya dalam sebuah database feature.

Kemudian data dibagi menjadi k bagian, untuk train, validation, test set.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 47: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

31

Tabel 3.2 3 Fold Cross Validation

Percobaan Train Validation Test

1 3 1 2

2 1 2 3

3 2 3 1

Tabel 3.3 5 Fold Cross Validation

Percobaan Train Validation Test

1 3,4,5 1 2

2 1,4,5 2 3

3 1,2,5 3 4

4 1,2,3 4 5

5 2,3,4 5 1

Tabel 3.4 10 Fold Cross Validation

Percobaan Train Validation Test

1 3,4,5,6,7,8,9,10 1 2

2 1,4,5,6,7,8,9,10 2 3

3 1,2,5,6,7,8,9,10 3 4

4 1,2,3,6,7,8,9,10 4 5

5 1,2,3,4,7,8,9,10 5 6

6 1,2,3,4,5,8,9,10 6 7

7 1,2,3,4,5,6,9,10 7 8

8 1,2,3,4,5,6,7,10 8 9

9 1,2,3,4,5,6,7,8 9 10

10 2,3,4,5,6,7,8,9 10 1

Setelah itu data feature yang telah dipilih akan dijadikan sebagai input pada

jaringan syaraf tiruan, pada subbab selanjutnya akan dijelaskan mengenai arsitektur

jaringan yang akan digunakan pada saat proses pelatihan dan pengujian.

3.1.4. Jaringan Syaraf Tiruan

Metode klasifikasi jaringan syaraf tiruan propagasi balik dipilih karena

kemampuannya untuk menghasilkan decision boundaries yang kompleks pada

fitur-fitur yang ada. Hasil ini dapat dilihat dengan nilai keakuratan yang dihasilkan

dari pengujian sampel diluar kumpulan sampel yang digunakan pada saat pelatihan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 48: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

32

Beberapa nilai parameter yang akan diatur pada jaringan syaraf tiruan

propagasi balik :

1. Epoch/iterasi

2. Hidden layer/lapis tersembunyi

3. Fungsi training

3.1.5. Arsitektur Jaringan Syaraf Tiruan

Ada 2 jenis arsitektur jaringan syaraf tiruan yang akan digunakan untuk

proses pelatihan dan pengujian, yaitu arsitektur dengan 1 hidden layer dan 2 hidden

layer. Untuk masing-masing arsitektur akan dilakukan percobaan dengan

mengkombinasikan beberapa parameter seperti jumlah neuron input yang akan

bervariasi sesuai dengan feature yang dipilih, jumlah neuron pada masing-masing

hidden layer serta fungsi training.

Satu hidden layer

x1

x2

x3

x4

xi

z1

z2

z3

zj

y1

y2

y3

Input

Hidden Layer 1

Output

Gambar 3.6 Arsitektur jaringan pelatihan dan pengujian 1 hiddel layer

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 49: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 50: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

34

Dua hidden layer

x1

x2

x3

x4

xi

z1

z2

z3

zj

y1

y2

y3

z1

z2

z3

zk

Input

Hidden Layer 1 Hidden Layer 2

Output

Gambar 3.8 Arsitektur jaringan pelatihan dan pengujian 2 hidden layer

Pada gambar 3.7, merupakan gambaran arsitektur jaringan dengan 2 hidden

layer yang akan digunakan untuk optimalisasi jaringan yang telah dihasilkan

sebelumnya pada arsitektur jaringan dengan 1 hidden layer. Sama halnya dengan

arsitektur jaringan 1 hidden layer, adapun penjelasan mengenai gambar di atas

adalah sebagai berikut :

1. Input (x1, x2, x3, ..... xi) merupakan lapisan input pada jaringan yang akan

mewakili feature terpilih, sesuai dengan tabel 3.1. Sebagai contoh, jika

feature yang dipilih adalah MFCC (13 coefficients) dengan nilai statistik

mean maka nilai-nilai yang akan mengisi lapisan input jaringan adalah nilai

yang ada pada indeks 1-13 dalam database, sehingga secara otomatis

jumlah neuron pada lapisan input berjumlah sebanyak 13, mengikuti jumlah

nilai feature yang dipilih.

2. Hidden layer 1 (z1, z2, z3, ..... zj) merupakan lapisan tersembunyi yang

digunakan untuk mentransformasikan nilai-nilai input menjadi nilai yang

dapat digunakan pada lapisan tersembunyi yang kedua. Jumlah neuron pada

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 51: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 52: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 53: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 54: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 55: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 56: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 57: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

41

c. Tombol classify – berfungsi untuk melakukan proses klasifikasi

terhadap file suara yang telah dipilih.

d. Tombol view original and pre-emphasis – berfungsi untuk

membuka jendela yang berisikan spectogram dari suara original dan

setelah dilakukan proses pre-emphasis serta tombol play yang

berguna untuk memutar suara original dan setelah dilakukan pre-

emphasis.

e. Tombol view signal and spectogram – berfungsi untuk

menampilkan grafik sinyal dan spectogram suara uji.

2. Result

Pada panel ini terdapat komponen-komponen sebagai berikut :

a. Axes picture – berfungsi untuk menampilkan gambar jenis burung

sesuai dengan hasil klasifikasi.

b. Static text scientific name – berfungsi untuk menampilkan nama

ilmiah jenis burung sesuai dengan hasil klasifikasi.

c. Static text family – berfungsi untuk menampilkan famili jenis burung

sesuai dengan hasil klasifikasi.

d. Static text genus – berfungsi untuk menampilkan genus jenis burung

sesuai dengan hasil klasifikasi.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 58: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 59: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

43

dihasilkan pada saat proses ekstraksi ciri, nilai neuron pada satu atau dua hidden

layer terhadap jenis feature yang digunakan, masing-masing hidden layer akan

diberikan nilai H dimana, 10 ≤ 𝐻 ≤ 40 dan nilai H akan bertambah sebanyak 10

untuk setiap percobaannya. Percobaan awal yang dilakukan adalah uji coba

kombinasi feature pada beberapa k-fold sehingga dapat diketahui kombinasi feature

mana saja yang menghasilkan akurasi terbaik dan dihasilkan pada k-fold berapa,

lalu kombinasi tersebut akan dilakukan uji coba lagi dengan mengubah parameter-

parameter yang ada pada jaringan, yaitu jumlah hidden layer dan jumlah neuron

pada masing-masing hidden layer tersebut.

Untuk percobaan awal, parameter jaringan yang digunakan adalah sebagai

berikut :

1. Fungsi transfer hidden layer 1: tansig

2. Fungsi aktivasi: softmax

3. Fungsi training: trainscg

4. Batas epoch: 100

Hasil dari percobaan awal tersebut dapat dilihat pada grafik akurasi gambar

4.2, gambar 4.3, dan gambar 4.4.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 60: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

44

Gambar 4.2 Grafik akurasi untuk 3 fold cross validation

Pada gambar 4.2 dari hasil pengujian kombinasi feature pada 3 fold cross validation dapat dilihat bahwa akurasi pada kombinasi

feature variance, min, dan max pada MFCC 13 menghasilkan nilai tertinggi yaitu 83.33% dibandingkan dengan kombinasi feature

lainnya pada MFCC yang sama maupun berbeda. Namun dapat dilihat juga bahwa feature mean pada MFCC 13 tanpa kombinasi

M V Mi Ma M,V M,Mi M,Ma V,Mi V,Ma Mi,Ma M,V,Mi M,V,Ma V,Mi,MaM,V,Mi,

Ma

Feature

MFCC 13 85.28 80.28 80.83 79.72 68.61 78.61 75 71.39 73.33 82.5 70.83 71.94 83.33 79.44

MFCC 26 72.5 76.94 77.5 73.61 75 72.78 73.61 73.06 76.11 78.61 74.72 76.39 78.89 73.61

MFCC 39 72.22 79.17 83.89 71.67 76.39 75.56 75.28 73.06 73.89 73.61 72.5 69.72 72.5 79.72

0

10

20

30

40

50

60

70

80

90

Aku

rasi

(%

)

3 Fold Cross Validation

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 61: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

45

dengan feature lainnya menghasilkan akurasi yang jauh lebih besar dibandingkan dengan kombinasi feature variance, min, dan max

tersebut yaitu sebesar 85.28%.

Gambar 4.3 Grafik akurasi untuk 5 fold cross validation

M V Mi Ma M,V M,Mi M,Ma V,Mi V,Ma Mi,Ma M,V,Mi M,V,Ma V,Mi,MaM,V,Mi,

Ma

Feature

MFCC 13 98.61 84.17 94.44 90.28 98.89 95.28 98.61 91.39 92.5 95.56 94.72 96.94 90.83 94.72

MFCC 26 98.33 88.61 92.5 83.61 95.28 96.67 95.83 96.11 89.17 91.39 94.44 93.33 95.56 91.11

MFCC 39 97.22 91.11 95.28 84.72 95.28 95 93.33 88.06 86.11 90.56 93.06 91.11 97.22 95.56

75

80

85

90

95

100

Aku

rasi

(%

)

5 Fold Cross Validation

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 62: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

46

Pada gambar 4.3 dari hasil pengujian kombinasi feature pada 5 fold cross validation dapat dilihat bahwa akurasi pada kombinasi

feature mean, dan variance pada MFCC 13 menghasilkan nilai tertinggi yaitu 98.89% dibandingkan dengan kombinasi feature lainnya

pada MFCC yang sama maupun berbeda. Namun dapat dilihat juga bahwa feature mean pada MFCC 13 tanpa kombinasi dengan

feature lainnya juga mampu menghasilkan nilai akurasi yang cukup besar dibandingkan dengan feature tanpa kombinasi feature lainnya

maupun feature dengan kombinasi feature lainnya, yaitu sebesar 98.61%.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 63: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

47

Gambar 4.4 Grafik akurasi untuk 10 fold cross validation

Pada gambar 4.4 dari hasil pengujian kombinasi feature pada 10 fold cross validation dapat dilihat bahwa akurasi pada

kombinasi feature mean, dan variance pada MFCC 13 menghasilkan nilai tertinggi yaitu 99.17% dibandingkan dengan kombinasi

feature lainnya pada MFCC yang sama maupun berbeda. Namun dapat dilihat juga bahwa feature mean pada MFCC 13 dan MFCC 26

M V Mi Ma M,V M,Mi M,Ma V,Mi V,Ma Mi,Ma M,V,Mi M,V,Ma V,Mi,MaM,V,Mi,

Ma

Feature

MFCC 13 99.44 93.89 93.89 95.28 99.17 96.94 98.89 93.61 97.22 96.67 97.5 98.89 96.39 98.06

MFCC 26 99.44 95.56 94.72 95.83 97.78 97.22 98.33 97.22 97.22 98.06 98.33 98.89 94.72 97.78

MFCC 39 99.17 90.56 96.39 92.78 98.06 96.39 97.5 95.28 96.39 96.94 96.39 98.89 92.5 97.78

84

86

88

90

92

94

96

98

100

Aku

rasi

(%

)

10 Fold Cross Validation

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 64: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

48

tanpa kombinasi dengan feature lainnya menghasilkan akurasi yang jauh lebih besar dibandingkan dengan kombinasi feature mean,

dan variance tersebut yaitu sebesar 99.44%.

Berdasarkan ketiga grafik hasil akurasi di atas, dapat disimpulkan bahwa feature mean pada MFCC 13, MFCC 26, dan MFCC

39 sudah mampu menghasilkan akurasi yang baik tanpa harus dilakukan kombinasi dengan feature lainnya. Selain itu dapat

disimpulkan juga bahwa semakin besarnya nilai k-fold, akurasi yang dihasilkan juga semakin baik, hal ini terjadi karena pada dasarnya

pembagian data training akan jauh lebih banyak dibandingan dengan k-fold yang bernilai kecil. Sehingga pada ujicoba optimalisasi

jaringan syaraf tiruan dapat dilakukan hanya dengan feature mean saja tanpa harus dikombinasikan dengan feature lainnya dan

dilakukan dengan k-fold = 10.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 65: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

49

4.1.2. Optimalisasi Jaringan Syaraf Tiruan

Gambar 4.5 Grafik hasil optimalisasi

Pada gambar 4.5 dari hasil pengujian optimalisasi jaringan syaraf tiruan,

dengan mengubah nilai neuron pada hidden layer 2 dapat dilihat bahwa

menambahkan nilai neuron pada hidden layer 2 dengan feature mean meningkatkan

akurasi di semua nilai MFCC, dengan akurasi tertinggi yaitu 100% pada MFCC 13

dengan jumlah neuron pada hidden layer 2 yaitu 30 dan 40.

Setelah melihat hasil yang ada pada gambar grafik di atas dan grafik

sebelumnya, dapat disimpulkan bahwa nilai akurasi yang baik sudah dapat dicapai

dengan hanya menggunakan feature mean dan 1 hidden layer saja tanpa harus

mengkombinasikan dengan feature lainnya dan menambahkan jumlah hidden

layer-nya, karena nilai akurasi mampu mencapai di atas 90%.

MFCC 13 MFCC 26 MFCC 39

10 N 99.44 99.72 98.33

20 N 99.72 98.33 97.78

30 N 100 99.17 98.33

40 N 100 99.72 99.44

96.5

97

97.5

98

98.5

99

99.5

100

Aku

rasi

Fea

ture

Mea

n (

%)

Optimasilasi JST K-fold = 10

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 66: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

50

4.1.3. Percobaan Metode Training

Setelah mendapatkan kombinasi feature dan arsitektur jaringan syaraf tiruan

terbaik, akan dilakukan percobaan terhadap metode training pada jaringan syaraf

tiruan untuk melihat perubahan terhadap nilai akurasi yang dihasilkan.

Gambar 4.6 Grafik akurasi percobaan metode training

Dengan menggunakan arsitektur jaringan yang sama seperti percobaan

sebelumnya dan mengubah metode training maka didapatkan hasil akurasi seperti

pada gambar 4.6. Dapat dilihat bahwa terjadi penurunan akurasi pada metode

training traingdm, ini disebabkan dengan nilai batas epoch yang diberikan hanya

100 saja, akan berbeda jika epoch dinaikkan namun tentu saja proses pengujian

akan menjadi lebih lama. Selain itu terdapat peningkatan dan penurunan pada hasil

metode training lainnya meskipun tidak terlalu signifikan namun dapat disimpulkan

bahwa hasil akurasi yang optimal didapatkan dengan menggunakan metode training

traincgf, traincgp, traincgb, trainscg, trainlm, dan trainrp.

traingdm

traingda traingdx traincgf traincgp traincgb trainlm trainrp

MFCC 13 46.47 95 86.67 100 99.44 100 100 99.17

MFCC 26 33.33 91.67 85.83 98.61 98.61 99.44 98.89 99.17

MFCC 39 42.78 88.89 84.17 99.72 99.44 99.44 99.17 98.06

0102030405060708090

100

Aku

rasi

(%

)

Percobaan Metode Training

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 67: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

51

4.1.4. Pengujian Data Tunggal

Setelah dilakukan pelatihan pada arsitektur jaringan syaraf tiruan,

selanjutnya akan dilakukan pengujian terhadap data tunggal, data yang di uji

merupakan data yang tidak termasuk dalam proses pelatihan atau pengujian data

kelompok.

Data uji untuk masing-masing jenis burung berjumlah 5 file rekaman, setiap

rekaman akan dilakukan uji klasifikasi terhadap model jaringan syaraf tiruan yang

sudah dibentuk sebelumnya.

Hasil uji coba terhadap 15 file rekaman tersebut dapat dilihat pada tabel di

bawah ini.

Tabel 4.1 Tabel Hasil Uji Data Tunggal

No File Rekaman Suara Burung Hasil

1 Lima rekaman suara burung cucak hijau Benar semua

2 Lima rekaman suara burung cucak rawa Benar semua

3 Lima rekaman suara burung kenari Benar semua

Gambar 4.7 Tampilan hasil uji coba data tunggal burung cucak hijau

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 68: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 69: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 70: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 71: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

55

BAB V

PENUTUP

5.1. Kesimpulan

Dalam hasil penelitian klasifikasi burung berdasarkan suara kicau burung

menggunakan jaringan syaraf tiruan propagasi balik dapat disimpulkan sebagai

berikut :

1. Hasil percobaan beberapa kombinasi feature dan arsitektur jaringan untuk

klasifikasi jenis burung, sebagai berikut :

a. Penggunaan feature mean sebagai input sudah cukup untuk

menghasilkan model jaringan yang baik.

b. Pada 3 fold cross validation, feature mean menghasilkan akurasi sebesar

85,28%, pada 5 fold cross validation menghasilkan akurasi sebesar

98,61%, dan pada 10 fold cross validation menghasilkan akurasi sebesar

99,17% dengan menggunakan 1 hidden layer 10 neuron.

c. Akurasi tertinggi didapatkan pada 13 koefisien mfcc dengan 2 hidden

layer, 10 neuron hidden layer 1 dan 30 neuron hidden layer 2.

2. Model jaringan syaraf tiruan yang dihasilkan sudah mampu

mengklasifikasikan jenis burung berdasarkan suara kicaunya dengan baik

karena setelah dilakukan klasifikasi data tunggal dengan data di luar data

pelatihan, sistem mampu mengklasifikasikannya dengan cukup akurat atau

hasilnya sesuai dengan target aslinya.

5.2. Saran

Dari hasil penelitian klasifikasi jenis burung ini, ada beberapa saran yang

dapat diberikan penulis untuk penelitian selanjutnya dengan topik yang sama yaitu:

a. Menambahkan data jenis burung yang lainnya, sehingga lebih bervariasi.

b. Menggunakan metode ekstraksi ciri yang berbeda.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 72: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 73: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

57

LAMPIRAN

Source code Main Menu GUI

function varargout = MainMenu(varargin)

% MAINMENU MATLAB code for MainMenu.fig

% MAINMENU, by itself, creates a new MAINMENU or raises the existing

% singleton*.

%

% H = MAINMENU returns the handle to a new MAINMENU or the handle to

% the existing singleton*.

%

% MAINMENU('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in MAINMENU.M with the given input arguments.

%

% MAINMENU('Property','Value',...) creates a new MAINMENU or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before MainMenu_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to MainMenu_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help MainMenu

% Last Modified by GUIDE v2.5 21-May-2016 09:52:34

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @MainMenu_OpeningFcn, ...

'gui_OutputFcn', @MainMenu_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 74: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 75: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

59

% handles structure with handles and user data (see GUIDATA)

Classify;

% --- Executes when user attempts to close mainMenuFigure.

function mainMenuFigure_CloseRequestFcn(hObject, eventdata, handles)

% hObject handle to mainMenuFigure (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

autosave stop

% Hint: delete(hObject) closes the figure

delete(hObject);

Source code Preprocess GUI

function varargout = Preprocess(varargin)

% PREPROCESS MATLAB code for Preprocess.fig

% PREPROCESS, by itself, creates a new PREPROCESS or raises the existing

% singleton*.

%

% H = PREPROCESS returns the handle to a new PREPROCESS or the handle to

% the existing singleton*.

%

% PREPROCESS('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in PREPROCESS.M with the given input arguments.

%

% PREPROCESS('Property','Value',...) creates a new PREPROCESS or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before Preprocess_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to Preprocess_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Preprocess

% Last Modified by GUIDE v2.5 20-May-2016 08:22:51

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @Preprocess_OpeningFcn, ...

'gui_OutputFcn', @Preprocess_OutputFcn, ...

'gui_LayoutFcn', [] , ...

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 76: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 77: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 78: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 79: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

63

%

% FEATUREEXTRACTIONANDDATABASE('CALLBACK',hObject,eventData,handles,...)

calls the local

% function named CALLBACK in FEATUREEXTRACTIONANDDATABASE.M with the given

input arguments.

%

% FEATUREEXTRACTIONANDDATABASE('Property','Value',...) creates a new

FEATUREEXTRACTIONANDDATABASE or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before FeatureExtractionAndDatabase_OpeningFcn gets

called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to FeatureExtractionAndDatabase_OpeningFcn via

varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help FeatureExtractionAndDatabase

% Last Modified by GUIDE v2.5 19-Jun-2016 14:08:42

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FeatureExtractionAndDatabase_OpeningFcn, ...

'gui_OutputFcn', @FeatureExtractionAndDatabase_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

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

function FeatureExtractionAndDatabase_OpeningFcn(hObject, eventdata, handles,

varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to FeatureExtractionAndDatabase (see VARARGIN)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 80: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 81: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 82: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 83: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 84: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 85: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 86: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 87: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

71

% net.divideParam.trainInd = trnInd;

% net.divideParam.testInd = tstInd;

%%===============train,test=========================================

[net,tr,y,e] = train(net,inputs,targets);

% Test Confusion Plot Variables

ytst = net(inputs(:,tr.testInd));

yTst = [yTst ytst];

ttst = targets(:,tr.testInd);

tTst = [tTst ttst];

trainingrecord{i} = tr;

end

Nerr = sum(vec2ind(yTst) ~= vec2ind(tTst));

PctErr = 100*Nerr/size(yTst,2);

accuracy = 100 - PctErr;

end

Source code Training and Testing GUI

function varargout = TrainingAndTesting(varargin)

% TRAININGANDTESTING MATLAB code for TrainingAndTesting.fig

% TRAININGANDTESTING, by itself, creates a new TRAININGANDTESTING or raises

the existing

% singleton*.

%

% H = TRAININGANDTESTING returns the handle to a new TRAININGANDTESTING or

the handle to

% the existing singleton*.

%

% TRAININGANDTESTING('CALLBACK',hObject,eventData,handles,...) calls the

local

% function named CALLBACK in TRAININGANDTESTING.M with the given input

arguments.

%

% TRAININGANDTESTING('Property','Value',...) creates a new TRAININGANDTESTING

or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before TrainingAndTesting_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to TrainingAndTesting_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help TrainingAndTesting

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 88: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 89: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 90: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 91: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

75

set(handles.logTable, 'Data', logDataTrain);

assignin('base', 'net', net);

assignin('base', 'logDataTrain', logDataTrain);

assignin('base', 'tr', tr);

set(handles.busy, 'String', '');

guidata(hObject, handles);

% --- Executes on button press in plotconf.

function plotconf_Callback(hObject, eventdata, handles)

% hObject handle to plotconf (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

figure,

plotconfusion(handles.tTst,handles.yTst)

Source code Classify GUI

function varargout = Classify(varargin)

% CLASSIFYBTN MATLAB code for classifybtn.fig

% CLASSIFYBTN, by itself, creates a new CLASSIFYBTN or raises the existing

% singleton*.

%

% H = CLASSIFYBTN returns the handle to a new CLASSIFYBTN or the handle to

% the existing singleton*.

%

% CLASSIFYBTN('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in CLASSIFYBTN.M with the given input arguments.

%

% CLASSIFYBTN('Property','Value',...) creates a new CLASSIFYBTN or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before Classify_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to Classify_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help classifybtn

% Last Modified by GUIDE v2.5 29-Jul-2016 03:44:18

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @Classify_OpeningFcn, ...

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 92: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 93: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 94: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

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

Page 95: Klasifikasi Jenis Burung Berdasarkan Suara Kicau Burung … · MENGGUNAKAN JARINGAN SYARAF TIRUAN ... Susunan Panitia Penguji Nama Lengkap ... saya maupun memberikan royalti kepada

79

set(gca, 'unit', 'pixel');

axisPos = get(gca, 'position');

uicontrol('string', 'Play', 'position', [axisPos(1:2), 60, 20], 'callback',

'sound(y, fs)');

subplot(2,1,2);

set(gca, 'unit', 'pixel');

axisPos = get(gca, 'position');

uicontrol('string', 'Play', 'position', [axisPos(1:2), 60, 20], 'callback',

'sound(y2, fs)');

% --- Executes on button press in signal.

function signal_Callback(hObject, eventdata, handles)

% hObject handle to signal (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

y = handles.y;

fs = handles.fs;

figure

subplot(2,1,1);

plot(y), axis ('tight');

ylabel('Amplitude');

xlabel('Time');

subplot(2,1,2);

ylabel('Spectrogram');

xlabel('Frequency');

specgram(y,[],fs);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI