Aplikasi Pengenalan Suara Digital Nada Dasar Piano

(1)

APLIKASI PENGENALAN SUARA DIGITAL NADA DASAR PIANO

SKRIPSI

M. ARDIANSYAH 091402062

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(2)

APLIKASI PENGENALAN SUARA DIGITAL NADA DASAR PIANO

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi

M. ARDIANSYAH 091402062

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(3)

PERSETUJUAN

Judul : APLIKASI PENGENALAN SUARA DIGITAL

NADA DASAR PIANO

Kategori : SKRIPSI

Nama : MUHAMMAD ARDIANSYAH

Nomor Induk Mahasiswa : 091402062

Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI

Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI

Diluluskan di

Medan, 23 Agustus 2014

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Drs. Marihat Situmorang, M.Kom NIP. 19631214 198903 1 001

Romi Fadillah Rahmat,B.Comp.Sc.,M.Sc. NIP. 19860303 201012 1 004

Diketahui/Disetujui oleh

Program Studi Teknologi Informasi Ketua,

M. Anggia Muchtar, ST.,MM.IT NIP. 19800110 200801 1 010


(4)

PERNYATAAN

APLIKASI PENGENALAN SUARA DIGITAL NADA DASAR PIANO

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 23 Agustus 2014

Muhammad Ardiansyah 091402062


(5)

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Allah SWT Yang Maha Pengasih dan Maha Penyayang, dengan segala rahmat dan karuniaNya lah penulis bisa menyelesaikan penyusunan tugas akhir ini.

Proses penyusunan skripsi ini tidak lepas dari dukungan dan bantuan dari pihak lain. Oleh karena itu penulis mengucapkan terima kasih banyak kepada :

1. Keluarga penulis, terutama kedua orang tua penulis. Ibunda, Adriaty Handayani dan Ayahanda, R. Epidaryanto yang selalu sabar dalam mendidik dan membesarkan penulis. Adik penulis Ananda Listiarini dan Kakak penulis Annisa Yunita yang selalu memberikan semangat kepada penulis.

2. Bapak Romi Fadillah Rahmat,B.Comp.Sc.,M.Sc. dan Bapak Drs. Marihat Situmorang, M.Kom selaku pembimbing yang telah banyak meluangkan waktu dan pikirannya, memotivasi dan memberikan kritik dan saran kepada penulis.

3. Bapak dan Ibu dosen pembanding.

4. Ketua dan Sekretaris Program Studi Teknologi Informasi Bapak M. Anggia Muchtar, ST.,MM.IT. dan Bapak M. Fadly Syahputra, B.Sc.,M.Sc.IT.

5. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, semua dosen serta pegawai di Fakultas Ilmu Komputer dan Teknologi Informasi.

6. Kepada Melinda Agustien yang selalu memberikan motivasi, memberikan nasihat agar penulis dapat menyelesaikan penulisan tugas akhir ini dengan baik.

7. Kepada Nurul Khadijah, Ade Maulana yang selalu membantu penulis sehingga dapat menyelesaikan tugas akhir dengan baik.

8. Seluruh sahabat terbaik penulis yang selalu memberikan dukungan, Ade Tambunan, Ammar Adianshar, Ridzuan Ikram Fadjri, Julia Annisa, Yunisya Aulia Putri, Reza Elfandra, Ibnu setiawan, Raisha Ariani, Fanny sari wulandari, Yogi, Bora, Sheila, Septi, Aat, Ijal,Uti serta seluruh angkatan 09, serta teman-teman seluruh angkatan mahasiswa USU lainnya yang tidak dapat penulis sebutkan satu persatu, Semoga Allah SWT membalas kebaikan kalian dengan nikmat yang berlimpah.

Akhir kata, penulis memohon maaf bila dalam penulisan tugas akhir ini terdapat beberapa kesalahan, oleh karena itu penulis sangat mengharapkan adanya masukan - masukan yang membangun dan semoga tugas akhir ini dapat bermanfaat bagi semua pihak yang memerlukannya.


(6)

ABSTRAK

Dalam bermain musik khususnya bermain piano, seorang pianist membutuhkan partitur dalam panduan untuk bermain musik. Partitur merupakan tulisan yang digunakan seorang pianist untuk menyimpan atau menyampaikan sebuah lagu. Banyak pianist yang tidak mempunyai keahlian dalam pembuatan partitur, khusunya dalam pembuatan musik yang spontan. Karena itu, diperlukan sebuah aplikasi yang dapat membantu dalam pembuatan partitur dari suara musik piano. Metode ekstraksi

Mel-Frequency Cepstral Coefficient dan metode pencocokan Learning Vector Quantization digunakan untuk membuat aplikasi tersebut. Metode MFCC digunakan untuk mengambil Vector – vector yang berada didalam sebuah lagu. Dan metode LVQ digunakan untuk mencocokkan data uji dengan data acuan yang telah disimpan terlebih dahulu. Output yang dihasilan dari sistem ini berupa partitur musik dari lagu yang telah diinput kedalam sistem.

Kata kunci-pembuatan partitur, metode Mel-Frequency Cepstral Coefficient, Learning Vector Quantization.


(7)

VOICE RECOGNITION APPLICATIONS BASIC DIGITAL PIANO TONE

ABSTRACT

In playing music especially playing the piano, a pianist needs score to play music in the guide. Scores are writing who used by a pianist to store or deliver a song. Many pianists do not have expertise in the making of sheet music, especially in spontaneous music-making. Therefore, we need an application that can help in the making of the music scores. Methods for extracting is Mel - Frequency cepstral coefficient and Learning Vector Quantization matching method is used to create such applications. MFCC method is used to retrieve Vectors which resides in a song. And LVQ method is used to match test data with reference data that has been stored in advance. output of this system in the form of sheet music of a song that has been inputed into the system.

Keywords - making of musical scores, methods Mel - Frequency cepstral coefficient, Learning Vector Quantization.


(8)

DAFTAR ISI

Persetujuan i

Pernyataan ii

Penghargaan iii

Abstrak iv

Abstract v

Daftar isi vi

Daftar tabel vii

Daftar gambar viii

Bab 1 Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori 5

2.1 Latar Belakang Pengenalan Ucapan 6

2.2 Suara Musik 7

2.3 Pengolahan Audio 7

2.4 Mel-Frequency Cepstrum Coefficient ( MFCC ) 9

2.4.1 DC – Removal 9

2.4.2 Pre – Emphasize Filtering 10


(9)

2.4.4 Windowing 12

2.4.5 Analisis Fourier 13

a. Discrete Fourier Transform ( DFT ) 15

2.4.6 Fast Fourier Transform 16

2.4.7 Mel-Frequency Warping 18

2.4.8 DCT 19

2.5 Jaringan Syaraf Tiruan 19

2.5.1 Learning Vector Quantization ( LVQ ) 20

2.6 Penelitian Terdahulu 21

Bab 3 Analisis dan Perancangan 23

3.1 Analisis Sinyal Suara 24

3.2 Analisis Ekstraksi Fitur Suara Menggunakan MFCC 24

3.2.1 Input Suara 24

3.2.2 DC- Removal 25

3.2.3 Pre-Emphasize 26

3.2.4 Frame Blocking 27

3.2.5 Windowing 28

3.2.6 Analisis Fourier 28

3.2.7 Filter Bank 29

3.2.8 Discrete Cosine Transform ( DCT ) 29

3.3 Pencocokan dengan Metode Learning Vector Quantization 30

3.3.2 Algoritma LVQ 30

3.4 Database 34

3.5 Antarmuka Sistem 35

Bab 4 Impelemntasi dan Pengujian Sistem 38


(10)

4.2 Skenario Uji Coba Sistem 39

Bab 5 Kesimpulan dan Saran 50

5.1 Kesimpulan 50

5.2 Saran 52


(11)

DAFTAR TABEL

Hal

Tabel 2.1. Fungsi – fungsi window dan Formulanya 13

Tabel 2. 2 Penelitian Terdahulu 21

Tabel 4.1 Rencana Pengujian Sistem 45

Tabel 4.2 Pengujian Sistem ( input data acuan ) 46

Tabel 4.3 Pengujian Sistem ( pengenalan data ) 46

Tabel 4.4 Sampe data pengujian sistem 47

Tabel 4.5 Processing time 48


(12)

DAFTAR GAMBAR

Hal

Gambar 2.1 Tahapan dalam Speech Recognition 7

Gambar 2.2 Struktur WAV 8

Gambar 2.3 Contoh Dari Pre- Emphasize Pada Sebuah Frame 10

Gambar 2.4 Contoh Frame Blocking 11

Gambar 2.5 Contoh Dari Spectogram 14

Gambar 2.6 Tiga Gelombang Sinusoidal Dan Superposisinya 15

Gambar 2.7 Domain Waktu Menjadi Domain Frekuensi 16

Gambar 2.8 Grafik Perbandingan Kecepatan Direct Calculation Dengan

Algoritma FFT 17

Gambar 2.9 Pembagian Sinyal Suara Menjadi Dua Kelompok 17

Gambar 2.10 Arsitektur Jaringan LVQ 20

Gambar 3.1Arsitektur Umum Aplikasi 23

Gambar 3.2 Flowchart DC-Removal 25

Gambar 3.3 Flowchart Pre-Emphasize Filter 26

Gambar 3.4 Flowchart Frame Blocking 27

Gambar 3.5 Database Aplikasi 35

Gambar 3.6 Rancangan Halaman Awal 36

Gambar 3.7 Rancangan Halaman Pengenalan 36


(13)

Gambar 4.1 Tampilan Awal Aplikasi 40

Gambar 4.2 Tampilan Menu Pengenalan 40

Gambar 4.3 Tampilan Menu Pengenalan 41

Gambar 4.4 Tampilan Spectogram Untuk Suara Input 41

Gambar 4.5 Tampilan Spectogram Suara Potong 42

Gambar 4.6 Partitur Hasil 43

Gambar 4.7 Tampilan Menu Admin 44


(14)

ABSTRAK

Dalam bermain musik khususnya bermain piano, seorang pianist membutuhkan partitur dalam panduan untuk bermain musik. Partitur merupakan tulisan yang digunakan seorang pianist untuk menyimpan atau menyampaikan sebuah lagu. Banyak pianist yang tidak mempunyai keahlian dalam pembuatan partitur, khusunya dalam pembuatan musik yang spontan. Karena itu, diperlukan sebuah aplikasi yang dapat membantu dalam pembuatan partitur dari suara musik piano. Metode ekstraksi

Mel-Frequency Cepstral Coefficient dan metode pencocokan Learning Vector Quantization digunakan untuk membuat aplikasi tersebut. Metode MFCC digunakan untuk mengambil Vector – vector yang berada didalam sebuah lagu. Dan metode LVQ digunakan untuk mencocokkan data uji dengan data acuan yang telah disimpan terlebih dahulu. Output yang dihasilan dari sistem ini berupa partitur musik dari lagu yang telah diinput kedalam sistem.

