View
232
Download
4
Category
Preview:
Citation preview
TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK
LENGAN ROBOT PENULIS ANGKA
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Oleh :
YOHANNES CHRYSOSTOMOS HENDRO YUWONO
NIM : 115114024
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i
TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK
LENGAN ROBOT PENULIS ANGKA
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Oleh :
YOHANNES CHRYSOSTOMOS HENDRO YUWONO
NIM : 115114024
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
FINAL PROJECT
SPEECH RECOGNITION APPLICATION FOR
ROBOTIC ARM NUMBERS WRITER
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program
YOHANNES CHRYSOSTOMOS HENDRO YUWONO
NIM : 115114024
ELECTRICAL ENGINEERING STUDY PROGRAM
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
HALAMAN PERSETUJUAN
TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN
ROBOT PENULIS ANGKA
( SPEECH RECOGNITION APPLICATION FOR ROBOTIC
ARM NUMBERS WRITER )
Oleh :
YOHANNES CHRYSOSTOMOS HENDRO YUWONO
NIM : 115114024
Telah disetujui oleh :
Pembimbing
Dr. Linggo Sumarno Tanggal :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
HALAMAN PENGESAHAN
TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN
ROBOT PENULIS ANGKA
( SPEECH RECOGNITION APPLICATION FOR ROBOTIC
ARM NUMBERS WRITER )
Oleh :
YOHANNES CHRYSOSTOMOS HENDRO YUWONO
NIM : 115114024
Telah dipertahankan di depan panitia penguji
pada tanggal_____________
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap Tanda Tangan
Ketua : Dr. Iswanjono _____________
Sekretaris : Dr. Linggo Sumarno _____________
Anggota : Wiwien Widyastuti, S.T.,M.T. _____________
Yogyakarta,
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
Paulina Heruningsih Prima Rosa, S.Si., M.Sc.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa tugas akhir ini tidak memuat karya
orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka sebagaimana
layaknya karya ilmiah.
Yogyakarta,
Yohannes Chrysostomos Hendro Yuwono
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO :
“Mintalah, maka akan diberikan kepadamu; carilah,
maka kamu akan mendapat; ketuklah, maka pintu
akan dibukakan bagimu”
(Mat 7:7)
Dengan ini kupersembah karyaku untuk…..
Yesus Kristus dan Bunda Maria yang selalu mendampingiku dalam keadaan apapun
Orang tua yang selalu kucintai
Teman-temanku yang selalu saling menyemangati
Terima kasih...
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
LEMBAR PERNYATAN PERSETUJUAN PUBLIKASI
KARYA ILMIAH UNTUK KEPENTINGAN
AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Yohannes Chrysostomos Hendro Yuwono
Nomor Mahasiswa : 115114024
Demi pengembangan ilmu pengetahuan, saya memberikan kepada perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul :
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN
ROBOT PENULIS ANGKA
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 royalty kepada saya selama
tetapmencatumkan nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Yogyakarta,
(Yohannes Chrysostomos Hendro Yuwono)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
INTISARI
Kehidupan manusia tidak jauh dengan teknologi. Teknologi sangat membantu dalam
menyelesaikan tugas dan pekerjaan manusia. Menggunakan ucapan manusia sebagai
pengganti tombol untuk sebuah alat akan menjadi lebih efisien dibandingkan dengan hanya
menggunkan tombol saja. Atas dasar tersebut penulis membuat sistem pengenalan suara
untuk lengan robot. Secara khusus lagi, penulis membuat sistem pengenalan ucapan angka
0 – 9 untuk lengan robot menulis.
Sistem pengenalan ucapan angka ini menggunakan mikrofon untuk merekam
ucapan. Ucapan yang terekam diproses menggunakan laptop untuk menjalankan proses
pengenalan dan mengenali ucapan yang terekam. Proses pengenalan ucapan meliputi
beberapa subproses diantaranya merekam, pre-emphasis, normalisasi, pemotongan sinyal,
framing dan windowing, ekstraksi ciri, fungsi korelasi, k-NN, dan penentuan hasil ucapan
pengenalan. Lengan robot sebagai lengan untuk menulis menggunakan minimum sistem
dengan ATMEGA32 untuk mengatur pergerakan motor servo pada lengan robot.
Pengenalan ucapan untuk menjalankan lengan robot penulis angka berjalan
dengan baik untuk 3 user. Program pengenalan ucapan angka mampu mengenali 10 jenis
angka (satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, nol). Sistem
pengenalan ucapan menggunakan fungsi korelasi. Program pengenalan sudah berhasil
dibuat dan dapat bekerja sesuai dengan yang diharapkan. Pada program pengenalan ini
menampilkan gelombang ucapan terekam, ekstraksi ciri DFT, dan keluaran berupa tulisan
angka yang berhasil dikenali. Pada program ini didapatkan parameter terbaik pada nilai
segmen averaging 8 dan nilai k pada k-NN 1. Hasil pengenalan secara real time dengan
menggunakan nilai thresholding mampu mengenali semua user dengan sebesar 85,33%.
Kata kunci: Suara Manusia, Discrete Fourrier Transform (DFT), Lengan Robot.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
Human life is not far form technology. Technology is very helpful in completing
human tasks and work. Using human speech instead of a button for an appliance would be
more efficient than just using the buttons itself. Based on this the author make a voice
recognition system for the robot arm. In particular, the authors made a speech recognition
system of numbers 0-9 for the robot arm to write.
This number speech recognition systems use a microphone for recording speech.
Recorded speech processed using a laptop to run the recognition process and recognize the
recorded speech. The Speech recognition process includes several subprocesses such as :
recording, pre-emphasis, normalization, cutting signal, framing and windowing, feature
extraction, correlation function, k-NN, and the determination of speech recognition results.
As the arm of the robot arm to write it is used the ATMEGA32, minimum system with
servo motors to regulate the movement of the robot arm
Speech recognition usage to movement robot,s arm for writing have gone well for
3 user. The speech recognition program is able to recognize 10 types of numbers (one,
two, three, four, five, six, seven, eight, nine, zero). Speech recognition system used
correlation function. Introduction program has been created and it could work as expected.
At the introduction of the program showing the recorded speech wave, DFT feature
extraction, and output a successful writing recognizable number. In this program,
parameter best in the value segment averaging 8 and the value of k at k-NN number 1. The
result with thresholding able to recognize 85.33% for all users.
Keywords: Human Voice, Discrete Fourier Transform (DFT), Robot Arm.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus karena telah
memberikan rahmat-Nya sehingga penulis dapat menyelesaikan laporan tugas akhir ini
dengan baik.Laporan tugas akhir ini disusun untuk memenuhi syarat memperoleh gelar
sarjana.
Selama pembuatan tugas akhir ini penulis menyadari bahwa ada begitu banyak
pihak yang telah memberikan bantuan baik bantuan materi, moral maupun dukungan. Oleh
karena itu penulis ingin mengucapkan terimakasih kepada :
1. Petrus Setyo Prabowo, S.T., M.T., Ketua Program Studi Teknik Elektro
Universitas Sanata Dharma.
2. Dr.Linggo Sumarno, dosen pembimbing yang dengan penuh setia, kesabaran
dan pengertian untuk membimbing dalam menyelesaikan Tugas Akhir ini..
3. Bapak Dr. Iswanjono dan ibu Wiwien Widyastutu, S.T.,M.T selaku dosen
penguji yang telah member masukan dan kritik dalam penulisan Tugas Akhir
ini
4. Bapak dan Ibu dosen yang telah mengajarkan banyak ilmu yang bermanfaat
selama menempuh pendidikan di Universitas Sanata Dharma.
5. Segenap laboran dan karyawan Fakultas Sains dan Teknologi yang telah
memberikan dukungan secara tidak langsung dalam kelancaran penulis
mengerjakan penulisan tulisan tugas akhir ini.
6. Kedua orang tua penulis yang telah banyak memberikan dukungan doa, kasih
sayang dan motivasi selama menempuh pendidikan di Universitas Sanata
Dharma.
7. Teman – teman seperjuangan Teknik Elektro 2011 yang telah menemani di
pada saat menempuh pendidikan di Universitas Sanata Dhama.
8. Semua pihak yang tidak bisa disebutkan satu persatu yang telah banyak
memberikan banyak bantuan dan dukungan dalam menyelesaikan tugas akhir
ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
Penulis menyadari bahwa dalam penyusunan laporan tugas akhir masih
mengalami kesulitan dan tidak lepas dari kesalahan.Oleh karena itu, penulis mengharapkan
masukan, kritik dan saran yang membangun agar skripsi ini menjadi lebih baik.Dan
semoga skripsi ini dapat bermanfaat sebagaimana mestinya.
Yogyakarta,
Penulis,
Yohannes Chrysostomos Hendro Yuwono
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
DAFTAR ISI
Halaman
HALAMAN JUDUL. ............................................................................................... i
HALAMAN PERSETUJUAN.. ........................................................................... iii
HALAMAN PENGESAHAN. .............................................................................. iv
PERNYATAAN KEASLIAN KARYA. ............................................................ v
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP............................. vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS. ..................................... vii
INTISARI. ................................................................................................................... viii
ABSTRACT. ............................................................................................................... ix
KATA PENGANTAR. ............................................................................................ x
DAFTAR ISI. ............................................................................................................. xii
DAFTAR GAMBAR. .............................................................................................. xvi
DAFTAR TABEL. ...................................................................................... xix
BAB I PENDAHULUAN
1.1. Latar Belakang. ................................................................................................. 1
1.2. Tujuan dan Manfaat Penelitian ......................................................................... 2
1.3. Batasan Masalah ............................................................................................... 2
1.4. Metodologi Penelitian ...................................................................................... 3
BAB II DASAR TEORI
2.1. Lengan Robot .................................................................................................... 3
2.2. Mikrokontroler AVR ATMEGA32 ................................................................... 5
2.2.1. Arsitektur AVR ATMEGA32 ................................................................. 5
2.2.2. Deskripsi Mikrokontroler AVR ATMEGA32 ........................................ 6
2.2.3. Interupsi ................................................................................................... 7
2.2.4. Timer/Counter 0 ...................................................................................... 7
2.2.5. Komunikasi Serial USART ..................................................................... 9
2.3. LCD(Liquid Crystal Display) ............................................................................ 13
2.4. Regulator IC 78xx dan Transistor Penguat Arus............................................... 14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
2.5. Torsi/momen gaya ............................................................................................. 16
2.6. Sinyal suara Manusia......................................................................................... 16
2.7. Sampling ............................................................................................................ 16
2.8. Preprocessing .................................................................................................... 17
2.8.1. Pre Emphasis ........................................................................................... 17
2.8.2. Normalisasi .............................................................................................. 17
2.8.3. Pemotongan SInyal.................................................................................. 19
2.8.1 Zero Padding ............................................................................................ 20
2.9 Framing ............................................................................................................. 21
2.10. Windowing ....................................................................................................... 21
2.10.1. Hamming .............................................................................................. 22
2.11. Ektraksi Ciri DFT ............................................................................................. 22
2.11.1. Pengertian DFT .................................................................................... 22
2.11.1. Segment Averaging ............................................................................... 23
2.12. Template Maching ............................................................................................ 24
2.12.1. Korelasi ................................................................................................. 24
2.13. K - nearest neighbor ......................................................................................... 25
2.14. Mikrofon ........................................................................................................... 25
2.15. Sound Card... .................................................................................................... 26
2.16. Motor Servo………………................................................................................. 27
BAB III PERANCANGAN
3.1. Proses Kerja ....................................................................................................... 29
3.2. Perancangan Mekanik Lengan Robot................................................................ 30
3.3. Perancangan Perangkat Keras ........................................................................... 32
3.3.1. Minimum sistem Atmega8535 + LCD 16x2 .......................................... 32
3.3.1.1. Minimum sistem Atmega8535 .................................................... 32
3.3.1.2. Rangkaian Konfigurasi LCD 16x2 ............................................. 33
3.3.2. Motor Servo ............................................................................................ 34
3.3.3. Regulator IC 7805dan Transistor Penguat Arus ..................................... 36
3.3.4. Soundcard ............................................................................................... 36
3.3.5. Headset ................................................................................................... 36
3.4. Perhitungan Torsi Motor Servo ........................................................................ 37
3.5. Perancangan Perangkat Lunak.......................................................................... 38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
3.5.1. Antarmuka Program ............................................................................... 38
3.5.2. Proses Pengenalan Suara Pada Matlab ................................................... 39
3.5.2.1. Sampling ................................................................................... 40
3.5.2.2. Pre-emphasis ............................................................................. 41
3.5.2.3. Normalisasi ............................................................................... 41
3.5.2.4. Pemotongan sinyal .................................................................... 42
3.5.2.5. Framing dan Windowing .......................................................... 43
3.5.2.6. Ekstraksi ciri DFT .................................................................... 44
3.5.2.7. Korelasi ..................................................................................... 45
3.5.2.8. Klasifikasi K-nn dan penentuan keluaran ................................. 46
3.5.2.9. Proses pengiriman Serial .......................................................... 47
3.5.4. Perancangan Pembentukan Database Ucapan ........................................ 48
3.5.5. Bentuk Angka Digital ............................................................................. 48
3.5.6. Proses Flowchart Program Lengan robot ............................................... 49
BAB IV HASIL DAN PEMBAHASAN
4.1. Implementasi Lengan Robot ............................................................................. 61
4.1.1. Bentuk Fisik Hardware ........................................................................ 61
4.1.2. Sistem Elektronik .................................................................................. 61
4.1.3. Pengaturan Lengan Robot .............................................................. 62
4.1.4. Pengendalian Komunikasi USART................................... .................... 63
4.1.5. Pengendalian Motor Servo................................... ................................. 63
4.2. Implementasi GUI Matlab dan Program Pengenalan Ucapan .......................... 65
4.2.1. Pop Up Menu................................... ...................................................... 66
4.2.2. Tombol Rekam................................... ................................................... 68
4.2.3. Tombol Reset................................... ...................................................... 76
4.2.3. Tombol Keluar................................... .................................................... 77
4.3. Pengujian Sudut Motor Servo... ....................................................................... 77
4.4. Pengujian Untuk Tingkat Pengenalan Ucapan... .............................................. 79
4.4.1. Pengujian Pengenalan Ucapan Secara Tidak Real Time... .................... 79
4.4.2. Pengujian Pengenalan Secara RealTime... ............................................. 83
4.4.3. Pengujian Real Time Tanpa Nilai Thresholding Untuk penentuan Database...
.......................................................................................................................... 84
4.4.4. Pengujian RealTime dengan Nilai Thresholding... ................................ 89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
4.5. Hasil Pengujian Tulisan dari Lengan Robot... .................................................. 93
BAB V KESIMPULAN DAN SARAN
5.1. Kesimpulan ......................................................................................................... 95
5.2. Saran ................................................................................................................. . 95
DAFTAR PUSTAKA ................................................................................................ 96
LAMPIRAN .................................................................................................................. 98
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR GAMBAR
Halaman
Gambar 2.1. Manipulator pada robot lengan .............................................................. 4
Gambar 2.2. Konfigurasi Pin Mikrokontroler ATmega32 ......................................... 6
Gambar 2.3. Mode Phase Correct PWM ................................................................... 8
Gambar 2.4. Mode Fast PWM ................................................................................... 9
Gambar 2.5. Register UDR ........................................................................................ 10
Gambar 2.6. Register UCSRA ................................................................................... 10
Gambar 2.7. Register UCSRB .................................................................................... 11
Gambar 2.8. Register UCSRB .................................................................................... 12
Gambar 2.9. Konfigurasi kaki pin LCD ..................................................................... 13
Gambar 2.10. Rangkaian umum regulator 78xx .......................................................... 15
Gambar 2.11. Rangkaian catu daya dengan penguat. ................................................... 15
Gambar 2.12. Tampilan Proses Sampling .................................................................... 17
Gambar 2.13. Contoh hasil proses sampling ................................................................ 18
Gambar 2.14. Contoh hasil proses normalisasi ............................................................ 18
Gambar 2.15. Proses Pemotongan Sinyal .................................................................... 19
Gambar 2.16. Proses zero padding. .............................................................................. 20
Gambar 2.17. Proses framing.................................................................... ................... 21
Gambar 2.18. Proses Windowing.................................................................... ............. 21
Gambar 2.19. Contoh Hasil DFT.................................................................................. 23
Gambar 2.20. contoh segmen averaging dengan 16 segmen................................ ....... 24
Gambar 2.21. Headset INTOPIC JAZZ 660.. .............................................................. 26
Gambar 2.22 Bentuk Sound Card PC/Laptop .............................................................. 26
Gambar 2.23 Model fisik motor servo.......................................................................... 27
Gambar 2.22 Cara pengontrolan motor servo .............................................................. 28
Gambar 3.1. Arsitektur Sistem.. ................................................................................. 29
Gambar 3.2. Design lengan robot secara keseluruhan................................................ 30
Gambar 3.3. komponen bagian 1 ................................................................................ 30
Gambar 3.4. komponen bagian 2 ................................................................................ 30
Gambar 3.5. komponen bagian 3 ................................................................................ 31
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 3.6. design awal ujung lengan robot ............................................................. 31
Gambar 3.7. Rangkaian Osilator ATmega32 ............................................................. 32
Gambar 3.8. Rangkaian Reset ATmega32 ................................................................. 33
Gambar 3.9. Skematik LCD 16x2 .............................................................................. 33
Gambar 3.10. SettingPort LCD .................................................................................... 34
Gambar 3.11. Rangkaian pin motor servo .................................................................... 34
Gambar 3.12. Lebar pulsa motor servo ........................................................................ 35
Gambar 3.13. Rangkaian regulator 7805 dengan penguatan arus ................................ 36
Gambar 3.14. konstruksi lengan robot ......................................................................... 37
Gambar 3.15. Tampilan Program Utama ..................................................................... 39
Gambar 3.16. Blok Diagram Pengenalan Ucapan ........................................................ 40
Gambar 3.17. Diagram Blok sampling ......................................................................... 40
Gambar 3.18. proses Pre-emphasis .............................................................................. 41
Gambar 3.19. Diagram Blok Normalisasi .................................................................... 42
Gambar 3.20. Diagram Pemotongan Sinyal................................................................. 42
Gambar 3.21. Diagram proses framing........................................................................ 44
Gambar 3.22. Diagram Blok ekstraksi ciri DFT …................................................... 45
Gambar 3.23. Diagram Alir Proses Pembandingan Korelasi........................................ 45
Gambar 3.24. Diagram alur K-NN dan penentuan suara hasil pengenalan ................. 46
Gambar 3.25. Flowchart program komunikasi serial dengan MATLAB ................... 47
Gambar 3.26. Alur Pembentukan Database …….…................................................... 48
Gambar 3.27. Bentuk angka digital ……………..…................................................... 49
Gambar 3.28. Flowchart Program Lengan Robot Saat Posisi Siaga............................ 53
Gambar 3.29. Flowchart Program Lengan Robot saat menulis angka 0...................... 53
Gambar 3.30. Flowchart Program Lengan Robot saat menulis angka 1...................... 54
Gambar 3.31. Flowchart Program Lengan Robot saat menulis angka 2...................... 54
Gambar 3.32. Flowchart Program Lengan Robot saat menulis angka 3...................... 55
Gambar 3.33. Flowchart Program Lengan Robot saat menulis angka 4...................... 55
Gambar 3.34. Flowchart Program Lengan Robot saat menulis angka 5...................... 56
Gambar 3.35. Flowchart Program Lengan Robot saat menulis angka 6...................... 56
Gambar 3.36. Flowchart Program Lengan Robot saat menulis angka 7...................... 57
Gambar 3.37. Flowchart Program Lengan Robot saat menulis angka 8...................... 57
Gambar 3.38. Flowchart Program Lengan Robot saat menulis angka 9...................... 58
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
Gambar 3.39. Fowchart penulisan angka keseluruhan ................................................. 59
Gambar 3.40. (lanjutan) Flowchart penulisan angka ................................................... 60
Gambar 4.1. Lengan Robot Tampak Atas .................................................................. 61
Gambar 4.2. Lengan Robot Tampak Samping............................................................ 61
Gambar 4.3 Minimum System………………............................................................... 62
Gambar 4.4. Regulator............................................................................................... 62
Gambar 4.5. Tampilan GUI Program Pengenalan. .................................................... 66
Gambar 4.25a. Bentuk hasil penulisan angka ............................................................... 93
Gambar 4.25b. Bentuk hasil penulisan angka .............................................................. 94
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xix
DAFTAR TABEL
Halaman
Tabel 2.1. Hubungan PIN dan Interupsi ...................................................................... 7
Tabel 2.2. Penentuan Ukuran Karakter ....................................................................... 12
Tabel 2.3. Operasi Dasar LCD 16x2 ........................................................................... 13
Tabel 2.4. Karakteristik Regulator Tegangan ic 78xx ................................................. 14
Tabel 2.5. Tabel spesifikasi mikrofon pada headset INTOPIC JAZZ 660 ................. 25
Tabel 2.6. Spesifikasi servo Towerpro MG946R ........................................................ 27
Tabel 3.1. ukuran bagian-bagian lengan robot ............................................................ 31
Tabel 3.2. Perhitungan nilai overflow interrupt .......................................................... 35
Tabel 3.3. berat yang ditanggung servo ...................................................................... 38
Tabel 3.4. Keterangan Tampilan User............................................... .......................... 39
Tabel 3.5. Pengucapan kata dan data yang dikirim....................................... .............. 48
Tabel 3.6. Gerak sudut motor servo............................................................................ 49
Tabel 4.1. Tabel Fungsi Saluran Mikrokontroler. ....................................................... 62
Tabel 4.2. Nilai OCR pada pergerakan 10 derajat motor servo .................................. 78
Tabel 4.3. Perhitungan Lebar Pulsa Motor Servo Towerpro MG946R ...................... 78
Tabel 4.4. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak RealTime 80
Tabel 4.5. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak RealTime 80
Tabel 4.6. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak RealTime 80
Tabel 4.7. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak RealTime 80
Tabel 4.8. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak RealTime 81
Tabel 4.9. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak RealTime 81
Tabel 4.10. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak RealTime 81
Tabel 4.11. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak RealTime. 82
Tabel 4.12. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak RealTime. 82
Tabel 4.13. Hasil Nilai batas bawah Yang Masih Dikenali Pada Setiap Ucapan.......... 83
Tabel 4.14 Confusion Matrix Pengujian secara realtime dengan database 1 untuk user 1…
.................................................................................................................... 84
Tabel 4.15. Confusion Matrix Pengujian secara realtime dengan database 5 untuk user
1……………………………………………….……………….. … 85
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xx
Tabel 4.16. Confusion Matrix Pengujian secara realtime dengan database 10 untuk user 1
...................... .............................................................................................. 85
Tabel 4.17. Confusion Matrix Pengujian secara realtime dengan database 1 untuk user 2
. ................................................................................................................... 86
Tabel 4.18. Confusion Matrix Pengujian secara realtime dengan database 5 untuk user 2
................................................................................................................... . 86
Tabel 4.19. Confusion Matrix Pengujian secara realtime dengan database 10 untuk user 2
.................................................................................................................... 87
Tabel 4.20. Confusion Matrix Pengujian secara realtime dengan database 1 untuk user
3………………………………………………………………………. 87
Tabel 4.21. Confusion Matrix Pengujian secara realtime dengan database 5 untuk user
3…….…………………………………………………………………… 88
Tabel 4.22. Confusion Matrix Pengujian secara realtime dengan database 10 untuk user
3…….…………………………………………………………………… 88
Tabel 4.23. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding un untuk
User 1 ……………………………………………………………….. 89
Tabel 4.24. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User
2. ................................... ……………………………………………….. 90
Tabel 4.25. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User
Ketiga.………………………………………………………………….. 90
Tabel 4.26. Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 1…… 91
Tabel 4.27. Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 2…… 92
Tabel 4.28. Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User1……. 92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Pada masa sekarang, aktivitas manusia tidak jauh dengan teknologi. Teknologi tidak
hanya berkembang pada bidang sains, tetapi sudah menjangkau dibidang lainnya, seperti
kedokteran, pertanian bahkan militer. Karena itu teknologi terus berkembang, sehingga
penggunaannya menjadi lebih mudah dari pada teknologi sebelumnya.
Lengan robot termasuk kedalam teknologi yang terus berkembang dalam
pemakaiannya[1]. Kegunaan lengan robot yang selain sebagai pengganti lengan pada
manusia untuk memindahkan barang tetapi bisa digunakan untuk aktivitas yang sering
dilakukan manusia ketika menggunakan tangannya yaitu menulis. Selain teknologi lengan
robot berkembang juga teknologi speech recognition, dimana menggunakan suara manusia
sebagai perintah untuk alat melakukan suatu fungsi[2].
Dengan gagasan diatas peneliti berkeinginan untuk membuat lengan robot yang bisa
beraktivitas untuk menulis dengan suara sebagai perintahnya. Sehingga tidak diperlukan
lagi remote control untuk menggunakan lengan robot. Dalam mencari ide peneliti
menemukan dalam penelitian sebelumnya mengenai Rancang Bangun Lengan Robot
Menulis Kata yang Dikendalikan oleh Aplikasi Android[3] dan penelitian lain mengenai
Pengenalan Ucapan Angka Secara Real Time Menggunakan Ekstraksi Ciri FFT dan Fungsi
Similaritas Kosinus[4].
Peneliti ingin merancang dan membuat lengan robot untuk menulis angka secara real
time dengan memanfaatkan suara manusia sebagai inputan. Oleh sebab itu peneliti
memakai ekstraksi ciri DFT dan fungsi korelasi, hal ini membedakan dengan penelitian
proses pengolah suara yang lainya. Dalam pembuatan lengan robot ini peneliti merancang
lengan robot dengan ujung yang terdapat spidol untuk menulis dengan 3 derajat kebebasan
atau degree of freedom ( DOF).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
1.2. Tujuan dan Manfaat
Tujuan dari penelitian ini :
1. Tujuan penelitian ini membuat dan merancang lengan robot penulis angka dari 0
sampai dengan 9 yang dapat bekerja dengan perintah suara.
Manfaat dari penelitian ini :
1. Manfaat dari penelitian sebagai perkembangan teknologi pada bidang kontrol
dalam bentuk perintah suara. Kemudian perkembangan teknologi lengan robot
sebagai alat untuk membantu pekerjaan manusia pada industri.
1.3. Batasan Masalah Penulis menetapkan beberapa batasan masalah pada perancangan sebagai berikut :
1) Masukan suara berupa suara penyebutan angka 0 sampai dengan 9, pengucapan
selain kata-kata yang sudah ditentukan akan dikenali secara salah.
2) Suara yang dikenali dari 3 user, peneliti dan 2 orang yang ditentukan oleh
peneliti dengan intonasi pengucapan secara normal.
3) Database suara terdiri dari 3 orang yang sesuai dengan user yang memberi
perintah suara.
4) Menggunakan Matlab untuk mengolah suara yang akan dikenali.
5) Pengenalan suara menggunakan ektraksi ciri DFT dan perhitungan korelasi.
6) Lengan robot menulis angka dengan style kotak berdasarkan suara yang
dikenali.
7) Lengan robot yang menggunakan bahan akrilik 3 mm.
8) Menggunakan 3 buah servo yang diprogram menggunakan codevision AVR.
9) Ujung lengan robot terdapat spidol untuk menulis di whiteboard.
10) Menggunakan minimum sistem dengan Atmega32.
11) Komunikasi antara Laptop dengan Atmega32 menggunakan komunikasi serial
USART yang dihubungkan dengan modul USB to TTL konverter yang telah
tersedia.
12) Lengan robot akan menulis pada sebuah papan tulis yang diletakan secara
vertikal.
13) Menggunakan headset Intopic Jazz 660 Hifi sebagai penangkap suara.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1.4. Metodologi Penelitian
Langkah-langkah yang dilakukan dalam pengerjaan yaitu ;
1) Mengumpukan bahan-bahan referensi baik buku dan jurnal ilmiah yang
membahas mengenai pengenalan suara pada Matlab, membahas mengenai
lengan robot, pemograman pada codevision AVR.
2) Perancangan hardware dan software untuk perancangan desain lengan robot
dan alur jalan pada program.
3) Pembuatan hardware dan software berdasarkan desain yang telah dirancang
dan membuat berdasarkan alur program kerja.
4) Pengambilan data dengan melihat hasil pengamatan pengolahan suara dan hasil
keluarannya, dan pengamatan pada sudut pada servo yang memungkin menulis
angka secara digital.
5) Analisa dan penyimpulan hasil percobaan dilakukan dengan melihat persentase
error saat mendeteksi suara dan tingkat keberhasilan lengan robot menulis
angka.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
BAB II
DASAR TEORI
2.1. Lengan Robot
Lengan robot merupakan gabungan dari beberapa segmen dan sendi yang
secaraumum dibagi menjadi tiga bagian, yaitu:arm, wirst, dan gripper. Robotic Industries
Association (RIA) mendefinisikan lengan robot sebagai lengan yang didesain untuk
memindahkan material, benda, alat tertentu lewat pergerakan yang terprogram untuk
melakukan berbagai macam tugas [1]. Sistem lengan robot memiliki empat komponen
dasar, yaitu: manipulator, end effector, aktuator, dan kontroler.
Manipulator pada robot lengan memiliki 3 bagian, yaitu bagian dasar (base),
bagian lengan (arm), dan bagian pergelangan (wrist). Bagian-bagian manipulator pada
robot lengan dapat dilihat pada gambar 2.1.
Gambar 2.1. Manipulator pada robot lengan
Bagian dasar (base) manipulator bisa secara paten terpasang pada dasar area kerja.
Bagian lengan (arm) berfungsi untuk memposisikan end effector, dan bagian pergelangan
(wrist) berfungsi untuk mengatur arah gerak dari end effector. Bagian ujung pada robot
lengan terpasang end effector atau yang sering disebut dengan gripper yang berfungsi
sebagai bagian terakhir yang menghubungkan antara manipulator dengan objek. Sebagai
contoh gripper dapat berupa peralatan las, penyemprot cat ataupun hanya berupa
pencengkram objek[6].
Kontroler merupakan otak dari sistem robot sehingga keberadaannya sangat
penting. Kontroler menyimpan informasi yang berkaitan dengan data-data robot, dalam hal
ini data gerakan robot yang telah diprogram sebelumnya.Kontroler berfungsi untuk
mengontrol pergerakan dari manipulator. Kontroler sendiri diatur oleh sebuah informasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
atau program yang diisikan dengan menggunakan bahasa pemrograman tertentu. Informasi
tersebut kemudian disimpan didalam memori. Data dalam memori dapat di keluarkan atau
di edit sesuai dengan yang dibutuhkan.
Aktuator adalah komponen penggerak yang jika dilihat dari prinsip penghasil
geraknya dapat dibagi menjadi tiga bagian yaitu penggerak berbasis motor listrik (motor
servo, motor steper, motor DC dan sebagainya), penggerak pneumatik (berbasis
kompresi:udara, nitrogen) dan penggerak hidrolik (berbasis benda cair: minyak pelumas).
2.2. Mikrokontroler AVR ATmega32
AVR (Alf and Vegard’sRiscProcessor) merupakan seri mikrokontroler CMOS 8-
bit yang diproduksi oleh Atmel berbasis arsitektur RISC (Reduced Instruction Set
Computer).Chip AVR yang digunakan untuk tugas akhir ini adalah ATmega32. Hampir
semua instruksi dieksekusi dalam satu siklus clock dan mempunyai 32 register general-
purpose, timer/counter fleksibel dengan mode compare, interupsi internal dan eksternal,
serial UART, programmable Watchdog Timer, dan power saving mode. AVR juga
mempunyai ADC, PWM internal dan In-System Programmable Flash on-chip yang
mengijinkan memori program untuk diprogram ulang [8].
2.2.1. Arsitektur AVR ATmega32
Mikrokontroler ATmega32 memiliki arsitektur sebagai berikut :
a. Saluran IO sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D
b. ADC 10 bit sebanyak 8 Channel
c. Tiga buah timer/counter yaitu Timer 0, Timer 1, dan Timer 2
d. Watchdog Timer dengan osilator internal
e. SRAM sebanyak 512 byte
f. Memori Flash sebesar 8 kb
g. Sumber Interupsi internal dan eksternal
h. Port SPI (Serial Pheriperal Interface)
i. EEPROM on board sebanyak 512 byte
j. Komparator analog
k. Port USART (Universal Shynchronous Ashynchronous Receiver
Transmitter)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
2.2.2. Deskripsi Mikrokontroler ATmega32
Konfigurasi Pin Mikrokontroller ATmega32 dengan kemasan 40 pin DIP (dual in-
line package) dapat dilihat pada Gambar 2.2. Untuk memaksimalkan performa dan
paralelisme, AVR menggunakan arsitektur Harvard (dengan memori dan bus terpisah
untuk program dan data). Ketika sebuah instruksi sedang dikerjakan maka instruksi
berikutnya diambil dari memori program[8].
Gambar 2.2. Konfigurasi Pin Mikrokontroler ATmega32[8]
Mikrokontroler Atmega 32 memiliki konfigurasi Pin sebagai berikut:
a. VCC (power supply)
b. GND (ground)
c. Port A (PA7…PA0) Port A berfungsi sebagai input analog pada ADC (analog
digital converter). Port A juga berfungsi sebagai suatu Port I/O 8-bit dua arah.
d. Port B (PB7…PB0) Port B adalah suatu Port I/O 8-bit dua arah dengan resistor
internal pull-up (yang dipilih untuk beberapa bit).
e. Port C (PC7…PC0) Port C adalah suatu Port I/O 8-bit dua arah dengan resistor
internal pull-up (yang dipilih untuk beberapa bit).
f. Port D (PD7...PD0) Port D adalah suatu Port I/O 8-bit dua arah dengan resistor
internal pull-up (yang dipilih untuk beberapa bit).
g. RESET (Reset input)
h. XTAL1 (Input Oscillator)
i. XTAL2 (Output Oscillator)
j. AVCC adalah pin penyedia tegangan untuk Port A dan ADC.
k. AREF adalah pin referensi analog untuk ADC.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
2.2.3. Interupsi
Interupsi adalah suatu kondisi dimana mikrokontroler akan berhenti sementara dari
program utama untuk melayani instruksi-instruksi pada interupsi kemudian kembali
mengerjakan instruksi program utama setelah instruksi-instruksi pada interupsi selesai
dikerjakan.
Table 2.1 Hubungan PIN dan Interupsi
Jenis interupt PIN pada Atemega 32
INT0 PORTD.2
INT1 PORTD.3
INT2 PORTB.2
ATmega32 menyediakan tiga interupsi eksternal yaitu, INT0, INT1, dan INT2. Masing-
masing interupsi tersebut terhubung dengan pin ATmega32 seperti ditunjukan pada Tabel
2.1. Interupsi eksternal bisa dilakukan dengan memberikan logika 0 atau perubahan logika
(rissing edge dan falling edge) pada pin interupsi yang bersangkutan[8].
2.2.4. Timer/Counter
Timer/Counter pada mikrokontroler AVR dapat digunakan untuk melakukan
pencacahan waktu seperti pada jam digital maupun untuk menghasilkan sinyal PWM
(Pulse Width Modulation) yakni sinyal kotak dengan frekuensi dan duty cycle yang
nilainya bisa diatur. Atmega32 memiliki tiga unit Timer/Counter yaitu Timer/Counter 0 (8
bit), Timer/Counter 1 (16 bit), dan Timer/Counter 2 (8 bit)[9].
TIMER/COUNTER 0
Fitur-fitur yang dimiliki:
a) Satu buah unit Compare Counter (Unit ini akan meng-count dan meng-compare)
b) Clear timer pada saat compare match (Auto reload)
c) Phase Correct PWM yang bebas glitch
d) Frequency generator
e) External event counter
f) Prescaler clock hingga 10 bit
g) Membangkitkan interupsi saat timer overflow dan atau compare match
Perhitungan overflow interrupt sebagai pembangkit PWM ditunjukan pada
persamaan 2.3, 2.4, dan 2.5 berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
(2.1)
(2.2)
(2.3)
Keterangan :
f = frekuensi yang digunakan untuk eksekusi program
T = periode
N = prescaller yang digunakan
OCR = nilai cacahan pulsa
Pulse = lebar pulsa
Berikut merupakan mode-mode operasi timer :
a. Mode normal, timer digunakan untuk menghitung saja, membuat delay, dan
mengitung selang waktu[8].
Gambar 2.3.Mode Phase Correct PWM [8]
b. Mode phase correct PWM (PCP), digunakan untuk menghasilkan sinyal PWM
dimana nilai register counter (TCNT0) yang mencacah naik dan turun secara terus
menerus akan selalu dibandingakan dengan register pembanding OCR0. Hasil
perbandingan register TCNT0 dan OCR0 digunakan untuk membangkitkan sinyal
PWM yang dikeluarkan pada OC0 seperti ditunjukan Gambar 2.4[9].
c. CTC (Clear timer on compare match), register counter (TCNT0) akan mencacah naik
kemudian di-reset atau kembali menjadi 0x00 pada saat nilai TCNT0 sama dengan
OCR0. Sebelumnya OCR diset dulu, karena timer 0 dan 2 maksimumnya 255, maka
range OCR 0-255[9].
d. Fast PWM, mode ini hampir sama dengan mode phase correct PWM, hanya
perbedaannya adalah register counter TCNT0 mencacah naik saja dan tidak pernah
mencacah turun seperti terlihat pada Gambar 2.7[9].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
Gambar 2.4.Mode Fast PWM [8]
2.2.5. Komunikasi Serial USART
Komunikasi USART (Universal Synchronous and Asynchronous serial Receiver
and Transmitter) adalah fasilitas komunikasi serial yang disediakan oleh mikrokontroler
Atmega32, baik secara sinkron maupun asinkron.Komunikasi seri dapat dibedakan
menjadi 2 macam, yaitu komunikasi data seri sinkron dan komunikasi data asinkron.
Dikatakan sinkron jika sisi pengirim dan sisi penerima ditabuh (clocked) oleh penabuh
(clock) yang sama, satu sumber penabuh, data dikirim beserta penabuh. Dikatakan
asinkron jika sisi pengirim dan sisi penerima ditabuh oleh penabuh yang terpisah dengan
frekuensi yang hampir sama, data dikirim disertai informasi sinkronisasi[8]. Pada proses
inisialisasi ini setiap perangkat yang terhubung harus memiliki baudrate yang sama.
Beberapa fasilitas yang disediakan USART AVR adalah sebagai berikut:
a. Operasi full duplex (mempunyai register receive dan transmit yang terpisah)
b. Mendukung kecepatan multiprosesor
c. Mode kecepatan berorde Mbps
d. Operasi asinkron atau sinkron
e. Operasi master atau slave clock sinkron
f. Dapat menghasilkan baud-rate (laju data) dengan resolusi tinggi
g. Modus komunikasi kecepatan ganda pada asinkron
2.2.5.1. Inisialisasi USART
Pada mikrokontroler AVR untuk mengaktifkan dan mengeset komunikasi USART
dilakukan dengan cara mengaktifkan register-register yang digunakan untuk komunikasi
USART. Register-register yang digunakan untuk komunikasi USART antara lain[8]:
USART I/O Data Register (UDR)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
UDR merupakan register 8 bit yang terdiri dari 2 buah dengan alamat yang sama, yang
digunakan sebagai tempat untuk menyimpan data yang akan dikirimkan (TXB) atau
tempat data diterima (RXB) sebelum data tersebut dibaca.
Gambar 2.5. Register UDR [8]
USART Control and Status Register A (UCSRA)
Gambar 2.6. Register UCSRA [8]
Penjelasan bit penyusun UCSRA[8]:
a. RXC (USART Receive Complete)
Bit ini akan set ketika data yang masuk ke dalam UDR belum dibaca dan
akan berlogika nol ketika sudah dibaca. Flag ini dapat digunakan untuk
membangkitkan interupsi RX jika diaktifkan dan akan berlogika nol secara
otomatis bersamaan dengan eksekusi vektorinterupsi yang bersangkutan.
b. TXC (USART Transmit Complete)
Bit ini akan set ketika data yang dikirim telah keluar. Flag ini akan
membangkitkan interupsi TX jika diaktifkan dan akan clear secara otomatis
bersamaan dengan eksekusi vektor interupsi yang bersangkutan.
c. UDRE (USART Data Register Empty)
Flag ini sebagai indikator isi UDR. Jika bernilai satu maka UDR dalam
keadaan kosong dan siap menerima data berikutnya, jika flag bernilai nol berarti
sebaliknya.
d. FE (Frame Error)
Bit ini sebagai indikator ketika data yang diterima error, misalnya ketika
stop bit pertama data dibaca berlogika nol maka bit FE bernilai satu. Bit akan
bernilai 0 ketika stop bit data yang diterima berlogika nol.
e. DOR (Data OverRun)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Bit ini berfungsi untuk mendeteksi jika ada data yang tumpang tindih. Flag
akan bernilai satu ketika terjadi tumpang tindih data.
f. PE (Parity Error)
Bit yang menentukan apakah terjadi kesalahan paritas. Bit ini berfungsi jika
ada kesalahan paritas. Bit akan berlogika satu ketika terjadi bit parity error apabila
bit paritas digunakan.
g. U2X (Double the USART Transmission Speed)
Bit yang berfungsi untuk menggandakan laju data manjadi dua kalinya.
Hanya berlaku untuk modus asinkron, untuk mode sinkron bit ini diset nol.
h. MPCM (Multi Processor Communication Mode)
Bit untuk mengaktifkan modus multi prosesor, dimana ketika data yang
diterima oleh USART tidak mengandung informasi alamat akan diabaikan.
USART CONTROL AND STATUS REGISTER B (UCSRB)
Gambar 2.7. Register UCSRB [8]
Penjelasan bit penyusun UCSRB[8]:
a. RXCIE (RX Complete Interrupt Enable)
Bit pengatur aktivasi interupsi penerimaan data serial, akan berlogika satu
jika diaktifkan dan berlogika nol jika tidak diaktifkan.
b. TXCIE (TX Complete Interrupt Enable)
Bit pengatur aktivasi pengiriman data serial, akan berlogika satu jika
diaktifkan dan berlogika nol jika tidak diaktifkan.
c. UDRIE (USART Data Register Empty Interrupt Enable)
Bit ini berfungsi untuk mengaktifkan interupsi data register kosong,
berlogika satu jika diaktifkan dan sebaliknya.
d. RXEN (Receiver Enable)
Bit ini berfungsi untuk mengaktifkan pin RX saluran USART. Ketika pin
diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena
sudah digunakan sebagai saluran penerima USART.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
e. TXEN (Transmitter Enable)
Bit ini berfungsi untuk mengaktifkan pin TX saluran USART. Ketika pin
diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena
sudah digunakan sebagai saluran pengirim USART.
f. UCSZ2 (Character Size)
Bit ini bersama dengan UCSZ1 dan UCSZ0 dalam register UCSRC
digunakan untuk memilih tipe lebar data bit yang digunakan.
Tabel 2.2. Penentuan Ukuran Karakter
UCSZ[2..0] Ukuran Karakter dalam
bit
0 5
1 6
10 7
11 8
100-110 Tidak dipergunakan
111 9
g. RXB8 (Receive Data Bit 8)
Bit ini digunakan sebagai bit ke-8 ketika menggunakan format data 9-10
bit, dan bit ini harus dibaca dahulu sebelum membaca UDR.
h. TXB8 (Transmit Data Bit 8)
Bit ini digunakan sebagai bit ke-8 ketika menggunakan format data 9-10
bit, dan bit ini harus ditulis dahulu sebelum membaca UDR.
USART CONTROL AND STATUS REGISTER C (UCSRC)
Gambar 2.8. Register UCSRC [8]
Penjelasan bit penyusun UCSRC[8]:
a. URSEL (Register Select) :
Bit ini berfungsi untuk memilih register UCSRC dengan UBBRH, dimana
untuk menulis atau membaca register UCSRC maka bit harus berlogika satu.
b. UMSEL (USART Mode Select)
Bit pemilih mode komunikasi serial antara sinkron dan asinkron.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
c. UPM[1…0] (Parity Mode)
Bit ini berfungsi untuk memilih mode paritas bit yang akan digunakan.
Transmittter USART akan membuat paritas yang akan digunakan secara otomatis.
d. USBS (Stop Bit Select)
Bit yang berfungsi untuk memilih jumlah stop bit yang akan digunakan.
e. UCSZ1 dan UCSZ0
Merupakan bit pengatur jumlah karakter serial Bit yang berfungsi untuk
memilih lebar data yang digunakan dikombinasikan dengan bit UCSZ2 dalam
register UCSRB.
f. UCPOL (Clock Parity)
Bit yang berguna hanya untuk modus sinkron. Bit in berhubungan dengan
perubahan data keluaran dan sampel masukkan, dan clock sinkron (XCK)[6].
2.3. LCD (Liquid Crystal Display)
LCD adalah salah satu komponen elektronika yang berfungsi sebagai tampilan
suata data, baik karakter dan huruf[10] agar dapat mengendalikan LCD karakter dengan
baik, tentu diperlukan koneksi yangbenar.Untuk itu perlu diketahui pin-pin antarmuka
yang dimiliki oleh LCD karakterseperti yang ditunjukan pada Gambar 2.11[10].
Gambar 2.9. Konfigurasi kaki pin LCD 16x2
Konfigurasi setting LCD 16x2 dapat dilihat pada tabel 2.3
Tabel 2.3. Operasi Dasar LCD 16x2[26]
No. Nama Fungsi
1 GND Ground
2 VCC 5V
3 VEE Ground
4 RS Register Select; H: Data Input; L: Instruction Input
5 RW H: Read; L: Write
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
Tabel 2.3.(lanjutan) Operasi Dasar LCD 16x2[26]
No. Nama Fungsi
6 EN Enable Signal
7 D0 Data Bus
8 D1 Data Bus
9 D2 Data Bus
10 D3 Data Bus
11 D4 Data Bus
12 D5 Data Bus
13 D6 Data Bus
14 D7 Data Bus
15 V+BL Positif backlight voltage
16 V–BL Negative backlight voltage
2.4. Regulator IC 78xx dan Transistor Penguat Arus
Pengatur tegangan (voltage regulator) berfungsi menyediakan suatu tegangan
keluaran dc tetap yang tidak dipengaruhi oleh perubahan tegangan masukan. Salah satu
tipe regulator tegangan tetap adalah 78xx. Regulator tegangan tipe 78xx adalah salah satu
regulator tegangan tetap dengan tiga terminal, yaitu terminal Vin, GND dan Vout.
Regulator tegangan 78xx dirancang sebagai regulator tegangan tetap, meskipun demikian
keluaran dari regulator ini dapat diatur tegangan dan arusnya melalui tambahan komponen
eksternal.Spesifikasi karakteristik IC regulator seri 78xx dapat dilihat pada tabel 2.4.
Tabel 2.4. Karakteristik Regulator Tegangan ic 78xx [11]
Type VOUT (Volt) VIN (Volt)
Min Maks
7805 5 7,3 20
7806 6 8,3 21
7808 8 10,5 23
7810 10 12,5 25
7812 12 14,6 27
7815 15 17,7 30
7818 18 21 33
7824 24 27,1 38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
Gambar 2.10. Rangkaian umum regulator 78xx [11]
Nilai komponen c1 dan c2 difungsikan sebagai filter capasitor yang bertujuan
untuk menghilangkan tegangan ripple agar tegangan keluaran menjadi lebih stabil. Untuk
mendapatkan nilai kapasitor yang sesuai, dapat mengacu pada persamaan 2.4 dan 2.5 [11].
( )
√
(2.4)
( )
(2.5)
Komponen eksternal yang digunakan yaitu transistor 2N3055 karena kemampuan
arus maksimal adalah 15 A [12].Untuk gambar rangkaian lengkap dengan IC regulator
dapat ditunjukan gambar 2.11.
Gambar 2.11. Rangkaian catu daya dengan penguat[12]
Dari gambar 2.11, maka diperleh persamaan-persamaan sebagai berikut[12]:
VB = Vreg + VD (2.6)
Tegangan keluaran rangkaian menjadi,
Vo = Vreg – VBE (2.7)
Jika VD VBE, maka
Vo = Vreg (2.8)
Tegangan diantara kolektor dan emittor transistor 2N3055 adalah,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
VCE = VIN – VR1(2.9)
Disipasi daya transistor NPN 2N3055 adalah,
PD = VCE x IC(2.10)
Untuk nilai penguatan arus diperoleh dengan persamaan dibawah ini :
Ic = β IB (2.11)
Ie = (β+1) IB (2.12)
2.5. Torsi / Momen Gaya
Momen Gaya adalah kemampuan gaya F memutar/merotasi benda terhadap poros
diam. Sehingga semakin besar torsi (τ) maka gaya F memutar benda pun semakin besar
[7].
Rumus :
τ = F r sin ϴ (2.13)
keterangan :
τ = Torsi (N-m)
r = Jarak dari titik pangakal gaya sampai sumbu putar
F = Gaya (N), F = m x g
ϴ = Derajat sumbu putar
2.6. Sinyal Suara Manusia
Suara termasuk sebagai suatu sinyal, seperti sinyal pada umumnya maka suara
manusia dapat merambat melalui media perantara. Suara dapat dihantarkan melalui
berbagai macam media, seperti media cair, gas ataupun media padat. Dengan mengambil
arti bahwa suara termasuk sebagai sinyal, maka suara manusia mempunyai frekuensi dan
amplitudo tertentu. Suara yang dapat didengar oleh manusia berkisar antara 20 Hz sampai
dengan 20 KHz dan suara manusia mempunyai frekuensi 300 – 3000 Hz, dimana Hz
adalah satuan frekuensi yang berarti banyak getaran per detik [13].
2.7. Sampling
Sampling merupakan proses pencuplikan sinyal kontinyu atau analog pada periode-
periode tertentu. Dalam proses ini sinyal suara akan dicuplik menjadi gelombang diskrit.
[14]. Dalam proses pencuplikan, ada yang disebut dengan frekuensi sampling.
frekuensisamplingmenandakan berapa banyak pencuplikan gelombang analog dalam satu
detik. Satuan dari frekuensi samplingialah Hertz (Hz).Proses sampling ditunjukan pada
gambar 2.12.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
Gambar 2.12. Tampilan Proses Sampling
Didalam kriteria Nyquist dituliskan bahwa frekuensi samplingminimal harus lebih
besar sama dengan 2 kali nilai frekuensi sinyal analog yang akan dicuplik .Kriteria Nyquist
perlu diperhatikan dalam melakukan pencuplikan.Lebih jelasnya kriteria Nyquist
menyatakan sebuah sinyal harus memiliki pencuplikan rate yang lebih besar dari 2
dengan adalah frekuensi paling tinggi yang muncul di sebuah sinyal.
2.8. Preprocessing
Prepocessing merupakan tahapan awal untuk mengkondisikan sinyal sebelum
diproses dalam ektraksi ciri.Preprocessing dilakukan untuk membuang noise pada sinyal
ucapan. Dalam preprocessing ada beberapa tahapan meliputi pre-emphasis,normalisasi,
pemotongan sinyal, dan zero padding.
2.8.1. Pre Emphasis
Pada proses pre emphasis sinyal denganfrekuensi tinggi diloloskan dan sinyal
denganfrekuensi rendah difilter hal ini dilakukan dengantujuan untuk meratakan bentuk
sinyal untukfrekuensi tinggi maupun rendah suara. Filter pre emphasis dinyatakan dalam
persamaan seperti berikut[15]:
s’(n) = s(n) – α*s(n−1) (2.14)
dimana:
s(n) =sampel sinyal masukan ke-n
α= konstanta dimana 0,9 <α < 1,0
2.8.2. Normalisasi
Normalisasi adalah proses dimana membuat penskalaan pada nilai amplitudo tiap
data sinyal sesuai skala yang diinginkan. Proses ini dilakukan agar nilai amplitudo pada
tiap data sinyal yang akan diolah bernilai sama. Besarnya nilai amplitudo sinyal suara
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
manusia saat melakukan pengucapan selalu berbeda-beda, sehingga penskalaan nilai
amplitudo sinyal terhadap acuan skala yang diinginkan sangat diperlukan [16].
( ( )) (2.15)
dengan keterangan sebagai berikut :
= hasil data sinyal normalisasi (1,2,3,…,N)
= data masukan dari sampling (1,2,3,…,N)
N merupakan banyaknya data sinyal.
Proses normalisasi sinyal suara diperlihatkan pada gambar 2.13. Gambar pada sisi
atas memperlihatkan sinyal yang akan dinormalisasi dan gambar pada sisi bawah
memperlihatkan hasil normalisasinya. Dari gambar tersebut diperlihatkan berubahnya nilai
amplitudo setelah skalanya diperbesar.
Gambar 2.13. Contoh hasil proses sampling
Gambar 2.14. Contoh hasil proses normalisasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
2.8.3. Pemotongan Sinyal
Gambar 2.15. Proses Pemotongan Sinyal
0 1000 2000 3000 4000 5000 6000 7000 8000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Pemotongan data sinyal sebelah kiri
Data ke-
Ampli
tude
0 1000 2000 3000 4000 5000 6000 7000 8000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1pembalik urutan data sinyal
Data ke-
Ampli
tude
0 500 1000 1500 2000 2500 3000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1pemotongan data sinyal sebelah kanan
Data ke-
Ampl
itude
0 500 1000 1500 2000 2500 3000 3500 4000-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Hasil pemotongan
Data ke-
Am
plitu
de
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Pemotongan sinyal merupakan proses yang berkaitan dengan ekstraksi ciri. Proses
ini bertujuan untuk memotong beberapa bagian sinyal. Dalam proses perekaman,
pemotongan sering terjadi untuk bagian awal dan akhir sinyal. Pemotongan bagian awal
dan akhir sinyal suara dimaksudkan untuk menghilangkan bagian yang tidak termasuk
bagian dari sinyal ucapan serta untuk mengurangi cacat sinyal akibat derau ruangan yang
ikut terekam.Sinyal yang dianggap sebagi noise tersebut berasal dari suara lingkungan
sekitar atau derau pernapasan. Keberadaan sinyal tersebut akan lebih baik jika
diminimalisir dengan cara dihilangkan.
Pada grafikpertama dari gambar 2.15 dengan batas potong 0.3data sinyal hasil
normalisasi ditinjau kembali untuk mencari urutan data yang nilai amplitudonya di atas
nilai positif batas potong dan di bawah nilai negatif batas potong. Pada grafik kedua data
sinyal akan dihilangkan dari awal hingga data pertama dari hasil pencarian. Setelah
dihilangkan kemudian urutan data sinyal dibalik dari belakang ke depan seperti pada
grafikketiga. Kemudian proses diulang kembali dengan peninjauan data sinyal dan
menghapus data dari awal hingga data pertama dari hasil pencarian. Pada grafik kelima
urutan data sinyal diurutkan kembali dari belakang ke depan agar urutan datanya kembali
pada aslinya.
2.8.4. Zero padding
Zeropadding merupakan proses pemberian deretan data bernilai 0 pada data sinyal.
Efek dari pemotongan sinyal memungkinkan adanya dampak ketidaksamaan banyak data
sinyal. Proses zeropadding dilakukan agar panjang gelombang tiap data sinyal ucapan
dapat disetarakan. Jumlah data 0 yang diberikan menyesuaikan ukuran banyak data yang
diinginkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Gambar 2.16. Proses zero padding
2.9. Framing
Framing adalah proses dimana sinyal data masukan akan dibentuk dalam frame-
frame. Dalam bentuk frame ini data akan lebih mudah untuk diketahui, sehingga tidak
perlu memeriksa sinyal data secara keseluruhan secara langsung. Data akan dicek setiap
frame sebesar nilai panjang frame yang telah ditentukan. Jika dalam pemeriksaan tersebut
sinyal data melebihi maka akan mengalami overlap, dimana akan sinyal data yang berlebih
tersebut akan dipotong sebesar nilai overlap. Nilai dari lebar frame (tf) adalah 512 [15] dan
nilai overlap (to) adalah 25% [20]dari nilai lebar segmen yaitu 128.
Gambar 2.17. Proses framing [15]
2.10. Windowing
Gambar 2.18. Proses Windowing
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Windowing adalah proses dimana meminimalkan terjadinya diskontinuitas sinyal
yang muncul akibat pemotongan sinyal. Biasanya diskontinuitas muncul pada bagian tepi
awal dan akhir data sinyal suara. Proses windowing dilakukan agar dapat menghilangkan
sinyal yang tidak diingikan sebelum ke proses selanjutnya[16].
Pada grafik pertama dari gambar 2.18 merupakan data sinyal hasil pemotongan
yang akan diolah pada proses windowing. Grafik kedua merupakan pola jendela yang akan
digunakan dalam proses windowing. Jumlah titik-titik data pada pembentukan pola jendela
tersebut harus sama terhadap banyak data pada data sinyal. Pada grafik ketiga merupakan
hasil windowing. Hasil tersebut diperoleh dari perkalian elemen dari gambar pertama
dengan gambar kedua.
2.10.1. Hamming
Hamming window adalah salah satu dari berbagai macam jenis windowing.
Hamming windowmerupakan window yang mempunyai sidelobe yang paling kecil dan
mainlobe yang paling besar sehingga hasildari hamming windowakan lebih halus dalam
menghilangkan efek diskontunitas. Persamaan hamming window adalah [18]:
( ) (
) (2.15)
Di mana :
w(n) = Hasil windowing
N= Jumlah data dari sinyal
n= waktu distrik ke
2.11. Ekstraksi Ciri DFT
2.11.1. Pengertian DFT
DFT merupakan perluasan dari transformasi fourier yang berlaku untuk sinyal-
sinyal diskrit dengan panjang yang terhingga. Semua sinyak periodik terbentuk dari
gabungan sinyal-sinyal sinusoidal yang menjadi satu yang dirumuskan pada
persamaansebagai berikut [19]:
( ) ∑ ( ) ( ) (2.16)
Dengan:e = natural number (2.7182818284…)
j = konstanta fourrier
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
k = indeks dalam domain frekuensi (0, 1, 2, …,N-1)
n = indeks dalam domain waktu (0,1,2, …, N-1)
Gambar 2.19.ContohHasil DFT
2.11.2. Segment Averaging
Segment averaging merupakan metode untuk mengurangi jumlah data sinyal
dengan data sinyal masukan disegmentasi dengan lebar segment yang kemudian dicari
rata-ratanya pada tiap segment.Lebarnya segmen ditentukan berdasarkan kelipatan 2n
(dengan 1≤n≤ 8), sehingga banyaknya segment yang terbentuk didapat dari pembagian
seluruh data terhadap lebar segment. Keluaran dari porses segment averaging adalah rata-
rata dari setiap segment [4].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
Gambar 2.20.contohsegmen averaging dengan 16 segmen
2.12. Template Maching
Template maching merupakan tahap pendekatan pengenalan pola dalam proses
pengenalan ucapan. Proses template maching digunakan untuk menentukan kesamaan pola
antara data masukan dengan pola database yang telah tersedia[17].
2.12.1. Korelasi
Korelasi digunakan untuk menghitung besarnya perubahan antara dua
variabel.Korelasi ini membagi dua variabel yang satu dengan yang lainnya yang saling
berhubungan. Korelasi dirumuskan sebagai berikut [25] :
( ) ∑ ( )( )
√∑ ( )
∑ ( )
(2.17)
Denganketerangansebagaiberikut :
= rata-rata variable data masukan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
= rata-rata variable data referensi
= data masukan
= data referensi
( )= hasilkorelasi antara x dan y
2.13. K- Nearest Neighbor
Alogarima yang disebut aturan tetangga terdekat atau biasa dikenal k - nearest
neighbor(k-NN) diringkas sebagai berikut [15]. Sebuah fitur yang tidak diketahui vector x
dan jarak mengukur, kemudian:
a. Diluar vektor N(jarak),identifikasi nilai k tetangga terdekat, terlepas dari label
kelas,untuk masalah 2 kelas dipilih dari nilai k yang ganjil, dan biasanyabukan
merupakan kelipatan dari banyaknya kelas M.
b. Dari sampel k tersebut, identifikasi jumlah vektor kiyang termasuk dalam kelas
ωi,I = 1,2,…, M . Dengan∑
c. Tetapkan x untuk kelas ωi dengan jumlah ki terbanyak dari sampel.
2.14. Mikrofon
Mikrofon dengan adalah perangkat yang mengubah gelombang suara menjadi
sinyal listrik. Mikrofon banyak digunakan untuk berbagai hal yang berhubungan dengan
komunikasi. Alat ini akan mengubah sinyal suara menjadi sinyal listrik yang kemudian
dapat diaplikasikan sebagai input. Mikrofon yang akan digunakan untuk pengambilan
suara adalah headset INTOPIC JAZZ 660. Mikrofon tersebut mempunyai spesifikasi
sebagi berikut :
Tabel 2.5 Tabel spesifikasi mikrofon pada headset INTOPIC JAZZ 660[22]
No Spesifikasi Nilai
1 Frequency Range 30 – 10.000 Hz
2 Microphone Sensitivity -54 3 dB
3 Impedance .2 k
4 Standard OperatingVoltage 3 V
5 Plug type 3.5mm stereo
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Gambar 2.21.Headset INTOPIC JAZZ 660
2.15. Sound Card
SoundCard atau kartu suara adalah perangkat keras pada PC/laptop yang berguna
untuk mengolah audio atau suara [23].Perangkat ini dapat mengkonversi sinyal audio,
mengeluarkan sinyal audio, merekam sinyal audio, dan menyimpan sinyal audio.
Kemampuan pengolahan audio sangat banyak sehingga banyak perangkat lain dari
PC/laptop yang terhubung pada soundcard. Secara umum sound card memiliki beberapa
fungsi :
a. DSP (Digital Signal Processor) menangani jenis komputasi.
b. DAC (Digital to Analog Converter) memproses output audio.
c. ADC (Analog to Digital Converter) memproses inputan audio.
d. ROM (Read Only Memory) menyimpan data sementara.
e. MIDI (Musical Instrument Digital Interface) untuk koneksi peralatan musik
eksternal.
f. Jack digunakan untuk menyambung speaker dan mikrophone sebagai line out
dan line in.
Ada 3 jenis Sound Card berdasarkan kondisi pemasangan yaitu Sound Card
OnBoard, Sound Card Off Board, dan SoundCardExternal. Sound card pada perangkat
PC/laptop biasanya sudah terpasang langsung pada motherboard atau biasa disebut Sound
Card On Board. Sound Card Off Board pemasangannya pada slot ISA/PCI pada
motherboard. SoundCardExternal pemasangannya dihubungkan ke komputer melalui
port eksternal seperti USB atauFireWire.
Gambar 2.22. Bentuk Sound Card PC/Laptop [23]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
2.16. Motor Servo
Motor servo merupakan motor DC yang seudah dilengkapi dengan sistem kontrol
didalamnya. Pada aplikasinya, motor servo sering digunakan sebagai kontrol loop tertutup,
sehingga dapat menangani perubahan posisi secara tepat dan akurat [1].
Gambar 2.23. Model fisik motor servo
Tabel 2.6 Spesifikasi servo Towerpro MG946R [24]
Spesifikasi servo Towerpro MG946R
operating voltage 4.8V to 7.2V
operating speed 4.8v : 0.20sec/60o
operating speed 6.0v : 0.17sec/60o
stall torque 10.50 kg-cm @4.8V
stall torque 13 kg-cm @6V
gear type all metal gear
size 40.7 mm x 19.7 mm x 42.9 mm
weight 55 gram
Bentuk fisik motor servo dapat dilihat pada gambar 2.23. Sistem pengkabelan
motor servo terdiri dari 3 bagian, yaitu Vcc, Gnd, dan Kontrol (PWM). Penggunaan PWM
pada motor servo berbeda dengan penggunaan PWM pada motor DC. Pada motor servo,
pemberian nilai PWM akan membuat motor servo bergerak pada posisi tertentu lalu
berhenti (kontrol posisi) [1].
Pengaruh dari lebar pulsa membuat posisi motor servo akan berubah. Perubahan ini
agar terus berada pada posisi tetap misal dengan pulsa 2 ms akan memutar posisi servo
pada 180o maka perlu diberikan nilai pulsa secara konstan agar posisi servo tetap pada
sudut tersebut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Gambar 2.24. Cara pengontrolan motor servo [5]
Prinsip utama pengontrolan motor servo yaitu dengan memberikan nilai PWM
pada kontrolnya. Perubahan duty cycleakan menentukan perubahan posisi dari motor
servo. Motor servo memiliki frekuensi sebesar 50 Hz sehingga pulsa yang dihasilkan yaitu
setiap 20 ms. Lebar pulsa akan menentukan posisi motor servo yang dikehendaki [1].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
BAB III
RANCANGAN PENELITIAN
Dalam bab III ini akan dibahas mengenai perancangan perangkat keras dan
perancangan perangkat lunak. Pembahasan mengenai proses kerja, perancangan mekanik
untuk lengan robot, perancangan hardware untuk komponen-komponen lengan lengan
robot, dan perancangan software untuk program lengan robot dan program suara.
3.1. Proses Kerja
Kerja sistem dirancang untuk mengenali suara yang diucapkan oleh user secara real
time untuk sebagai perintah dalam mengerakan lengan robot untuk menuliskan angka.
Ucapan berupa angka dari 0 sampai dengan 9 dari 3 user. Ucapan tersebut ditangkap
melalui mikrofon pada headset dan disalurkan menuju sound card untuk diubah menjadi
sinyal. Data sinyal akan diproses sebagai input oleh Matlab. Hasil dari proses oleh Matlab
dikirimkan ke mikrokontroler melalui USB to TTL. Data yang diterima kemudian diproses
mikrokontroler untuk mengoprasikan lengan robot. Lengan robot akan menuliskan angka
dari 0 – 9 sesuai dengan input yang diterima.
Gambar 3.1. Arsitektur Sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
3.2. Perancangan Mekanik Lengan Robot
Perancangan lengan robot berupa desain lengan robot, bahan pembuatan lengan
robot yaitu akrilik setebal 3 mm. Desain lengan robot menggunakan software Google
sketchup utuk model 3 dimensi dan Corel Draw untuk model 2 dimensi. Lengan robot
dirancang terdiri dari link 1, link 2, base sebagai poros. Lengan robot dirancang dengan 3
derajat kebebasan, dengan spidol berada di ujung lengan robot.
Gambar 3.2. Design lengan robot secara keseluruhan
Gambar 3.3.komponen bagian 1
Gambar 3.4. Komponen bagian 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
Gambar 3.5. Komponen bagian 3
Gambar 3.2 merupakan gambar design lengan robot secara 3D. Link merupakan
penghubung antar bagian dari lengan robot dan joint merupakan bagian penggerak pada
sendi di lengan robot.
Gambar 3.6 design awal ujung lengan robot
Gambar 3.6 merupakan design kasar dari ujung pada lengan robot dimana pada
bagian belakang spidol terdapat suspense yang akan membuat spidol dapat maju dan
mundur. Fungsi dari suspensi ini berguna saat menulis, lengan robot tidak terkena tekanan,
tekanan akan teredam pada suspensi tersebut.
Tabel 3.1. ukuran bagian-bagian lengan robot
Bagian Lengan Robot Panjang lengan
Bagian 1 14 cm
Bagian 2 dan spidol 27 cm
Base 12 cm
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
3.3. Perancangan Perangkat Keras (hardware)
Ada beberapa komponen dalam perancangan subsistem perangkat keras lengan
robot pemisah benda, diantaranya yaitu :
a) Minimum Sistem Atmega32 + LCD 16x2
b) Motor servo
c) Regulator IC 7805 + penguat arus
d) Headset
e) Soundcard
3.3.1. Minimum Sistem Atmega32 + LCD 16x2
3.3.1.1. Minimum Sistem Atmega32
Rangkaian minimum sistem merupakan sistem utama dalam mengontrol
pergerakan lengan robot yang telah diprogram dalam mikrokontroler ATmega32 sesuai
dengan kebutuhan. Penggunaan mikrokontroler dapat diatur sebagai input dan output
mengontrol motor servo serta mengolah data serial yang dikirimkan dari komputer melalui
USB to TTL converter.
Untuk perancangan minimum sistem terdiri dari rangkaian eksternal yaitu
rangkaian osilator dan rangkaian reset. Rangkaian osilator menggunakan crystal dengan
frekuensi sebesar 11,0592 MHz dan menggunakan kapasitor 22 pf pada pin XTAL1 dan
XTAL2 di mikrokontroler sesuai dengan datasheet. Rangkaian osilator ini berfungsi
sebagai sumber clock bagi mikrokontroler. Pemberian kapasitor bertujuan untuk
memperbaiki kestabilan frekuensi yang diberikan oleh osilator eksternal. Gambar 3.7
menunjukan rangkaian osilator.
Gambar 3.7. Rangkaian Osilator ATmega32[8]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Rangkaian reset bertujuan untuk memaksa proses kerja pada mikrokontroler dapat
diulang dari awal. Saat tombol reset ditekan maka mikrokontroler mendapat input logika
rendah, sehingga akan seluruh proses yang sedang dilakukan mikrokontroler akan ter-reset.
Gambar 3.8. adalah rangkaian reset untuk ATmega32.
Gambar 3.8. Rangkaian Reset ATmega32[8]
Pada gambar 3.8 terdapat resistor yang memiliki resistansi sebesar 4,7 KΩ yang
difungsikan sebagai pull up. Resistor pull-up eksternal dapat digunakan untuk menjaga
agar pin RESET tidak berlogika 0 secara tidak disengaja.Kapasitor 10nF digunakan untuk
menghilangkan noise yang disusun seri dengan resistor. Rangkaian reset minimum system
Atmega32 merupakan gabungan dari rangkaian push-button dan low-pass filter.
3.3.1.2. Rangkaian Konfigurasi LCD 16x2
Rangkaian LCD digunakan untuk menampilkan angka yang diucapkan oleh user
sehingga akan terlihat apakah terdeteksi atau tidak. Rangkaian LCD dapat dilihat pada
gambar 3.9. Penentuan konfigurasi kaki LCD menuju mikrokontroler ditentukan dengan
melihat pada software Code Vision AVR seperti pada Gambar 3.10.
Gambar 3.9. Skematik LCD 16x2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
Gambar 3.10. SettingPort LCD
3.3.2. Motor Servo
Dalam perancangan ini menggunakan motor servo sebagai penggerak dari lengan
robot. Motor servo yang digunakan yaitu Towerpro MG946R sebanyak 3 buah. Rangkaian
motor servo terdiri dari tiga port yaitu vcc,gnd,dan data. Pada jalur data berfungsi sebagai
jalur pengiriman pulsa PWM yang akan mengaktifkan motor servo. Gambar 3.11.
merupakan rangkaian pin untuk motor servo.
Gambar 3.11. Rangkaian pin motor servo
Dengan menggunakan interrups timer sebagai pembangkit PWM. Timer
merupakan sebuah counter dimana memiliki tugas menghitung „1,2,3,...” hingga 255 (8
bit) dan menyimpan hitungannya. Naiknya hitungan timer dan lama jeda antar hitungan
ditentukan dari siklus pencacah mikrokontroler. Pada perancangan motor servo, timer diset
agar menghitung sampai 255. Dan jika sudah mencapai 255, maka timer (overflow) akan
memberikan sinyal, PWM akan bekerja dan mengintruksikan timer untuk menghitung lagi
dari 0. Demikian seterusnya terjadi jika nilai 255 tercapai. Perbandingan nilai lebar pulsa
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
terhadap nilai overflow motor servo selama T = 20 ms, yang merupakan cacahan pulsa
selama 1 ms sampai 2 ms. Berikut perhitungan overflow interrupt sebagai pembangkit
PWM untuk mengatur motor servo.
Frekuensi kristal = 11,059200 MHz
T = (1/11059200)
= 0,090422 x 10-6
s.
Memakai timer 0 dan nilai precaler 256 untuk mengatur kecepatan clock maka
nilai timer overflow yang dihasilkan (0,090422 x 10-6
) x 256 = 23,148 x 10-6
. Dari hasil
tersebut untuk membuat interrupt dapat mencacah selama 20 ms yaitu (20ms/23,148x10-6
)
= 864. Tabel 3.2. menunjukan pemberian nilai pulsa untuk mengontrol pergerakan motor
servo secara umum. Dan Gambar 3.12. menunjukan lebar pulsa motor servo dengan
menggunakan persamaan 2.3.
Tabel 3.2. Perhitungan nilai overflow interrupt
SUDUT Lebar pulsa Nilai overflow interrupt
0o 1 ms OCR = = 43,20
90o 1,5 ms OCR = = 64,8
180o 2 ms OCR = = 86,40
Gambar 3.12. Lebar pulsa motor servo [5]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
3.3.3. Regulator IC 7805 dan Penguat Arus
Pada pembuatan tugas akhir ini, regulator digunakan sebagai pemberi daya pada
motor servo, minimum system ATmega32. Regulator terdiri dari IC 7805, 2N3055,
kapasitor, dan diode. Sumber yang digunakan untuk regulator yaitu menggunakan adaptor
switching yang telah tersedia di pasaran dengan spesifikasi keluaran tegangan 19 V dc dan
arus 4A.
Untuk men-supply motor servo Towerpro MG946R dibutuhkan arus sebesar
500 - 900 mA. Dengan demikian maka digunakan transistor 2N3055 agar arus keluaran IC
7805 yang memiliki tegangan keluaran sebesar 5 volt menjadi lebih besar. Tegangan 5 volt
merupakan tegangan kerja pada masing-masing servo yaitu kurang lebih 4 - 7,2 volt.
Komponen yang digunakan pada gambar 3.13 mengacu pada landasan teori[12].
Gambar 3.13. Rangkaian regulator 7805 dengan penguatan arus
3.3.4. Soundcard
Soundcard digunakan saat sampling untuk proses digitalisasi sinyal suara yang
ditangkap oleh mikrofon. Soundcard yang digunakan telah tertanam pada laptop yang akan
dipakai. Ucapan dari user berupa sinyal analog, sehingga diubah menjadi sinyal diskrit
agar dapat diolah dikomputer.
3.3.5. Mikrofon
Headset dengan mikrofon untuk menangkap sinyal analog dari input kemudian
diteruskan menuju soundcard pada laptop melalui line in yang ada pada sound card.
Headset yang digunakan dalam perancangan adalah Intopic Jazz 660. Headset ini
memiliki mikrofon dengan panjang 13.5 cm dengan berbentuk lurus. Hal ini digunakan
agar dapat mendapatkan data sinyal yang stabil ketika pengujian.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
3.4. Perhitungan Torsi Motor Servo
Untuk menghitung besar torsi pada masing-masing motor servo, digunakan rumus
dan persamaan 2.13. Gambar 3.14. merupakan gambar kontruksi lengan robot
untuk menghitung besar torsi masing-masing motor servo. Tabel 3.3. merupakan table
hitungan torsi pada tiap servo
Gambar 3.14. konstruksi lengan robot
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Tabel 3.3 berat yang ditanggung servo
GAYA TORSI
Motor servo 1 (m = 137.7gr)
F = m x g
= 0,1377x 9,8
= 1,3494 N
Ket : servo 1 bergerak 0o,70
o,90
o ,110
o
Ket: 1 N-m = 10.1971621298 Kg-cm
Sudut 0o (r = 41 cm)
τ =1,3494x 0,41 x sin(0)
= 0 N-m = 0 kg-cm
Sudut 70o (r = 41 cm)
τ = 1,3494x 0, 41 x sin(70)
= 0,5198 N-m = 5,3013 kg-cm
Sudut 90o (r = 41 cm)
τ = 1,3494x 0, 41 x sin(90)
= 0,5532 N-m = 5,6415 kg-cm
Sudut 110o (r = 410 cm)
τ = 1,3494x 0,41 x sin(110)
= 0,5198N-m = 5,3013kg-cm
Motor servo 2 (m = 77,7 gr)
F = m x g
= 0,0777 x 9,8
= 0,7614 N
Ket : servo 2 bergerak 90o
Sudut 90o (r = 41 cm)
τ = 0,7614 x 0, 41 x sin (90)
= 0,3121 N-m = 3,18352 kg-cm
Motor servo 3 (m = 22,7gr)
F = m x g
= 0,0227 x 9,8
= 0,22246 N
Ket : servo 3 bergerak 70o
,80o,90
o
Sudut 70o (r = 27 cm)
τ = 0,22246 x 0, 27 x sin(70)
= 0,0564 N-m = 0,5753 kg-cm
Sudut 80o (r = 27 cm)
τ = 0,22246 x 0, 27 x sin(80)
= 0,0591 N-m = 0,6030 kg-cm
Sudut 90o (r = 27 cm)
τ = 0,22246 x 0, 27 x sin(90)
= 0,0600 N-m = 0,6123 kg-cm
Dari data tabel diatas didapatkan bahwa nilai servo yang ditanggung paling berat
adalah 5,6415 kg-cm, pada datasheet servo Towerpro MG946R diketahui bahwa dapat
mengangkat beban hingga 12 kg[24], dapat disimpulkan servo dapat menggangkat beban
pada lengan robot secara keseluruhan.
3.5. Perancangan Perangkat Lunak (Software)
3.5.1. Antarmuka Program
Perancangan dalam pembuatan perangkat lunak menggunakan pemograman
Matlab. Hal ini juga berlaku dalam tampilan antarmuka yang juga dibuat dengan
pemograman Matlab. Antarmuka dalam Matlab disebut dengan Graphical User Interface
(GUI).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Gambar 3.15. Tampilan Program Utama
Keterangan dari tampilan utama dapat dilihat pada tabel 3.4.
Table 3.4. Keterangan Tampilan User
NO. NAMA BAGIAN KETERANGAN
1 Rekam Tombol tekan untuk memulai perekaman
2 Reset Tombol tekan untuk mengulang perekaman
3 Keluar Tombol tekan untuk mengakhiri aplikasi
4 Variabel Segment averaging Pilihan nilai panjang lebar pada segment averaging
5 Variabel K-NN Pilihan nilai k pada k-NN
6 Variabel user data base Pilihan user data base
7 Plot hasil perekaman Tampilan grafik untuk suara hasil perekaman
8 Plot hasil DFT Tampilan grafik hasil ektraksi ciri DFT
9 Hasil pengenalan Menunjukkan hasil pengenalan suara
3.5.2. Proses pengenalan suara pada MATLAB
Pada proses pengenalan suara oleh Matlab, memiliki proses kerja yaitu mula-mula
suara dari user terlebih dahulu dikenali menggunakan mikrophone yang dihubungkan pada
laptop. Data sinyal ucapan hasil sampling tersebut akan diolah dilaptop menggunakan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
software Matlab. Pengolahan data ucapan dilakukan melalui beberapa tahapan yaitu
preprocessing, framing, windowing, ekstraksi ciri, korelasi, dan K-NN. Pada tahap
preprocessing merupakan tahap pengkondisian sinyal. Preprocessing sendiri terdiri dari
beberapa tahap yaitu, preemphasis, normalisasi, pemotongan sinyal. Pada tahap
selanjutnya proses framing dan windowing dengan hasil prosesnya dilanjutkan pada tahap
korelasi, pada tahap ini database penyimpanan suara akan dipanggil sabagai data
perhitungan. Selanjutnya proses k-NN dimana akan menentukan hasil keluaran dari
pengenalan suara.
Gambar 3.16. Blok Diagram Pengenalan Ucapan
3.5.2.1. Sampling
Mulai
Masukan : perintah suara
Pencuplikan
Keluaran: Ucapan angka.wav
Selesai
Gambar 3.17. Diagram Blok sampling
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Proses sampling merupakan proses pencuplikan ucapan manusia.. Percakapan
manusia mempunyai rentang frekuensi 300 Hz – 3000 Hz. Nilai frekuensi tersebut akan
digunakan untuk menentukan nilai frekuensi sampling. Nilai frekuensi ucapan ditentukan
pada nilai tertinggi yaitu 3000 Hz kemudian berdasarkan kriteria Nyquist minimum
frekuensi sampling ialah 2 kali dari frekuensi asal. Dengan memakai teori tersebut maka
penulis mengambil nilai sampling rate sebesar 6000 Hz dengan frekuensi asal 3000 Hz
(batas atas dari rentang frekuensi maksimal). Lama waktu penangkapan ucapan ditentukan
sebesar 2 detik. Waktu tersebut ditentukan agar kata yang diucapkan dapat terekam secara
utuh. Penentuan lama waktu berdasarkan hasil percobaan yang disertakan dalam lampiran
L1.
3.5.2.2. Pre-emphasis
Pada proses pre emphasis hasil sampling akan di filter agar dapat menghasilkan
bentuk sinyal yang lebih halus tanpa terganggunya noise dan mempertahankan sinyal suara
yang blur menjadi lebih jelas.
mulai
Masukan : hasil sampling
Proses Pre-emphasis
keluaran : hasil Pre-emphasis
Selesai
Gambar 3.18. proses Pre-emphasis
3.5.2.3. Normalisasi
Pada proses normalisasi ini digunakan untuk menyeragamkan nilai amplitudo dari
sinyal sampling yang sudah melewati proses pre-emphasis. Tujuan dari normalisasi yaitu
agar pengaruh dari kuat atau lemahnya suara yang diucapkan user dapat diminimalkan
dalam proses normalisasi. Hasil dari proses normalisasi ini dirancang agar batasan nilai
puncak maksimum dari data ucapan user tersebut bernilai 1 atau -1.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Mulai
Masukan : Hasil Pre-empahsis
Normalisasi = sinyal hasil preemphasis / sinyal tertinggi dari hasil preemphasis
Keluaran : Hasil normalisasi
Selesai
Gambar 3.19. Diagram Blok Normalisasi
3.5.2.4. Pemotongan Sinyal
Mulai
Masukan :
- hasil normalisasi
- batas potong
Pemotongan sinyal sisi kiri hingga batas potong
Pemotongan sinyal sisi kiri hingga batas potong
Keluaran : Hasil pemotongan
Selesai
Membalik data sinyal
Membalik data sinyal ke kondisi awal
Gambar 3.20. Diagram Pemotongan Sinyal
Proses pemotongan sinyal bertujuan untuk menghilangkan suara lain yang ikut
terekam sebelum suara yang diinginkan terekam. Hal ini diperlukan agar proses
pengenalan mampu benar-benar hanya mengenali suara yang diperlukan saja. Masukan
pada proses pemotongan sinyal meliputi sinyal hasil normalisasi dan batas potong. Proses
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
pemotongan data sinyal dibatasi oleh nilai dari batas potong . Nilai batas potong yang akan
digunakan sebagai pemotongan sinyal sebesar 0,3 yang didapat dari referensi [21].
Proses pemotongan dilakukan dengan mencari data antara nilai batas potong yang
sudah ditentukan. Sebagai contoh jika nilai batas potong dimasukan nilai 0,3 maka nilai
yang akan diproses untuk pemotongan sinyal adalah antara 0,3 sampai -0,3. Data diantara
nilai batas potong tersebut akan dihilangkan dari data awal hingga data pertama pada hasil
pencarian data yang dilakukan. Pada saat proses pemotongan sinyal akan dijalankan secara
bertahap yang dimulai dari data sinyal bagian depan atau kiri dahulu dan dilanjutkan pada
akhir atau kanan sinyal.
Saat proses pemotongan data sinyal bagian depan atau bagian kiri sudah selesai,
maka akan dilakukan penyusunan data sinyal dari belakang menuju depan untuk
membalikan urutan data sinyal dari kanan ke kiri. Pembalikan urutan data sinyal tersebut
bertujuan untuk memotong data bagian akhir. Setelah data sinyal bagian akhir dipotong
maka data akan disusun kembali untuk mengembalikan pada posisi awal atau pada urutan
sebenarnya. Hasil pemotongan sinyal akan disesuainkan urutannya dengan proses zero
padding agar banyaknya data pada sinyal ucapan pada setiap percobaan pengucapan
berjumlah sama. Proses ini melakukan penyisipkan deretan nilai 0 pada bagian akhir data
ucapan.
3.5.2.5. Framing dan Windowing
Pada tahapan ini sinyal suara akan melalui proses framing. Pada proses framing
berfungsi untuk membagi tiap data ke beberepa bagian sebelum dilakukannya proses
ekstraksi ciri. Sinyal suara yang masuk akan dibandingkan dengan panjang frame, jika
nilai data sinyal lebih panjang dari panjang frame maka masuk ketahap windowing,
kemudian disimpan untuk dilakukan overlap. Overlap merupakan pemotongan sinyal yang
tidak dipakai dari proses framing, yaitu bagian yang melebihi dari panjang frame yang
telah ditentukan. Jika nilai data sinyal masukan lebih kecil atau sama dengan nilai panjang
segmen makan akan langsung mengalami windowing tanpa melalui framing dan overlap.
Nilai dari lebar frame (tf) adalah 512 [15] dan nilai overlap (to) adalah 25% [20] dari nilai
lebar frame yaitu 128.
Didalam proses framing terdapat proses windowing. Windowing merupakan proses
perancangan untuk membuat pola dalam masukan data ucapan sebelum masuk dalam
proses selanjutnya. Pada perancangan windowing ini peneliti menggunakan jenis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
windowing hamming karena memiliki main lobe paling besar dan side lobe paling
kecil[18].
Mulai
Masukan :
- hasil data masukan
- nilai overlap frame
- nilai panjang frame
Keluaran : hasil framing
Selesai
data > = panjang frame
proses framing pada data masukan
Proses windowing :
hasil framing x hasil windowing
Simpan proses windowing
potong sinyal yang tidak dipakai
data < panjang frame
pemberian data 0 pada panjang segmen
Proses windowing :
hasil framing x hasil windowing
Simpan proses windowing
Ya
Tidak
Ya
tidak
3.21. Diagram proses framing
3.5.2.6. Ekstraksi Ciri DFT
Setelah melalui proses windowing, proses selanjutnya adalah penghitungan
ekstraksi ciri DFT. Ektraksi ciri DFT digunakan untuk mengubah sinyal menjadi
komponen frekuensi dasarnya. Pada proses DFT dilakukan proses penghitungan nilai
absolut DFT dan pemotongan setengah bagian dari hasil perhitungan nilai DFT.
Setelah proses ekstraksi ciri dilakukan proses segment averaging yang berfungsi
untuk melakukan segmentasi pada data hasil ekstraksi ciri. Segment averaging merupakan
metode untuk mengurangi jumlah data dengan cara mengelompokannya dalam rentang
segment kemudian dicari rata-ratanya pada tiap segment. Segment averaging digunakan
untuk mengurangi jumlah data ekstraksi ciri yang memiliki ukuran besar menjadi ukuran
kecil.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Mulai
Masukan : Hasil dari Windowing
Mencari nilai absolut DFT
Keluaran : Hasil ekstraksi ciri DFT
Selesai
Proses segmen averaging
mengambil setengah bagian lain dari dari nilai DFT
Gambar 3.22. Diagram Blok ekstraksi ciri DFT
3.5.2.7. Korelasi
Pada proses ini korelasi berfungsi untuk menghitung besarnya perubahan antara dua
variabel. Fungsi ini membagi dua variabel yang satu dengan yang lainnya yang saling
berhubungan. Dalam hal ini yang menjadi variabel yang akan dibandingkan adalah data
referensi dan data terekam. Hasil penghitungan pembandingan kemudian digunakan
sebagai penentuan hasil keluaran pengenalan pada proses k-NN.
Mulai
Masukan :
- hasil ekstraksi ciri
- database
perhitungan korelasi antara hasil ekstraksi ciri dengan database
Keluaran : hasil korelasi
Selesai
Gambar 3.23. Diagram Alir Proses Pembandingan Korelasi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
3.5.2.8. Klasifikasi k-NN dan penentuan keluaran
Pada tahap perancangan ini hasil pengenalan suara didapat dari masukan nilai
perhitungan korelasi. Hasil dari perhitungan korelasi dicari nilai terbesar kemudian
pengambilan nilai k dimana nilai k ditentukan oleh user. Dari hasil tersebut didapatkan
nilai korelasi. Nilai korelasi akan diproses pada thresholding, dimana hasil yang
didapatkan akan dibandingkan dengan nilai thresholding. Apa bila nilai korelasi lebih
kecil dari nilai thresholding maka akan error, jika lebih besar maka masuk ke proses
penentuan kelas. Penentuan keluaran dengan berdasarkan kelas yang paling banyak
muncul dengan menggunakan metode k-Nearest Neighbor. Hasil dari perhitungan dan nilai
kelas yang paling banyak muncul tersebut akan ditampilkan berupa keluaran text. Hasil
penentuan akan ditampilkan di tampilan GUI berupa tulisan.
Masukan :
1.Hasil Perhitungan korelasi
2.Nilai K-NN
3.Jumlah sampel per kelas
mengurutkan hasil perhitungan
jarak dari yang paling besar
Selesai
pengambilan k korelasi terbesar
pilih kelas yang paling sering muncul, sebagai kelas keluaran
Keluaran :
Data Hasil Keluaran K-NN
(Teks)
Keluaran : Error
Mulai
mencari index kelas dari korelasi
k terbesar
nilai korelasi terendah pada kelas keluaran≥
nilai thresholding
ya
tidak
Gambar 3.24. Diagram alur K-NN dan penentuan suara hasil pengenalan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
Untuk mendapatkan nilai thresholding dengan cara, pertama data masukan
pengucapan (contoh untuk angka 0) dicari nilai korelasi untuk setiap indeks (data referensi
angka 0) pada pengucapan angka 0. Setelah didapatkan hasil korelasi untuk setiap data
referensi yang berjumlah 10 nilai korelsi, karena data referensi untuk pengucapan angka 0
dilakukan pengambilan suara sebanyak 10 kali. Data hasil fungsi korelasi tersebut dipilih
nilai paling minimal, karena data referensi pengucapan angka 0 sebanyak 10 data referensi,
maka dilakukan percobaan dengan cara yang sama hingga 10 kali pengucapan. Setelah
didapatkan nilai korelasi minimal dari 10 kali percobaan, kemudian dicari nilai minimal
dari 10 nilai korelasi minimal yang telah didapatkan tadi. Nilai minimal inilah yang akan
menjadi thresholding untuk pengucapan angka 0. Untuk proses pengucapan angka lainya
berlaku hal yang sama.
3.5.3. Proses Pengiriman Serial
Proses pengiriman data secara serial ini merupakan proses setelah mengetahui hasil
pengenalan suara.
Gambar 3.25. Flowchart program komunikasi serial dengan Matlab
Data yang dikirimkan berupa data karakter a sampai j, sehingga tiap kategori
ucapan mengirimkan karakter yang berbeda. Tabel 3.5. menunjukan pengucapan kata dan
data yang dikirim.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
Tabel 3.5. Pengucapan kata dan data yang dikirim
Kata Data pengiriman
Satu “a”
Dua “b”
Tiga “c”
Empat “d”
Lima “e”
Enam “f”
Tujuh “g”
Delapan “h”
Sembilan “i”
Nol “j”
3.5.4. Perancangan Pembentukan Database Ucapan
Database yang dibentuk berupa hasil pengolahan sinyal dari rekaman kata yang
diucapkan oleh user. Database disimpan dalam bentuk Mfile didalam komputer. Blok
diagram pembentukan database ucapan ditunjukkan pada gambar 3.26.
Sampling NormalisasiPemotongan
sinyal
Ekstraksi ciri DFTDatabase
Masukan ucapan
Framing dan windowing
pre-emphasis
Gambar 3.26. Alur Pembentukan Database
Proses pembentukannya melalui beberapa tahapan yang serupa terhadap proses
pengenalan ucapan. Perbedaannya terletak pada tidak adanya proses perhitungan jarak,
sehingga pembentukan database berakhir pada proses ekstraksi ciri.
3.5.5. Bentuk Angka Digital
Angka yang diucapkan akan di tulis oleh lengan robot berbentuk digital. Angka itu
meliputi angka 0 – 9. Dalam bentuk digital angka tersebut seusai dengan gambar 3.27.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Gambar 3.27. Bentuk angka digital
3.5.6. Proses flowchart program lengan robot
Dalam mendapatkan nilai sudut servo penulis menggunakan metode heuristik
dimana dengan membuat lengan robot sederhana (tanpa menggunakan motor servo) yang
memiliki ukuran yang sama dengan lengan robot yang akan dibuat. Kemudian dicari nilai
masing-masung sudut motor servo menggunakan busur derajat pada lengan robot siaga dan
lengan robot saat menulis angka. Untuk menulis angka digital terdapat titik sudut pada
angka digital tersebut yang akan menjadi patokan pergerakan dari motor servo.
Pergerakan motor servo mengikuti titik-titik yang telah terdapat angka secara
berurutan. Pada tabel 3.6. merupakan gerak lengan robot dari titik awal ketitik akhir.
Contoh untuk angka 0. Dalam penulisan lengan robot dari titik 1 setiap servo di berikan
nilai PWM yang menghasilkan nilai sudut yang telah dicari, kemudian secara bersamaan
diberikan nilai PWM secara langsung pada setiap servo hingga menggerakkan lengan robot
ke titik 2 sehingga menghasilkan garis segmen yang diharapkan.
Tabel 3.6. Gerak sudut motor servo
Angka Pergerakan motor servo (dalam derajat)
Posisi siaga :
Servo 1 = 90o
Servo 2 = 90o
Servo 3 = 90o
Garis 1 2 Garis 2 3
Servo 1 = 100o Servo 1 = 100 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 90 o Servo 3 = 100 o
Garis 3 4 Garis 4 1
Servo 1 = 90 o Servo 1 = 90 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 100 o Servo 3 = 90 o
1 2
6 3
5 4
1
4 3
2 1
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
Tabel 3.6.(lanjutan) Gerak sudut motor servo
Angka Pergerakan motor servo (dalam derajat)
1 2
6 3
5 4
1
4 3
2 1
2
Gerak 1 2
Servo 1 = 90 o
Servo 2 = 90 o
Servo 3 = 100 o
1 2
34
5 6
1 2
34
56
Garis 1 2 Garis 2 3
Servo 1 = 100o Servo 1 = 100 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 90 o Servo 3 = 100 o
Garis 3 4 Garis 4 5
Servo 1 = 90 o Servo 1 = 90 o
Servo 2 = 90o Servo 2 = 90 o
Servo 3 = 100 o Servo 3 = 110 o
Garis 5 6
Servo 1 = 100 o
Servo 2 = 90 o
Servo 3 = 110 o
1 2
34
5 6
1 2
34
56
Garis 1 2 Garis 2 3
Servo 1 = 100 o Servo 1 = 100 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 90 o Servo 3 = 100 o
Garis 3 4 Garis 4 3
Servo 1 = 90o Servo 1 = 100 o
Servo 2 = 90o Servo 2 = 90 o
Servo 3 = 100o Servo 3 = 100 o
Garis 3 5 Garis 5 6
Servo 1 = 100 o Servo 1= 90 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 110 o Servo 3 = 110 o
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Tabel 3.6.(lanjutan) Gerak sudut motor servo
Angka Pergerakan motor servo (dalam derajat)
1
2
4
3
5
Garis 1 2 Garis 2 3
Servo 1 = 90 o Servo 1 =100 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 100 o Servo 3 = 100 o
Garis 3 4 Garis 4 5
Servo 1 =100 o Servo 1 = 100 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 90 o Servo 3 = 110 o
2
5
1
43
6
Garis 1 2 Garis 2 3
Servo 1 = 80 o Servo 1 = 80 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 90 o Servo 3 = 100 o
Garis 3 4 Garis 4 5
Servo 1 = 90 o Servo 1 = 90 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 100 o Servo 3 =110 o
Garis 5 6
Servo 1 = 80 o
Servo 2 = 90 o
Servo 3 =110 o
32
45
1 2
3
1
Garis 1 2 Garis 2 3
Servo 1 = 90 o Servo 1 = 100 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 100 o Servo 3 = 100 o
Garis 3 4 Garis 4 5
Servo 1 = 100 o Servo 1 = 90 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 =110 o Servo 3 =110 o
Garis 5 2
Servo 1 = 90 o
Servo 2 = 90 o
Servo 3 =100 o
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Tabel 3.6.(lanjutan) Gerak sudut motor servo
Angka Pergerakan motor servo (dalam derajat)
32
45
1 2
3
1
Garis 1 2
Servo 1 =100 o
Servo 2 = 90 o
Servo 3 = 90 o
Garis 2 3
Servo 1 = 100 o
Servo 2 = 90 o
Servo 3 = 100 o
1 2
34
56
Garis 1 2 Garis 2 3
Servo 1 = 100 o Servo 1 = 100 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 90 o Servo 3 = 100 o
Garis 3 4 Garis 4 3
Servo 1 = 90o Servo 1 = 100 o
Servo 2 = 90o Servo 2 = 90 o
Servo 3 = 100o Servo 3 = 100 o
Garis 3 5 Garis 5 6
Servo 1 = 100 o Servo 1= 90 o
Servo 2 = 90 o Servo 2 = 90 o
Servo 3 = 110 o Servo 3 = 110 o
Garis 6 1
Servo 1 = 90 o
Servo 2 = 90 o
Servo 3 = 90 o
5
2 1
43
Garis 1 2
Servo 1 = 80 o
Servo 2 = 90 o
Servo 3 = 90 o
Garis 2 3
Servo 1 = 80 o
Servo 2 = 90 o
Servo 3 = 80 o
Garis 3 4
Servo 1 = 90 o
Servo 2 = 90 o
Servo 3 = 80 o
Garis 4 5
Servo 1 = 90 o
Servo 2 = 90 o
Servo 3 = 100 o
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
Gambar 3.28. merupakan flowchart lengan robot dalam keadaan siaga. Dimana
lengan robot belum mendapat hasil keluaran dari pengolahan suara. Pada gambar 3.29
sampai dengan gambar 3.38 merupakan flowchart lengan robot saat keadaan menulis
angka. Gambar 3.39. merupakan alur program secara keseluruhan dari lengan robot.
.
tidak
PORTB.3 = 0
PORTB.3 = 1
a<= servo 3?
PORTB.2 = 0
PORTB.2 = 1
a<= servo 2?
PORTB.1 =1
PORTB.1 = 0 a<= servo 1?
a=1
a==864?
Data overflow a==864, selama T=20 ms, a++
mulai
Servo 1 = 90 derajat
Servo 2 = 110 derajat
Servo 3 = 70 derajat
selesai
tekan tombol stop
ya
tidak
tidak
ya
ya
ya
tidak
ya tidak
Gambar 3.28. Flowchart Program Lengan Robot Saat Posisi Siaga
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
mulai
selesai
tekan tombol stop
ya
tidak
Siaga
( Gambar 3.28 )
Gambar 3.29. Flowchart Program Lengan Robot saat menulis angka 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
mulai
selesai
tekan tombol stop
ya
tidak
Siaga
( Gambar 3.28)
Gambar 3.30. Flowchart Program Lengan Robot saat menulis angka 1
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
mulai
selesai
tekan tombol stop
ya
tidak
Siaga
( Gambar 3.28)
Gambar 3.31. Flowchart Program Lengan Robot saat menulis angka 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
selesai
tekan tombol stop
ya
tidak
mulai
Siaga
( Gambar 3.28 )
Gambar 3.32. Flowchart Program Lengan Robot saat menulis angka 3
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
mulai
selesai
tekan tombol stop
ya
tidak
Siaga
( Gambar 3.28 )
Gambar 3.33. Flowchart Program Lengan Robot saat menulis angka 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Servo 1 = 70 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 70 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 70 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
mulai
selesai
tekan tombol stop
ya
tidak
Siaga
( Gambar 3.28.)
Gambar 3.34. Flowchart Program Lengan Robot saat menulis angka 5
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 80 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
mulai
selesai
tekan tombol stop
ya
tidak
Siaga
( Gambar 3.28)
Gambar 3.35. Flowchart Program Lengan Robot saat menulis angka 6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
selesai
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
mulai
tekan tombol stop
ya
Siaga
( Gambar 3.28.)
tidak
Gambar 3.36. Flowchart Program Lengan Robot saat menulis angka 7
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
mulai
selesai
tekan tombol stop
ya
Siaga
( Gambar 3.28)
tidak
Gambar 3.37. Flowchart Program Lengan Robot saat menulis angka 8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
Servo 1 = 70 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 1 = 70 derajat
Servo 2 = 90 derajat
Servo 3 = 100 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 100 derajat
mulai
selesai
tekan tombol stop
ya
Siaga
( Gambar 3.28)
tidak
Gambar 3.38. Flowchart Program Lengan Robot saat menulis angka 9
Pada flowchart gambar 3.29 sampai dengan gambar 3.38 merupakan pergerakan
lengan robot sesuai dengan tabel 3.6. Pergerakan lengan robot mengikuti dengan
pernomoran yang telah ditentukan pada tabel 3.6.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
mulai
inisialisasi
Ada data masuk?
Periksa data masuk
jika data "a"
Lengan robot siaga
jika data "b"
tulis 1
tidak tidak
tulis 2
jika data "d"
tulis 3 tulis 3
jika data "c"
tidak
tekan tombol stop
Selesai
tidaktidak
C
A
B
ya
ya ya yaya
tidak
ya
Gambar 3.39. Fowchart penulisan angka keseluruhan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
jika
dat
a "j
"
tuli
s 0
tida
k
jika
dat
a "e
"
tuli
s 5
jika
dat
a "f
"
tuli
s 6
jika
dat
a "g
"
tuli
s 7
jika
dat
a "h
"
tuli
s 8
jika
dat
a "i
"
tuli
s 9
AC B
yatid
ak
tidak
tidak
tidak
tidak
yaya
yaya
ya
Gam
bar
3.4
0 (
lanju
tan)
Flo
wch
art
pen
uli
san a
ngka
kes
eluru
han
3.3
6.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
BAB IV
HASIL DAN PEMBAHASAN
Bab ini berisi tentang pengujian sistem pengenalan, gambar fisik hardware yang
dibuat, hasil pengujian sistem, pembahasan data yang diperoleh. Pengujian sistem perlu
dilakukan untuk mengetahui apakah suatu sistem telah bekerja dan berjalan sesuai
perancangan. Data-data hasil pengujian sistem yang telah dirancang menunjukkan bahwa
sistem berjalan sesuai perancangan. Analisa terhadap proses kerja sistem dapat digunakan
untuk menarik penyimpulan dari apa yg diperoleh dari analisa.
4.1. Implementasi Lengan Robot
4.1.1. Bentuk Fisik Hardware
Hasil perancangan lengan robot ditunjukan pada Gambar 4.1. Lengan robot
berwarna putih yang memiliki 3 buah servo Servo adalah Towerpro946R mengacu pada
subbab 2.16.
Gambar 4.1 Lengan Robot Tampak Atas Gambar 4.2 Lengan Robot Tampak Samping
4.1.2. Sistem Elektronik
Sistem elektronik terdiri dari rangkaian regulator dan penguat arus ,minimum
sistem mikrokontroler, dan LCD. Rangkaian regulator dan penguat arus, minimum sistem
mikrokontroler dan LCD ditunjukan pada gambar 4.3. dan gambar 4.4. Berikut bentuk fisik
rangkaian minimum sistem, LCD dan regulator
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Gambar 4.3. Minimum System Gambar 4.4.Regulator
4.1.3. Pengaturan Lengan Robot
Lengan robot akan bergerak sesuai perintah dari mikrokontroler pada minimum
sistem. Hal tersebut terjadi karena adanya program yang tertanam pada mikrokontroler.
Mikrokontroler yang digunakan adalah ATmega32 sesuai dengan perancangan.
Mikrokontroler diprogram untuk melakukan komunikasi, dan menggerakan servo pada
lengan robot. Gerbang-gerbang pada mikrokontroler yang akan digunakan dalam
pemrograman untuk mengeksekusi kerja lengan robot ditunjukkan pada Tabel 4.1.
Tabel 4.1 Tabel Fungsi Saluran Mikrokontroler
Saluran Kegunaan
PORTB.0 Pengaturan sudut pada servo 1
PORTB.1 Pengaturan sudut pada servo 2
PORTB.2 Pengaturan sudut pada servo 3
Program pada mikrokontroler berisi inisialisasi data program dan program intinya.
Pada inisialisasi data program dilakukan pengaturan data-data awal seperti pendeklarasian
data dan pengaturan nilai-nilai. Program dibuat dengan aplikasi CodeVision AVR. Program
yang digunakan adalah program untuk komunikasi serial menggunakan USART dan
program pengendali motor servo menggunakan fasilitas interrupt.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
4.1.4. Pengendalian Komunikasi USART
Pada bagian ini membahas program yang berfungsi sebagai komunikasi serial
USART untuk mengkomunikasikan antara laptop yang digunakan dengan mikrokontroler
Atmega 32. Program pengendalian komunikasi USART ditulis sebagai berikut:
int a;
unsigned char b[16];
void komunikasi()
{
a=getchar();
lcd_gotoxy(0,0);
sprintf(b,"komunikasi= %d" ,a);
lcd_puts(b);
delay_ms(100);
lcd_clear();delay_ms(10);
}
Pada tahap komunikasi serial baudrate yang digunakan bernilai 9600bps. Fungsi “
getchar()” yaitu untuk menerima karakter dari laptop agar mikrokontroler dapat menerima
pada saat mengirimkan karakter yang mendefinisikan perintah setiap kondisi atau
pemanggilan fungsi pada karakter.
4.1.5. Pengendalian Motor Servo
Program pengendali motor servo menggunakan interrupt timer0 sebagai
pembangkit pulsa untuk menggerakan motor servo. Listing program pengendali sudut putar
motor servosebagai berikut :
#define servo1 PORTB.0
#define servo2 PORTB.1
#define servo3 PORTB.2
signed int i=0,data1=0,data2=0,data3=0;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if (i>864)
{i=0;}
else
{i++;}
if (i<data1)
{servo1=1;}
else
{servo1=0;}
if (i<data2)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
{servo2=1;}
else
{servo2=0;}
if (i<data3)
{servo3=1;}
else
{servo3=0;}
}
Listing program di atas adalah penyetingan port yang digunakan motor servo.
Kodisi nilai i++ artinya adalah timer mulai mencacah dari 0 hingga 255, jika lebih dari itu
maka timer overflow dan mulai mengaktifan PWM. Nilai 864 adalah nilai overflow selama
perioda motor servo yaitu 20ms.Kemudian pemberian logika high pada tiap port, jika
kondisi nilai i lebih kecil dari pada nilai variabel data1(servo1), data2(servo2),
data3(servo3), sehingga mulai memberikan pulsa agar motor servo bergerak dan logika low
jika kondisinya tidak terpenuhi maka portb akan direset.
void siaga_robot()
{
data1=64; //90
delay_ms(100);
data2=69; //80
delay_ms(100);
data3=75; //90
delay_ms(100);
}
Pada program ini berfungsi untuk memberikan nilai OCR untuk menentukan sudut
yang diinginkan sesuai kondisi. Program diatas salah satu kondisi lengan robot pada
kondisi siaga.Program ditulis sebagai berikut:
void angka_satu()
{
//12
data1=64; //90
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=80;data3++) //100
{
delay_ms(100);
};
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
//mundur
for (data2=69;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
Program diatas merupakan program penulisan angka 1 Untuk mempermudah dalam
penentuan tahapan sudut motor servo, digunakan fungsi “for” untuk mencacah nilai OCR
secara satu per satu. Setiap tahap diberikan fungsi “for” dan diberi “delay” supaya
pergerakan lengan robot lebih halus dan pelan. Program pengulisan angka 1 mengacu
pada flowchart 3.30. Program pergerakan lainnya dapat di lihat pada Lampiran (L37).
4.2. Implementasi GUI Matlab dan Program Pengenalan Ucapan
Pengujian aplikasi dilakukan bertujuan untuk mengetahui apakah sistem yang telah
dirancang berjalan sesuai perancangan. Pengujian program dilakukan dengan spesifikasi
sebagai berikut:
Processor : Intel Core i5
RAM : 2 GB
Windows : 7
GUI dibuat supaya dapat mempermudah user dalam menggunakan aplikasi
penelitian ini. Terdapat beberapa komponen yang dapat digunakan untuk mengeksekusi
atau menampilkan perintah. Komponen tersebut dapat diprogram sehingga user dapat lebih
mudah dalam mengeksekusi aplikasi tersebut. Hasil pembuatan GUI ditunjukan pada
Gambar 4.5.:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Gambar 4.5. Tampilan GUI Program Pengenalan
Pada tampilan GUI digunakan tools pada Matlab seperti axes, pop_upmenu, text,
dan pushbutton.User dapat menjalankan program pengenalan ucapan dengan mengisi
pengaturan user, lebar segmentaveragingdan nilai k pada KNN pada pop_upmenu yang
akan diproses untuk pengenalan ucapan. Setelah memilih pengaturan yang diinginkan,
program bisa dijalankan dengan menekan tombolREKAM apabila user tidak melakukan
pengaturan pada variasi nilai yang terdapat pada aplikasi GUI maka program tidak bisa
dijalankan. Hasil rekaman suara akan ditampilan pada “PLOT INPUT UCAPAN” dan
hasil ektraksi rekaman suara akan ditampilkan di “PLOT EKSTRAKSI CIRI” seperti pada
gambar 4.5. Tombolpushbutton “RESET” berfungsi jika user ingin merestart program
pengenalan ucapan. Tombol pushbuttonKELUAR digunakan jika user ingin
menyelesaikan program dan keluar dari tampilan utama program pengenalan ucapan.
4.2.1. Pop Up Menu
Pada aplikasi pengenalai ini terdapat 2 variasi nilai yang digunakan untuk
melakukan pengenalan ucapan yaitu nilai k pada knn dan nilai segmentaveraging. Variasi
user menggunakan popupmenu 1 dengan nilai variasi 1;2;3. Variasi nilai
segmentaveraging menggunakan popupmenu2 dengan nilai variasi 8;16;32;62. Variasi
nilai k pada knn menggunakan popupmenu3 dengan nilai variasi 1;3;5;7. Program variasi
pada popupmenu 1 akan dituliskan seperti berikut:
indeks=get(handles.popupmenu1,'Value');
switch indeks
case 1
user=1;
case 2
user=2;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
case 3
user=3;
end
handles.xuser=user;
guidata(hObject,handles);
Pada program pop up menu 1 diguanakan untuk variasi user dengan variasi 1;2;3.
Inisialisasi tiap nilai dengan variabel “user” kebudian diubah menjadi “xuser”
menggunakan fungsi “handles”. Proses ini sama dengan program popupmenu sebelumnya.
segav=get(handles.popupmenu2,'Value');
switch segav
case 1
frame=8;
case 2
frame=16;
case 3
frame=32;
case 4
frame=64;
end
handles.varse=frame;
guidata(hObject,handles);
Pada program pop up menu 2 diguanakan untuk variasi nilai segmentaveraging dengan
nilai 8;16;32;64. Inisialisasi tiap nilai dengan variabel “frame” kemudian diubah menjadi
“varse” menggunakan fungsi “handles”. Proses ini sama dengan program popupmenu
sebelumnya.
nknn=get(handles.popupmenu3,'Value');
switch nknn
case 1
knn=1;
case 2
knn=3;
case 3
knn=5;
case 4
knn=7;
end
handles.varknn=knn;
guidata(hObject,handles);
Pada program pop up menu 3 digunakan untuk variasi nilai k pada knn dengan nilai
1;3;5;7. Inisialisasi tiap nilai dengan variabel “knn” kemudian diubah menjadi “varknn”
menggunakan fungsi “handles”. Proses ini sama dengan program popupmenu sebelumnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
4.2.2. Tombol Rekam
Tombol “REKAM” merupakan tombol yang berfungsi melakukan pengenalan
ucapan mulai dari inisialisasi perekaman(sampling), preemphasis, normalisasi,
pemotongan sinyal,zeropadding, framingwindowing, ektraksi ciri, korelasi, penentuan hasil
keluaran pada GUI dan pengiriman data serial menuju mikrokontroler.
Program perekaman pengenalan ucapan dibuat sesuai perancangan diagram blok
pada gambar 3.17. Penulisan program untuk melakukan perekaman sebagai berikut.
sample_length=2;
sample_freq=6000;
sample_time=(sample_length*sample_freq);
x=wavrecord(sample_time, sample_freq);
Program perekaman ucapan angka memakai frekuensi sampling 6000 Hz dan
durasi perekaman 2 detik. Program sample_time berfungsi untuk menampilkan gambar
perekaman sebesar 12000 Hz. Ucapan angka yang telah direkam ditampilkan dalam “Plot
input ucapan”. Program untuk menampilkan gambar sinyal hasil perekaman ucapan angka
adalah sebagai berikut :
axes(handles.axes1);
plot(x);
Program preprocessing dilakukan agar masukan data sinyal ucapan dapat diolah
terlebih dahulu. Program preprocessing terdiri dari 4 bagian yaitu preemphasis,
normalisasi, pemotongan sinyal dan zeropadding. Program dituliskan sebagai berikut:
varuser=handles.xuser;
varse=handles.varse;
vark=handles.varknn;
% Preemphasis
b0=0.3;
x0=x;
usig=4096;
alpha=0.95;
for k=2:length(x0)
x0(k)=x0(k)-alpha*(x0(k-1));
end
% Normalisasi
x1=x0/max(abs(x0));
%PEMOTONGAN SINYAL:
% Potong kiri
b1=find(x1>b0 | x1<-b0);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
x1(1:b1(1))=[];
% Potong kanan
x2=fliplr(x1');
b2=find(x2>b0 | x2<-b0);
x2(1:b2(1))=[];
x2=fliplr(x2);
% ZERO PADDING
x2(usig)=0;
x3=x2(1:usig);
Proses preemphasis merupakan proses awal dimana sinyal masukan akan diupdate
nilainya dari sebelumnya. Nilai preemphasis menggunakan fungsi for dan dimulai dari 2
dimana jika dimulai dari 1 tidak terdapat nilai sebelumnya. Proses perhitungan
preemphasis sesuai pada perancangan dengan nilai alpha 0.95. Proses preemphasis
mengacu pada flowchart yang telah dibuat pada gambar 3.18
Proses normalisasi melakukan perubahan skala pada data dengan memasukan
rumus sesuai pada perancangan. Terdapat fungsi Matlab untuk memudahkan program
yakni “max” untuk mencari nilai tertinggi dan “abs” untuk mengubah semua data menjadi
mutlak atau bernilai positif. Proses normalisasi mengacu pada perancangan flowchart yang
telah dibuat pada gambar 3.19.
Prosesselanjutnya adalah pemotongan sinyal proses dimana nilai data yang berada
pada kondisi lebih besar dari batas potong atau lebih kecil dari negatif batas potong akan
diambil datanya. Hasil dari tersebut tidak menampilkan nilai datanya melainkan
menampilkan nomor urutan datanya. Data urutan pertama menjadi batas akhir pemotongan
data, sehingga data hasil normalisasi akan dihilangkan dari awal hingga data tersebut.
Proses zeropadding dilakukan dengan menambahkan dengan deretan nilai data “0”
setelah data hasil pemotongan sinyal. Terdapat pendeklarasian variabel “usig” yang
merupakan ukuran deretan data dengan nilainya sebanyak 4096 sesuai perancangan.
Program penambahan deretan “0” hingga data ke 4096.
Setelah proses preprocessing dilanjutkan dengan proses framing dan windowing
sebelum masuk pada tahap proses ektraksi ciri. Program framing dan windowing dituliskan
sebagai berikut:
pjseg=512;
ovlseg=128;
h=hamming(pjseg);
n=1;k=1;
while n==1
pjx0=length(x3);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
if pjx0>=pjseg
xseg=x3(1:pjseg);
xseg=xseg.*h';
segmtx(:,k)=xseg;
x3(1:pjseg-ovlseg)=[];
k=k+1;
elseif pjx0==0
n=0;
else
x3(pjseg)=0;
xseg=x3.*h';
segmtx(:,k)=xseg;
n=0;
end
end
Pada tahap proses framing dan windowing dibutuhkan pendeklarasian nilai panjang
frame[15]dan nilai overlap[20]. Proses framing menggunakan program while dimana
mencari kesamaan data dengan panjang frame. Didalam proses framing terdapat proses
windowing dmana berfungsi untuk membuat pola pada sinyal. Hasil dari proses
sebelumnya dibandingan panjang sinyal data dengan panjang frame. Jika data lebih besar
dari panjang framemenuju proseswindowing, lalu akan di kurangi dengan nilai overlap
pada pendeklarasian sebesar 128. Jika data lebih kecil dari panjang frame akan
ditambahkan data 0 sesuai panjang frame. Pada proses windowing yang terdapat pada
framing menggunakan jendela hamming. Proses Matlab terdapat fungsi untuk
menggunakan jendela hamming dengan formula”hamming(L)”. Variabel “L” merupakan
banyaknya deretan data yang akan diproses. Penulisan program yang dipakai untuk
menentukan pola hamming ditulis “hamming(pjseg)”. Proses framing dan windowing
mengacu pada flowchart yang ditulis pada gambar 3.21.
Program ektraksi ciri terdapat 2 proses yaitu DFT dan segmentaveraging. Program
ektraksi ciri dituliskan sebagai berikut:
% Ektraksi ciri menggunakan DFT
[baris,kolom]=size (segmtx);
for k=1:kolom
hdft=abs(dftx(segmtx(:,k)));
x4(:,k)=hdft(:);
end
x4=x4(:);
x4=x4(1:length(x4)/2,:);
% Segment averaging
x5=reshape(x4,varse,[]);
x5=mean(x5);
x=x5(:);
axes(handles.axes2)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
bar(x);
Pada ektraksi ciri pemanggilan fungsi DFT digunakan fungsi ekternal dimana
program dibuat terpisah dari program inti. Fungsi ekternal dibuat mengacu pada rumus
2.15. Program fungsi ekternal untuk ektraksi ciri DFT dituliskan sebagai berikut :
% Perhitungan DFT
function y=dft(x)
N=length(x);
y=zeros(1,N);
for k=1:N
for n=1:N
w=exp(-1i*2*pi*(k-1)*(n-1)/N);
a=x(n)*w;
y(k)=y(k)+a;
end
end
Proses dilakukan dengan memanggil fungsi yang sudah dibuat pada M-file dengan
nama fungsi “dft”, kemudian nilai datanya diabsolutkan dengan bantuan fungsi Matlab
“abs”. Pada fungsi mengacu pada persamaan 2.15 dengan indeks n dimulai dari 1 karena
proses pada Matlab tidak mengenal indeks 0[27]. Proses transformasi tersebut dilanjutkan
dengan mengambil setengah bagian sinyal data dengan program yang ditulis
“x4=x4(1:length(x4)/2,:)”. Fungsi “length”merupakan fungsi untuk mencari banyaknnya
deretan data, sehingga fungsi “length(x4) akan mencari banyaknya deretan data pada
variabel x4. Variabel “x4” merupakan hasil dari transformasi DFT. Program mengacu
pada flowchart perancangan gambar 3.22.
Proses segmentaveraging dilakukan dengan menggunakan fungsi pada Matlab yaitu
“reshape(x5,varsegment,[ ])”. Nilai “x5” merupakan data hasil ektraksi ciri segment
averaging, sedangkan nilai “varse” merupakan lebar segment averaging data. Data hasil
segment averaging tersebut akan ditampilkan dengan bentuk grafik dengan menggunakan
fungsi “bar”. Fungsi “bar” merupakan grafik dengan gambar berbentuk batang sesuai
panjang data. Fungsi “axes(handles.axes2)” digunakan untuk memilih axis pada kolom plot
ekstraksi sebagai tempat menampilkan grafiik.
Program pengenalan pola dilakukan dengan cara perhitungan nilai koeralasi data
masukan terhadap basis data. Pendekatan terbaik adalah data yang mempunyai nilai
korelasi terbesar.
Proses selanjutnya setelah penggambaran sinyal ucapan adalah proses pemanggilan
database yang telah disesuaiakn dengan variasi segmentaveraging. Program database
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
menggunakan logika “ifelse” agar database mempunyai kesamaan dengan nilai variasi
yang telah dipilih sebelumnya oleh user. Program pembuatan database mengacu pada
lampiran (L31). Program pemanggilan database dapat ditulis sebagai berikut:
if (varse==8) && (varuser==1)
load db01dseg8;
elseif (varse==16) && (varuser==1)
load db01dseg16;
elseif (varse==32) && (varuser==1)
load db01dseg32;
elseif (varse==64) && (varuser==1)
load db01dseg64;
Program diatas untuk memanggil database yang akan dibandingkan dengan ucapan
yang telah terekam. Data base yang dipanggil sesuai dengan masukan user mana yang
dipilh dan variasi segment averaging yang dipilih oleh usertersebut pada pop_upmenu
sebelumnya. Kondisi pemanggilan fungsi harus sesuai dengan variasi dan pemanggilan
database.
Proses selanjutnya adalah membandingkan database dengan data masukan dari
user secara real time. Perbandingan database dan masukan sinyal tersebut menggunakan
perhitungan korelasi. Program perhitungan korelasi sebagai berikut :
for n=1:100
jarak(n)=korelasi(x,z(:,n));
end
Pada perhitungan korelasi menggunakan pemanggilan fungsi ekternal dimana
program perhitungan berada diluar program utama. Pemanggilan fungsi dengan memanggil
fungsi“korelasi”. Program pembuatan fungsi ekternal sebagai berikut:
function k=korelasi(x,z)
mx=mean(x);
my=mean(z);
k1=(x-mx).*(z-my);
k2=sum(k1);
k3=sum((x-mx).^2);
k4=sum((z-my).^2);
k5=sqrt(k3.*k4);
k=k2/k5;
Pada program penghitungan nilai korelasi digunakan dua variabel yaitu „x‟ dan „z‟.
„x‟ adalah hasil penghitungan ekstraksi ciri secara real time dan „z‟ adalah database.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
Setelah didapatkan penghitungan nilai korelasi selanjutnya masuk dalam program
penentuan keluaran. Program penentuan keluaran berfungsi untuk menentukan apakah
ucapan terdeteksi sebagai ucapan atau dikenali secara “error”. Program penentuan
keluaran sebagai berikut :
%knn
kk=vark;
m=10;
[s1,s2]=sort(jarak,'descend');
kj=s1(1:kk);
kn=s2(1:kk);
hk=ceil(kn/m);
kout=mode(hk)
idx=find(hk==kout);
lokth=idx(1);
nilai=kj(idx);
th=s1(lokth);
jarakk=th
if (kout == 1) && (varuser==1) && (th < 0.7207)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 1) && (varuser==1) && (th >0.7207)
korout = {'satu'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','a')
fclose(s);
delete(s);
clear s;
elseif (kout == 2) && (varuser==1) && (th < 0.7539)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 2) && (varuser==1) && (th > 0.7539)
korout = {'dua'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','b')
fclose(s);
delete(s);
clear s;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
elseif (kout == 3) && (varuser==1) && (th <0.6230)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 3) && (varuser==1) && (th >0.6230)
korout = {'tiga'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','c')
fclose(s);
delete(s);
clear s;
elseif (kout == 4) && (varuser==1) && (th < 0.7306)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 4) && (varuser==1) && (th > 0.7306)
korout = {'empat'}
kirim = 'd';
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','d')
fclose(s);
delete(s);
clear s;
elseif (kout == 5) && (varuser==1) && (th < 0.7005)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 5) && (varuser==1)&& (th > 0.7005)
korout = {'lima'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','e')
fclose(s);
delete(s);
clear s;
elseif (kout == 6) && (varuser==1) && (th < 0.6100)
korout = {'ERROR'}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 6) && (varuser==1) && (th > 0.6100)
korout = {'enam'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','f')
fclose(s);
delete(s);
clear s;
elseif (kout == 7) && (varuser==1) && (th < 0.7002)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 7) && (varuser==1) && (th > 0.7002)
korout = {'tujuh'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','g')
fclose(s);
delete(s);
clear s;
elseif (kout == 8) && (varuser==1) && (th < 0.7510)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 8) && (varuser==1) && (th >0.7510)
korout = {'delapan'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','h')
fclose(s);
delete(s);
clear s;
elseif (kout == 9) && (varuser==1) && (th < 0.7903)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 9)&& (varuser==1) && (th > 0.7903)
korout = {'sembilan'}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
kirim = 'i';
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','i')
fclose(s);
delete(s);
clear s;
elseif (kout == 10) && (varuser==1) && (th <0.7340)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 10) && (varuser==1) && (th >0.7340)
korout = {'nol'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto
pBits',1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','j')
fclose(s);
delete(s);
clear s;
Pada program penentuan keluaran diatas menggunakan metode k-Nearest
Neighbordan untuk menentukan bukan ucapan menggunakan metode thersholding. Variasi
KNN menggunakan variabel “vark. Pada metode k-NearestNeigbor bertujuan untuk
mengambil kelas terdekat dari perhitungan korelasi. Fungsi “descend” pada program
berfungsi untuk mengurutkan nilai korelasi dari yang terbesar sampai yang terkecil.
Metode thresholding bertujuan untuk menentukan hasil keluaran yang tidak sesuai dengan
ucapan pada database dengan penamaan “ ERROR”.
4.2.3. Tombol Reset
Tombol “RESET” merupakan tombol yang digunakan untuk mereset atau
mensetting program untuk kembali ke pengaturan awal pada program pengenalan ucapan.
Program tombol “RESET” dituliskan sebagai berikut :
function pushbutton2_Callback(hObject, eventdata, handles)
axes(handles.axes1);
plot(0);
axes(handles.axes2);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
plot(0);
set(handles.edit1,'String',' ');
Berdasarkan pengujian program secara real time, tombol “RESET” dapat berjalan
sesuai perancangan. Pada program tombol “RESET” jika tombol ditekan maka secara
otomatis plot pada axes 1, axes 2 dan edit1 semua akan dibersihkan. Tombol “RESET”
menggunakan pushbutton2 pada GUI Matlab.
4.2.4. Tombol Keluar
Tombol “KELUAR” berfungsi untuk menutup progam aplikasi pengenalan ucapan.
Komponen yang digunakan untuk tombol “KELUAR” yaitu pushbutton3. Program tombol
“KELUAR” dituliskan sebagai berikut :
function pushbutton3_Callback(hObject, eventdata, handles)
delete(figure(guico));
Berdasarkan pengujian, tombol “KELUAR” dapat berjalan sesuai perancangan.
Ketika Tombol “KELUAR” ditekan aplikasi pengenalan ucapan dapat ditutup.Fungsi
“delete(figure(GUI))” digunakan untuk menutup GUI Matlab pada aplikasi pengenalan
ucapan ini.
4.3. Pengujian Sudut Motor Servo
Berdasarkan data pengujian sudut motor servo yang diukur menggunakan busur
derajat, didapat nilai OCR seperti pada tabel 4.2 dibawah ini dengan mengacu lampiran
(L6). Pengujian sudut dilakukan dengan melihat nilai OCR pada masing-masing sudut
motor servo yang dilakukan setiap 10o yang akan dibandingkan dengan perhitungan secara
teori.
Dari nilai OCR pada tabel 4.2 terdapat perbedaan antara teori dengan pengujian.
Pada tabel 3.2 menunjukan nilai OCR pada saat sudut 00yaitu 43,20,sedangakan sudut 90
o
nilai OCR yang didapat yaitu 64,8, dan pada sudut 180o nilai OCR yang didapat yaitu
86,40.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
Tabel 4.2. Nilai OCR pada pergerakan 10 derajat motor servo
NO Sudut (derajat) Nilai OCR
1 0 29
2 10 33,44
3 20 37,8
4 30 42,3
5 40 46,7
6 50 51,2
7 60 55,6
8 70 60
9 80 64,52
10 90 69
11 100 75,3
12 110 80,66
13 120 85
14 130 89,33
15 140 93,66
16 150 98
17 160 102,3
18 170 106,66
19 180 111
Pada saat pengujian nilai OCR terdapat perbedaan pada saat sudut 0o nilai OCR
yang didapat yaitu 29, sedangkan sudut 90o nilai OCR yang didapat yaitu 69, dan pada
sudut 180o nilai OCR yang didapat yaitu 111. Untuk mengetahui lebar pulsa, maka dapat
dihitung menggunakan persamaan 2.2 dan persamaan 2.3. Digunakan T sebesar 0,090422
x 10-6
dan prescaler sebesar 1.
Tabel 4.3. Perhitungan Lebar Pulsa Motor Servo Towerpro MG946R
SUDUT Nilai OCR Lebar Pulsa Error (%)
0o 29 0,671 ms 32,87%
90o 69 1,59 ms 6,48%
180o 111 2,57 ms 28,47%
Berdasarkan tabel 4.3. maka dapat dianalisa bahwa terdapat perbedaan nilai OCR
mengakibatkan perbedaan pada lebar pulsa. Pada Tabel 4.3 menunjukan lebar pulsa pada
saat 00 didapatkan 0,671 jika dibandingan dengan teori pada tabel 3.2 didapatkan error
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
sebesar 32,87 %. Terjadi error dikarenakan setiap motor memiliki karakteristik yang
berbeda-beda sesuai dengan jenisnya menyebabkan nilai lebar pulsa berbeda.
4.4. Pengujian Untuk Tingkat Pengenalan Ucapan
Pengujian pengenalan ucapan dilakukan dengan dua cara yaitu secara real time dan
secara tidak real time. Pengujian secara real time dilakukan dengan menggunakan suara
masukan yang direkam saat itu juga dan akan langsung dikenali secara langsung pada saat
itu. Pengujian secara real time menggunakan parameter hasil pengenalan terbaik pada
pengenalan secara tidak real time. meskipun demikian pengguna bisa memvariasi nilai
parameter sesuai yang diinginkan untuk menguji pengenalan secara real time. Pengujian
tidak real time dilakukan dengan memvariasi nilai parameter nilai k pada knn, dan segment
averaging. Pengujian secara tidak real time menggunakan masukan dari suara uji yang
telah direkam sebelumnya dan dibandingkan dengan database yang telah dibuat
sebelumnya. Hasil parameter pengujian terbaik secara tida real time akan digunakan
sebagai parameter untuk pengujian pengenakan ucapan secara real time.
4.4.1. Pengujian Pengenalan Ucapan Secara Tidak Real Time
Seperti yang telah dijelaskan sebelumnya, percobaan pengenalan secara tidak real
time ini dilakukan dengan merekam ucapan masukan yang kemudian disimpan dengan
nama yang berbeda dan akan dibandingkan dengan database. Pembentukan database
dilakukan dengan memproses ucapan yang juga sebelumnya sudah direkam kedalam
proses preprocessing dan framingdanwindowing. Setalah melalui tahap ini, kemudian
dilanjutkan dengan proses ekstraksi ciri, penulis menggunakan ektraksi ciri DFT dan
segmentaveraging. Setelah proses ektraksi ciri dan segmentaveraging, data hasil kemudian
disimpan pada directory yang sama dengan program untuk melakukan pengenalan secara
tidak real time.
Proses yang sama juga terjadi pada ucapan masukan. Selanjutnya adalah
membandingkan antara database dan hasil ektraksi ciri dari ucapan masukan menggunakan
metode korelasi. Tujuan dari pengujian pengenalan secara tidak real time adalah untuk
mencari parameter nilai k pada knn,dan segmentaveraging terbaik. Data hasil pengenalan
secara tidak real time kemudian ditampilkan dalam tabel dan grafik sehingga pengambilan
kesimpulan lebih mudah dilakukan. Berikut merupakan tabel dan grafik hasil pengujian
pengenalan ucapan secara tidak real time. Pengujian menggunakan 3 jenis database, yaitu
database 1 suara, database 5 suara, dan database 10 suara.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
Untuk user 1
Tabel 4.4. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 92 50 32 24
16 90 46 36 25
32 89 47 38 25
64 80 45 35 19
Tabel 4.5. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak Real Time
Tabel 4.6. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 95 93 94 94
16 95 92 93 91
32 94 93 92 92
64 89 88 86 83
Untuk user 2
Tabel 4.7. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 87 27 13 10
16 82 32 15 10
32 83 39 18 10
64 75 46 26 10
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 93 88 89 91
16 93 86 86 87
32 91 90 87 82
64 82 79 76 71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
Tabel 4.8. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 90 81 79 71
16 90 81 78 77
32 90 82 83 80
64 84 73 71 71
Tabel 4.9. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 93 87 86 84
16 92 89 87 87
32 93 88 87 86
64 87 79 83 83
Untuk user 3
Gambar 4.10. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 87 32 21 12
16 82 32 14 11
32 75 31 14 11
64 69 29 18 10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
Tabel 4.11. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 87 76 77 72
16 87 74 75 72
32 84 72 73 70
64 85 65 66 66
Tabel 4.12. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak Real Time
SegmentAveraging Nilai k pada KNN
1 3 5 7
8 94 92 90 89
16 94 92 89 89
32 92 84 84 84
64 90 82 83 80
Dari data-data di atas dapat dilihat bahwa pengenalan terbaik berada pada segment
averaging 8 dan k-nn 1 dengan tingkat pengenalan rata-rata di atas 90 dari 100 percobaan
penyebutan angka. Pengenalan terbaik terletak pada database 10.
Pada variasi terbaik ini pula diambil nilai batas bawah untuk setiap kata yang
diucapkan. Tujuan pengambilan nilai batas bawah adalah untuk penggunaan metode
thresholding. Penulisan program untuk thresholding menggunakan logika “if” dan
“elseif”. Dimana jika syarat berinlai benar maka logika tersebut akan mengeksekusi
pernyataan di bawahnya dan jika tidak maka akan meneruskan ke logika di bawahnya.
Program untuk thresholding dapat dilihat pada Lampiran (L22). Tabel berikut
menunjukkan nilai batas bawah thresholding.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
Tabel 4.13 Hasil Nilai batas bawah Yang Masih Dikenali Pada Setiap Ucapan Angka
No Ucapan Nilai batas bawah
user 1
Nilai batas bawah
user 2
Nilai batas bawah
user 3
1 Satu 0,7207 0,7351 0,6768
2 Dua 0,7539 0,7627 0,7212
3 Tiga 0,7030 0,6859 0,7053
4 Empat 0,7306 0,7197 0,6860
5 Lima 0,7760 0,7551 0,7928
6 Enam 0,6100 0,6721 0,6841
7 Tujuh 0,7492 0,7600 0,7794
8 Delapan 0,7414 0,7090 0,7556
9 Sembilan 0,8503 0,7298 0,7783
10 Nol 0,7340 0,6567 0,7721
4.4.2. Pengujian Pengenalan Secara Real Time
Pada pengujian secara real time, pengujian dilakukan dengan merekam suara secara
langsung dan akan dikenali oleh program secara real time. User harus memilih nilai variasi
nilai k pada knn, dan segmentaveraging. User yang digunakan sebanyak 3 yang terdiri dari
1 peneliti, dan 2 user sudah ditentukan. Setelah semuanya diisi dengan benar maka
program bisa dijalankan. Pengujian dilakukan sebanyak 10 kali tiap ucapan dengan dasar
bahwa 10 kali pengujian dengan mampumewakili keberhasilan program pengenalan
ucapan angka untuk berjalan dengan baik. Pengujian secara real time ini menggunakan
database 1,5,dan 10 dengan variasi nilai k-NN 1 dan segmentaveraging 8 mengacu pada
pengujian secara tidak real time. Pengujian dengan 3 macam database ini untuk melihat
database dengan tingkat error terkecil ketika secara rea ltime. Pengujian real time akan
dilakukan dengan 2 cara yaitu pengujian dengan nilai thresholding dan pengujian tanpa
nilai thresholding untuk semua user.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
4.4.3. Pengujian Real Time Tanpa Nilai Thresholding Untuk Penentuan
Database
Pada pengujian real time ini dilakukan untuk mengetes database mana yang baik
digunakan. Pengujian ini dimaksudkan untuk melihat apa sistem dapat berjalan sesuai
dengan yang diharapakan ketika user dalam keadaan tidak begitu mengingat pola kata
untuk pengujian
Tabel 4.14 Confusion Matrix Pengujian secara real time dengan database 1 untuk user 1
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 8 1 0 0 0 0 0 0 0 1
Dua 0 9 0 0 0 0 0 0 0 1
Tiga 0 0 3 0 2 0 0 1 0 4
Empat 3 0 0 4 1 0 0 2 0 0
Lima 4 0 0 2 3 0 1 0 0 0
Enam 4 0 0 0 0 6 0 0 0 0
Tujuh 0 1 0 0 2 0 0 1 5 1
Delapan 0 0 0 2 0 0 0 5 0 3
Sembilan 2 0 0 0 0 0 0 0 8 0
Nol 0 0 0 3 0 1 0 0 0 6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
Tabel 4.15 Confusion Matrix Pengujian secara real time dengan database 5 untuk user 1
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 7 0 0 3 0 0 0 0 0 0
Dua 0 9 0 0 0 1 0 0 0 0
Tiga 0 4 6 0 0 0 0 0 0 0
Empat 0 0 0 6 4 0 0 0 0 0
Lima 0 0 0 1 8 1 0 0 0 0
Enam 0 1 0 2 0 5 0 0 0 2
Tujuh 1 0 0 0 1 0 8 0 0 0
Delapan 0 0 0 1 0 0 0 8 0 1
Sembilan 1 0 0 0 0 0 0 0 9 0
Nol 0 0 0 3 0 0 0 1 0 6
Tabel 4.16 Confusion Matrix Pengujian secara real time dengan database 10 untuk user 1
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 9 0 0 1 0 0 0 0 0 0
Dua 0 10 0 0 0 0 0 0 0 0
Tiga 0 0 8 0 0 0 0 2 0 0
Empat 2 0 0 8 0 0 0 0 0 0
Lima 0 0 0 0 7 3 0 0 0 0
Enam 2 0 0 0 0 8 0 0 0 0
Tujuh 0 0 0 0 1 0 9 0 0 0
Delapan 0 0 0 0 1 0 0 9 0 0
Sembilan 0 0 0 0 0 0 0 0 10 0
Nol 1 0 0 0 0 1 0 0 0 8
Dengan hasil tabel diatas dengan pengujian secara real time menggunakan 3 jenis
database suara didapatkan dengan database 1 suara, hasil pengenalan secara benar
sebanyak 51 dari 100 percobaan. Dengan database 5 suara, hasil pengenalan secara benar
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
sebanyak 72 dari 100 percobaan. Dengan database 10 suara, hasil pengenalan secara benar
sebanyak 86 dari 100 percobaan. Maka digunakan database 10 suara karena memiliki
pengenalan terbaik.
Tabel 4.17 Confusion Matrix Pengujian secara real time dengan database 1 untuk user 2
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 5 0 0 0 0 0 0 0 5 0
Dua 0 10 0 0 0 0 0 0 0 0
Tiga 0 0 8 2 0 0 0 0 0 0
Empat 0 0 4 4 0 0 0 0 1 1
Lima 1 1 1 1 5 0 1 0 0 0
Enam 0 0 0 3 2 5 0 0 0 0
Tujuh 0 0 2 0 0 0 8 0 0 0
Delapan 0 0 2 0 0 0 0 7 0 1
Sembilan 0 0 0 1 3 0 3 0 3 0
Nol 0 1 0 1 0 2 0 0 0 6
Tabel 4.18 Confusion Matrix Pengujian secara real time dengan database 5 untuk user 2
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 8 0 0 0 0 0 0 0 2 0
Dua 1 8 0 0 0 0 0 0 1 0
Tiga 0 0 8 0 0 0 0 0 2 0
Empat 2 0 0 7 1 0 0 0 0 0
Lima 0 0 0 0 10 0 0 0 0 0
Enam 1 0 0 5 0 4 0 0 0 0
Tujuh 0 0 0 0 0 0 9 0 1 0
Delapan 2 0 0 0 0 0 0 8 0 0
Sembilan 1 0 1 1 1 0 1 0 5 0
Nol 1 0 0 2 0 0 0 0 1 6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
Tabel 4.19 Confusion Matrix Pengujian secara real time dengan database 10 untuk user 2
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 8 0 0 2 0 0 0 0 0 0
Dua 0 9 0 1 0 0 0 0 0 0
Tiga 0 0 8 0 0 0 0 0 2 0
Empat 0 0 0 9 0 0 0 1 0 0
Lima 0 0 0 0 10 0 0 0 0 0
Enam 0 0 0 1 0 6 0 0 0 3
Tujuh 0 0 0 1 0 0 9 0 0 0
Delapan 0 0 0 2 0 0 0 8 0 0
Sembilan 0 2 0 0 0 0 0 0 8 0
Nol 0 0 0 0 0 2 0 0 0 8
Tabel 4.20 Confusion Matrix Pengujian secara real time dengan database 1 untuk user 3
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 5 0 0 1 0 3 0 0 0 0
Dua 0 5 3 0 1 1 0 0 0 0
Tiga 0 1 6 0 1 1 0 0 1 0
Empat 1 0 0 5 1 1 0 0 0 2
Lima 0 0 0 0 7 0 0 0 3 0
Enam 0 0 0 0 0 6 0 4 0 0
Tujuh 0 0 0 0 0 0 4 0 6 0
Delapan 0 0 0 0 0 2 0 7 1 0
Sembilan 0 0 0 0 0 2 0 0 7 1
Nol 0 0 0 0 0 3 0 2 0 5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
Tabel 4.21 Confusion Matrix Pengujian secara real time dengan database 5 untuk user 3
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 8 0 0 1 0 1 0 0 0 0
Dua 0 8 1 0 0 0 0 1 0 0
Tiga 0 0 10 0 0 0 0 0 0 0
Empat 1 0 2 4 2 0 0 1 0 0
Lima 0 0 1 1 8 0 0 0 0 0
Enam 0 0 0 0 0 5 0 1 0 4
Tujuh 0 0 0 0 1 0 7 0 2 0
Delapan 0 0 0 0 0 1 0 8 0 1
Sembilan 0 0 0 0 0 0 0 0 6 4
Nol 0 0 0 0 0 2 0 1 0 7
Tabel 4.22 Confusion Matrix Pengujian secara real time dengan database 10 untuk user 3
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu 8 0 0 1 0 0 0 0 0 1
Dua 0 9 1 0 0 0 0 0 0 0
Tiga 0 0 8 0 2 0 0 0 0 0
Empat 0 0 0 10 0 0 0 0 0 0
Lima 0 0 0 0 10 0 0 0 0 0
Enam 0 0 0 0 0 8 0 1 0 1
Tujuh 0 0 0 0 0 0 9 1 0 0
Delapan 1 0 0 0 0 0 0 6 0 3
Sembilan 0 0 0 0 0 0 0 0 8 2
Nol 0 0 0 0 0 0 0 1 0 9
Dari data diatas didapatkan untuk user 2 dengan database 10 suara mampu
mengenali sebanyak 83 dari 100 percobaan dan user 3 mampu mengenali sebanyak 85 dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
100 percobaan. Terdapat penurunan tingkat pengenalan antara pengenalan secara tidak real
time dengan pengujian secara real time. ini diakibatkan pada saat pengambilan data terjadi
kesalahan pengucapan untuk ucapan yang akan dikenali.
4.4.4. Pengujian Real Time dengan Nilai Thresholding
Pada pengujian real time dengan nilai thresholding program pengenalan ucapan
diberikan nilai batas bawah yang mengacu pada tabel 4.13.Pengujian real time dengan
nilai thresholding diuji dengan 2 cara yakni dengan ucapan sebenarnya dengan bukan
ucapan sebenarnya atau ucapan lain.Pengujian dilakukan untuk menguji thresholding
dengan mengucapkan angka 0 - 9 sebanyak 10.
Hasil pengujian berupa dikenali benar jika sesuai dengan angka yang
disebutkandan dikenali secara salah ketika dikenali berbeda dengan angka yang disebutkan
atau dikenali sebagi ERROR. Berikut ini data pengucapan real time dengan nilai
thresholding setiap user.
Tabel 4.23. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User
1
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Satu 9 0 0 1 0 0 0 0 0 0 0
Dua 0 10 0 0 0 0 0 0 0 0 0
Tiga 0 0 8 0 0 0 1 0 0 0 1
Empat 0 0 0 8 2 0 0 0 0 0 0
Lima 0 0 0 0 10 0 0 0 0 0 0
Enam 0 0 0 0 0 8 0 0 0 0 2
Tujuh 0 0 0 0 3 0 7 0 0 0 0
Delapan 0 0 0 0 0 0 0 9 0 0 1
Sembilan 0 0 0 0 0 0 0 1 8 0 1
Nol 0 0 0 0 0 1 0 0 0 9 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
Tabel 4.24. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User
2
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Satu 9 0 0 1 0 0 0 0 0 0 0
Dua 0 7 2 0 0 0 0 0 0 0 1
Tiga 0 0 8 0 0 0 1 0 0 0 1
Empat 0 0 0 9 1 0 0 0 0 0 0
Lima 0 0 0 0 9 0 0 0 0 1 0
Enam 0 0 0 0 0 7 2 0 0 0 1
Tujuh 0 0 0 0 1 0 8 0 0 0 1
Delapan 0 0 0 0 0 0 0 10 0 0 0
Sembilan 0 0 1 0 1 0 0 8 0 0 0
Nol 0 0 0 0 0 1 0 0 0 9 0
Tabel 4.25. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User
3
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Satu 9 0 0 0 0 0 0 1 0 0 0
Dua 0 6 2 0 0 0 0 0 0 0 2
Tiga 0 0 9 0 1 0 0 0 0 0 0
Empat 0 0 0 10 0 0 0 0 0 0 0
Lima 0 0 0 0 9 0 0 0 0 0 1
Enam 0 0 0 0 0 9 0 0 0 1 0
Tujuh 0 0 0 0 0 0 10 0 0 0 0
Delapan 0 0 0 0 0 0 0 8 1 1 0
Sembilan 0 0 0 0 0 0 0 0 10 0 0
Nol 0 0 0 0 0 3 0 0 0 7 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
Dari data di atas pada user 1 tingkat keberhasilan mencapai 86 dalam mengenali
ucapan secara benar. Untuk user 2 tingkat keberhasilan mencapai dan user dari 100
percobaan.
Pengujian dengan Nilai thresholding yang kedua dengan pengujian dengan ucapan
lain.Pengujian ini dilakukan untuk memastikan bahwa sistem yang dibuat akan mengenali
sebagai error jika memberikan masukan selain kata angka 0 - 9. Pengujian ini juga
dilakukan untuk menguji thresholding yang telah dirancang pada program pengenalan
ucapan. Berikut adalah data pengujian pengucapan kata lain.
Tabel 4.26 Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 1
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Balok 0 0 0 0 0 0 0 0 0 0 10
Tabung 1 0 0 0 0 0 0 0 0 0 9
Bola 0 0 0 0 0 0 0 0 0 1 9
Kubus 0 0 0 0 0 0 0 0 0 0 10
Kerucut 0 0 0 0 0 0 0 0 0 0 10
Kopsus 0 0 0 0 0 0 0 0 1 0 9
Kopi 0 0 0 0 0 0 0 0 0 0 10
Aduk 0 0 0 8 0 0 0 0 0 0 8
Susu 0 0 1 0 0 0 0 0 0 0 9
Bersih 0 0 0 0 0 0 0 0 0 0 10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
Tabel 4.27 Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 2
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Balok 1 1 0 0 0 0 0 0 0 0 8
Tabung 0 0 0 0 0 0 0 0 0 0 10
Bola 0 0 1 0 0 0 0 0 0 0 9
Kubus 0 2 0 0 0 0 0 0 0 0 8
Kerucut 0 0 0 2 0 0 0 0 0 0 8
Kopsus 0 0 0 0 0 0 0 0 0 0 10
Kopi 0 0 0 0 0 0 0 0 0 0 10
Aduk 0 0 0 0 0 0 0 0 0 0 10
Susu 0 0 0 0 0 0 0 0 0 0 10
Bersih 0 0 0 0 0 0 0 0 0 0 10
Tabel 4.28 Data Hasil Pengujian Pengucapan Dengan Ucapan Lain pada User 3
OUTPUT
INPUT Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Balok 2 0 0 0 0 0 0 0 0 0 8
Tabung 0 0 0 0 0 0 0 0 0 0 10
Bola 0 0 0 0 0 0 0 0 0 1 9
Kubus 0 0 0 0 0 1 0 0 0 0 9
Kerucut 0 0 0 0 0 0 0 0 0 0 10
Kopsus 0 1 0 0 0 0 0 0 0 0 9
Kopi 0 1 0 0 0 0 0 0 0 0 9
Aduk 0 0 0 0 0 0 0 0 0 0 10
Susu 0 0 0 0 0 0 0 0 0 0 10
Bersih 0 0 0 0 0 0 0 0 0 0 10
Dari data di atas dapat dilihat bahwa tingkat keberhasilan thresholding mencapai
diatas 92 dari 100 percobaan dan dapat diambil kesimpulan bahwa penggunaan
thresholding bekerja sesuai dengan perancangan. Dari hasil pengujian tingkat pengenalan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
93
ucapan angka selain 0 hingga 9, program mampu menampilkan “ERROR” sebagai
keluaran.
4.5. Hasil Pengujian Tulisan dari Lengan Robot
Dari hasil pengujian tulisan pada lengan robot, didapatkan sesuai dengan gambar
4.25. Pada penggambaran angka tidak terpaku dengan panjang garis atau besarnya dari
tulisan. Alat hanya diharapkan bisa membentuk angka sesuai dengan pengenalan suara
yang dikenali. Dari bentuk angka yang ditulis, terdapat angka yang tertulis miring karena
kemampuan alat menulis belum sempurna karena dalam menggerakkan servo satu-persatu
tidak secara bersamaan sehingga membentuk garis tidak benar-benar lurus.
Gambar 4.25a. Bentuk hasil penulisan angka
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
94
Gambar 4.25b. Bentuk hasil penulisan angka
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Dari percobaan dan pengujian sistem pengenalan ucapan disimpulkan sebagai
berikut:
1. Penggunaan dengan database suara semakin banyak membuat tingkat
pengenalan semakin baik.
2. Pengenalan secara real time menggunakan parameter terbaik yaitu segmen
averaging 8, dan knn 1, dengan tingkat pengenalan mencapai 85,33%.
3. Bentuk angka yang ditulis oleh lengan robot tidak berbentuk benar-benar kotak
seperti yang dirancangkan.
5.2. Saran
Saran untuk pengembangan sistem pengenalan ucapan untuk lengan robot
menulis angka:
1. Pengembangan sistem kebidang yang lebih sempurna seperti dapat menulis
angka lebih dari 1 digit.
2. Untuk lebih lanjutnya jika ingin membuat lengan robot menulis memakai lebih
dari 3 servo, sehingga untuk variasi gerakan untuk menulis menjadi lebih
banyak.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
DAFTAR PUSTAKA
[1] Budiharto, W., 2014, Robotika Modern – Teori dan Implementasi,edisi revisi, C.V
Andi Offset, Yogyakarta.
[2] Ronando, E dan M. Isa Irawan., 2012, Pengenalan Ucapan Kata Sebagai Pengendali
Gerakan Robot Lengan Secara Real-Time dengan Metode Linear predictive coding –
Neuro Fuzzy, Jurnal Sains dan Seni ITS Vol.1, No. 1, (Sept. 2012) ISSN: 2301-928X
[3] Petrus C. Hendar dan Tjendro., 2014, rancang bangun lengan robot menulis kata
yang dikendalikan oleh aplikasi android, Prosiding Seminar RiTekTra 2014,
Universitas Sanata Dharma, Yogyakarta.
[4] Setyawan,R.Y., 2014, Pengenalan Ucapan Angka Secara Real Time Menggunakan
Ekstraksi Ciri fft Dan Fungsi Similaritas Kosinus, tugas akhir, Universitas Sanata
Dharma Yogyakarta.
[5] Sujarwata,2013, Pengendali Motor Servo Berbasis Mikrokontroler Basic Stamp 2sx
Untuk Mengembangkan Sistem Robotika, vol 1, hal 47-54.
[6] Pitowarno, E., 2006, ROBOTIKA : Desain, kontrol, dan kecerdasan Buatan, 1st ed,
C.V ANDI OFFSET, Yogyakarta
[7] Paul A. Tipler, 1998, FISIKA Untuk Sains dan Teknik, edisi 3 jilid 1, Erlangga,
Bandung
[8] ---,Data Sheet Mikrokontroler Atmega32, ATMEL.
[9] Agus Bejo, 2008, C dan AVR Rahasia Kemudahan Bahasa C dalam Mikrokonroler
ATMEGA8535, 1st ed, GRAHA ILMU, Yogyakarta.
[10] http://elektronika-dasar.web.id/teori-elektronika/lcd-liquid-cristal-display/ diakses
pada tanggal 22 januari 2015
[11] Boylestad, R. and Nashelsky, L., Electronic Devices and Circuit Theory, seventh
edition, Prentice Hall, New Jersey Columbus, Ohio.
[12] Fathoni, Oktober 2010, Unjuk Kerja Catu Daya 12 Volt 2A dengan Pass Element
Transistor NPN dan PNP, Jurnal Neutrino,Vol.3, No.1
[13] Wijaya, Aryaditya, 2011, Aplikasi Hidden Markov Model Pada Pintu Geser
Berbasis Suara, TeknikElektro, Sanata Dharma, Yogyakarta
[14] Juang, B. H., dan Rabiner, L., 1993, Fundamentals Of Speech Recognition. Signal
Processing Series, Prentice Hall, Englewood Cliffs, NJ
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
[15] Theodoridis S. dan Koutroumbas K.,2009, Pattern Recognition 4th
edition,
Burlington, Massachusetts ,USA.
[16] Sumarno, Linggo., 2013, Pengenalan Nada Pianika Menggunakan Jendela Gaussian
DCT dan Jarak Kosinus., Jurnal Penelitian vol. 17, no 1, hal 8-15.
[17] Jain, A. K., Duin, R. P. W., & Mao, J. 2000. Statistical Pattern Recognition: A
Review. Pattern Analysis and Machine Intelligence, IEEE Transactions on,22(1), 4-
37.
[18] http://www.mathworks.com/help/signal/ref/hamming.html diakses pada tanggal 20
february 2015
[19] Linggo Sumarno,”Pengolahan Signal Digital”,Diktat, Edisi 2013.
[20] Mcloughlin. I.,2009, Applied Speech and Audio Processing: With Matlab,
Cambridge University Press, Cambridge, New York.
[21] Giovanni E.J., 2015 , Aplikasi Pengenalan Ucapan Secara Real Time Menggunakan
Dct Dan Orelasi Untuk Pengatur Kecerahan Lampu Dc, tugas akhir, Universitas
Sanata Dharma Yogyakarta.
[22] http://www.intopic.com.tw/showroom/view.php?C=5052498 diakses pada tanggal
20 november 2014
[23] http://www.computerhope.com/jargon/s/souncard.htm diakses pada tanggal pada
tanggal 20 maret 2015
[24] http://www.servodatabase.com/servo/towerpro/mg946r diakses pada tanggal 29
november 2014
[25] Wilson, D, Randall, Martinez, R, Tony., 1997, improved heterogeneous distance
functions.
[26] --, 2008, Data Sheet LCD 16x2, Revolution Education Ltd.
[27] -., 2001, Signal Processing Toolbook For Use with MATLAB, The MathWork, inc
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L1
LAMPIRAN A
Pengujian Panjang Durasi Perekaman
Tujuan Percobaan :
Mengetahui panjang durasi rekaman.
Percobaan :
1. Waktu pencuplikan yaitu 1,2,3 detik.
2. Dengan sampling rate sebesar 6000 Hz.
3. Kata yang dipakai angka 9 sebagai pengucapan angka terpanjang.
Hasil Percobaan :
Percobaan dengan lama waktu pencuplikan 1 detik
Pengucapan angka sembilan
0 1000 2000 3000 4000 5000 6000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1sembilan.wav
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L2
Percobaan dengan lama waktu pencuplikan 2 detik
Pengucapan angka sembilan
Percobaan dengan lama waktu pencuplikan 3 detik
Pengucapan angka sembilan
Analisis :
Dalam percobaan yang dilakukan , percobaan lama waktu 1 detik menyebabkan
kata yang diucapakan tidak tercuplik secara sempurna. Pada percobaan lama waktu 2 detik
dan 3 detik didapatkan kata yang diucapkan tercuplik sempurna. Pada percobaan lama
waktu 3 detik terlihat terlalu banyak data yang tercuplik karena waktu terlalu lama. Hal
0 2000 4000 6000 8000 10000 12000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1sembilan1.wav
0 2000 4000 6000 8000 10000 12000 14000 16000 18000-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1sembilan.wav
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L3
tersebut dapat mengakibatkan terjadinya noise yang masuk. Pada percobaan lama waktu 2
detik terlihat lebih efektif karena kata dapat terekam sempurna dan tidak terlalu lama
dalam waktu perekaman.
Kesimpulan
Penggunaan lama waktu 2 detik lebih efektif karena waktu pencuplikan tidak
terlalu lama dan kata terekam sempurna.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L4
Rangkaian minimum sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L5
Rangkaian regulator 7805 dengan penguatan arus
Towerpro MG946R
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L6
Berat spidol setelah ditimbang
SUDUT-SUDUT MOTOR SERVO
Sudut 0o
Sudut 10o Sudut 20
o
Sudut 30o Sudut 40
o Sudut 50
o
Sudut 60o Sudut 70
o Sudut 80
o
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L7
Sudut 90
o Sudut 100
o Sudut 110
o
Sudut 120
o Sudut 130
o Sudut 140
o
Sudut 150
o Sudut 160
o Sudut 170
o
Sudut 180
o
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L8
Listing Program Matlab
Program Pengujian Pengenalan Ucapan Secara Tidak Real Time
function cobadft10
clc
%=================================================================
=========
b0 = 0.3;
usig = 4096;
%=================================================================
=========
% Pembentukan database
s1x=proses('satu1.wav',b0,usig);
s2x=proses('satu2.wav',b0,usig);
s3x=proses('satu3.wav',b0,usig);
s4x=proses('satu4.wav',b0,usig);
s5x=proses('satu5.wav',b0,usig);
s6x=proses('satu6.wav',b0,usig);
s7x=proses('satu7.wav',b0,usig);
s8x=proses('satu8.wav',b0,usig);
s9x=proses('satu9.wav',b0,usig);
s10x=proses('satu10.wav',b0,usig);
d1x=proses('dua1.wav',b0,usig);
d2x=proses('dua2.wav',b0,usig);
d3x=proses('dua3.wav',b0,usig);
d4x=proses('dua4.wav',b0,usig);
d5x=proses('dua5.wav',b0,usig);
d6x=proses('dua6.wav',b0,usig);
d7x=proses('dua7.wav',b0,usig);
d8x=proses('dua8.wav',b0,usig);
d9x=proses('dua9.wav',b0,usig);
d10x=proses('dua10.wav',b0,usig);
g1x=proses('tiga1.wav',b0,usig);
g2x=proses('tiga2.wav',b0,usig);
g3x=proses('tiga3.wav',b0,usig);
g4x=proses('tiga4.wav',b0,usig);
g5x=proses('tiga5.wav',b0,usig);
g6x=proses('tiga6.wav',b0,usig);
g7x=proses('tiga7.wav',b0,usig);
g8x=proses('tiga8.wav',b0,usig);
g9x=proses('tiga9.wav',b0,usig);
g10x=proses('tiga10.wav',b0,usig);
p1x=proses('empat1.wav',b0,usig);
p2x=proses('empat2.wav',b0,usig);
p3x=proses('empat3.wav',b0,usig);
p4x=proses('empat4.wav',b0,usig);
p5x=proses('empat5.wav',b0,usig);
p6x=proses('empat6.wav',b0,usig);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L9
p7x=proses('empat7.wav',b0,usig);
p8x=proses('empat8.wav',b0,usig);
p9x=proses('empat9.wav',b0,usig);
p10x=proses('empat10.wav',b0,usig);
l1x=proses('lima1.wav',b0,usig);
l2x=proses('lima2.wav',b0,usig);
l3x=proses('lima3.wav',b0,usig);
l4x=proses('lima4.wav',b0,usig);
l5x=proses('lima5.wav',b0,usig);
l6x=proses('lima6.wav',b0,usig);
l7x=proses('lima7.wav',b0,usig);
l8x=proses('lima8.wav',b0,usig);
l9x=proses('lima9.wav',b0,usig);
l10x=proses('lima10.wav',b0,usig);
e1x=proses('enam1.wav',b0,usig);
e2x=proses('enam2.wav',b0,usig);
e3x=proses('enam3.wav',b0,usig);
e4x=proses('enam4.wav',b0,usig);
e5x=proses('enam5.wav',b0,usig);
e6x=proses('enam6.wav',b0,usig);
e7x=proses('enam7.wav',b0,usig);
e8x=proses('enam8.wav',b0,usig);
e9x=proses('enam9.wav',b0,usig);
e10x=proses('enam10.wav',b0,usig);
t1x=proses('tujuh1.wav',b0,usig);
t2x=proses('tujuh2.wav',b0,usig);
t3x=proses('tujuh3.wav',b0,usig);
t4x=proses('tujuh4.wav',b0,usig);
t5x=proses('tujuh5.wav',b0,usig);
t6x=proses('tujuh6.wav',b0,usig);
t7x=proses('tujuh7.wav',b0,usig);
t8x=proses('tujuh8.wav',b0,usig);
t9x=proses('tujuh9.wav',b0,usig);
t10x=proses('tujuh10.wav',b0,usig);
a1x=proses('delapan1.wav',b0,usig);
a2x=proses('delapan2.wav',b0,usig);
a3x=proses('delapan3.wav',b0,usig);
a4x=proses('delapan4.wav',b0,usig);
a5x=proses('delapan5.wav',b0,usig);
a6x=proses('delapan6.wav',b0,usig);
a7x=proses('delapan7.wav',b0,usig);
a8x=proses('delapan8.wav',b0,usig);
a9x=proses('delapan9.wav',b0,usig);
a10x=proses('delapan10.wav',b0,usig);
n1x=proses('sembilan1.wav',b0,usig);
n2x=proses('sembilan2.wav',b0,usig);
n3x=proses('sembilan3.wav',b0,usig);
n4x=proses('sembilan4.wav',b0,usig);
n5x=proses('sembilan5.wav',b0,usig);
n6x=proses('sembilan6.wav',b0,usig);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L10
n7x=proses('sembilan7.wav',b0,usig);
n8x=proses('sembilan8.wav',b0,usig);
n9x=proses('sembilan9.wav',b0,usig);
n10x=proses('sembilan10.wav',b0,usig);
o1x=proses('nol1.wav',b0,usig);
o2x=proses('nol2.wav',b0,usig);
o3x=proses('nol3.wav',b0,usig);
o4x=proses('nol4.wav',b0,usig);
o5x=proses('nol5.wav',b0,usig);
o6x=proses('nol6.wav',b0,usig);
o7x=proses('nol7.wav',b0,usig);
o8x=proses('nol8.wav',b0,usig);
o9x=proses('nol9.wav',b0,usig);
o10x=proses('nol10.wav',b0,usig);
% Database
sx=[s1x s2x s3x s4x s5x s6x s7x s8x s9x s10x];
dx=[d1x d2x d3x d4x d5x d6x d7x d8x d9x d10x];
gx=[g1x g2x g3x g4x g5x g6x g7x g8x g9x g10x];
px=[p1x p2x p3x p4x p5x p6x p7x p8x p9x p10x];
lx=[l1x l2x l3x l4x l5x l6x l7x l8x l9x l10x];
ex=[e1x e2x e3x e4x e5x e6x e7x e8x e9x e10x];
tx=[t1x t2x t3x t4x t5x t6x t7x t8x t9x t10x];
ax=[a1x a2x a3x a4x a5x a6x a7x a8x a9x a10x];
nx=[n1x n2x n3x n4x n5x n6x n7x n8x n9x n10x];
ox=[o1x o2x o3x o4x o5x o6x o7x o8x o9x o10x];
z=[sx dx gx px lx ex tx ax nx ox];
%=================================================================
===
% Percobaan pengenalan
c=proses('satua.wav',b0,usig);j1=hcorr(c,z);
c=proses('satub.wav',b0,usig);j2=hcorr(c,z);
c=proses('satuc.wav',b0,usig);j3=hcorr(c,z);
c=proses('satud.wav',b0,usig);j4=hcorr(c,z);
c=proses('satue.wav',b0,usig);j5=hcorr(c,z);
c=proses('satuf.wav',b0,usig);j6=hcorr(c,z);
c=proses('satug.wav',b0,usig);j7=hcorr(c,z);
c=proses('satuh.wav',b0,usig);j8=hcorr(c,z);
c=proses('satui.wav',b0,usig);j9=hcorr(c,z);
c=proses('satuj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_satu_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('duaa.wav',b0,usig);j1=hcorr(c,z);
c=proses('duab.wav',b0,usig);j2=hcorr(c,z);
c=proses('duac.wav',b0,usig);j3=hcorr(c,z);
c=proses('duad.wav',b0,usig);j4=hcorr(c,z);
c=proses('duae.wav',b0,usig);j5=hcorr(c,z);
c=proses('duaf.wav',b0,usig);j6=hcorr(c,z);
c=proses('duag.wav',b0,usig);j7=hcorr(c,z);
c=proses('duah.wav',b0,usig);j8=hcorr(c,z);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L11
c=proses('duai.wav',b0,usig);j9=hcorr(c,z);
c=proses('duaj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_dua_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('tigaa.wav',b0,usig);j1=hcorr(c,z);
c=proses('tigab.wav',b0,usig);j2=hcorr(c,z);
c=proses('tigac.wav',b0,usig);j3=hcorr(c,z);
c=proses('tigad.wav',b0,usig);j4=hcorr(c,z);
c=proses('tigae.wav',b0,usig);j5=hcorr(c,z);
c=proses('tigaf.wav',b0,usig);j6=hcorr(c,z);
c=proses('tigag.wav',b0,usig);j7=hcorr(c,z);
c=proses('tigah.wav',b0,usig);j8=hcorr(c,z);
c=proses('tigai.wav',b0,usig);j9=hcorr(c,z);
c=proses('tigaj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_tiga_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('empata.wav',b0,usig);j1=hcorr(c,z);
c=proses('empatb.wav',b0,usig);j2=hcorr(c,z);
c=proses('empatc.wav',b0,usig);j3=hcorr(c,z);
c=proses('empatd.wav',b0,usig);j4=hcorr(c,z);
c=proses('empate.wav',b0,usig);j5=hcorr(c,z);
c=proses('empatf.wav',b0,usig);j6=hcorr(c,z);
c=proses('empatg.wav',b0,usig);j7=hcorr(c,z);
c=proses('empath.wav',b0,usig);j8=hcorr(c,z);
c=proses('empati.wav',b0,usig);j9=hcorr(c,z);
c=proses('empatj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_empat_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('limaa.wav',b0,usig);j1=hcorr(c,z);
c=proses('limab.wav',b0,usig);j2=hcorr(c,z);
c=proses('limac.wav',b0,usig);j3=hcorr(c,z);
c=proses('limad.wav',b0,usig);j4=hcorr(c,z);
c=proses('limae.wav',b0,usig);j5=hcorr(c,z);
c=proses('limaf.wav',b0,usig);j6=hcorr(c,z);
c=proses('limag.wav',b0,usig);j7=hcorr(c,z);
c=proses('limah.wav',b0,usig);j8=hcorr(c,z);
c=proses('limai.wav',b0,usig);j9=hcorr(c,z);
c=proses('limaj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_lima_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('enama.wav',b0,usig);j1=hcorr(c,z);
c=proses('enamb.wav',b0,usig);j2=hcorr(c,z);
c=proses('enamc.wav',b0,usig);j3=hcorr(c,z);
c=proses('enamd.wav',b0,usig);j4=hcorr(c,z);
c=proses('ename.wav',b0,usig);j5=hcorr(c,z);
c=proses('enamf.wav',b0,usig);j6=hcorr(c,z);
c=proses('enamg.wav',b0,usig);j7=hcorr(c,z);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L12
c=proses('enamh.wav',b0,usig);j8=hcorr(c,z);
c=proses('enami.wav',b0,usig);j9=hcorr(c,z);
c=proses('enamj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_enam_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('tujuha.wav',b0,usig);j1=hcorr(c,z);
c=proses('tujuhb.wav',b0,usig);j2=hcorr(c,z);
c=proses('tujuhc.wav',b0,usig);j3=hcorr(c,z);
c=proses('tujuhd.wav',b0,usig);j4=hcorr(c,z);
c=proses('tujuhe.wav',b0,usig);j5=hcorr(c,z);
c=proses('tujuhf.wav',b0,usig);j6=hcorr(c,z);
c=proses('tujuhg.wav',b0,usig);j7=hcorr(c,z);
c=proses('tujuhh.wav',b0,usig);j8=hcorr(c,z);
c=proses('tujuhi.wav',b0,usig);j9=hcorr(c,z);
c=proses('tujuhj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_tujuh_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('delapana.wav',b0,usig);j1=hcorr(c,z);
c=proses('delapanb.wav',b0,usig);j2=hcorr(c,z);
c=proses('delapanc.wav',b0,usig);j3=hcorr(c,z);
c=proses('delapand.wav',b0,usig);j4=hcorr(c,z);
c=proses('delapane.wav',b0,usig);j5=hcorr(c,z);
c=proses('delapanf.wav',b0,usig);j6=hcorr(c,z);
c=proses('delapang.wav',b0,usig);j7=hcorr(c,z);
c=proses('delapanh.wav',b0,usig);j8=hcorr(c,z);
c=proses('delapani.wav',b0,usig);j9=hcorr(c,z);
c=proses('delapanj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_delapan_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('sembilana.wav',b0,usig);j1=hcorr(c,z);
c=proses('sembilanb.wav',b0,usig);j2=hcorr(c,z);
c=proses('sembilanc.wav',b0,usig);j3=hcorr(c,z);
c=proses('sembiland.wav',b0,usig);j4=hcorr(c,z);
c=proses('sembilane.wav',b0,usig);j5=hcorr(c,z);
c=proses('sembilanf.wav',b0,usig);j6=hcorr(c,z);
c=proses('sembilang.wav',b0,usig);j7=hcorr(c,z);
c=proses('sembilanh.wav',b0,usig);j8=hcorr(c,z);
c=proses('sembilani.wav',b0,usig);j9=hcorr(c,z);
c=proses('sembilanj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_sembilan_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
c=proses('nola.wav',b0,usig);j1=hcorr(c,z);
c=proses('nolb.wav',b0,usig);j2=hcorr(c,z);
c=proses('nolc.wav',b0,usig);j3=hcorr(c,z);
c=proses('nold.wav',b0,usig);j4=hcorr(c,z);
c=proses('nole.wav',b0,usig);j5=hcorr(c,z);
c=proses('nolf.wav',b0,usig);j6=hcorr(c,z);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L13
c=proses('nolg.wav',b0,usig);j7=hcorr(c,z);
c=proses('nolh.wav',b0,usig);j8=hcorr(c,z);
c=proses('noli.wav',b0,usig);j9=hcorr(c,z);
c=proses('nolj.wav',b0,usig);j10=hcorr(c,z);
k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5);
k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10);
in_nol_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10}
% Hitung tingkat pengenalan
h1=cekout(in_satu_out,1);
h2=cekout(in_dua_out,2);
h3=cekout(in_tiga_out,3);
h4=cekout(in_empat_out,4);
h5=cekout(in_lima_out,5);
h6=cekout(in_enam_out,6);
h7=cekout(in_tujuh_out,7);
h8=cekout(in_delapan_out,8);
h9=cekout(in_sembilan_out,9);
h10=cekout(in_nol_out,10);
jumlah_dikenali = h1+h2+h3+h4+h5+h6+h7+h8+h9+h10
%=================================================================
=========
% INTERNAL FUNCTION
%=================================================================
=========
function wx=proses(fwav,b0,usig)
% Baca file wav
x0=wavread(fwav);
% Preemphasis
alpha=0.95; % nilai alpha (referensi: 0.9-1)
for k=2:length(x0)
x0(k)=x0(k)-alpha*(x0(k-1));
end
% Normalisasi
x1=x0/max(abs(x0));
% Potong ujung kanan-kiri sinyal
x2=potong(x1,b0);
% Penyesuaian ukuran sinyal
x2(usig)=0;
x3=x2(1:usig);
% Ekstraksi ciri menggunakan DFT
wx=dftzz(x3);
%=================================================================
function x2=potong(x1,b0)
% Memotong data yang perlu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L14
% x1 : data masukan
% b0 : batas pemotongan
% x2 : data keluaran
% Potong kiri
b1=find(x1>b0 | x1<-b0);
x1(1:b1(1))=[];
% Potong kanan
x2=fliplr(x1');
b2=find(x2>b0 | x2<-b0);
x2(1:b2(1))=[];
x2=fliplr(x2);
%=================================================================
function x2=dftzz(x0)
% Ekstraksi ciri DFT
% x0 : data masukan
% x2 : data keluaran
pjseg=512;
ovlseg=128;
h=hamming(pjseg);
n=1;k=1;
while n==1
pjx0=length(x0);
if pjx0>=pjseg
xseg=x0(1:pjseg);
xseg=xseg.*h'
segmtx(:,k)=xseg;
x0(1:pjseg-ovlseg)=[];
k=k+1;
elseif pjx0==0
n=0;
else
x0(pjseg)=0;
xseg=x0.*h';
segmtx(:,k)=xseg;
n=0;
end
end
% Ektraksi ciri menggunakan DFT
[baris,kolom]=size(segmtx);
for k=1:kolom
hdft=abs(dftx(segmtx(:,k)));
x1(:,k)=hdft(:);
end
x1=x1(:);
x1=x1(1:length(x1)/2,:);
% Segment averaging
x2=reshape(x1,8,[]);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L15
x2=mean(x2);
x2=x2(:);
%=================================================================
function z=hcorr(x,y)
% Menghitung korelasi dan penentuan keluaran
% x : ekstraksi ciri sinyal masukan
% y : database ekstraksi ciri
% z : kelas keluaran
% Menghitung korelasi
z=zeros(1,100);
for k=1:100
z(k)=corrx(x,y(:,k));
end
% Penentuan keluaran dengan kNN
k=1;
m=10;
[s1,s2]=sort(z,'descend');
kj=s1(1:k);
kn=s2(1:k);
hk=ceil(kn/m);
z=mode(hk);
%=================================================================
===
function z=corrx(x,y)
% Perhitungan korelasi
% x, y : data masukan
% z : data keluaran
mx=mean(x);
my=mean(y);
k1=(x-mx).*(y-my);
k2=sum(k1);
k3=sum((x-mx).^2);
k4=sum((y-my).^2);
k5=sqrt(k3.*k4);
z=k2/k5;
%=================================================================
function y=dftx(x)
% Perhitungan DFT
% Hitung panjang x
N=length(x);
% Hitung DFT
y=zeros(1,N);
for k=1:N
for n=1:N
w=exp(-j*2*pi*(k-1)*(n-1)/N);
a=x(n)*w;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L16
y(k)=y(k)+a;
end
end
%=================================================================
====
function y=pout(x)
% Penentuan keluaran
kel={'satu';'dua';'tiga';'empat';'lima';
'enam';'tujuh';'delapan';'sembilan';'nol'};
y=kel{x};
%=================================================================
====
function z=cekout(x,y)
% Penghitungan keluaran yang benar
kel={'satu';'dua';'tiga';'empat';'lima';
'enam';'tujuh';'delapan';'sembilan';'nol'};
z=0;
for k=1:10
if length(x{k})==length(kel{y})
if x{k}==kel{y}
z=z+1;
end
end
end
%
==================================================================
PROGRAM PENGENALAN UCAPAN SECARA REAL TIME
function varargout = guico(varargin)
% GUICO M-file for guico.fig
% GUICO, by itself, creates a new GUICO or raises the existing
% singleton*.
%
% H = GUICO returns the handle to a new GUICO or the handle to
% the existing singleton*.
%
% GUICO('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in GUICO.M with the given input arguments.
%
% GUICO('Property','Value',...) creates a new GUICO or raises the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before guico_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to guico_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
Pengenalan : guico.fig
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L17
% Edit the above text to modify the response to help guico
% Last Modified by GUIDE v2.5 09-Jun-2015 23:08:53
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @guico_OpeningFcn, ...
'gui_OutputFcn', @guico_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 guico is made visible.
function guico_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 guico (see VARARGIN)
% Choose default command line output for guico
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes guico wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = guico_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;
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (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 edit1 as text
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L18
% str2double(get(hObject,'String')) returns contents of edit1 as a
double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (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 selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popupmenu1 contents as
cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenu1
indeks=get(handles.popupmenu1,'Value');
switch indeks
case 1
user=1;
case 2
user=2;
case 3
user=3;
end
handles.xuser=user;
guidata(hObject,handles);
% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu1 (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
% --- Executes on selection change in popupmenu2.
function popupmenu2_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L19
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popupmenu2 contents as
cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenu2
segav=get(handles.popupmenu2,'Value');
switch segav
case 1
frame=8;
case 2
frame=16;
case 3
frame=32;
case 4
frame=64;
end
handles.varse=frame;
guidata(hObject,handles);
% --- Executes during object creation, after setting all properties.
function popupmenu2_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu2 (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
% --- Executes on selection change in popupmenu3.
function popupmenu3_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popupmenu3 contents as
cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenu3
nknn=get(handles.popupmenu3,'Value');
switch nknn
case 1
knn=1;
case 2
knn=3;
case 3
knn=5;
case 4
knn=7;
end
handles.varknn=knn;
guidata(hObject,handles);
% --- Executes during object creation, after setting all properties.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L20
function popupmenu3_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu3 (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
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
sample_length=2;
sample_freq=6000;
sample_time=(sample_length*sample_freq);
x=wavrecord(sample_time, sample_freq);
%wavwrite(x, sample_freq, 's.wav');
%x=wavread('s.wav');
axes(handles.axes1);
plot(x);
% Preemphasis
varuser=handles.xuser;
varse=handles.varse;
vark=handles.varknn;
b0=0.3;
x0=x;
usig=4096;
alpha=0.95;
for k=2:length(x0)
x0(k)=x0(k)-alpha*(x0(k-1));
end
% Normalisasi
x1=x0/max(abs(x0));
% Potong kiri
b1=find(x1>b0 | x1<-b0);
x1(1:b1(1))=[];
% Potong kanan
x2=fliplr(x1');
b2=find(x2>b0 | x2<-b0);
x2(1:b2(1))=[];
x2=fliplr(x2);
% Penyesuaian ukuran sinyal
x2(usig)=0;
x3=x2(1:usig);
% Segmentasi dan windowing hamming
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L21
pjseg=512;
ovlseg=128;
h=hamming(pjseg);
n=1;k=1;
while n==1
pjx0=length(x3);
if pjx0>=pjseg
xseg=x3(1:pjseg); % segmentasi
xseg=xseg.*h'; % proses windowing
segmtx(:,k)=xseg; % simpan hasil windowing
x3(1:pjseg-ovlseg)=[]; % potong yang tidak dipakai lagi
k=k+1;
elseif pjx0==0
n=0;
else
x3(pjseg)=0; % penyesuaian panjang segmen
xseg=x3.*h'; % proses windowing
segmtx(:,k)=xseg; % simpan hasil windowing
n=0;
end
end
% Ektraksi ciri menggunakan DFT
[baris,kolom]=size(segmtx);
for k=1:kolom
hdft=abs(dftx(segmtx(:,k)));
x4(:,k)=hdft(:);
end
x4=x4(:); %jika dihapus untuk pengucapan lebih mudah dikenal
x4=x4(1:length(x4)/2,:);
% Segment averaging
x5=reshape(x4,varse,[]); % hasil max:16
x5=mean(x5);
x=x5(:);
axes(handles.axes2)
plot(x);
if (varse==8) && (varuser==1)
load db01dseg8;
elseif (varse==16) && (varuser==1)
load db01dseg16;
elseif (varse==32) && (varuser==1)
load db01dseg32;
elseif (varse==64) && (varuser==1)
load db01dseg64;
elseif (varse==8) && (varuser==2)
load db02dseg8;
elseif (varse==16) && (varuser==2)
load db02dseg16;
elseif (varse==32) && (varuser==2)
load db02dseg32;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L22
elseif (varse==64) && (varuser==2)
load db02dseg64;
elseif (varse==8) && (varuser==3)
load db03dseg8;
elseif (varse==16) && (varuser==3)
load db03dseg16;
elseif (varse==32) && (varuser==3)
load db03dseg32;
elseif (varse==64) && (varuser==3)
load db03dseg64;
end
%korelasi
sz=size(z);
%jarak=zeros(1,10);
for n=1:100
jarak(n)=korelasi(x,z(:,n));
end
%knn
kk=vark;
m=10;
[s1,s2]=sort(jarak,'descend');
kj=s1(1:kk);
kn=s2(1:kk);
hk=ceil(kn/m);
kout=mode(hk);
idx=find(hk==kout);
lokth=idx(1);
nilai=kj(idx);
th=s1(lokth);
jarakk=th
if (kout == 1) && (varuser==1) && (th < 0.7207)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 1) && (varuser==1) && (th >0.7207)
korout = {'satu'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','a')
fclose(s);
delete(s);
clear s;
elseif (kout == 2) && (varuser==1) && (th < 0.7539)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L23
elseif (kout == 2) && (varuser==1) && (th > 0.7539)
korout = {'dua'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','b')
fclose(s);
delete(s);
clear s;
elseif (kout == 3) && (varuser==1) && (th <0.7030)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 3) && (varuser==1) && (th >0.7030)
korout = {'tiga'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','c')
fclose(s);
delete(s);
clear s;
elseif (kout == 4) && (varuser==1) && (th < 0.7206)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 4) && (varuser==1) && (th > 0.7206)
korout = {'empat'}
kirim = 'd';
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','d')
fclose(s);
delete(s);
clear s;
elseif (kout == 5) && (varuser==1) && (th < 0.7760)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 5) && (varuser==1)&& (th > 0.7760)
korout = {'lima'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','e')
fclose(s);
delete(s);
clear s;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L24
elseif (kout == 6) && (varuser==1) && (th < 0.6100)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 6) && (varuser==1) && (th > 0.6100)
korout = {'enam'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','f')
fclose(s);
delete(s);
clear s;
elseif (kout == 7) && (varuser==1) && (th < 0.7592)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 7) && (varuser==1) && (th > 0.7592)
korout = {'tujuh'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','g')
fclose(s);
delete(s);
clear s;
elseif (kout == 8) && (varuser==1) && (th < 0.7414)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 8) && (varuser==1) && (th > 0.7414)
korout = {'delapan'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','h')
fclose(s);
delete(s);
clear s;
elseif (kout == 9) && (varuser==1) && (th < 0.8503)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 9)&& (varuser==1) && (th > 0.8503)
korout = {'sembilan'}
kirim = 'i';
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L25
fopen(s);
fprintf(s,'%c','i')
fclose(s);
delete(s);
clear s;
elseif (kout == 10) && (varuser==1) && (th <0.7340)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 10) && (varuser==1) && (th >0.7340)
korout = {'nol'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','j')
fclose(s);
delete(s);
clear s;
elseif (kout == 1) && (varuser==2) && (th < 0.7351)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 1) && (varuser==2) && (th > 0.7351)
korout = {'satu'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','a')
fclose(s);
delete(s);
clear s;
elseif (kout == 2) && (varuser==2) && (th < 0.7627)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 2) && (varuser==2) && (th > 0.7627)
korout = {'dua'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','b')
fclose(s);
delete(s);
clear s;
elseif (kout == 3) && (varuser==2) && (th < 0.6859)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 3) && (varuser==2) && (th > 0.6859)
korout = {'tiga'}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L26
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','c')
fclose(s);
delete(s);
clear s;
elseif (kout == 4) && (varuser==2) && (th < 0.7197)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 4) && (varuser==2) && (th > 0.7197)
korout = {'empat'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','d')
fclose(s);
delete(s);
clear s;
elseif (kout == 5) && (varuser==2) && (th < 0.7551)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 5) && (varuser==2) && (th > 0.7551)
korout = {'lima'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','e')
fclose(s);
delete(s);
clear s;
elseif (kout == 6) && (varuser==2) && (th < 0.6721)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 6)&& (varuser==2) && (th > 0.6721)
korout = {'enam'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','f')
fclose(s);
delete(s);
clear s;
elseif (kout == 7) && (varuser==2) && (th < 0.7600)
korout = {'ERROR'}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L27
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 7) && (varuser==2) && (th > 0.7600)
korout = {'tujuh'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','g')
fclose(s);
delete(s);
clear s;
elseif (kout == 8) && (varuser==2) && (th < 0.7090)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 8) && (varuser==2) && (th > 0.7090)
korout = {'delapan'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','h')
fclose(s);
delete(s);
clear s;
elseif (kout == 9) && (varuser==2) && (th < 0.7298)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 9) && (varuser==2) && (th > 0.7298)
korout = {'sembilan'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','i')
fclose(s);
delete(s);
clear s;
elseif (kout == 10) && (varuser==2) && (th < 0.6567)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 10) && (varuser==2) && (th > 0.6567)
korout = {'nol'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','j')
fclose(s);
delete(s);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L28
clear s;
elseif (kout == 1) && (varuser==3) && (th < 0.6768)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 1) && (varuser==3) && (th > 0.6768)
korout = {'satu'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','a')
fclose(s);
delete(s);
clear s;
elseif (kout == 2) && (varuser==3) && (th < 0.7212)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 2) && (varuser==3) && (th > 0.7212)
korout = {'dua'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','b')
fclose(s);
delete(s);
clear s;
elseif (kout == 3) && (varuser==3) && (th < 0.7053)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 3) && (varuser==3) && (th > 0.7053)
korout = {'tiga'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','c')
fclose(s);
delete(s);
clear s;
elseif (kout == 4) && (varuser==3) && (th < 0.6860)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 4) && (varuser==3)&& (th > 0.6860)
korout = {'empat'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L29
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','d')
fclose(s);
delete(s);
clear s;
elseif (kout == 5) && (varuser==3) && (th < 0.7928)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 5) && (varuser==3)&& (th > 0.7928)
korout = {'lima'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','e')
fclose(s);
delete(s);
clear s;
elseif (kout == 6) && (varuser==3) && (th < 0.6841)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 6)&& (varuser==3) && (th > 0.6841)
korout = {'enam'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','f')
fclose(s);
delete(s);
clear s;
elseif (kout == 7) && (varuser==3) && (th < 0.7794)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 7) && (varuser==3) && (th > 0.7794)
korout = {'tujuh'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','g')
fclose(s);
delete(s);
clear s;
elseif (kout == 8) && (varuser==3) && (th < 0.7556)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L30
elseif (kout == 8) && (varuser==3) && (th > 0.7556)
korout = {'delapan'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','h')
fclose(s);
delete(s);
clear s;
elseif (kout == 9) && (varuser==3) && (th < 0.7783)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 9)&& (varuser==3) && (th > 0.7783)
korout = {'sembilan'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','i')
fclose(s);
delete(s);
clear s;
elseif (kout == 10) && (varuser==3) && (th < 0.7721)
korout = {'ERROR'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
elseif (kout == 10) && (varuser==3) && (th > 0.7721)
korout = {'nol'}
hasilout=korout;
set(handles.edit1,'string',hasilout)
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none');
fopen(s);
fprintf(s,'%c','j')
fclose(s);
delete(s);
clear s;
end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes1);
plot(0);
axes(handles.axes2);
plot(0);
set(handles.edit1,'String',' ');
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L31
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
delete(figure(guico));
function y=dftx(x) % Perhitungan DFT % Hitung panjang x N=length(x); % Hitung DFT y=zeros(1,N); for k=1:N for n=1:N w=exp(-1i*2*pi*(k-1)*(n-1)/N); a=x(n)*w; y(k)=y(k)+a; end end
function dbxciri
b0 = 0.3; segin =8;
z1=proses ('satu',b0,segin);%sz1=size(z1) z2=proses ('dua',b0,segin);%sz2=size(z2) z3=proses ('tiga',b0,segin);%sz3=size(z3) z4=proses ('empat',b0,segin);%sz4=size(z4) z5=proses ('lima',b0,segin);%sz5=size(z5) z6=proses ('enam',b0,segin);%sz6=size(z6) z7=proses ('tujuh',b0,segin);%sz7=size(z7) z8=proses ('delapan',b0,segin);%sz8=size(z8) z9=proses ('sembilan',b0,segin);%sz9=size(z9) z10=proses ('nol',b0,segin);%sz10=size(z10)
z=[z1 z2 z3 z4 z5 z6 z7 z8 z9 z10];
save db01dseg8 z %======================================= %INTERNAL FUNCTION %=======================================
function z=proses (fwav,b0,segin) x1=wavread([fwav '1.wav']);y=potong(x1,b0);k1=xdft(y,segin);%sk1=size(k1) x2=wavread([fwav '2.wav']);y=potong(x2,b0);k2=xdft(y,segin);%sk2=size(k2) x3=wavread([fwav '3.wav']);y=potong(x3,b0);k3=xdft(y,segin);%sk3=size(k3) x4=wavread([fwav '4.wav']);y=potong(x4,b0);k4=xdft(y,segin);%sk4=size(k4) x5=wavread([fwav '5.wav']);y=potong(x5,b0);k5=xdft(y,segin);%sk5=size(k5) x6=wavread([fwav '6.wav']);y=potong(x6,b0);k6=xdft(y,segin);%sk6=size(k6) x7=wavread([fwav '7.wav']);y=potong(x7,b0);k7=xdft(y,segin);%sk7=size(k7)
Pengenalan: dftx.m
Pengenalan : dbxciri.m
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L32
x8=wavread([fwav '8.wav']);y=potong(x8,b0);k8=xdft(y,segin);%sk8=size(k8) x9=wavread([fwav '9.wav']);y=potong(x9,b0);k9=xdft(y,segin);%sk9=size(k9) x10=wavread([fwav
'10.wav']);y=potong(x10,b0);k10=xdft(y,segin);%sk10=size(k10) z=[k1 k2 k3 k4 k5 k6 k7 k8 k9 k10]; %===================================== function bp=potong(x0,b0);
alpha=0.95; for k=2:length(x0) x0(k)=x0(k)-alpha*(x0(k-1)); end
% Normalisasi x1=x0/max(abs(x0));
% Potong kiri b1=find(x1>b0 | x1<-b0); x1(1:b1(1))=[];
% Potong kanan x2=fliplr(x1'); b2=find(x2>b0 | x2<-b0); x2(1:b2(1))=[]; x2=fliplr(x2);
% Penyesuaian ukuran sinyal usig=4096; x2(usig)=0; x3=x2(1:usig); bp=x3;
%================================== function x1=xdft(x0,segin)
% Framing dan windowing pjseg=512; % panjang frame (referensi: 512) ovlseg=128; % segmen yang overlap: 128 (referensi: 100) h=hamming(pjseg);
n=1;k=1; while n==1 pjx0=length(x0); if pjx0>=pjseg xseg=x0(1:pjseg); xseg=xseg.*h'; segmtx(:,k)=xseg; x0(1:pjseg-ovlseg)=[];
k=k+1; elseif pjx0==0 n=0; else x0(pjseg)=0;
xseg=x0.*h'; segmtx(:,k)=xseg; n=0; end end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L33
% Ektraksi ciri menggunakan FFT [baris,kolom]=size(segmtx); for k=1:kolom hdft=abs(dftx(segmtx(:,k))); x1(:,k)=hdft(:); end x1=x1(:); x1=x1(1:length(x1)/2,:);
% Segment averaging x2=reshape(x1,segin,[]); x2=mean(x2); x2=x2(:); x1=x2; %================================= function f=dftx(x) % Perhitungan DFT % Hitung panjang x N=length(x);
% Hitung DFT f=zeros(1,N); for k=1:N for n=1:N w=exp(-j*2*pi*(k-1)*(n-1)/N); a=x(n)*w; f(k)=f(k)+a; end end %=================================
option='n'; option_rec='n'; sample_len=2; sample_freq=6000; sample_time=(sample_len*sample_freq); nama=input('Masukkan nama file record: ','s'); file_nama=sprintf('%s.wav',nama); option_rec = input('tekan x untuk merekam: ','s'); if option_rec=='x' while option=='n', rekam=wavrecord(sample_time, sample_freq); plot(rekam); input('tekan enter untuk mendengarkan ->'); sound(rekam, sample_freq); option = input('x simpan,n rekam ulang: ','s'); end wavwrite(rekam, sample_freq, file_nama); end
Pengenalan : perekaman.m
Pengenalan : seri1.m
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L34
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits',
1,'FlowControl','none'); fopen(s); fprintf(s,'%c',kirim) fclose(s); delete(s); clear s;
function k=korelasi(x,z)
mx=mean(x);
my=mean(z);
k1=(x-mx).*(z-my);
k2=sum(k1);
k3=sum((x-mx).^2);
k4=sum((z-my).^2);
k5=sqrt(k3.*k4);
k=k2/k5;
Pengenalan: Korelasi.m
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L35
Listing Program Mikrokontroler
/*****************************************************
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 11.059200 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
// Standard Input/Output functions
#include <stdio.h>
#define servo1 PORTB.0
#define servo2 PORTB.1
#define servo3 PORTB.2
signed int i=0,data1=0,data2=0,data3=0;
int a;
unsigned char b[16];
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if (i>864)
{i=0;}
else
{i++;}
if (i<data1)
{servo1=1;}
else
{servo1=0;}
if (i<data2)
{servo2=1;}
else
{servo2=0;}
if (i<data3)
{servo3=1;}
else
{servo3=0;}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L36
}
// Declare your global variables here
#include <delay.h>
void komunikasi()
{
a=getchar();
lcd_gotoxy(0,0);
//sprintf(b,"komunikasi= %d" ,a);
lcd_puts(b);
delay_ms(3000);
lcd_clear();delay_ms(10);
}
void siaga_robot()
{
data1=64; //90
delay_ms(100);
data2=69; //80
delay_ms(100);
data3=75; //90
delay_ms(100);
}
void siaga2_robot()
{
data1=64;
delay_ms(100);
data2=50;
delay_ms(100);
data3=75;
delay_ms(100);
}
void angka_nol()
{
//12
for (data1=64;data1<=69;data1++) //100
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=75; //90
delay_ms(100);
//23
data2=64; //90
delay_ms(100);
data1=69; //100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L37
delay_ms(100);
for (data3=75;data3<=80;data3++) //100
{
delay_ms(100);
};
//34
data2=68; //90
delay_ms(100);
for (data1=69;data1>=64;data1--) //90
{
delay_ms(100);
};
data3=80; //90
delay_ms(100);
//41
data2=69; //90
delay_ms(100);
data1=64; //90
delay_ms(100);
for (data3=80;data3>=75;data3--)//90
{
delay_ms(100);
};
//mundur
for (data2=69;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(100);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_satu()
{
//12
data1=64; //90
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=80;data3++) //100
{
delay_ms(100);
};
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L38
//mundur
for (data2=69;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_dua()
{
//12
for (data1=64;data1<=69;data1++)//100
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=75; //100
delay_ms(100);
//23
data1=69; //100
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=78;data3++) //100
{
delay_ms(100);
};
//34
for (data1=69;data1>=63;data1--)
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=78; //90
delay_ms(100);
//45
data2=70; //90
delay_ms(100);
data1=64; //90
delay_ms(100);
for (data3=78;data3<=81;data3++) //110
{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L39
delay_ms(100);
};
//56
data2=70; //90
delay_ms(100);
for (data1=64;data1<=69;data1++) //100
{
delay_ms(100);
};
data3=81; //110
delay_ms(100);
//mundur
for (data2=70;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_tiga()
{
//12
for (data1=64;data1<=69;data1++)//100
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=75; //90
delay_ms(100);
//23
data1=69; //100
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=78;data3++) //100
{
delay_ms(100);
};
//34
for (data1=69;data1>=64;data1--) //90
{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L40
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=78; //100
delay_ms(100);
//43
for (data1=64;data1<=69;data1++) //100
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=78; //100
delay_ms(100);
//35
data1=69; //100
delay_ms(100);
data2=70; //90
delay_ms(100);
for (data3=78;data3<=81;data3++) //110
{
delay_ms(100);
};
//56
for (data1=69;data1>=64;data1--) //90
{
delay_ms(100);
};
data2=70; //90
delay_ms(100);
data3=81; //110
delay_ms(100);
//mundur
for (data2=70;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_empat()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L41
{
//12
data1=64; //90
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=78;data3++)//100
{
delay_ms(100);
};
//23
for (data1=64;data1<=69;data1++) //100
{
delay_ms(100);
};
data2=69 ; //90
delay_ms(100);
data3=78; //100
delay_ms(100);
//34
data1=69; //90
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=78;data3>=75;data3--) //100
{
delay_ms(100);
};
//45
data2=64; //100
delay_ms(100);
data1=69; //90
delay_ms(100);
for (data3=75;data3<=81;data3++)//110
{
delay_ms(100);
};
//mundur
for (data2=65;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L42
}
void angka_lima()
{
//12
data2=68; //90
delay_ms(100);
for (data1=64;data1>=60;data1--) //80
{
delay_ms(100);
};
data3=75; //90
delay_ms(100);
//23
data1=60; //80
delay_ms(100);
data2=68; //90
delay_ms(100);
for (data3=75;data3<=78;data3++) //100
{
delay_ms(100);
};
//34
data2=62; //90
delay_ms(100);
for (data1=60;data1<=66;data1++) //90
{
delay_ms(100);
};
data3=78; //100
delay_ms(100);
//45
data2=69; //90
delay_ms(100);
data1=64; //90
delay_ms(100);
for (data3=78;data3<=81;data3++) //110
{
delay_ms(100);
};
//56
data2=72; //90
delay_ms(100);
for (data1=64;data1>=60;data1--) //80
{
delay_ms(100);
};
data3=81; //110
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L43
delay_ms(100);
//mundur
for (data2=70;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_enam()
{
//12
data1=64; //90
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=78;data3++) //100
{
delay_ms(100);
};
//23
for (data1=64;data1<=69;data1++) //100
{
delay_ms(100);
};
data2=69 ; //90
delay_ms(100);
data3=78; //100
delay_ms(100);
//34
data2=69; //90
delay_ms(100);
data1=69; //100
delay_ms(100);
for (data3=78;data3<=81;data3++) //110
{
delay_ms(100);
};
//45
data2=69; //90
delay_ms(100);
for (data1=69;data1>=64;data1--) //90
{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L44
delay_ms(100);
};
data3=81; //110
delay_ms(100);
//52
data1=64; //90
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=81;data3>=78;data3--) //100
{
delay_ms(100);
}
//mundur
for (data2=69;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_tujuh()
{
//12
for (data1=64;data1<=69;data1++)//100
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=75; //100
delay_ms(100);
//23
data1=69; //100
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=81;data3++) //100
{
delay_ms(100);
};
//mundur
for (data2=69;data2>=50;data2--)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L45
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_delapan()
{
//12
for (data1=64;data1<=69;data1++)//100
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=75; //90
delay_ms(100);
//23
data1=69; //100
delay_ms(100);
data2=69; //90
delay_ms(100);
for (data3=75;data3<=78;data3++) //100
{
delay_ms(100);
};
//34
for (data1=69;data1>=64;data1--) //90
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=78; //100
delay_ms(100);
//43
for (data1=64;data1<=69;data1++) //100
{
delay_ms(100);
};
data2=69; //90
delay_ms(100);
data3=78; //100
delay_ms(100);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L46
//35
data1=69; //100
delay_ms(100);
data2=70; //90
delay_ms(100);
for (data3=78;data3<=81;data3++) //110
{
delay_ms(100);
};
//56
for (data1=69;data1>=64;data1--) //90
{
delay_ms(100);
};
data2=70; //90
delay_ms(100);
data3=81; //110
delay_ms(100);
//67
data1=64; //90
delay_ms(100);
data2=67; //90
delay_ms(100);
for (data3=81;data3>=75;data3--) //90
{
delay_ms(100);
};
//mundur
for (data2=67;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void angka_sembilan()
{
//12
for (data1=64;data1>=60;data1--) //80
{
delay_ms(100);
};
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L47
data2=69; //90
delay_ms(100);
data3=75; //90
delay_ms(100);
//23
data2=71; //90
delay_ms(100);
data1=60; //80
delay_ms(100);
for (data3=75;data3>=70;data3--) //80
{
delay_ms(100);
}
//34
data2=71; //90
delay_ms(100);
for (data1=60;data1<=64;data1++) //90
{
delay_ms(100);
};
data3=70; //80
delay_ms(100);
//45
data2=69; //90
delay_ms(100);
data1=64; //90
delay_ms(100);
for (data3=70;data3<=78;data3++) //100
{
delay_ms(100);
};
//mundur
for (data2=69;data2>=50;data2--)
{
delay_ms(100);
};
siaga2_robot();
delay_ms(500);
for (data2=50;data2<=69;data2++)
{
delay_ms(100);
};
}
void main(void)
{
PORTB=0x00;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L48
DDRB=0xFF;
TCCR0=0x01;
TCNT0=0x00;
OCR0=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x10;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L49
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 8
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
siaga_robot();
delay_ms(500);
komunikasi();
delay_ms(30);
if(a==97)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA SATU");delay_ms(1000);
angka_satu();delay_ms(500);
lcd_clear();delay_ms(10);
}
else if(a==98)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA DUA");delay_ms(1000);
angka_dua();delay_ms(500);
lcd_clear();delay_ms(10);
}
else if(a==99)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA TIGA");delay_ms(1000);
angka_tiga();delay_ms(500);
lcd_clear();delay_ms(10);
}
else if(a==100)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA EMPAT");delay_ms(1000);
angka_empat();delay_ms(10);
lcd_clear();delay_ms(10);
}
else if(a==101)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA LIMA");delay_ms(1000);
angka_lima();delay_ms(10);
lcd_clear();delay_ms(10);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L50
else if(a==102)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA ENAM");delay_ms(1000);
angka_enam();delay_ms(10);
lcd_clear();delay_ms(10);
}
else if(a==103)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA TUJUH");delay_ms(1000);
angka_tujuh();delay_ms(10);
lcd_clear();delay_ms(10);
}
else if(a==104)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKADELAPAN");delay_ms(1000
);
angka_delapan();delay_ms(10);
lcd_clear();delay_ms(10);
}
else if(a==105)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKASEMBILAN");delay_ms(1000);
angka_sembilan();delay_ms(10);
lcd_clear();delay_ms(10);
}
else if(a==106)
{
lcd_gotoxy(0,1);lcd_putsf("ANGKA NOL");delay_ms(1000);
angka_nol();delay_ms(10);
lcd_clear();delay_ms(10);
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Recommended