Kata kunci-pembuatan partitur, metode Mel-Frequency Cepstral Coefficient, Learning Vector Quantization.


(15)

VOICE RECOGNITION APPLICATIONS BASIC DIGITAL PIANO TONE

ABSTRACT

In playing music especially playing the piano, a pianist needs score to play music in the guide. Scores are writing who used by a pianist to store or deliver a song. Many pianists do not have expertise in the making of sheet music, especially in spontaneous music-making. Therefore, we need an application that can help in the making of the music scores. Methods for extracting is Mel - Frequency cepstral coefficient and Learning Vector Quantization matching method is used to create such applications. MFCC method is used to retrieve Vectors which resides in a song. And LVQ method is used to match test data with reference data that has been stored in advance. output of this system in the form of sheet music of a song that has been inputed into the system.

Keywords - making of musical scores, methods Mel - Frequency cepstral coefficient, Learning Vector Quantization.


(16)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Semua bangsa maju di dunia seperti Jerman, Amerika, Jepang, Inggris, Australia dan negara Eropa pada umumnya adalah bangsa yang musical. Pengertian musical yang dimaksud disini adalah pertama dapat memainkan instrument musik atau menyanyi dengan baik, pengertian kedua tidak dapat bermain musik atau bernyanyi dengan baik. Tapi dapat mengapresiasi musik Yuriandran (2008).

Musik adalah salah satu stimulus yang menyenangkan dan telah lama hadir dalam kehidupan manusia. Rentfrom dan Gosling (2007) menemukan bahwa pertanyaan mengenai jenis musik yang paling disukai adalah topik utama percakapan pada individu yang berkenalan. Selain media hiburan, msuik mempunya fungsi yang amat kompleks . Scripp dan Subotnik (2003) menjelaskan bahwa musik mewakili proses kognitif pada bidang lain dan meliputi aktivitas mental. Musik merupakan instrumen pendidikan yang sangat kuat. Musik mampu merangsang alam bawah sadar kreatif. Kebiasaan mendengarkan musik menjadi konsep penting terkait musik dan kecerdasan. Musik adalah hasil seni budaya yang terdiri dari unsur – unsur suara atau bunyi yang teratur sehingga terjadi harmoni yang memuaskan pendengarnya. Musik dapat berfungsi sebagai perangsang semangat kreatif dan alternatif untuk keluar dari kejenuhan serta penyeimbang tugas linguistik dan logis. Gallahue (dalam Sudjito dkk, 2007) menyatakan bahwa mendengarkan musik mampu menstimulasi kemampuan belajar melalui ritme. Melodi dan harmoni. Berbicara tentang musik tidak bisa diabaikan penjelasan Gardner(1999) mengenai intelegensi. Intelegensi menunjukkan kemahira dan keterampilan memecahkan kesulitan yang ditemukan, serta menciptkan persoalan yang memungkinkan pengembangan pengetahuan. Hal menarik dari penjelasan Gardner adalah intelegensi musik dapat mengorganisir cara berfikir dan bekerja sehingga membantu pengembangan kemampuan matematika. Spasial dan bahasa.


(17)

Kreativitas dalam bermusik memerupakan faktor yang sangat penting dihayati perkembangannya karena sangat berpengaruh dalam kehidupan sehari – hari. Kreativitas dalam musik dapat juga diaplikasikan pada kehidupabn sehari- hari oleh siapa saja dan dimana saja. Karena ada potensi kreativitas dimasing – masing individu tergantung cara mengembangkannya. Kreativitas merupakan fenomena yang melekat dengan kehidupan manusia dan merupakan hasil interaksi antar manusia dengan lingkungan atau kebudayaan dan sejarah dimana kreatifias dapat tumbuh dan meningkat tergantung kepada kondusif kebudayaan dan orangnya (Munandar, 2009 ) Penelitian – penelitian membuktikan bahwa musik memberikan banyak manfaat kepada manusia seperti merangsang pikiran. Memperbaiki konsentrasi dan ingatan, meningkatkan aspek kognitif, membangun kecerdasan emosional dan lain – lain. Musik juga dapat menyeimbangkan fungsi otak kanan dan otak kiri yang berarti menyeimbangkan perkembangan aspek intelektual dan emosional . anak – anak yang mendapatkan pendidikan musik jika kelak dewasa akan menjadi manusia yang berpikiran logis sekaligus cerdas, kreatif dan mampu mengambil keputusan serta mempunyai empati. Penting sekali untuk memperkuat musikalitas anak sejak dini karena musikalitas itu sangat istimewa mencakup perkembangan intelektual bagi anak, emosional, sosial dan kemauan yang bakal mempengaruhi anak di masa yang akan datang. Musik pada anak – anak akan meningkatkan kemampuan intelegensi spesialnya sebesar 46 persen dibandingkan anak – anak yang jarang bermusik. Mereka membuktikan adanya kaitan erat antara kemahiran bermusik dengan penguasaan level matematika yang tinggi dan kemampuan sains lainya Deporter (2000).

Dewasa kini penggunaan piano, keyboard maupun pianika sudah merupakan barang yang tidak mahal , banyak orang dapat mencoba belajar musik dari alat musik piano.

1.2Rumusan Masalah

Dalam bermain alat musik piano, seorang pianis yang baru mulai belajar bermain piano tidak dapat langsung mengenal tuts piano yang sedang dimainkanya.


(18)

Diperlukannya sebuah software yang dapat merubah suara instrumen piano menjadi partitur.

1.3Batasan Masalah

Batasan masalah dalam penelitian ini adalah :

1. Aplikasi dijalankan di dekstop.

2. Nada yang digunakan adalah nada dasar mayor.

3. Format input nada suara yang dimasukkan adalah WAV. 4. Menggunakan not ¼

1.4Tujuan Penelitian

Penelitian ini bertujuan untuk mengunakan metode Learning Vector Quantization

dalam mengkonversi nada suara digital piano menjadi partitur, dimana ekstraksi cirinya menggunakan Mel-Frequency Cepstral Coefficient ( MFCC ) untuk memudahkan user dalam membuat partitur berdasarkan nada yang dimainkannya.

1.5Manfaat Penelitian

Manfaat penelitian ini adalah :

1. Dapat mengetahui nada dari sebuah lagu tanpa mempunyai partiturnya. 2. Menghemat waktu dalam membuat partitur.

3. Sebagai bahan referensi untuk penelitian selanjutnya yang berkenaan dengan

voice recognition.

1.6Metodologi Penelitian

Langkah – langkah yang ditempuh dalam menyelesaikan penelitian adalah sebagai berikut :


(19)

1. Studi Literatur

Studi Literatur dilakukan dengan mengumpulkan informasi lebih lanjut mengenai permasalahan yang akan dibahas seperti penelitian terdahulu, pengumpulan musik yang ingin digunakan didalam aplikasi, relasi data yang ingin dibuat dan metode – metode yang akan digunakan untuk permasalahan ini.

2. Pengumpulan Data

Pada tahap ini dilakukan pengumpulan data yang mendukung dalam penyelesaian masalah yang diteliti secara sistematis.

3. Analisa dan Perancangan Sistem

Pada tahapan ini dilakukan analisis terhadap materi dan data yang telah didapat sebelumnya untuk kemudian digunakan dalam penyelesaian suatu masalah dan dapat digunakan untuk merancang sebuah sistem yang akan diimplementasikan nantinya.

4. Implementasi Sistem

Pada tahapan ini penulis mengimplementasikan metode ekstraksi ciri Mel-frequency Cepstral Coefficient dan metode Learning Vector Quantization kedalam sistem. Implementasi meliputi pembuatan program untuk digunakan sebagai aplikasi dari metode diatas.

5. Pengujian Sistem

Pada tahapan ini, dilakukan pengujian terhadap metode MFCC dan LVQ yang telah diimplementasikan kedalam sistem untuk mengetahui kehandalannya apakah telah sesuai dengan yang diharapkan dalam penelitian ini.

6. Dokumentasi Sistem

Pada tahap dokumentasi sistem ini, penulis menyusun laporan terhadap metode MFCC dan LVQ dari aplikasi yang telah dibuat.

1.7Sistematika Penulisan

Metodologi penelitian yang digunakan pada penelitian ini adalah : Bab I Pendahuluan

Bab ini akan berisikan tentang latar belakang, rumusan masalah, tujuan penelitian, batasan masalah, manfaat penelitian, metodologi penelitian, dan sistematika penulisan.


(20)

Bab II Tinjauan Pustaka

Bab ini menguraikan tentang metode Mel-Frequency Cepstrum Coefficient dan metode Learning Vector Quantization, hal- hal yang mendukung metode tersebut dan penelitian terdahulu.

Bab III Analisis dan Perancangan Sistem

Pada bab ini akan dijelaskan beberapa hal seperti deksripsi umum perangkat lunak yang dibangun, analisa data dan arsitektur perangkat lunak, dan sampai kepada perancangan sistem antarmuka.

Bab IV Analisis dan Perancangan Sistem

Pembahasan pada bab ini diarahkan pada bagaimana hasil dari Metode MFCC dan LVQ yang telah dibangun dan bagaimana pengujiannya dengan menggunakan sistem yang dibuat.

Bab V Kesimpulan dan Saran

Bab ini berisi tentang kesimpulan hasil penelitian dan saran – saran yang berkaitan dengan penelitian selanjutnya untuk pengembangan lebih lanjut.


(21)

BAB 2

LANDASAN TEORI

2.1 Latar Belakang Pengenalan Ucapan

Pengenalan ucapan atau pengenalan wicara dalam istilah bahasa inggirisnya automatic speech recognition (ASR) adalah suatu pengembangan teknik dan sistem yang memungkinkan komputer untuk menerima masukan berupa kata yang diucapkan. Teknologi ini memungkinkan suatu perangkat untuk mengenali dan memahami kata – kata yang diucapkan dengan cara digitalisasi kata dan mencocokkan sinyal digital tersebut dengan suatu pola tertentu yang tersimpan dalam suatu perangkat. Kata – kata yang diucapkan diubah bentuknya menjadi sinyal digital dengan cara mengubah gelombang suara menjadi sekumpulan angka yang kemudian disesuaikan dengan kode – kode tertentu untuk mengidentifikasi kata – kata tersebut, Hasil dari identifikasi kata yang diucapkan dapat ditampilkan dalam bentuk tulisan atau dapat dibaca oleh perangkat teknologi sebagai sebuah komando untuk melakukan suatu pekerjaan. Misalnya penekanan tombol pada telelpon genggam yang dilakukan secara otomatis dengan komando suara Lestary (2009).

Perkembangan teknologi dalam bidang speech recognition bertujuan untuk mewujudkan keinginan manusia dalam memaksimalkan fungsi PC sebagai alat yang mampu mempermudah pekerjaan manusia disegala aspek. Hal yang hendak dicapai adalah menciptakan PC yang mampu berinteraksi dengan manusia secara langsung menggunakan bahasa manusia sehari – hari sesuai tata bahasa yang berlaku, studi tentang pengenalan ucapan sudah dilakukan selama bertahun – tahun untuk mencapai sukses yang ideal. Tetapi hal tersebut belum juga dapat terpenuhi sampai saat ini. Masih perlu dilakukan penelitian dan peningkatan lebih lanjut terhadap metode pengenalan yang sudah ada.

Secara umum , proses pengenalan ucapan dimulai dengan meng-input-kan suara melalui microphone, sinyal suara yang menjadi input bersifat continue, untuk itu diperlukan pemrosesan awal ( pre-processing) untuk mengubah sinyal tersebut menjadi discrete agar dapat diproses oleh komputer. Setelah itu sinyal tersebut akan


(22)

melalui proses ekstraksi ciri ( feature extraction ) untuk mendapatkan parameter khusus yang menjadi bahan pembanding dalam proses pencocokan pola. Pada tahap selanjutnya yaitu pencocokan pola, maka program akan membandingkan sinyal ucapan masukan dengan sinyal pembanding lalu program menentukan keputusan. Tahapan dalam speech recognition dapat dilihat pada gambar 2.1 Rachman (2006).

Sumber : Rachman (2006)

Gambar 2.1. Tahapan dalam Speech Recognition.

2.2 Suara Musik

Kehadiran musik sebagai bagian dari kehidupan manusia bukanlah hal yang baru. Setiap budaya di dunia memiliki musik yang khusus diperdengarkan atau dimainkan berdasarkan peristiwa – peristiwa bersejarah dalam perjalanan hidup anggota masyarakatnya. Ada musik yang dimainkan untuk mengungkapkan rasa syukur atas kelahiran seorang anak. Ada juga musik yang khusus mengiringi upacara – upacara tertentu seperti pernikahan dan kematian. Musik juga menjadi pendukung utama untuk melengkapi dan menyempurnakan beragam bentuk kesenian dan berbagai budaya. Musik adalah suara yang disusun demikian rupa sehingga mengandung irama. Lagu, dan keharmonisan terutama suara yang dihasilkan dari alat- alat yang dapat menghasilkan bunyi – bunyian, walaupun musik adalah sejenis fenomena intuisi, untuk mencipta, memperbaiki dan mempersembahkannya adalah suatu bentuk seni , mendengar musik adalah sejenis hiburan. Musik adalah sebuah fenomena yang sangat unik yang bisa dihasilkan oleh beberapa alat musik.

2.3 Pengolahan Audio

Suara adalah sebuah sinyal yang merambat melalui perantara, suara dapat dihantarkan dengan media air, udara, maupun benda padat, Dengan kata lain, suara adalah gelombang yang merambat dengan frekuensi dan amplitudo tertentu, suara yang dapat


(23)

didengar manusia berkisar antara 20 Hz sampai dengan 20 KHz, dimana Hz adalah satuan frekuensi yang artinya banyak getaran per-detik (cps / cycle per second) Rabiner (1993).

Perlengkapan produksi suara pada piano konvensional terdapat palu pemukul (

Hammer ),tuts ( Keys ), senar piano ( Strings ). Secara garis besar terdiri atas tuts ditekan oleh manusia, tuts ditekan menggerakan palu pemukul yang selanjutnya akan memukul strings yang ada. Setiap tuts berbeda bunyinya.

Format file “.WAV” merupakan bagian dari spesifikasi RIFF milik Microsoft yang digunakan untuk penyimpanan file-file mulitimedia. File wav dimulai dengan bagian header dan diikuti oleh rentetan data chunk. File wav terdiri dari 3 bagian, yaitu main chunk, format chunk, dan data chunk.

Sinyal suara yang direpresentasikan file WAV dalam bentuk discrete, berupa deret bilangan yang merepresentasikan amplitude dalam domain waktu. Pada bagian file header terdapat informasi tentang file WAV tersebut, diantaranya menyatakan nilai sample rate, jumlah channel, dan bit per sample. Dari keterangan pada file header tersebut dapat diketahui berapa sampel yang dicuplik dari sinyal analog tiap detik Wilson (2003). Struktur WAV dapat dilihatp ada gambar 2.2 :

Sumber: Wilson(2003)


(24)

2.4 Mel Frequency Cepstrum Coefficient ( MFCC )

Mel Frequency Cepstrum Coefficient ( MFCC ) merupakan salah satu metode yang banyak digunakan dalam bidang speech recognition. Metode ini digunakan untuk melakukan feature extraction, sebuah proses yang mengkonversikan sinyal suara menjadi beberapa parameter. Keunggulan dari metode ini adalah :

 Mampu menangkap karakteristik suara yang sangat penting bagi pengenalan suara atau dengan kata lain mampu menangkap informasi – informasi penting yang terkandung dalam sinyal suara

 Menghasilkan data seminimal mungkin tanpa menghilangkan informasi – informasi penting yang ada.

 Mereplikasi organ pendengaran manusia dalam melakukan persepsi sinyal suara.

Perhitungan yang dilakukan dalam MFCC menggunakan dasar dasar perhitungan short-term analysis. Hal ini dilakukan mengingat sinyal suara yang bersifat quasi stationary. Pengujian yang dilakukan untuk periode waktu yang cukup pendek (sekitar 10 sampai 30 milidetik) akan menunjukkan karakteristik sinyal suara yang stationary. Tetapi bila dilakukan dalam periode waktu yang lebih panjang, karakteristik sinyal suara akan berubah sesuai dengan kata yang diucapkan.

MFCC feature extraction sebenarnya merupakan adaptasi dari sistem pendengaran manusia, dimana sinyal suara akan di-filter secara linear untuk frekuensi rendah ( dibawah 1000Hz ) dan secara logaritmik untuk frekuensi tinggi ( diatas 1000Hz), berikut blok diagram untuk MFCC Manunggal(2005).

2.4.1 DC- Removal

Remove DC Components bertujuan untuk menghitung rata-rata dari data sampel suara, dan mengurangkan nilai setiap sampel suara dengan nilai rata-rata tersebut. Tujuannya adalah mendapat normalisasi dari data suara input Putra(2011).

– ……..(1) dimana : = sampel signal hasil proses DC removal


(25)

= sampel signal asli

= nilai rata-rata sampel signal asli = panjang signal

2.4.2 Pre – Emphasize Filtering

Pre – empahsize filtering merupakan salah satu jenis filter yang sering digunakan sebelum sebuah signal diproses lebih lanjut, Filter ini mempertahankan frekuensi – frekuensi tinggi pada sebuah spektrum, yang umumnya tereleminasi pada saat proses produksi suara. Tujuan dari Pre – emphasize Filtering ini adlaah ( Manunggal , 2005)

a. Mengurangi noise ratio pada signal, sehingga dapat meningkatkan kualitas

signal

b. Menyeimbangkan spektrum dari voice sound.

Sumber : Manunggal, 2005

Gambar 2.3 Contoh dari Pre-Emphasize pada sebuah frame

Pada gambar diatas terlihat bahwa distribusi energi pada setiap frekuensi terlihat lebih seimbang setelah diimplementasikan pre-emphasize filter. Bentuk yang paling umum digunakan dalam pre-emphasize filter adalah sebagai berikut.


(26)

dimana :

= signal hasil pre-emphasize filter

= signal sebelum pre-emphasize filter 2.4.3 Frame Blocking

Karena sinyal suara terus mengalami perubahan akibat adanya pergeseran artikulasi dari organ produksi suara, sinyal harus diproses secara short segments ( short frame ). Panjang frame yang biasanya digunakan untuk pemrosesan sinyal adalah antara 10-30 milidetik. Panjang frame yang digunakan, sangat mempengaruhi keberhasilan dalam analisa spektral, di satu sisi, ukuran frame harus diperpanjang sepanjang mungkin untuk dapat menunjukkan resolusi frekuensi yang baik, tetapi dalam slain sisi, ukuran frame juga harus cukup pendek untuk dapat menunjukkan resolusi waktu yang baik Ridwan(2011).

Sumber : Ridwan(2011)

Gambar 2.4 Contoh Frame Blocking

Proses frame yang dilakukan terus sampai seluruh sinyal dapat terproses. Selain itu, proses ini umumnya dilakukan secara overlapping untuk setiap frame-nya.


(27)

Panjang daerah overlap yang umum digunakan adalah kurang lebih 30% sampai 50% dari panjang frame.

2.4.4 Windowing

Proses framing dapat menyebabkan terjadinya kebocoran spektral ( Spectral leakage ) atau aliasing, aliasing adalah timbulnya sinyal baru dimana memiliki frekuensi yang berbeda dengan sinyal aslinya. Efek ini dapat terjadi karena rendahnya jumlah sampling rate, ataupun karena proses frame blocking dimana menyebablan sinyal menjadi discontinue, Untuk mengurangi kemungkinan terjadinya kebocoran spektral maka hasil dari proses framing harus melewati proses window.

Ada banyak fungsi window, w(n), seperti yang ditabel 2.1 sebuah fungsi window yang baik harus menyempit pada bagian main lobe, dan melebar pada bagian side lobe-nya.

Berikut ini adalah representasi fungsi window terhadap sinyal suara yang di-inputkan.

………..(3) =Nilai sampel sinyal

=Nilai sampel dari frame sinyal ke i =Fungsi window

=Frame size, merupakan kelipatan 2

Setiap fungsi windows mempunyai karakteristik masing-masing, diantara berbagai fungsi window tersebut, Blackman windows menghasilkan sidelobe level yang paling tinggi ( kurang dari -58 dB ). Tetapi fungsi ini juga menghasilkan noise paling besar ( kurang dari 1,73 BINS), Oleh karena itum fungsi ini jarang sekali digunakan baik untuk speaker recognition maupun speech recognition.

Fungsi Rectangle window adalah fungsi window yang paling mudah untuk diaplikasikan , Fungsi ini menghasilkan noise yang paling rendah yaitu sekitar 1.00 BINS. Tetapi sayangnya fungsi ini memberikan sidelobe level yang paling rendah.


(28)

Sidelobe level yang rendah tersebut menyebabkan besarnya kebocoran spektral yang terjadi dalam proses feature extraction.

Fungsi window yang paling sering digunakan dalam aplikasi speech recognition adalah Hamming window. Fungsi window ini menghasilkan sidelobe level yang tidak terlalu tinggi (kurang dari -43 dB), selain itu noise yang dihasilkan pun tidak terlalu besar ( kurang lebih 1.36 BINS ) Darmawan (2011).

Tabel 2.1 Fungsi – fungsi window dan Formulanya Nama

window

Sequence domain waktu

Rectangular 1 Bartlett

Hanning

Hamming

Blackman

Tukey

Sumber : Darmawan(2011)

2.4.5 Analisis Fourier

Analisis Fourier adalah sebuah bentuk yang memungkinkan untuk menganalisa terhadap spectral propertis dari sinyal yang diinputkan. Representasi dari spectral propertis disebut sebagai spectogram Gambar 2.5 merupakan contoh dari spectogram.


(29)

Dalam spectogram terhadap hubungan yang sangat erat antara waktu dan frekuensi. Hubungan antara frekuensi dan waktu adalah hubungan berbanding terbalik. Bila resolusi waktu yang digunakan tinggi. Maka resolusi frekuensi yang digunakan akan semakin rendah. Kondisi seperti ini akan menghasilkan narrowband spectogram, sedangkan wideband spectogram adalah kebalikan dari narrowband spectogram

Sumber : Darmawan (2011)

Gambar 2.5 Contoh dari Spectogram

Inti dari transformasi fourier adalah menguraikan sinyal ke dalam komponen- komponen bentuk sinus yang berbeda – beda frekuensinya. Gambar 2.11 menunjukkan tiga gelombang sinus dan superposisinya. Sinyal semula yang periodik dapat diuraikan menjadi beberapa komponen bentuk sinus dengan frekuensi berbeda, jika sinyal semula tidak periodik maka transformasi fourier-nya merupakan fungsi frekuensi yang continue, artinya merupakan penjumlahan bentuk sinus dari segala frekuensi, jadi dapat disimpulkan bahwa transformasi fourer merupakan representasi domain frekuensi dari suatu sinyal. Representasi ini mengandung informasi yang tepat sama dengan kandungan dari sinyal semula Darmawan (2011).


(30)

Sumber : darmawan(2011)

Gambar 2.6 Tiga Gelombang Sinusoidal dan Superposisinya

a. Discrete Fourier Transform ( DFT )

DFT merupakan perluasan dari transformasi fourier yang berlaku untuk sinyal – sinyal diskrit dengan panjang yang terhingga. Semua sinyal periodik terbentuk dari gabungan sinyal – sinyal sinusoidal yang menjadi satu dalam perumusanya dapat ditulis:

………(4)

= Jumlah sampel yang akan diproses = Nilai Sampel sinyal

= Variabel frekuensi discrete, dimana akan bernilai

Dengan rumus diatasa. Suatu sinyal suara dalam domain waktu dapat kita cari frekuensi pembentuknya. Hal inilah tujuan dari penggunaan analisa Fourer pada data suara, yaitu untuk mengubah data dari domain waktu menjadi data spektrum di


(31)

domain frekuensi, Untuk pemrosesan sinyal suara, hal ini sangatlah menguntungkan karena data pada frekuensi dapat diproses dengan lebih mudah dibandingkan data pada domain waktu, karena pada domain frekuensi, keras lemahnya suara tidak seberapa berpengaruh.

Sumber : darmawan(2011)

Gambar 2.7 Domain waktu menjadi domain frekuensi

Untuk mendapatkan spektrum dari sebuah sinyal dengan DFT diperlukan N buah sampel data berurutan pada domain waktu, yaitu data x[m] sampai dengan x[m+N-1]. Data tersebut dimasukkan dalam fungsi DFT maka akan menghasilkan N buah data, Namun karena hasil DFT adalah simetris, maka hanya N/2 data yang diambil sebagai spektrum Darmawan (2011).

2.4.6 Fast Fourier Transform

Perhitungan DFT secara langsung dalam komputerisasi dapat menyebabkan proses perhitungan yang sangat lama. Hal itu disebabkan karena DFT, dibutuhkan N2 perkalian bilangan kompleks. Karena itu dibutuhkan cara lain untuk meghitung DFT dengan cepat. Hal itu dilakukan dengan menggunakan algoritma Fast Fourier Transform ( FFT ) dimana FFT menghilangkan proses perhitungan yang kembar dalam DFT. Algoritma FFT hanya membutuhkan N log2 N perkalian kompleks. Berikut ini menunjukkan perbandingan kecepatan antara FFT dan DFT


(32)

(33)

Algoritma recombine (DFT) melakukan N perkalian kompleks, dan dengan metode pembagian seperti ini. Maka terdapat log2(N) langkah perkalian kompleks. Hal ini berarti jumlah perkalian kompleks berkurang dari N2 (pada DFT) menjadi N log2(N).

Hasil dari proses FFT adalah simetris antara indek – dan Oleh karena itu , umumnya hanya blok pertama saja yang akan digunakan dalam proses-proses selanjutnya.

2.4.7 Mel Frequency Warping

Mel frequency Warping umumnya dilakukan dengan menggunakan filterbank. Filterbank adalah salah satu bentuk dari filter yang dilakukan dengan tujuan untuk mengetahui ukuran energi dari frequency band tertentu dalam sinyal suara. Filterbank dapat diterapkan baik pada domain waktu maupun domain frekuensi, tetapi untuk keperluan MFCC, filterbank harus diterapkan dalam domain frekuensi,

Filterbank menggunakan representasi konvolusi dalam melakukan filter terhadap

signal konvolusi dapat dilakukan dengan melakukan multiplikasi antara spektrum

signal dengan koefesien filterbank. Berikut ini adalah rumus yang digunakan dalam perhitungan filterbanks.

………..(5) = Jumlah magintude spectrum = Magnitude spectrum pada frekuensi

= koefesien filterbank pada frekuensi = Jumlah channel dalam filterbank

Persepsi manusia terhadap frekuensi dari signal suara tidak mengikuti linear scale , frekuensi yang sebenarnya (dalam Hz) dalam sebuah signal akan diukur manusia secara subyektif dengan menggunakan Mel scale, Mel frequency scale adalah linear frekuensi scale pada frekuensi dibawah 1000 Hz, dan merupakan logarithmic scale


(34)

2.4.8 DCT

DCT merupakan langkah terakhir dari proses utama MFCC feature extraction.

Konsep dasar dari DCT adalah mendekorelasikan mel spectrum sehingga menghasilkan representasi yang baik dari property spektral local. Pada dasarnya konsep dari DCT sama dengan inverse fourier transform. Namun hasil dari DCT mendekati PCA ( principle component analysis). PCA adalah metode static klasik yang digunakan secara luas dalam analisa data dan kompresi. Hal inilah yang menyebabkan seringkali DCT menggantikan inverse fourier transform dalam proses MFCC Feature Extraction. Berikut adalah formula yang digunakan untuk menghitung DCT.

∑ ………..(6) = Keluaran dari proses filterbank pada index K

= Jumlah koefesien yang diharapkan

Koefesien ke nol dari DCT pada umumnya akan dihilangkan, walaupun sebenarnya mengindikasikan energi dari frame signal tersebut. Hal ini dilakukan karena, berdasarkan penelitian – penelitian yang pernah dilakukan , koefesien ke nol tidak reliable terhadap speaker recognition Putra(2011).

2.5 Jaringan Syaraf Tiruan

Semakin berkembangnya teknologi komputer menyebabkan pemanfaatan teknologi jaringan syaraf untuk mempermudah manusia dalam memecahkan masalah tertentu semakin banyak diterapkan. Tetapi banyak masalah yang kelihatan mudah bagi manusia cukup sulit dilakukan oleh komputer, misalnya dalam pengenalan suatu tanda tangan yang telah dikenal sebelumnya. Kemudahan yang dirasakan oleh manusia tersebut disebabkan otak manusia memproses informasi yang didapat dengan menggunakan elemen-elemen yang saling terkoneksi dalam suatu jaringan yang disebut Neuron, sebaliknya jika masalah-masalah tersebut dipecahkan komputer, maka menimbulkan berbagai kesulitan (marimin,2002)

Didasar pada kemudahan otak manusia melakukan hal-hal tersebut, para ahli merancang suatu jaringan yang memiliki konsep menyerupai jaringan otak manusia dengan neuron-neuron dan hubungan-hubungannya. Jaringan tersebut dapat dilatih


(35)

sehingga dapat berpikir dan mengambil keputusan seperti yang dilakukan oleh otak manusia, jaringan tersebut disebut jaringan syaraf tiruan (JST).

2.5.1 Learning Vector Quantization (LVQ)

Menurut Jang, et al.(1997) LVQ merupakan metode klasifikasi data adaptif berdasarkan pada data pelatihan dengan informasi kelas yang diinginkan. Walaupun merupakan suatu metoda pelatihan supervised tetapi LVQ menggunakan teknik data

clustering unsupervised untuk praproses set data dan penentuan cluster centernya. Arsitektur jaringan LVQ hampir menyerupai suatu jaringan pelatihan kompetitif kecuali pada masing-masing unit outputnya yang dihubungkan dengan suatu kelas tertentu.

Kusumadewi dan hartai (2006) menyatakan LVQ merupakan metoda untuk melakukan pelatihan terhadap lapisan-lapisan kompetitif supervised. Lapisan kompetitif akan belajar secara otomatis untuk melakukan klasifikasi terhadap vektor

input yang diberikan. Apabila beberapa vektor input memiliki jarak yang sangat berdekatan, maka vektor-vektor input tersebut akan dikelompokkan dalam kelas yang sama.

Sumber : Ridwan(2011)

Gambar 2.10 Arsitektur Jaringan LVQ

Jaringan LVQ terdiri atas 2 lapis yaitu lapis kompetitif dan lapis linear, Lapis kompetitif disebut juga Self Organizing Map (SOM). Disebut lapis kompetitif karena neuron – neuron berkompetisi dengan algoritma kompetisi yang akan menghasilkan neuron pemenang (winning neuron). Kelebihan dari LVQ adalah :


(36)

1. Nilai error yang lebih kecil dibandingkan jaringan syaraf tiruan seperti backpropagation.

2. Dapat meringkas data set yang besar menjadi vektor codebook berukuran kecil untuk klasifikasi.

3. Dimensi dalam codebook tidak dibatasi seperti dalam teknol nearest neighbour.

4. Model yang dihasilkan dapat diperbaharui secara bertahap.

Kekurangan dari LVQ adalah :

1. Dibutuhkan perhitungan jarak untuk seluruh atribut.

2. Akurasi model dengan bergantung pada inisialisasi model serta parameter yang digunakan (learning rate, iterasi dan sebagainya ).

3. akurasi juga dipengaruhi distribusi kelas pada data training.

4. sulit untuk menentukan jumlah codebook vektor untuk masalah yang diberikan. Ridwan (2011).

2.6 Penelitian Terdahulu

Dibagian ini akan dijabarkan beberapa penelitian terdahulu. Saat ini sudah banyak penelitian yang berbasis pengenalan suara. Untuk lebih jelasnya. Pada table 2.2 berikut ini akan dijelaskan penelitian – penelitian yang telah dibuat sebelumnya.

Tabel 2.2 Penelitian terdahulu

No. Judul Tahun Keterangan

1 Perbandingan pemodelan Wavelet dan

MFCC sebagai ekstraksi ciri pada pengenalan fonem dengan teknik jaringan

syaraf tiruan sebagai classifier

2011 Perbandingan dua metode

ekstraksi ciri yang berbasis transformasi Fourier dan transformasi Wavelet pada

pengenalan fonem serta penggunaan JST sebagai

Classifier 2. Pengenalan Chord pada alat musik gitar

menggunakan teknik ekstraksi ciri MFCC

2010 Menerapkan metode

Codebook dan teknik ekstraksi ciri MFCC dalam mengenali setiap chord yang dimainkan


(37)

No. Judul Tahun Keterangan 3. Verifikasi biometrika suara menggunakan

metode MFCC dan DTW

2011 Penggunaan metode MFCC

untuk proses ekstarksi ciri dari sinyal wicara dan metode

DTW ( Dynamic Time Warping ) untuk proses

pencocokan.

4. Pengenalan Suara Alat Musik Dengan

Metode Jaringan Saraf Tiruan ( JST )

Learning Vector Quantization Melalui ekstraksi Koefisien Cepstral

2011 Pengenalan suara alat musik dengan menggunakan metode

ekstraksi ciri Koeffisien Cepstral dan metode pencocokan adalah Learning


(38)

BAB 3

ANALISIS DAN PERANCANGAN

Pada bab ini , akan dibahas beberapa hal diantaranya yaitu analisa, design, dan implementasi metode MFCC untuk extraksi fitur dan LVQ dalam pengenalan suara piano.

Pre-Emphasis

Frame Blocking

Windowing

Fast Fourier Transform

LVQ

DCT Filterbank / Mel

Frequency Warping

DC-Removal Input Suara

Hasil Partitur

M F C C


(39)

3.1 Analisis sinyal suara

Suara yang dihasilkan piano adalah sinyal analog dengan amplitudo yang berubah secara kontinyu terhadap waktu. pada manusia frekuensi suara yang dihasilkan adalah 50 Hz – 10 KHz. Sedangkan pada suara alat musik memliki frekuensi 20 Hz – 20 Khz. Suara yang berada pada range pendengaran manusia disebut Audio dan gelombangnya sebagai accoustic signal sedangkan suara diluar range pendengaran manusia dapat dikatan sebagai noise ( getaran yang tidak teratur dan tidak berurutan dalam berbagai frekuensi, tidak dapat didengar manusia ).

agar sinyal suara yang kontinyu dapat diproses. Maka harus digunakan teknik sampling. Teknik sampling adalah proses mengubah gelombang bunyi ke dalam interval waktu tertentu sehingga menghasilkan representasi digital dari suara.

3.2 Analisis Ekstraksi Fitur SuaraMenggunakan MFCC

Dalam ekstraksi fitur. Suara yang telah ada akan dilakukan proses untuk mendapatkan ciri khusus dari sebuah suara. Dengan megubah suara menjadi parameter parameter. Parameter tersebut akan digunakan ke metode selanjutnya untuk dilakukan pencocokan ciri khusus. Didalam MFCC. Dilakukan beberapa tahap, yaitu :

1. Input suara

2. DC-Removal

3. Pre – Emphasis

4. Frame blocking

5. Windowing

6. Fast Fourier Transform

7. Filter bank / Mel-Frequency Warping

8. DCT

3.2.1 Input Suara

Suara yang didapat merupakan suara yang berasal dari sebuah software GARAGEBAND yang memiliki format suara “.wav” . Langkah pertama adalah


(40)

dengan memasukkan suara keprogram untuk memasukkan suara. Kali ini akan menggunakan nada DO sebagai bahan uji.

3.2.2 DC-Removal

Remove DC Components bertujuan untuk menghitung rata-rata dari data sampel suara, dan mengurangkan nilai setiap sampel suara dengan nilai rata-rata tersebut. Tujuannya adalah mendapat normalisasi dari data suara input.

START

AVG = Ratarata(sig

nal)

I = 0

Hasil (i) = signal (i) - AVG I < signal

length END

No

Yes

Gambar 3.2 Flowchart DC-Removal

Contoh data dengan banyak vektor 10 : -0.9,0.9,-0.9,0.6,-0.4,0.9,0.9,0.2,-0.2,0.6 Rumus DC-removal telah dijelaskan pada bab 2 rumus 1.

Jadi : π =

= 0.17


(41)

menghasilkan =

3.2.3 Pre-Emphasis

Langkah kedua adalah untuk memmpertahankan frekuensi – frekuensi tinggi pada sebuah spektrum , yang umumnya tereleminasi pada saat proses produksi suara.

START

AVG = Ratarata(sig

nal)

I = 0

Hasil (i) = signal (i) + signal (i-1) *

alpha I < signal

length No

Yes

Gambar 3.3 Flowchart Pre-Emphasis Filter

Merujuk pada bab sebelumnya di rumus poin ke 2. Dengan α = -0.97 menggunakan contoh vektor

jadi : – – {


(42)

– – menghasilkan :

3.2.4 Frame Blocking

Setelah digunakan pre-emphasize filter untuk mempertahankan suara suara tinggi. Digunakan Frame Blocking untuk memetakan data – data yang akan diambil. Signal akan diproses secara Short Segment ( Short Frame ).

START

MEMBAGI SIGNAL

WS = Sampling rate / framerate

I = 0 to cols -1

a = i*ws +1 b = a + ws =1

Simpan Blok

END NO

YES


(43)

3.2.5 Windowing

Proses framing dapat menyebabkan terjadinya kebocoran spektral atau aliasing. Aliasing adalah signal baru dimana memiliki frekuensi yang berbeda dengan signal

aslinya. Efek ini dapat terjadi karena rendahnya jumlah sampling rate,ataupun karena proses frame blocking dimana menyebabkan signal menjadi discontinue. Maka pada tahap ini dilakukan proses window pada frame – frame yang telah dihasilkan oleh tahap sebelumnya. Hal ini bertujuan untuk meminimalkan diskontinuitas pada bagian awal dan akhir sinyal . Model window yang digunakan pada sistem ini adalah haming window

3.2.6 Analisis Fourier

Analisa berdasarkan fourier transform sama artinya dengan analisa spektrum, karena

fourier transform merubah signal digital dari time domain ke domain frekuensi. FFT dilakukan dengan membagi N buah titik pada transformasi dikrit menjadi 2, masing – masing ( N/2 ) titik transformasi. Proses memecah menjadi (N/4) dan seterusnya sehingga diperoleh titik minimum.

FFT ( Fast Fourier Transform ) adalah teknik perhitungan cepat dari DFT. FFT adalah DFT dengan teknik perhitungan yang cepat dengan memanfaatkan sifat periodical dari transformasi fourier. FFT yang digunakan pada tahap ini adalah FFT

Cooley-Tukey.. adapun algoritma FFT Cooley-Tukey adalah :

Dimana : = Panjang Data * 2 = – Panjang data = panjang data


(44)

Procedure filterbank

{ menghitung nilai Mel Spectrum i.s : Sinyal FFT

f.s : Sinyal Hasil Filterbank } kamus

H: double I,N : integer Algoritma For I = 0 to n do

Begin

H[i] ← ( 2595 * log ( 1 + 1000/700 )) / ( X[i] / 2 ); S[1] ← H[i] * X[i];

3.2.7 Filter Bank

Magnitude hasil dari proses FFT selanjutnya akan melalui tahap filterbank

∑ Dimana : = Jumlah magnitude Spectrum

= Magitude spectrum pada frekuensi j

= Koefesien filterbank pada frekuensi = Jumlah channel dalam filterbank

Untuk mendapatkan Hi digunakan rumus :

Berikut ini adalah Algoritma untuk proses Filterbank

3.2.8 Discrete Cosine Transform ( DCT )

Hasil dari DCT ini adalah fitur – fitur yang dibutuhkan oleh penulis untuk melakukan proses analisa terhadap pengenalan suara tersebut. Menggunakan rumus :

∑ ( )


(45)

= Keluaran dari proses filterbank pada indeks k = jumlah koefesien yang diharapkan

Berikut ini adalah algoritma untuk proses DCT.

3.3 Pencocokan dengan metode Learning Vector Quantization ( LVQ )

LVQ merupakan salah satu jaringan saraf tiruan yang melakukan pemebelajaran secara terawasi. LVQ mengklasifikasikan input secara berkelompok ke dalam kelas yang sudah didefenisikan melalui jaringan yang telah dilatih. Dengan kata lain LVQ mendapatkan n input dan mengkelompokkan ke dalam m output. Arsitektur jaringan LVQ ini terdiri dari input, lapisan kohonen, dan lapisan output.

Pada proses pelatihan, LVQ menggunakan lapisan kohonen, dimana pada proses pelatihan jaringan ini akan dibandingkan dengan nilai dari vektor yang dilatih dengan semua elemen pemroses. Jarak terkecil antara vektor yang dilatih dengan elemen pemroses akan menentukan kelas dari data yang dilatih.

3.3.2 Algoritma LVQ

Pada beberapa literature mungkin ditemui beberapa algoritma tentang LVQ yang berbeda. Secara garis besar, algoritma LVQ adalah sebagai berikut.

Procedure DCT ( k : integer, dct : float ) Kamus

K : integer Fbank : float ; Algoritma

For ( int n = 0 ; N <= k ; N++ ) Begin

Sum = 0.0;

Sum += fbank[k-1]*cos(n*(k-0,5) * ( PI/ Fiternum));

K+1; End


(46)

1. Langkah pertama adalah menentukan masing masing kelas output, menentukan bobot, dan menenetapkan learning rateα

2. Bandingkan masing – masing input dengan masing – masing output bobot yang telah ditetapkan dengan melakukan pengukuran jarak antara masing – masing bobot wodan input xp. persamaannya adalah sebagai berikut

3. Nilai minimum dari hasil perbandingan itu akan menentukan kelas dari vektor input dan perubahan bobot dari kelas tersebut. Perubahan untuk bobot baru (

wo’ ) dapat dihitung dengan perasamaan berikut.

 Untuk input dan bobot yang memiliki kelas yang sama :

 Untuk input dan bobot yang memiliki kelas yang berbeda : –

Berikut contoh vektor fitur :

Nada yang akan diuji = Nada latih =

= =

Dengan Epoch = 5 , Learning Rate ( ) = 0.05 dan pengurangan Learning Rate (LR) = 0.002. Proses pelatihan yang terjadi adalah sebagai berikut :

1. Proses Pelatihan

Data uji di hitung bobotnya dibandingkan dengan nada latih yang ada.


(47)

=√

Bobot data latih kedua

Bobot data latih ketiga

=√

Jarak terpendek adalah pada data latih pertama, sehingga bobot ke -1 yang baru adalah :

Iterasi 1:

– – ( – )

– – ( – )

Didapatlah vektor baru w1

Pengurangan learning Rate

LR =

Iterasi 2 :

Didapat vektor sementara hasil iterasi pertama


(48)

– –

( – )

– – ( – )

Didapat Pengurangan learning Rate

LR =

Iterasi 3:

Didapat vektor sementara hasil iterasi kedua

– –

( – )

– –

( – )

Sehingga didapatlah hasil vektor yang baru


(49)

2. Proses Pengenalan

Pengenalan nada terhadapat bobot yang sudah didapat, dilakukan dengan mencari jarak antara bobot nada uji dan nada acuan. Jarak bobot terpendek dengan nada acuan merupakan kelas dari nada uji. Berikut merupakan satu nada untuk menguji metode LVQ :

Dari nada uji tersebut, nilai fitur adalah Selanjutnya nilai tersebut akan diproses dengan nada acuan untuk mencari jaraknya, seperti berikut :

Bobot data latih pertama

=√

Bobot data latih kedua

Bobot data latih ketiga

=√

Bobot terkecil terletak pada kelas data pertama. Maka nada uji merupakan kelas yang sama dengan data latih pertama.

3.4 Database

Pada database applkasi ini teradapat 2 tabel, tabel pertama adalah tabel jenis nada yaitu database untuk menyimpan jenis nada apa yang akan tersimpan kedalam database. Dan satu tabel lagi adalah tabel vektor. Dimana tabel vektor berguna untuk menyimpan data acuan yang akan digunakan untuk mencocokkan dengan data uji.untuk lebih jelasnya, dapat dilihat pada gambar 3.5.


(50)

Gambar 3.5 Database Aplikasi

3.5 Antarmuka Sistem

Interface ( antarmuka sistem ) diperlukan untuk mempermudah seorang user dalam menggunakan atau mengakses sebuah applikasi. Antarmuka sistem merupakan sebuah alur komunikasi anatar user dengan sistem

Dengan kata lain antarmuka sistem digunakan sebagai media antara user dan komputer agar dapat berinteraksi satu sama lain. Sehingga user dapat lebih mudah mengerti dan menggunakan sistem tersebut.

Disini akan dijabarkan tentang rancangan halaman dan menu sistem yang akan dibuat. Berikut adalah gambar rancangan dasar antarmuka dari aplikasi :

1. Rancangan Halaman Awal ( Home )

Rancanngan awal berisi tombol input dari lagu yang ingin masukkan. Partitur gambar jadi yang akan dihasilkan dari pengenalan suara. Terdapat juga tombol pelatihan untuk melatih data baru kedalam sistem.


(51)

(52)

3. Rancangan halaman pelatihan


(53)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bab ini akan dijelaskan implementasi ekstraksi ciri MFCC dan metode LVQ pada sistem sesuai dengan perancangan sistem yang telah dijabarkan pada bab 3. Kemudian dilakukannya pengujian pada sistem yang telah dibangun.

4.1 Implementasi Sistem

Implementasi sistem adalah prosedur yang dilakukan untuk menyelesaikan desain sistem yang telah dibuat untuk memenuhi syarat yang telah dirancang.. komponen yang dibutuhkan dalam implementasi sistem adalah :

a. Hardware ( Perangkat keras )

Hardware adalah komponen komponen / peralatan yang merupakan dasar dari sebuah sistem komputer dalam menjalankan sistem. Adapun hardware yang digunakan:

1. Processor Intel Core 2 Duo `2.7 Ghz. 2. 2 GB RAM DDR3 ( Memory ) 3. Mouse

4. Keyboard

5. Hard Disk 320 GB

b. Software ( Perangkat Lunak )

Software adalah sekumpulan instruksi yang telah diprogram yang digunakan untuk Memproses, mengendalikan dan mengkoordinasikan kerja pada elemen – elemen Perangkat keras komputer didalam sebuah sistem informasi. Adapun software yang digunakan adalah :

1. Operating Sistem Windows 7 Ultimate 2. Xampp Versi 1.7.4


(54)

3. MySql Versi 5.1.30

4.2 Skenario Uji Coba Sistem

Pada sub-bab skenario uji coba ini akan dilakukan pengujian berdasarkan 2 langkah penggunaan sistem. Langkah pertama adalah langkah pelatihan nada. Dan langkah kedua adalah pengenalan nada.

4.2.1 tampilan awal applikasi

Gambar 4.1 Tampilan awal applikasi

Pada tampilan awal tersebut. disediakan tiga buah tombol. yang pertama adalah tombol pengenalan. Kedua adalah tombol menu admin. Yaitu menu untuk melakukan pelatihan. Yang ketiga adalah tombol tentang. Yang berisi perancang sistem


(55)

Gambar 4.2 Tampilan Menu Pengenalan

Pada menu pengenalan. Disediakan tombol untuk pilih file yang akan menginput file dengan filter format “.WAV”. apabila file telah diinput dan di pilih tombol kenali. Maka not yang ada didalam file akan dikenali dan ditulis satu persatu di text box jenis not. Dan ada 2 opsi untuk menampilkan spectogram. Yaitu tamplan spectogram suara input. Dan tampilan spectogram suara hasil potong . dimana suara hasil potong adalah langkah pemotongan suara yang akan diolah.


(56)

Gambar 4.3 Tampilan menu pengenalan

Pada tampilan form diatas. Setelah nada diinput, maka tombol kenali ditekan. Dalam proses penampilan partiturnya. Jenis not akan ditampilkan satu persatu kedalam form. Yang merupakan not dari musik yang diinput terlebih dahulu

Gambar 4.4 Tampilan Spectogram untuk suara input

Tampilan spectogram pada gambar 4.4 merupakan spectogram lagu secara keseluruhan. Spectogram merupakan visualisasi dari vector lagu yang kita input tersebut. Dan pada gambar 4.5 merupakan spectogram lagu yang telah dipotong


(57)

potong. Pada spectogram tersebut terlihat bagian dari lagu yang mana yang akan diproses untuk diambil ekstraksinya.

Gambar 4.5 Tampilan spectogram suara potong

Setelah dilakukan perkenalan. Maka hasil akhir dari pengenalan adalah gambar partitur . yang berisi not- not yang ada didalam file yang telah diinput terlebih dahulu.


(58)

Gambar 4.6 Partitur hasil not

4.2.3Tampilan menu admin

Pada menu admin. Akan dilakukan pelatihan untuk menyimpan data acuan yang akan digunakan pada pelatihan. Pada menu ini . file input berupa file format “.WAV” akan disimpan ke dalam database.


(59)

Gambar 4.7 Tampilan menu admin

Pada menu admin terdapat 2 cara dalam menyimpan data acuan. Yang pertama adalah dengan menggunakan MFCC saja langsung diproses dan disimpan ke database. Atapun menggunakan LVQ dalam memproses data acuannya. Hal ini dimaksudkan agar range data acuan lebar. Sehingga dapat menggenali suara not yang akan dikenal.

4.2.4 Tampilan Tentang

Berisi nama dan nim dari pembuat applikasi

Gambar 4.8 Tampilan menu tentang


(60)

Pengujian sistem penting dilakukan untuk menguhu dan memastikan bahwa hal – hal

yang terdapat didalam sistem telah sesuai dengan apa yang ingin diselesaikan.

Metode pengujian yang diterapkan pada penelitian ini adalah metode ekstraksi ciri

Mel-Frequency Cepstrum Coefficient Dengan metode pencocokannya adalah metode Learning Vector Quantization

4.3.1 Rencana Pengujian Sistem

Rancangan pengujian sistem yang akan diuji dengan metode pengujian black box

dapat dilihat pada tabel 4.1 berikut.

Tabel 4.1 Rencana Pengujian Sistem

No. Komponen sistem yang diuji Butir Uji

1. Halaman Awal Mencoba semua menu

2. Halaman pengenalan Tombol Pilih data

Tombol mainkan data Tombol Tampilkan Spectogram

Tombol tampilkan spectogram data uji Tombol Buka Gambar

3. Halaman Pilih File Memilih file yang akan

diuji dengan format “.Wav’

4. Halaman Menu Admin Tombol Pilih File

Tabel Isi database Tombol Pelatihan data dengan LVQ


(61)

Tabel 4.1 Rencana Pengujian Sistem

4.3.2 Kasus dan hasil Pengujian Sistem 4.3.2.1 Pengujian Input data

1. Input data acuan

Pada tabel 4.2 Berikut ini akan dilakukan pengujian sistem untuk input data acuan . input data acuan dilakukan oleh admin yang akan mengisi data acuan.:

Tabel 4.2 Pengujian sistem ( input data acuan )

No. Skenario Uji Hasil yang diharapkan Hasil pengujian 1. Memilih tombol data

admin

Sistem akan mengalihkan user ke halaman form input data acuan

Berhasil

Tabel 4.2 Pengujian sistem ( input data acuan ) ( lanjutan )

No. Skenario Uji Hasil yang diharapkan Hasil Pengujian 2. Memasukkan file input

data dengan memilih file data

Ketika tombol sikmpan ditekan. Maka sistem akan mengolah data

file audio yang telah dipilih terlebih dahulu.

Berhasil

2. Pengenalan Suara

Pada tabel 4.4. Dilakukan pengujian sistem untuk pengenalan suara. Pengenalan suara dilakukan oleh user. Data yang diinput berupa file musik yang akan dirubah menjadi partitur.

5. Halaman Tentang Menampilan data pembuat


(62)

Tabel 4.3 Pengujian Sistem ( Pengenalan Data )

No. Skenario Uji Hasil yang diharapkan Hasil pengujian 1. Memilih tombol

pengenalan data

Sistem akan mengailhkan user ke halaman form pengenalan

Berhasil

2. Memilih file data yang akan diuji

Sistem akan mengalihkan user ke form pemilihan data yang akan

dipilih

Berhasil

3. Memilih tombol kenali Sistem akan mengenali data yang dipilih dan mencocokannya dengan data acuan yang ada di

database

Berhasil

4. Memilih tombol buka gambar

Berisi file partitur berupa images Berhasil

4.3.3 Pengujian kinerja Sistem

Pengujian kinerja sistem dilakukan dengan memasukkan sampel data sebanyak 4 buah lagu. Beriut adalah sampel data pengujian data :

Tabel 4.4 Sampel data pengujian sistem

No. Nama lagu Banyak not Format

1. Balonku. 57 .wav

2. Cicak 27 .wav

3. Kartini 23 .wav

4. Doremi 3 .wav

Pengujian sistem ini dilakukan agar penulis dapat mengetahui akurasi dari sistem yang telah dibangun. Adapun langkah – langkahnya adalah :

1. User mengisi data acuang dari nada yang akan digunakan untuk melakukan pengenalan kedalam sistem

2. User memilih lagu apa yang akan dikenalkan ke dalam sistem


(63)

Pelatihan sistem dilakukan dengan memasukkan 20 data latih nada mayor dengan

epoch 5, Learning Rate = 0.02 dan pengurangan Learning Rate = 0.00005. Semakin rendah nilai Learning Rate maka persentase pengenalan makin lebih besar.

Pengujian yang dilakukan selanjutnya adalah pengujian terhadap data unuk mengetahui running time dari sistem yang telah dibuat. Tabel 4.6. Berikut adalah hasil pengujian running time terhadap 4 data pada sampel data

Tabel 4.5 Processing time

No. Data Running time Format

1. Balonku 20.38 s .wav

2. Cicak 9.46 s .wav

3. Kartini 8.53 s .wav

4. Doremi 2.3 .wav

Dengan menganalisa data dari tabel diatas. Maka dapat ditarik kesimpulan bahwa proses dalam sistem rata – rata mengkonsumsi waktu sekitar 10 detik untuk mengolah data sebanyak 25 not.

Pengujian selanjutnya dilakukan pengujian untuk menguji ketepatan sistem apabila tempo nya berubah ubah.

Tabel 4.6 Pengujian Suara Musik No. Nama Musik Banyak

Not

Tempo Jumlah Not yang dikenal Jumlah Not yang benar Persentase Kecocokan

1. Ibu Kita Kartini

23 Lambat 23 23 100%

2. Ibu Kita Kartini

23 Sedang 22 3 13%

3. Ibu Kita Kartini


(64)

4. Cicak – Cicak 27 Lambat 27 27 100%

5. Cicak – Cicak 27 Sedang 25 5 20%

6. Cicak – Cicak 27 Cepat 17 0 0%

7. Balonku 57 Lambat 57 57 100%

8. Balonku 57 Sedang 52 3 5%

9. Balonku 57 Cepat 36 0 0%

Total persentase kecocokan didapat dengan

% pengenalan =

Persentase diatas didapat bahwa tempo yang lambat merupakan tempo yang paling pas untuk digunakan dalam aplikasi ini. Hal ini terjadi karena terjadi pemotongan suara yang tidak tepat apabila tempo yang digunakan menjadi sedang dan cepat. Sehingga pengenalan data uji terhadap data latih menjadi tidak sinkron.


(65)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pembahasan implementasi dan pengujian yang telah dilakukan maka dapat diperoleh beberapa kesimpulan :

1. Semakin rendah nilai Learning Rate pada LVQ maka persentase pengenalan makin lebih besar.

2. Pemotongan nada untuk pemprosesan nada yang masi statis. Sehingga pemotongan nada yang berdekatan menjadi tidak tepat.

3. Nilai Learning Rate yang paling optimal pada masalah ini yaitu 0.02.

4. Penggunaan metode Mel-Frequency Cepstrum Coefficient ( MFCC ) dengan metode pencocokan Learning Vector Quantization ( LVQ ) dapat diimplementasikan pada aplikasi pengenalan nada suara piano untuk dibuat menjadi partitur.

5. Dengan adanya aplikasi, maka user dapat membuat partitur tanpa harus menulisnya satu persatu apa nada yang dimainkan, sehingga lebih mudah dalam pembuatan partitur.


(66)

5.2 Saran

Sistem ini dirancang dan dibangun berdasarkan ide dan alur pemikiran dari penulis, maka untuk menghasilkan sistem yang lebih baik dan maksimal diperlukan saran dari pihak manapun untuk melengkapi kekurangan yang ada pada sistem ini. Saran dari penulis yaitu:

1. Sistem ini dapat dikembangkan untuk menambah tempo pada lagu. Sehingga pemotongan nada suara pada data uji dapat dikenalkan berapa lama tempo yang lagi dimainkan.

2. Sistem ini dapat dikembangkan untuk menambah data acuan yang lebih kompleks lagi. Tidak Cuma nada dasar saja yang menjadi data acuan.

3. Sistem ini juga dapat dilakukan dengan metode dan algoritma pada sistem rekomendasi lainnya, agar dapat mencapai hasil yang lebih maksimal.


(67)

DAFTAR PUSTAKA

Andriana, A.D dan Irfan Maliki., 2011. Perangkat lunak untuk membuka applikasi pada komputer dengan perintah suara menggunakan metode Mel Frequency Coefficient ( MFCC ). Skripsi. Universitas Komputer indonesia.

Ayunisa, Y. Dian,. 2012. Perancangan Sistem pengenalan suara untuk pengamanan dan pemantauan fasilitas PLTA. Skripsi. Institut Teknologi Surabaya.

Darmawan, Yudi. 2011. Speech recognition Menggunakan Metode Mel-Frequency Cepstrum Coefficient dan Algoritma Dynamic Time Warping. Skripsi. Universitas Sumatera Utara.

DePorter B. et. Al. 2000. Quantum Teaching : Mempraktikkan Quantum Learning Di Ruang- Ruang Kelas. Kaifa. Bandung.

Gardner. H. 1999. Intelegence Reframed: Multiple Intelligence for 21st Century. New York: Basic Books.

Lestary, J. 2009. Aplikasi Pengenalan Ucapan Kata Bahasa Inggris Menggunakan Linear Predictive Coding ( LPC ) dan Hidden Markov Model ( HMM ). Tesis. Universitas Gunadharma.

Manunggal, H.S. 2005. Perancangan Dan Pembuatan Perangkat Lunak Pengenalan Suara Pembicara dengan Menggunakan Analisa MFCC Feature Extraction. Skripsi. Surabaya. Universitas Kristen Petra.

Masitah. 2008. Tingkat Pemrosesan Informasi pada mahasiswa yang memiliki kebiasaan mendengarkan musik rap. Skripsi. Universitas Sumatera Utara.

Munandar, S.C.U. 2009. Pengembangan Kreativitas Anak Berbakat. Jakarta: PT Rineka Cipta dan Dep. Pendidikan dan Kebudayaan.

Mustofa, Ali. 2007. Sistem Pengenalan Penutur Dengan Metode Mel-Frequency Wrapping.


(68)

Putra, Darma .2010. Pengolahan Citra Digital. Yogyakarta: Penerbit Andi. Resmawan, I Wayan Adi., 2009. Verifikasi Suara Menggunakan Metode MFCC dan DTW.

Skripsi, Universtias Udayana.

Scripp, L. & Subtonik, R.F. 2003. Direction for innovation in music education ( Online

http://www.google.com/search?q=cache:9HDNgKFyGI4J:www.apa.org/ed/iinovati on.pdf. ( 20 Maret 2007 ).

Rabiner, L. and Hwang, J.B. 1993. Fundamental Of Speech Recognition. Prentice Hall : USA.

Rachman, S. 2006. Visualisasi Pengenalan Vokal Bahasa Indonesia Dengan Metode LPC-DTW. Skripsi. Semarang. Universitas Dipenogoro.

Rentfrow, P.J., & Gosling, S.D. 2007. The Content and validity of stereotypes about fans of 14 music genres. Psychology of Music, 35, 306-326.

Ridwan, M.F. 2011. Klasifikasi Genre Musik Menggunakan Learning Vector Quantization (LVQ).Skripsi. Institut Pertanian Bogor.

Sudjito, G,Y., Pandia, W.S.S., & Tunjungsari, L.H. 2007. Perbedaan kemampuan Spasial pada Remaja yang Mendapat Pendidikan Musik Klasik dan Remaja Yang tidak. Manasa, I(1), 1-16.

Taufani, M. Fijri,. 2011. Perbandingan Permodelan Wavelet dan MFCC sebagai Ekstraksi Ciri pada pengenalan Fonem dengan Teknik Jaringan Syaraf Tiruan Sebagai Classifier. Tesis. Institut Pertanian Bogor.

Yuriandra. 2008. Permainan Olah ritme untuk mengembangkan musikalitas anak di ME Music School Bandung. Tesis, Institut Teknologi Bandung.

Wisnudisastra, E, dan Agus,B. 2010. Pengenalan Chord pada Alat Musik Gitar menggunakan CodeBook dengan Teknik Ekstraksi Ciri MFCC. Skripsi. Institut Pertanian Bogor.

Wilson, R. S. 2003. WAVE PCM Soundfile Format ( Online ) Https://ccna.standford.edu/courses/422/projects/WaveFormat ( 24 April 2014 )


(69)

LAMPIRAN I LISTING PROGRAM

1. Modul MySql

Imports MySql.Data.MySqlClient Module ModuleMySql

Dim Strcon As String =

"server=localhost;user=root;database=piano;port=3306;password=;" Dim conn As MySqlConnection

Sub hubungkan() Try

conn = New MySqlConnection(Strcon) conn.Open()

Catch ex As Exception

MessageBox.Show("Koneksi Gagal : " & ex.Message) End Try

End Sub

Function lookup(ByVal strquery As String) As DataTable hubungkan()

Dim hasil As New DataTable

Dim cmd As MySqlCommand = New MySqlCommand(strquery, conn) Dim rdr As MySqlDataReader = cmd.ExecuteReader

hasil.Load(rdr) rdr.Close() conn.Close() Return hasil End Function

Function query(ByVal strquery As String) As String Try

hubungkan()

Dim hasil As New DataTable

Dim cmd As MySqlCommand = New MySqlCommand(strquery, conn) conn.Close()

Catch ex As Exception conn.Close()

Return "Gagal : " & ex.Message End Try

Return "Berhasil" End Function

End Module


(70)

Imports System.Collections.Generic Imports System.Text

Module ModuleMFCC

Private Function my_rint(x As Double) As Integer If 2 * x = CDbl(Math.Round(2 * x)) Then x += 0.0001

End If

Return CInt(Math.Truncate(Math.Round(x))) End Function

Public Function DCremoval(ByVal signal As Double()) As Double() Dim hasil(signal.Length - 1) As Double

Dim avg As Double = signal.Average

For i As Integer = 0 To signal.Length - 1 hasil(i) = signal(i) - avg

Next

Return hasil End Function

Public Function EmpFiltering(ByVal signal As Double()) As Double() Dim alpha As Double = -0.97

Dim hasil(signal.Length - 1) As Double For i As Integer = 1 To signal.Length - 2

hasil(i) = signal(i) + signal(i - 1) * alpha Next

hasil(0) = signal(0) Return hasil

End Function

Public Function mfcc(ByRef signal As Double()) As Double() Dim lowestFrequency As Double = 133.3333

Dim linearFilters As Double = 13

Dim linearSpacing As Double = 66.66666666 Dim logFilters As Double = 27

Dim logSpacing As Double = 1.0711703 Dim fftSize As Double = 512

Dim cepstralCoefficients As Double = 13 Dim windowSize As Double = 256

Dim samplingRate As Double = 44100 Dim totalFilters As Double

Dim mfccFilterWeights As Double() Dim freqs As Double()

Dim triangleHeight As Double() Dim lower As Double()

Dim upper As Double() Dim center As Double() Dim fftFreqs As Double() Dim hamWindow As Double() Dim mfccDCTMatrix As Double() Dim preEmphasized As Double() Dim first As Double

Dim last As Double Dim fftData As Double() Dim empreinte As Double() Dim maxi As Double


(71)

Dim ceps As Double() Dim loga As Double Dim windowStep As Double Dim cols As Double

Dim frameRate As Double = 100

Dim i As Integer, j As Integer, k As Integer

signal = DCremoval(signal)

preEmphasized = EmpFiltering(signal) totalFilters = linearFilters + logFilters

freqs = New Double(CInt(Math.Truncate(totalFilters)) + 1) {} For i = 0 To linearFilters - 1

freqs(i) = lowestFrequency + i * linearSpacing Next

For i = CInt(Math.Truncate(linearFilters)) To CInt(Math.Truncate(totalFilters)) + 1

freqs(i) = freqs(CInt(Math.Truncate(linearFilters)) - 1) * Math.Pow(logSpacing, i - linearFilters + 1)

Next

lower = New Double(CInt(Math.Truncate(totalFilters)) - 1) {} upper = New Double(CInt(Math.Truncate(totalFilters)) - 1) {} center = New Double(CInt(Math.Truncate(totalFilters)) - 1) {} triangleHeight = New Double(CInt(Math.Truncate(totalFilters)) - 1) {}

fftData = New Double(CInt(Math.Truncate(fftSize)) - 1) {} For i = 0 To CInt(Math.Truncate(totalFilters)) - 1

lower(i) = freqs(i) Next

For i = 1 To CInt(Math.Truncate(totalFilters)) center(i - 1) = freqs(i)

Next

For i = 2 To CInt(Math.Truncate(totalFilters)) + 1 upper(i - 2) = freqs(i)

Next

mfccFilterWeights = New Double(CInt(Math.Truncate(totalFilters * fftSize)) - 1) {}

For i = 0 To totalFilters - 1

triangleHeight(i) = 2 / (upper(i) - lower(i)) Next

fftFreqs = New Double(CInt(Math.Truncate(fftSize)) - 1) {} For i = 0 To fftSize - 1

fftFreqs(i) = (i / fftSize) * samplingRate Next

For i = 0 To totalFilters - 1

For j = 0 To CInt(Math.Truncate(fftSize)) - 1

If (fftFreqs(j) > lower(i)) AndAlso (fftFreqs(j) <= center(i)) Then

mfccFilterWeights(CInt(Math.Truncate(fftSize)) * i + j) = triangleHeight(i) * (fftFreqs(j) - lower(i)) / (center(i) - lower(i)) End If

If (fftFreqs(j) > center(i)) AndAlso (fftFreqs(j) < upper(i)) Then


(1)

4.

Modul Suara

Imports NAudio.Wave Module ModuleSuara

Function ekstraksisignaldigital(namafile As String) As Double() Dim tmp As Integer = 0

Dim x As Integer = 0 Dim xx As Double = 0.0

Dim tmpxy As New List(Of Double())

Dim fr As IO.StreamReader = New IO.StreamReader(namafile) Dim signal() As Double

Using wfr As New WaveFileReader(namafile) Using ws As WaveStream =

WaveFormatConversionStream.CreatePcmStream(wfr) Using baStream As WaveStream = New BlockAlignReductionStream(ws)

Dim format As New WaveFormat(baStream.WaveFormat.SampleRate,

baStream.WaveFormat.BitsPerSample, baStream.WaveFormat.Channels) Dim buffer1 As Byte() = New

Byte(baStream.WaveFormat.BitsPerSample / 8 - 1) {}

Dim SampleRate = baStream.WaveFormat.SampleRate Dim wavFormat = baStream.WaveFormat

Dim bytesRead As Integer = 0 Dim previousPosition As Long = 0 Dim currentValue As Double Dim avg As Double = 0

ReDim signal(baStream.Length) Dim i As Integer = 0

While baStream.Position < baStream.Length bytesRead = baStream.Read(buffer1, 0, baStream.WaveFormat.BitsPerSample / 8)

If baStream.WaveFormat.BitsPerSample / 8 > 1 Then currentValue = 100.0 *

BitConverter.ToInt16(buffer1, 0) / Short.MaxValue Else

currentValue = 100.0 * 255 * (buffer1(0) - 128) / Short.MaxValue

End If

If Not x = 0 And (x Mod 5 = 0) Then

If Not CInt(currentValue) * -1 = 0 Then tmpxy.Add(New Double() {x,

CInt(currentValue) * -1 + 150, x - 1, tmp * -1 + 150}) End If

End If xx += 0.02 x = CInt(xx)

signal(i) = currentValue avg += currentValue


(2)

i += 1 End While

avg /= baStream.Length End Using

End Using End Using Return signal End Function

Function potongsuara(ByVal signal As Double(), ByVal tampil As Boolean, ByVal x As Integer) As List(Of Double())

Dim hasil As New List(Of Double())

Dim awal As Integer = -1, akhir As Integer = -1 Dim potong As New List(Of Integer)

Dim count As Integer = 0

For i As Integer = 0 To signal.Count - 2 If Not (signal(i) >= -5 And signal(i) <= 5) Then Dim tmphasil(x) As Double

For j As Integer = 0 To x - 1

If i + j > signal.Count - 1 Then Exit For

End If

tmphasil(j) = signal(i + j) Next

hasil.Add(tmphasil) i += x

End If Next

If tampil Then

For k As Integer = 0 To hasil.Count - 1 Dim p As Integer = 1000

Dim a As New Form a.Width = 500 a.Height = 500 a.Show()

Dim g As Graphics g = a.CreateGraphics

Dim penn As New System.Drawing.Pen(Brushes.Black, 5) g.DrawLine(penn, New Point(0, 250), New Point(500, 250)) penn = New System.Drawing.Pen(Brushes.Red, 1)

Dim l As Integer = 0 Dim tot As Double = 0

For i As Integer = 0 To hasil(k).Length - 1 Step p l += 1

tot = 0

For j As Integer = i To i + p tot += hasil(k)(i)

Next

tot = CInt(tot / p) If tot > 0 Then

g.DrawLine(penn, New Point(l, 250), New Point(l, (250 + tot)))

Else

g.DrawLine(penn, New Point(l, (250 + tot)), New Point(l, 250))

End If


(3)

Next Next End If Return hasil End Function End Module

5.

Modul LVQ

Module LVQ

Dim listdata As DataTable Dim a As New List(Of data) Dim maxEpoh As Integer = 5 Dim alpha As Double = 0.02 Dim jumlahvektor As Integer = 11 Dim LR As Double = 0.00005 Structure data

Dim vektor() As Double Dim jenis As String Dim idjenis As Integer End Structure

Public Sub AmbilData() Try

listdata = lookup("SELECT jenisnada, v.`id`, `v1`, `v2`, `v3`, `v4`, `v5`, `v6`, `v7`, `v8`, `v9`, `v10`, `v11`, `v12`, `hasildari` FROM `vektor` v INNER JOIN jenisnada j on v.jenisnada=j.id")

a.Clear() Dim ab As data

For i As Integer = 0 To listdata.Rows.Count - 1 ab.jenis = listdata.Rows(i)(0)

Dim nilaiv(11) As Double

For j As Integer = 0 To jumlahvektor

nilaiv(j) = CDbl(listdata.Rows(i)(j + 2)) Next

ab.vektor = nilaiv

ab.idjenis = listdata.Rows(i)(1) a.Add(ab)

Next Catch

MessageBox.Show("Database Tidk bisa diproses", "Database Error", _

MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End End Try End Sub


(4)

AmbilData()

Dim j As Integer

Dim bobotinput() As Double, nilaibanding() As Double Dim hasil As Double

Dim min As Double = 100

Dim flag = 0 j = 0

bobotinput = vektor Dim Wbaru As String = "" Do

flag += 1

For i As Integer = 0 To a.Count - 1 nilaibanding = a(i).vektor hasil = 0

For z As Integer = 0 To jumlahvektor

hasil += Math.Abs(Math.Pow((bobotinput(z) - nilaibanding(z)), 2))

Next

hasil = Math.Sqrt(hasil) If hasil < min Then min = hasil j = i End If Next Wbaru = ""

nilaibanding = a(j).vektor

For z As Integer = 0 To jumlahvektor

Wbaru &= nilaibanding(z) + alpha * (bobotinput(z) - nilaibanding(z)) & "|"

Next

LR = alpha * LR

Loop While flag <= maxEpoh Dim _mfcc = Wbaru.Split("|") query("insert into

vektor(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,jenisnada,hasildari) values(" & _mfcc(0) & "," & _mfcc(1) & "," & _mfcc(2) & "," & _mfcc(3) & "," & _mfcc(4) & "," & _mfcc(5) & "," & _mfcc(6) & "," & _mfcc(7) & "," & _mfcc(8) & "," & _mfcc(9) & "," & _mfcc(10) & "," & _mfcc(11) & "," & a(j).jenis & ",'Pelatihan')")

Return a(j).jenis End Function


(5)

Public Function pengenalan(ByVal vektor As Double()) As String AmbilData()

Dim j As Integer

Dim bobotinput() As Double, nilaibanding() As Double Dim hasil As Double

Dim flag = 0

Dim min As Double = 100 bobotinput = vektor j = 0

For i As Integer = 0 To a.Count - 1 nilaibanding = a(i).vektor hasil = 0

For z As Integer = 0 To jumlahvektor

hasil += Math.Abs(Math.Pow((bobotinput(z) - nilaibanding(z)), 2))

Next

hasil = Math.Sqrt(hasil) If hasil < min Then min = hasil j = i End If Next

Return a(j).jenis End Function

End Module

6.

Modul Cetak Partitur

Module CetakKeImage

Function getGambarNotBalok(i As Integer) As Bitmap Select Case i + 1

Case 1

Return New Bitmap(My.Resources._do) Case 2

Return New Bitmap(My.Resources.re) Case 3

Return New Bitmap(My.Resources.mi) Case 4

Return New Bitmap(My.Resources.fa) Case 5

Return New Bitmap(My.Resources.sol) Case 6

Return New Bitmap(My.Resources.la) Case 7

Return New Bitmap(My.Resources.si) Case Else

Return New Bitmap(My.Resources.do_) End Select


(6)

Sub cetaknotbalok(ByVal notbalok() As Integer, ByVal dest As String) Dim height As Integer = 254

Dim width As Integer = 31 Dim x As Integer = 31 Dim y As Integer = 254 If notbalok.Count < 10 Then width *= notbalok.Count Else

width = 310

height *= Math.Ceiling(notbalok.Count / 10) End If

Dim kanvas As Bitmap Dim gr As Graphics

kanvas = New Bitmap(width, height) gr = Graphics.FromImage(kanvas) Dim x1 As Integer = 0

Dim y1 As Integer = 0

For j As Integer = 0 To notbalok.Count - 1

gr.DrawImage(getGambarNotBalok(notbalok(j)), x1, y1) If j Mod 10 = 0 And Not j = 0 Then

x1 = 0 y1 += y Else

x1 += x End If Next

kanvas.Save(dest) End Sub