Implementasi Speech Recognition pada Aplikasi Pembelajaran dalam Bentuk Permainan Menebak Kata Baku Bahasa Indonesia

(1)

IMPLEMENTASI SPEECH RECOGNITION PADA APLIKASI

PEMBELAJARAN DALAM BENTUK PERMAINAN MENEBAK KATA BAKU BAHASA INDONESIA

SKRIPSI

ANDI H SIANTURI 091402074

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(2)

IMPLEMENTASI SPEECH RECOGNITION PADA APLIKASI PEMBELAJARAN DALAM BENTUK PERMAINAN

MENEBAK KATA BAKU BAHASA INDONESIA

SKRIPSI

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

ANDI H SIANTURI 091402074

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(3)

PERSETUJUAN

Judul : IMPLEMENTASI SPEECH RECOGNITION PADA APLIKASI PEMBELAJARAN DALAM BENTUK PERMAINAN MENEBAK KATA BAKU BAHASA INDONESIA

Kategori : SKRIPSI

Nama : ANDI H SIANTURI

Nomor Induk Mahasiswa : 091402074

Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI (FASILKOM-TI) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Juli 2014 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Drs. Marihat Situmorang, M.Kom Drs. Sawaluddin, M.IT NIP. 19631214 198903 1 001 NIP. 19591231 199802 1 001 Diketahui/Disetujui oleh

Program Studi S1 Teknologi Informasi Ketua,

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


(4)

PERNYATAAN

IMPLEMENTASI SPEECH RECOGNITION PADA APLIKASI PEMBELAJARAN DALAM BENTUK PERMAINAN

MENEBAK KATA BAKU BAHASA INDONESIA

SKRIPSI

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

Medan, Juli 2014

ANDI H SIANTURI 091402074


(5)

UCAPAN TERIMAKASIH

Segala puji syukur kepada Tuhan Yesus Kristus, karena berkat dan kasih karuniaNya lah penulis bisa menyelesaikan penyusunan tugas akhir ini. Rasa syukur yang sangat dalam kepada Tuhan Yesus karena bimbingan dan penyertaanNya selalu kepada saya mulai dari awal hingga penyelesaian tugas akhir ini.

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

1. Orang tua penulis, Ibu, Romala Samosir, SH, Ayah, Poster Sianturi SH. MH yang mendoakan dan mengingatkan, serta memberi bantuan berupa moril dan materi, sehingga penulis dapat menyelesaikan tugas akhir ini.

2. Pihak keluarga, kakak, abang dan seluruh keluarga.

3. Bapak M. Anggia Muchtar , ST. MM. IT selaku Ketua Program Studi Teknologi Informasi Universitas Sumatera Utara.

4. Bapak Drs. M. Situmorang, M.Kom, Bapak Drs. Sawaluddin, M.IT, selaku dosen pembimbing penulis yang telah memberikan saran, masukan, serta bersedia meluangkan waktu, tenaga, dan pikiran membantu penulis menyelesaikan skripsi ini.

5. Seorang yang terkasih Ayu Wulan Sari Tampubolon yang selalu memberi semangat dan dukungan doa kepada penulis.

6. Sahabat-sahabat penulis, Januar Sirait, Irwandes Silalahi, Elkando Purba, Christop Sitorus S.TI, Alman Tarigan S.TI, Tony Barus, Rudyanto Siahaan, Junot Hutabarat, Reborn Auto Club, dan lain-lain.

7. Dosen penasihat akademik, dosen Penguji dan seluruh dosen.

8. Teman-teman, senior dan junior kristen jurusan Teknologi Informasi. 9. PP dan remaja Agatha GKPI Kota Doloksanggul.

10.NHKBP Tanjung Sari Medan.


(6)

Akhir kata, penulis memohon maaf bila dalam penulisan karya tulis ilmiah ini terdapat beberapa kesalahan, oleh karena itu penulis sangat mengharapkan adanya masukan-masukan yang membangun.

Semoga karya tulis ini dapat memberikan kontribusi bagi pendidikan di Indonesia. Tuhan Yesus memberkati.


(7)

ABSTRAK

Bahasa Indonesia merupakan bahasa kesatuan Negara Indonesia yang digunakan oleh warga Negara Indonesia sebagai bahasa pemersatu. Dalam dunia pendidikan, Bahasa Indonesia memiliki dua klasifikasi kata berdasarkan tata cara penulisan dan ejaannya, yaitu kata baku dan tidak baku. Penggunaan kata baku digunakan pada situasi yang formal, sedangkan kata tidak baku sering digunakan dalam percakapan sehari hari. Faktor kebiasaan sehari hari dalam menggunakan kata tidak baku membuat seseorang sulit untuk membedakan mana yang menjadi kata baku dan tidak baku terlebih yang masih dikategorikan sebagai anak-anak. Pembelajaran kata baku dan tidak baku masih cenderung dilakukan secara manual oleh guru/ pengajar dengan teknik menghapal. Seiring perkembangan jaman, kemajuan teknologi dapat dimanfaatkan sebagai salah satu media pembelajaran untuk mengetahui kata baku dan tidak baku kepada anak anak. Oleh sebab itu, penelitian ini dilakukan guna membantu anak-anak belajar mengenal kata baku dan tidak baku melalui suatu aplikasi permainan menebak kata menggunakan suara dari huruf-huruf yang acak.

Membangun aplikasi ini, penulis memanfaatkan pengenalan suara (speech recognition) menggunakan Speech Application Programming Interface (SAPI). Penulis menggunakan bahasa pemrograman C#. Hasil dari penelitian ini adalah sebuah aplikasi permainan menebak kata baku menggunakan suara dengan tema belajar sambil bermain. Aplikasi ini diharapkan dapat membantu meningkatkan proses belajar anak-anak dan menambah pembendaharaan kosakata baku bagi anak.

Kata Kunci : kata baku, game tebak kata, speech recognition, Speech Application Programming Interface (SAPI).


(8)

IMPLEMENTATION OF SPEECH RECOGNITION ON LEARNING APPLICATION IN THE FORM OF GAME OF FORMAL

INDONESIAN WORD GUESSING

ABSTRACT

Bahasa is mother tongue for Indonesian people which is used by Indonesian people to united the nation. In the field of education, Bahasa is known in two word classifications based on its parenthetical manner and spelling, namely standard word and non standard word. The use of standard word is in for formal situation, while non standard word is used in daily conversation. Being usual in using non standard word in daily conversation makes children are difficult to differentiate between standard and non standard word. Standard and non standard word learning tends to be done manually by teachers by memorizing technique. As the new era, technology development can be used as one of learning media to know a standard or non standard word. Therefore, the research is done to help the children to know a standard and non strandard word by an application through guessing words using jumbled letters.

Constructing this application, the writer take the beneficial of speech recognition by Speech Application Programming Interface (SAPI). The writer use programming language C#. The result of this research is a game application by guessing standars word using sound with the theme learning while playing. This application hoped can help the teacher to develop students learning process and enrich children achievement of new standard word vocabularies.

Keyword: Standard word, game, speech recognition, learning media, Speech Application Programming Interface (SAPI).


(9)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Ucapan Terima Kasih iv

Abstrak vi

Abstract vii

Daftar Isi viii

Bab 1 PENDAHULUAN 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Tujuan Penelitian 3

1.4 Manfaat Penelitian 3

1.5 Batasan Masalah 3

1.6 Metodologi Penelitian 4

1.7 Sistematika Penulisan 5

Bab 2 LANDASAN TEORI

2.1 Kata Baku dan Tidak Baku Bahasa Indonesia 7

2.2 Speech Recognition 8

2.2.1 Model akustik , model bahasa dan kamus 9

2.3 Microsoft SAPI 11

2.3.1 Application Programming Interface (API) 12 2.3.2 Device Driver Interface (DDI) 13

2.4 Penelitian Terdahulu 13

Bab 3 ANALISIS DAN PERANCANGAN

3.1 Identifikasi Masalah 15

3.2 Analisis Data 16


(10)

3.2.2 Database Kata Tidak Baku 17 3.2.3 Database Kata Kunci (hint) 18

3.3 Analisis Sistem 19

3.3.1 Proses Menganalisis Suara 21

3.3.2 Proses Ekstraksi 21

3.3.3 Sinyal digital diubah menjadi kata/ speech to text 21

3.3.4 Output Sistem 22

3.4 Perancangan Sistem 22

3.4.1 Diagram Use Case 22

3.4.2 Penjelasan gambar 3.2. Diagram Use Case 23

3.4.3 ClassDiagram 24

3.5 Perancangan Tampilan Antarmuka 25 3.5.1 Rancangan Tampilan Halaman Utama 25 3.5.2 Rancangan Tampilan Halaman Menu Mulai 26 3.5.3 Rancangan Tampilan Halaman Menu Mulai Jika 27

Jawaban Benar

3.5.4 Rancangan Tampilan Halaman Menu Mulai Jika 28 Jawaban Salah

3.5.5 Rancangan Tampilan Halaman Permainan Selesai 29 (game over)

3.5.6 Rancangan Tampilan Halaman Menu Bantuan 30 3.5.7 Rancangan Tampilan Halaman Menu Tentang 31

Pengembang

Bab 4 IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi Sistem 32

4.1.1 Perangkat Keras (Hardware) dan Perangkat Lunak 33 (Software)

4.1.2 Tampilan halaman utama 34


(11)

4.1.4 Tampilan halaman menu bantuan 36 4.1.5 Tampilan halaman menu tentang pengembang 37

4.2 Pengujian 38

4.2.1 Tahap pengujian menebak kata dengan benar 38 4.2.2 Tahap pengujian menebak kata dengan salah 39 Bab 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan 43

5.2 Saran 43

DATAR PUSTAKA 44


(12)

ABSTRAK

Bahasa Indonesia merupakan bahasa kesatuan Negara Indonesia yang digunakan oleh warga Negara Indonesia sebagai bahasa pemersatu. Dalam dunia pendidikan, Bahasa Indonesia memiliki dua klasifikasi kata berdasarkan tata cara penulisan dan ejaannya, yaitu kata baku dan tidak baku. Penggunaan kata baku digunakan pada situasi yang formal, sedangkan kata tidak baku sering digunakan dalam percakapan sehari hari. Faktor kebiasaan sehari hari dalam menggunakan kata tidak baku membuat seseorang sulit untuk membedakan mana yang menjadi kata baku dan tidak baku terlebih yang masih dikategorikan sebagai anak-anak. Pembelajaran kata baku dan tidak baku masih cenderung dilakukan secara manual oleh guru/ pengajar dengan teknik menghapal. Seiring perkembangan jaman, kemajuan teknologi dapat dimanfaatkan sebagai salah satu media pembelajaran untuk mengetahui kata baku dan tidak baku kepada anak anak. Oleh sebab itu, penelitian ini dilakukan guna membantu anak-anak belajar mengenal kata baku dan tidak baku melalui suatu aplikasi permainan menebak kata menggunakan suara dari huruf-huruf yang acak.

Membangun aplikasi ini, penulis memanfaatkan pengenalan suara (speech recognition) menggunakan Speech Application Programming Interface (SAPI). Penulis menggunakan bahasa pemrograman C#. Hasil dari penelitian ini adalah sebuah aplikasi permainan menebak kata baku menggunakan suara dengan tema belajar sambil bermain. Aplikasi ini diharapkan dapat membantu meningkatkan proses belajar anak-anak dan menambah pembendaharaan kosakata baku bagi anak.

Kata Kunci : kata baku, game tebak kata, speech recognition, Speech Application Programming Interface (SAPI).


(13)

IMPLEMENTATION OF SPEECH RECOGNITION ON LEARNING APPLICATION IN THE FORM OF GAME OF FORMAL

INDONESIAN WORD GUESSING

ABSTRACT

Bahasa is mother tongue for Indonesian people which is used by Indonesian people to united the nation. In the field of education, Bahasa is known in two word classifications based on its parenthetical manner and spelling, namely standard word and non standard word. The use of standard word is in for formal situation, while non standard word is used in daily conversation. Being usual in using non standard word in daily conversation makes children are difficult to differentiate between standard and non standard word. Standard and non standard word learning tends to be done manually by teachers by memorizing technique. As the new era, technology development can be used as one of learning media to know a standard or non standard word. Therefore, the research is done to help the children to know a standard and non strandard word by an application through guessing words using jumbled letters.

Constructing this application, the writer take the beneficial of speech recognition by Speech Application Programming Interface (SAPI). The writer use programming language C#. The result of this research is a game application by guessing standars word using sound with the theme learning while playing. This application hoped can help the teacher to develop students learning process and enrich children achievement of new standard word vocabularies.

Keyword: Standard word, game, speech recognition, learning media, Speech Application Programming Interface (SAPI).


(14)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Sekarang ini perkembangan game/ permainan dalam dunia teknologi sudah semakin pesat. Para pengguna komputer sering dihadapkan dengan berbagai macam game/ permainan yang memiliki kategori, salah satunya adalah game berkategori pembelajaran. Sebuah aplikasi dalam bentuk game/ permainan berkategori pembelajaran sebenarnya sangat penting untuk beberapa kalangan sesuai usia, terutama yang masih digolongkan sebagai anak anak. Hal ini dikatakan penting karena dengan adanya game/ permainan yang berkategori pembelajaran, minat anak anak untuk belajar akan meningkat sebab media yang digunakan sudah lebih menarik. Banyak mata pelajaran yang dapat diaplikasikan ke dalam bentuk game/ permainan pembelajaran pada komputer, salah satunya adalah pelajaran Bahasa Indonesia mengenai kata baku dan tidak baku dalam bahasa Indonesia.

Aplikasi pembelajaran dalam bentuk permainan masih cenderung menggunakan keyboard maupun mouse dalam penggunaannya. Untuk itu, disini akan dibangun sebuah game/ permainan menebak kata baku Bahasa Indonesia menggunakan suara atau Automatic Speech Recognition (ASR). Hal ini bertujuan agar game/ permainan tersebut lebih menarik. Aplikasi permainan ini dapat digunakan sebagai salah satu media pembelajaran yang menarik bagi anak-anak terlebih ketika berada di lingkungan rumah, dimana sipengguna yang dikhususkan untuk anak-anak yang berusia 9 sampai 15 tahun dapat belajar mengenal kata baku bahasa Indonesia melalui aplikasi pembelajaran dalam bentuk permainan berbasis desktop dengan menebak kata baku dari huruf-huruf yang teracak. Aplikasi pembelajaran dalam bentuk permainan menebak kata baku bahasa Indonesia ini akan dirancang semenarik mungkin dengan menggunakan suara sipengguna untuk menebak kemungkinan kata


(15)

yang dapat terbentuk dari huruf-hururf yang teracak sehingga menambah daya tarik tersendiri bagi anak-anak untuk menggunakannya.

Pengenalan suara secara otomatis yang dikenal dengan Automatic Speech Recognition (ASR) sudah ada sejak lima dekade. Automatic Speech Recognition (ASR) adalah pengembangan teknik dan sistem di dalam sebuah komputer untuk menerima masukan berupa suara dari kata yang diucapkan. Teknologi ini memungkinkan perangkat tersebut untuk mengenali dan memahami kata-kata yang diucapkan dan mencocokkan sinyal digital tersebut dengan pola tertentu yang tersimpan dalam suatu perangkat.

Jika membangun sebuah library speech recognition yang baru, ada beberapa metode yang dapat digunakan diantaranya adalah metode Dynamic Time Warping (DTW) (Sunny, A.S. 2009), Metode Independent Component Analysis (Tumpak, P. 2005), dan Hidden Markov Model (HMM) (Prasetyo, M.E.B. 2010 ). Dalam aplikasi yang akan dibangun ini, penulis mengimplementasikan library yang sudah ada yaitu Speech Application Programming Interface (SAPI) 5. Speech Application Programming Interface (SAPI) dikembangkan oleh Microsoft yang memungkinkan pengenalan suara dalam aplikasi pada windows.

Berdasarkan latar belakang tersebut penulis membangun suatu aplikasi pembelajaran dalam bentuk permainan menebak kata baku bahasa Indonesia menggunakan suara yang berjudul : “Implementasi Speech Recognition Pada Aplikasi Pembelajaran Dalam Bentuk Permainan Menebak Kata Baku Bahasa Indonesia”

1.2 Rumusan Masalah

Aplikasi permainan berkategori pembelajaran masih cenderung menggunakan keyboard dan mouse dalam bermain. Maka diperlukan suatu aplikasi pembelajaran dalam bentuk permainan yang lebih menarik dengan menggunakan suara sipengguna dalam bermain. Aplikasi pembelajaran dalam bentuk permainan yang menarik dapat menambah minat seseorang untuk menggunakannya.


(16)

1.3 Tujuan Penelitian

Tujuan penelitian adalah menghasilkan suatu aplikasi pembelajaran dalam bentuk permainan komputer yang menggunakan suara sipengguna untuk menebak kata baku dari huruf-huruf yang diacak dengan menerapkan speech recognition.

1.4 Manfaat Penelitian

Manfaat dari penelitian ini adalah :

a. Mempermudah penerapan konsep pembelajaran Bahasa Indonesia yang menarik bagi anak-anak untuk mengetahui perbedaan kata baku dan tidak baku bahasa Indonesia.

b. Menambah pengetahuan anak yang berusia 9 sampai 15 tahun untuk mengetahui apa saja yang termasuk kata baku bahasa Indonesia dan kata tidak bakunya beserta arti dari kata tersebut.

1.5 Batasan Masalah

Permasalahan dalam penelitian ini mencakup ruang lingkup yang luas, oleh sebab itu penulis membatasi masalah tersebut yaitu sebagai berikut :

a. Menggunakan Speech Application Programming Interface (SAPI) 5 dalam pengaplikasian Automatic Speech Recognition (ASR).

b. Bahasa yang digunakan adalah bahasa Indonesia.

c. Kata yang digunakan adalah kata yang memiliki kata tidak baku saja yang dikutip dari beberapa sumber. Kata kunci/ hint akan disesuaikan dengan Kamus Besar Bahasa Indonesia.

d. Kata yang akan ditebak tidak berlaku pada kata homofon, penulisan berbeda tetapi pengucapan sama.

e. Kata yang digunakan adalah kata dasar, tidak diikuti dengan imbuhan dan akhiran.


(17)

f. Aplikasi yang dibangun ditujukan untuk anak-anak yang berusia 9 sampai 15 tahun.

1.6 Metodologi Penelitian

Dalam penelitian ini diperlukan beberapa tahapan pada proses penulisannya. Oleh sebab itu penulis melakukan tahapan sebagai berikut :

1. Studi Literatur

Studi literatur yaitu proses yang dilakukan untuk mengumpulkan bahan bahan yang dijadikan sebagai referensi yang berfungsi untuk membantu kinerja sipenulis dalam membangun aplikasi.

2. Pengumpulan Data

Pengumpulan data dilakukan untuk mengumpulkan data data yang diperlukan baik dari Kamus Besar Bahasa Indonesia, Jurnal Ilmiah, Buku, Artikel, dan situs internet.

3. Analisa dan Perancangan

Ada beberapa tahapan Analisa dan perancangan yang dilakukan yaitu: a. Meneliti tahapan dan proses dalam Speech Recognition.

b. Meneliti kata-kata baku dan tidak baku yang terdapat dalam Bahasa Indonesia.

c. Mencari data kata baku bahasa Indonesia dari berbagai sumber yang kemudian disesuaikan dengan Kamus Besar Bahasa Indonesia.

d. Mempelajari teori mengenai Speech Application Programming Interface (SAPI).

e. Mempelajari metode dan proses pembelajaran kepada anak-anak. Setelah tahapan analisis dan perancangan tersebut, dilakukan perancangan arsitektur dan perancangan antarmuka agar tampilan aplikasi yang akan dibangun menarik.


(18)

4. Pengkodean

Pada tahap ini penulis akan melakukan pengkodean untuk membangun aplikasi yang dimaksud dengan menggunakan bahasa pemrograman yang telah dipilih dan ditentukan sebelumnya oleh penulis.

5. Pengujian

Pengujian merupakan tahap dimana penulis memastikan apakah program sudah berjalan sesuai dengan yang direncanakan.

6. Penyusunan laporan

Penyusunan laporan merupakan tahap dilakukannya dokumentasi dari aplikasi yang sudah dibangun.

1.7 Sistematika Penulisan

Sistematika penulisan ini dibagi menjadi 5 bab yaitu :

BAB I Pendahuluan

Pada bab pendahuluan ini berisi mengenai gambaran ataupun konsep dasar dari aplikasi yang akan dibangun.

BAB II Landasan Teori

Pada bab landasan teori ini berisi mengenai teori yang mendukung penulisan.

BAB III Analisis dan Perancangan

Pada bab analisis dan perancangan ini dibahas mengenai rancangan dari aplikasi dan juga masalah masalah yang ditemukan dalam membangun aplikasi.


(19)

BAB IV Implementasi dan Pengujian

Pada bab implementasi dan pengujian ini akan dibahas mengenai implementasi dari aplikasi yang dibangun serta pengujian kode yang telah dibuat untuk mengetahui sesuai atau tidaknya aplikasi yang dibangun dengan yang direncanakan.

BAB V Kesimpulan dan Saran

Pada bab kesimpulan dan saran ini akan dibahas mengenai kesimpulan dan saran yang bermanfaat untuk membangun dan memperbaiki penelitian berikutnya.


(20)

BAB 2

LANDASAN TEORI

2.1 Kata baku dan tidak baku Bahasa Indonesia

Kata merupakan bentuk yang sangat kompleks yang tersusun atas beberapa unsur. Kata dalam bahasa Indonesia terdiri atas satu suku kata atau lebih. Kata merupakan bagian yang sangat penting dalam kehidupan berbahasa. Bidang atau kajian mengenai kata telah banyak diselidiki oleh para ahli bahasa. Penyelidikan tersebut menghasilkan berbagai teori-teori antara yang satu dengan yang lain berbeda-beda. Perbedaan ini terjadi karena adanya perbedaan sudut pandang antara ahli bahasa yang satu dengan yang lainnya. Adanya perbedaan konsep antara ahli yang satu dengan yang lainnya tentu akan membingungkan dalam kegiatan pembelajaran. Untuk mengurangi kebingungan tersebut, dikelompokanlah jenis kata yaitu kata baku dan kata tidak baku. Kata baku dan tidak baku sering dijadikan sebagai pembahasan dalam mata pelajaran bahasa Indonesia. Kata baku dan tidak baku dalam bahasa Indonesia berhubungan dengan penyerapan kosakata bahasa asing dan berhubungan juga dengan kaidah penulisan yang benar.

Kata baku adalah kata yang digunakan sesuai dengan kaidah bahasa Indonesia yang telah ditentukan. Kamus Besar Bahasa Indonesia merupakan sumber utama dan menjadi acuan untuk menentukan kata baku bahasa Indonesia. Kata tidak baku adalah kata yang digunakan tidak sesuai dengan kaidah bahasa Indonesia yang ditentukan. Kata tidak baku cenderung lebih sering digunakan dalam kehidupan sehari-hari. Penggunaan kata baku dan tidak baku dihadapkan kepada dua ragam yaitu ragam resmi dan tidak resmi. Ragam resmi merupakan keadaan atau situasi yang bersifat formal seperti penulisan karya ilmiah, pidato kenegaraan, dan lain-lain. Ragam tidak resmi merupakan keadaan atau situasi yang bersifat tidak formal seperti dalam percakapan sehari-hari.


(21)

Banyak anak-anak yang belum mengetahui mana yang menjadi kata baku dan mana yang menjadi kata tidak baku dari sebuah kata. Hal ini dikarenakan penggunaan kata baku tidak begitu sering diterapkan kepada anak dalam bentuk penulisan. Selain pada anak-anak, penggunaan kata baku juga sering salah penggunaannya oleh orang yang sudah dewasa, akan tetapi kesalahan tersebut sudah lebih minim daripada kesalahan yang ditemukan pada anak yang berusia 9 sampai 15 tahun.

2.2 Speech Recognition

Speech Recognition pertama kali muncul di tahun 1952 dan terdiri dari device untuk pengenalan satu digit yang diucapkan. Kemudian pada tahun 1964, muncul IBM Shoebox. Salah satu teknologi yang cukup terkenal di Amerika dalam bidang kesehatan adalah Medical Transcriptionist (MT) merupakan aplikasi komersial yang menggunakan speech recognition. Sekarang banyak aplikasi yang dikembangkan menggunakan speech recognition, antara lain di bidang kesehatan terdapat MT, di bidang militer terdapat High-performance fighter aircraft, Training air traffic controllers, sampai pada alat yang membantu orang-orang yang memiliki kesulitan dalam menggunakan tangan, maka diciptakannya komputer yang dapat dioperasikan menggunakan deteksi pengucapan user (Sunny, A.S. 2009). Speech recognition merupakan teknik dimana perangkat akan mengenali masukan berupa suara, setelah itu perangkat melakukan respon yang sesuai dengan masukan suara tersebut (Syarif, A., Daryanto, T. & Arifin, M.J. 2011). Output yang dihasilkan perangkat dapat berupa output penulisan teks maupun output runnning program.

Keuntungan dari sistem ini adalah pada kecepatan dan kemudahan dalam penggunaannya. Kata-kata yang ditangkap dan dikenali bisa sebagai hasil akhir, untuk sebuah aplikasi seperti command & control, penginputan data, dan persiapan dokumen. Banyak metode yang dapat digunakan untuk membangun suatu speech recognition diantaranya metode Dynamic Time Warping (DTW) (Sunny, A.S. 2009), Metode Independent Component Analysis (Tumpak, P. 2005), dan Hidden Markov Model (HMM) (Prasetyo, M.E.B. 2010 ). Penggunaan metode dapat dipilih sesuai keefektifannya.


(22)

Untuk membangun sistem pengenalan suara ini, dibutuhkan model akustik, model bahasa, dan kamus. Setelah itu maka akan dilakukan dua proses lanjutan yaitu tahap pembelajaran dan tahap pengujian.

2.2.1 Model akustik , model bahasa dan kamus a. Model Akustik

Pada tahap pertama pemrosesan sinyal suara input adalah dengan melakukan ekstraksi kepada sinyal suara tersebut. Setelah itu dilanjutkan dengan pembangunan model yang terdiri atas Hidden state (tidak dapat diamati /Hidden) dan feature vector (dapat diamati/observable). Pembangunan model berarti pembangunan data probabilitas transisi antar Hidden state serta data probabilitas emisi (emission) yaitu pembangkitan feature vector oleh Hidden state. Model akustik dapat dinyatakan dalam bentuk tied-state N-phone atau monophone. Jika nilai N adalah dua, model tersebut berbentuk tied-state biphone.

b. Model Bahasa

Model bahasa digunakan dalam speech recognition untuk membantu menentukan probabilitas dari urutan hipotesis kata. Selain itu, probabilitas model bahasa dan model akustik akan membuat system membatasi ruang pencarian selama pengenalan ke arah hanya urutan kata yang memiliki kemungkinan yang besar untuk benar. Jadi, hal ini akan mengurangi ruang pencarian kata sehingga proses pencarian lebih cepat dan tepat. Model bahasa dapat dibangun dengan dua pendekatan, yaitu model bahasa berbasiskan rules dan model bahasa statistik. Model bahasa berbasis rules artinya terdapat rules statis yang didefinisikan. Sedangkan, model bahasa statistic akan memberikan probabilitas dari suatu urutan kata.

1. Model Bahasa berbasis Rules

Grammar statis dari suatu bahasa ditulis. Dalam kasus ini, pengguna hanya boleh mengucapkan kata-kata yang secara eksplisit berada dalam grammar.


(23)

2. Model Bahasa berbasis Statistik

Model bahasa berdasarkan statistik memberikan nilai probabilitas dari suatu urutan kata. Model N-gram adalah yang paling sering digunakan karena menghasilkan solusi yang lebih baik dan fleksibel. Model bahasa N-Gram digunakan untuk menyediakan sistem pengenal dengan nilai probabilitas urutan kata tersebut muncul bersama-sama. Model bahasa N-Gram digunakan untuk menyediakan sistem pengenal dengan nilai probabilitas urutan kata tersebut muncul bersama-sama. Nilai ini diperoleh dari teks latih yang besar yang menggunakan bahasa yang sama. Jika kita menganggap bahwa W adalah urutan kata, w merupakan kata-kata dalam W, dan q adalah jumlah kata, nilai P(W) dapat dilihat pada persamaan berikut.

P(W) = P(w1,w2,…,wq) =

π

i=1P(wi|wi-n+1,…,wi-1)

Untuk memperoleh nilai probabilitas P (wi | wi-2 wi-1) dalam kasus trigram, dilakukan dengan hanya menghitung jumlah masing-masing kemunculan tiga kata secara berturut-turut dalam data latih. Jika N(a,b) menyatakan jumlah kemunculan a,b berturut-turut pada data latih, rumus matematisnya dapat dilihat pada persamaan :

P(w1|wi-2, w1-1) =

3. Kamus

Kamus akan memberikan daftar kata yang dapat dikenali oleh sistem beserta cara pengucapannya. Kata-kata yang dikenali oleh sistem pengenal suara bergantung pada kamus.

Q

N(wi-2, wi-1, wi) N(w1-2, wi-1)


(24)

2.3 Microsoft Speech Application Programming Interface (SAPI)

Speech Application Programming Interface (SAPI) merupakan Application Programming Interface (API) yang dikembangkan oleh Microsoft yang dapat digunakan untuk pengembangan speech recognition dengan sistem operasi yang berbasis windows. Speech Aplication Programming Interface (SAPI) diperkenalkan oleh Microsoft pada tahun 1995. SAPI memungkinkan sistem akan mengenali input suara dari sipengguna dan kemudian akan menghasilkan ouput berupa text. Dengan kata lain Speech Application Programming Interface (SAPI) ini dapat mengubah sinyal suara menjadi text melalui proses ekstraksi yang terjadi di dalamnya. Dalam speech recognition, speech to text terdapat beberapa modul yang disebut engines (Permadi. T, 2008). SAPI telah digunakan dalam windows XP, windows vista, dan windows seven. Banyak versi dari Speech Application Programming Interface (SAPI), diantaranya adalah Speech Application Programming Interface (SAPI) 1, Speech Application Programming Interface (SAPI) 3, Speech Application Programming Interface (SAPI) 4, dan versi terbaru Speech Application Programming Interface (SAPI) 5. Komponen yang terdapat pada Speech Application Programming Interface (SAPI) adalah sebagai berikut.

1. Voice Command

Sebuah obyek level tinggi untuk perintah dan kontrol menggunakan pengenalan suara.

2. Voice Dictation

Sebuah obyek level tinggi untuk continous dictation speech recognition. 3. Voice Talk

Sebuah obyek level tinggi untuk speech synthesis. 4. Voice Telephony

Sebuah obyek untuk menulis aplikasi telepon berbasiskan pengenalan suara. 5. Direct Speech Recognition

Sebuah obyek sebagai mesin untuk mengontrol pengenalan suara (direct control of recognition engine)


(25)

6. Direct Text to Speech

Sebuah obyek sebagai mesin yang mengontrol synthesis. 7. Audio Object

Untuk membaca dari audio device atau sebuah file audio.

Speech Application Programming Interface (SAPI) terdiri dari 2 antarmuka yaitu Application Programming Interface dan Device Driver Interface (DDI) (Permadi. T, 2008) Arsitektur SAPI ini dapat dilihat pada gambar 2.1.

2.3.1 Application Programming Interface (API)

Dalam API terdapat fungsi-fungsi/ perintah-perintah untuk menggantikan bahasa yang digunakan dalam system calls dengan bahasa yang lebih terstruktur dan mudah dimengerti oleh programmer. Fungsi yang dibuat dengan menggunakan API tersebut kemudian akan memanggil system calls sesuai dengan sistem operasinya.

Keuntungan memprogram dengan menggunakan API adalah :

a. Portabilitas dimana programmer yang menggunakan API dapat menjalankan programnya dalam sistem operasi mana saja apabila API sudah ter- install dalam sistem operasi tersebut. Sedangkan system call berbeda antar sistem operasi, dengan catatan dalam pengaplikasiannya ada kemungkinan untuk berbeda.

Gambar 2.1. Arsitektur SAPI

Aplikasi Aplikasi

SAPI Runtime

Recognition Engine

TTS Engine API


(26)

b. Lebih mudah dimengerti.API menggunakan bahasa yang lebih terstruktur dan mudah dimengerti daripada bahasa system call. Hal ini sangat penting dalam hal editing dan pengembangan.

System call interface ini berfungsi sebagai penghubung antara API dan system call yang dimengerti oleh sistem operasi. System call interface ini akan menerjemahkan perintah dalam API dan kemudian akan memanggil system calls yang diperlukan.

2.3.2 Device Driver Interface (DDI)

Device Driver Interface (DDI) berfungsi untuk menerima data masukan yang berupa suara dari Speech Application Programming Interface (SAPI) dan mengembalikan phrase pada level SAPI paling dasar.

2.4 Penelitian Terdahulu

Dalam membangun aplikasi dalam penelitian ini, penulis menggunakan referensi dari beberapa penelitian terdahulu yang telah pernah dilakukan. Adapun penelitian terdahulu yang dimaksud, dapat dilihat pada tabel 2.1.

Tabel 2.1. Penelitian Terdahulu

Peneliti Terdahulu Judul

Permadi, T. 2008.

Pemanfaatan Microsoft Speech

Application Programming Interface Pada Pembuatan Aplikasi Perintah Suara. Junaedih. 2007. Implementasi Speech Recognition

Menggunakan SAPI 5 dan Visual Basic 6.0 Pada Pembuatan Aplikasi Kalkulator Audio Visual.


(27)

Noertjahyana, A. & Adipranata, R. 2003 Implementasi Sistem Pengenalan Suara Menggunakan SAPI 5.1 dan DELPHI 5

Dari tabel 2.1, dapat dilihat bahwa penelitian terdahulu cenderung melakukan penelitian mengenai speech recognition untuk suatu aplikasi perintah suara. Oleh sebab itu penulis melakukan penelitian untuk membangun suatu aplikasi pembelajaran menggunakan Speech Application Programming Interface (SAPI) 5.


(28)

BAB 3

ANALISIS DATA DAN PERANCANGAN

3.1 Identifikasi Masalah

Pendidikan di Indonesia terus berkembang. Salah satunya adalah pendidikan Bahasa Indonesia. Bahasa dapat didefenisikan sebagai kode yang diterima secara sosial atau sistem konvensional untuk menyampaikan konsep melalui kegunaan simbol-simbol yang dikehendaki dan kombinasi simbol-simbol yang diatur oleh ketentuan. Bahasa Indonesia merupakan bahasa yang dijadikan sebagai bahasa resmi Republik Indonesia dan bahasa persatuan bangsa Indonesia. Bahasa Indonesia diresmikan penggunaannya setelah Proklamasi Kemerdekaan Indonesia, tepatnya sehari sesudahnya. Meskipun demikian, penerapan bahasa Indonesia dalam kehidupan sehari hari, sering dipengaruhi oleh istilah istilah bahasa asing, itu sebabnya dalam dunia pendidikan mata pelajaran Bahasa Indonesia dimulai sejak anak memasuki usia yang telah dapat membaca dan menulis.

Banyak yang menjadi pokok permasalahan dalam pelajaran Bahasa Indonesia bagi anak, salah satunya adalah mengenai kata baku dan tidak baku. Bagi anak-anak yang berusia 9 sampai 15 tahun, pengetahuan mengenai kata baku dan tidak baku masih sangat minim dikarenakan faktor kebiasaan dalam melakukan percakapan sehari hari yang lebih sering menggunakan kata tidak baku daripada kata baku. Sering sekali anak-anak yang berusia 9 sampai 15 tahun lebih dihadapkan kepada proses pembelajaran menghafal biasa untuk mengetahui kata baku. Tentunya dengan metode menghafal saja, anak-anak merasa kurang tertarik. Banyak cara yang dapat dilakukan untuk menambah daya tarik anak untuk mengetahui dan menghafal kata baku bahasa Indonesia, salah satunya dengan permainan berbasis teknologi.

Permainan atau game tidak hanya sebagai penghibur saja, melainkan dapat juga dimanfaatkan sebagai salah satu media pembelajaran bagi anak-anak. Banyak


(29)

permainan/ game yang mengandung makna pendidikan, salah satunya adalah permainan menebak kata baku Bahasa Indonesia.

Dari uraian di atas dapat disimpulkan identifikasi masalah yang ada sebagai berikut : 1. Anak-anak yang berusia 9 sampai 15 tahun masih mengalami kesulitan

untuk membedakan mana kata baku dan tidak baku.

2. Pengetahuan kosakata baku bahasa Indonesia anak yang berumur 9 sampai 15 tahun masih sedikit.

3.2 Analisis Data

Dalam pembuatan aplikasi ini terdapat tiga database yaitu Database kata baku, database kata tidak baku, dan database kata kunci (hint).

3.2.1 Database Kata Baku

Database kata baku merupakan data kata kata baku yang penulisannya disesuaikan dengan ejaan yang disempurnakan. Kamus Besar Bahasa Indonesia sebagai sumber utamanya.

Tabel 3.1. data kata baku

id_text id_kata

t_Apotek database kata baku Apotek t_Atlet database kata baku Atlet t_Hakikat database kata baku Hakikat t_Formal database kata baku Formal t_Atmosfer database kata baku Atmosfer t_Konkret database kata baku Konkret


(30)

t_Kaidah database kata baku Kaidah t_Nasihat database kata baku Nasihat dst

3.2.2 Database Kata Tidak Baku

Database Kata Tidak Baku ini adalah data dari kata kata tidak baku, yang penulisannya tidak sesuai dengan Kamus Besar Bahasa Indonesia.

Tabel 3.2. Data Kata Tidak Baku

id_text id_kata

t_Apotik database kata tidak baku Apotek t_Atlit database kata tidak baku Atlet t_Hakekat database kata tidak baku Hakikat t_Formil database kata tidak baku Formal t_Atmosfir database kata tidak baku Atmosfer t_Konkrit database kata tidak baku Konkret t_Kaedah database kata tidak baku Kaidah t_Nasehat database kata tidak baku Nasihat dst


(31)

3.2.3 Database kata kunci (hint)

Database kata kunci (hint) merupakan database yang berisi pertanyaan yang berfungsi untuk membantu sipengguna aplikasi dalam menebak kemungkinan kata yang dapat dibentuk dari huruf yang teracak.

Tabel 3.3. data kata kunci (hint)

id_hint id_kata

h_tempat menjual obat-obatan kunci untuk kata Apotek h_Orang yang bertanding dalam

bidang olahraga

kunci untuk kata Atlet

t_Sesuatu yang benar benar nyata kunci untuk kata Hakikat t_Situasi dan keadaan yang sah kunci untuk kata Formal t_lapisan gas yang melingkupi

bumi

kunci untuk kata Atmosfer

t_Situasi yang dapat dilihat kasatmata, berwujud, terbukti

kunci untuk kata Konkret

t_Kata lain dari norma/ hukum kunci untuk kata Kaidah t_Ajaran baik/ anjuran baik kunci untuk kata Nasihat dst


(32)

3.3 Analisis Sistem

Analisis sistem adalah suatu proses mengumpulkan dan menginterpretasikan kenyataan-kenyataan yang ada, mendiagnosa persoalan dan menggunakan keduanya untuk memperbaiki sistem.

Adapun tujuan Analisis Sistem adalah :

1. Memberikan pelayanan kebutuhan informasi kepada fungsi manajerial di dalam pengendalian pelaksanaan kegiatan operasional perusahaan

2. Membantu para pengambil keputusan 3. Mengevaluasi sistem yang telah ada

4. Merumuskan tujuan yang ingin dicapai berupa pengolahan data maupun pembuatan laporan baru

5. Menyusun suatu tahap rencana pengembangan sistem yang perlu diperhatikan oleh Analisis Sistem

6. Mempelajari permasalahan yang ada secara terinci

7. Menentukan pendekatan yang akan digunakan dalam memecahkan masalah

8. Membuat suatu pertimbangan apakah perlu atau tidak menggunakan cara komputerisasi.

Analisis sistem juga berkaitan dengan tahapan tahapan yang ada dalam suatu penelitian. Dalam penelitian ini terdapat tahapan tahapan sebagai berikut :

1. User akan dihadapkan dengan aplikasi pada komputer menggunakan alat bantu microphone

2. Setelah aplikasi dijalankan, muncul huruf acak dari kata baku dan tidak baku 3. User akan menebak kemungkinan kata yang dapat dibentuk dari huruf acak yang

muncul menggunakan suara

4. Kemudian suara tersebut akan diolah dalam teknik speech recognition pada SAPI 5. Selanjutnya dilakukan proses ekstraksi suara

6. Setelah proses ekstraksi maka dilakukanlah pencocokan kata yang terdeteksi dengan kata yang ada dalam database


(33)

7. Setelah proses pencocokan selesai, dilakukan proses model bahasa untuk mencari probabilitas tertinggi dari kata yang diucapkan untuk disesuaikan terhadap kata yang ada dalam database.

Bentuk flowchart dari tahapan di atas dapat dilihat pada gambar 3.1.

Mulai

Sinyal suara diterima

Proses Menganalisis Suara

Proses Ekstraksi

Sinyal digital diubah menjadi kata /

speech to text

Kata dibandingkan database kata

sesuai

Kata yang memiliki probabilitas tertinggi digunakan sebagai model

bahasa Ya


(34)

Gambar 3.1. flowchart proses sistem

3.3.1 Proses Menganalisis Suara

Pada proses ini sistem melakukan tahap menganalisa suara yang menjadi input. Proses ini berfungsi untuk mengklasifikasikan model suara. Setelah diklasifikasikan, sistem akan melanjutkan ke proses Ekstraksi dari model suara yang telah diklasifikasikan. 3.3.2. Proses Ekstraksi

Proses ekstraksi merupakan sebuah proses dimana suara akan diubah menjadi sebuah sinyal digital. Sinyal digital ini berfungsi agar sistem dapat mengubah input suara menjadi text.

3.3.3. Sinyal digital diubah menjadi kata/ speech to text

Dalam proses ini, sinyal digital yang dihasilkan dari proses sebelumnya akan diubah menjadi teks tulisan yang mana tulisan ini nantinya akan disesuaikan dengan database yang ada.

Model bahasa dilanjutkan untuk mendapatkan output dari

sistem

selesai


(35)

3.3.4 Output Sistem

Output sistem merupakan hasil akhir dari aplikasi dimana suara telah berhasil diubah menjadi text, kemudian text tersebut disesuaikan dengan database kata yang ada. Maka hasil akhirnya adalah output berupa benar tidaknya kata yang diucapkan.

3.4 Perancangan Sistem

3.4.1 Diagram Use-Case

Use-case diagram adalah gambaran graphical dari beberapa atau semua actor, use-case, dan interaksi diantara komponen-komponen tersebut yang memperkenalkan suatu sistem yang akan dibangun. Use-case diagram juga menjelaskan manfaat suatu sistem jika dilihat menurut pandangan orang yang berada di luar sistem. Diagram ini menunjukkan fungsionalitas suatu sistem atau kelas dan bagaimana sistem tersebut berinteraksi dengan dunia luar. Use-case dapat dilingkupi dengan batasan sistem yang diberi label nama sistem.

Pada saat membangun sebuah aplikasi, use-case diagram dapat digunakan sebagai gambaran umum dari aplikasi yang dibangun. Hal ini dikarenakan use case diagram dapat memodelkan dan menyatakan unit fungsi/ layanan yang disediakan oleh sistem (bagian sistem: subsistem atau class) ke pemakai. Secara umum use-case adalah gambaran fungsionalitas dari suatu sistem, sehingga customer atau pengguna sistem paham dan mengerti mengenai kegunaan sistem yang akan dibangun.

Use-case diagram dapat digunakan selama proses analisis untuk menangkap requirement system dan untuk memahami bagaimana sistem seharusnya bekerja. Selama tahap desain, use-case diagram berperan untuk menetapkan perilaku (behavior) sistem saat diimplementasikan. Use case diagram dari aplikasi yang dibangun dapat dilihat pada gambar 3.2.


(36)

3.4.2 Penjelasan gambar 3.2. Diagram Use Case

Berikut penjelasan dari gambar diagram Use Case di atas

1. Halaman utama ; merupakan tampilan awal pertama kali aplikasi dijalankan, di dalamnya terdapat menu pilihan mulai, bantuan, tentang pengembang, keluar dari aplikasi.

2. Menu mulai ; menu untuk memulai permainan, dalam halaman ini terdapat, icon mengulang dan icon kembali menuju halaman utama.

Mulai

Bantuan

Tentang Pengembang

Keluar

Score

Ulangi dari awal

Kembali Kembali Halaman Utama

USER

Gambar 3.2. Diagram Use Case


(37)

a. Score ; jumlah poin yang didapat berdasarkan jumlah kata yang benar ditebak. Satu kata bernilai satu poin.

b. Icon megulang ; Berfungsi untuk mengulang game dari score 0

c. Icon kembali ; Berfungsi untuk mengembalikan tampilan ke halaman utama 3. Menu bantuan ; menu yang akan menampilkan penjelasan tentang cara bermain,

dalam halaman menu bantuan juga terdapat icon kembali menuju halaman utama. 4. Menu tentang pengembang; halaman ini berisi tentang proses pengembangan

aplkasi dan tujuan dibangunnya aplikasi tersebut. Dalam menu ini juga terdapat icon kembali menuju halaman utama.

5. Menu keluar ; menu untuk keluar dari aplikasi 3.4.3 ClassDiagram

Gambar 3.3. ClassDiagram

Gambar 3.3 merupakan gambar dari Class Diagram. Class Diagram digunakan untuk memvisualisasikan hubungan antar kelas dan penjelasan detail tiap-tiap kelas dalam model desain. Model desain menggambarkan objek-objek dan hubungan antar objek

-Screen + Class

AboutScreen + Class + Screen

HomeScreen + Class + Screen

PlayScreen + Class + Screen

HelpScreen + Class + Screen

Game1 + Class + Game

Program + StaticClass

SpeecRecognizer

+ Class

TextureContent


(38)

objek tersebut dalam abstraksi yang mendekati source code. Tujuannya adalah untuk memudahkan untuk melakukan coding dari sistem yang dibuat.

3.5 Perancangan Tampilan Antarmuka

Perancangan Tampilan Antarmuka adalah penjelasan interaksi antara user (pengguna aplikasi) dengan program yang akan dibuat. Pada sub bab ini digambarkan rancangan antarmuka yang akan dibangun pada aplikasi menebak kata baku menggunakan suara.

3.5.1 Rancangan Tampilan Halaman Utama

Gambar 3.4. Perancangan antarmuka Halaman utama Keterangan :

Halaman utama merupakan tampilan awal dari aplikasi yang akan dibangun. Dalam halaman ini terdapat Judul Aplikasi Permainan, penjelasan dari kata baku dan


(39)

tidak baku serta ada empat menu pilihan yaitu menu mulai, bantuan, tentang pengembang, dan menu keluar.

3.5.2 Rancangan Tampilan Halaman Menu Mulai

Gambar 3.5. Perancangan antarmuka halaman menu Mulai Keterangan :

Apabila sipengguna mengklik menu mulai sebelum kata ditebak, maka tampilan aplikasinya akan seperti gambar 3.5. Pada halaman menu mulai terdapat icon untuk kembali ke halaman utama, dan icon untuk mengulang permainan. Di halaman menu mulai ini, juga akan muncul huruf huruf acak yang dapat membentuk suatu kata baku. Dalam halaman ini juga terdapat kalimat bantu untuk mempermudah sipengguna dalam menebak kata.


(40)

3.5.3 Rancangan Tampilan Halaman Menu Mulai Jika Jawaban Benar

Gambar 3.6. Perancangan antarmuka halaman menu mulai, jika jawaban benar Keterangan :

Halaman menu mulai, jika jawaban benar maksudnya adalah ketika sipengguna mengklik tombol menu mulai pada halaman utama dan menebak kata acak yang muncul dengan benar. Tampilan pernacangan antarmukanya dapat dilihat seperti pada gambar 3.6, dimana pada halaman muncul tanda checklist yang menandakan bahwa jawaban benar. Setelah ditebak maka akan muncul kata baku dan tidak baku yang dapat dibentuk dari huruf huruf acak.


(41)

3.5.4 Rancangan Tampilan Halaman Menu Mulai Jika Jawaban Salah

Gambar 3.7. Perancangan antarmuka halaman menu mulai jika jawaban salah Keterangan :

Halaman menu mulai, jika salah maksudnya adalah halaman ketika pengguna mengklik tombol menu mulai pada halaman utama akan tetapi sipengguna salah pada saat menebak kata dari huruf huruf yang diacak. Tampilan dari kondisi ini pada aplikasi yang dibangun dapat dilihat pada gambar 3.7, dimana aplikasi memberi tanda salah yang berarti sipengguna salah dalam pengucapan/ menebak kata. Ketika salah menjawab, maka pohon yang berada disudut atas sebelah kanan akan berkurang. Tebakan yang salah ataupun benar, aplikasi selalu menunjukkan apa sebenarnya kata baku yang dimaksud pada huruf huruf yang diacak.


(42)

3.5.5 Rancangan Tampilan Halaman Permainan Selesai (Game Over)

Gambar 3.8. Perancangan antarmuka permainan selesai (game over) Keterangan :

Pada halaman ini terdapat kata game over. Halaman ini akan muncul apabila pengguna salah menjawab sebanyak tiga kali. Gambar pohon yang berada di sudut atasa sebelah kanan aplikasi akan hilang yang menandakan sipengguna telah salah menjawab sebanyak tiga kali.


(43)

3.5.6 Tampilan Rancangan Halaman Menu Bantuan

Gambar 3.9. Perancangan antarmuka halaman menu bantuan Keterangan :

Jika sipengguna mengklik tombol menu bantuan yang ada di halaman utama, maka pengguna akan dihadapkan dengan tampilan seperti pada gambar 3.9. Dalam halaman tampilan tersebut, terdapat penjelasan seperti mengenai jenis permainan yang dibangun dan cara penggunaannya. Dalam halaman ini juga terdapat icon kembali, yang apabila diklik oleh pengguna, maka akan kembali ke halaman utama.


(44)

3.5.7 Rancangan Halaman Menu Tentang Pengembang

Gambar 3.10. Perancangan antarmuka menu tentang pengembang Keterangan :

Jika sipenguna mengklik tombol menu tentang pengembang, maka tampilan antarmukanya dapat dilihat seperti pada gambar 3.10. Menu tentang pengembang merupakan menu yang berisi halaman tentang siapa yang membangun, dan tujuan dibangunnya aplikasi tersebut. Pada halaman ini terdapat juga icon kembali yang berfungsi untuk mengembalikan ke halaman utama.


(45)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

Setelah proses Analisis Data dan Perancangan, akan dilakukan tahapan lanjutan yaitu tahapan implementasi dan pengujian. Implementasi dan Pengujian berfungsi untuk memastikan apakah aplikasi sudah berjalan sesuai dengan yang diinginkan. Berikut penjelasan mengenai Implementasi dan Pengujian yang dilakukan kepada sistem yang dibangun

4.1 Implementasi Sistem

Implementasi sistem merupakan proses untuk menempatkan informasi baru ke dalam operasi. Implementasi Sistem mempunyai 4 tahap, yaitu :

1. Membuat dan menguji basis data dan jaringan.

Penerapan sistem yang baru atau perbaikan sistem dibuat pada basis data dan jaringan yang telah ada. Jika penerapan sistem yang baru memerlukan basis data dan jaringan yang baru atau dimodifikasi, maka sistem yang baru ini biasanya harus diimplementasikan sebelum pemasangan program komputer.

2. Membuat dan menguji program.

Merupakan tahap pertama untuk siklus pengembangan sistem yang spesifik bagi programer. Bertujuan untuk mengembangkan rencana yang lebih rinci dalam pengembangan dan pengujian program komputer yang baru.

3. Memasang dan menguji sistem baru.

Tahap ini dilakukan untuk menyakinkan bahwa kebutuhan integrasi sistem baru terpenuhi.


(46)

4. Mengirim sistem baru kedalam sistem operasi.

Tujuan tahap ini adalah untuk mengubah secara perlahan – lahan sistem lama menjadi sistem baru sehingga perlu dilakukan pemasangan basis data yang akan digunakan pada sistem baru.

Sesuai dengan Analisis Data dan Perancangan, maka dilakukanlah implementasi perancangan menjadi suatu aplikasi pembelajaran dalam bentuk permainan menebak kata, yang berguna untuk membantu anak anak yang berusia 8 sampai 15 tahun untuk mengetahui dan mengingat kembali kata baku, serta mengetahui apa yang menjadi kata tidak bakunya.

Lingkupan implementasi dalam membangun sistem ini ada dua, yaitu perangkat keras (hardware) dan perangkat lunak (software).

4.1.1 Perangkat Keras (Hardware) dan Perangkat Lunak (Software)

Dalam pembuatan sistem ini, menggunakan perangkat keras dengan spesifikasi sebagai berikut :

1. Processor Intel® Core™ i5-3210M CPU @ 2.50Ghz (4CPUs), 2.5Ghz 2. Memori, 4 Gb

3. Hardisk, 700 Gb 4. Microphone

Perangkat Lunak (software) yang digunakan adalah : 1. Windows seven Ultimate 64bit

2. CorelDraw 12


(47)

4.1.2 Tampilan Halaman Utama

Tampilan halaman utama adalah tampilan pertama yang dapat dilihat oleh sipengguna ketika menjalankan aplikasi. Dalam halaman utama ini terdapat empat menu yaitu mulai, bantuan, tentang pengembang, dan keluar. Tampilan dapat dilihat pada gambar 4.1.


(48)

4.1.3 Tampilan Halaman Menu Mulai

Tampilan menu mulai maksudnya adalah tampilan dari aplikasi saat pengguna mengklik menu mulai. Dalam halaman ini, akan muncul beberapa huruf acak dimana huruf acak tersebut dapat membentuk satu kata baku dan tida baku dari pengertian dan arti yang sama. Tampilan halaman ini dapat dilihat pada gambar 4.2.


(49)

4.1.4 Tampilan Halaman Menu Bantuan

Menu bantuan merupakan halaman pengenalan aplikasi permainan dan juga panduan dari cara penggunaan aplikasi permainan tersebut. Tampilan halaman dari menu bantuan ini dapat dilihat pada gambar 4.3.


(50)

4.1.5 Tampilan Halaman Menu Tentang Pengembang

Menu tentang pengembang adalah menu yang berisi content mengenai pengembang aplikasi serta tujuan dibangunnya aplikasi tersebut. Menu ini juga berisi tentang identitas yang membangun aplikasi tersebut. Tampilan halaman dari menu tentang pengembang dapat dilihat pada gambar 4.4


(51)

4.2 Pengujian

Tahap pengujian sistem adalah tahapan yang dilakukan untuk menguji sistem atau aplikasi yang dibangun apakah sudah layak di gunakan atau tidak, menguji apakah ada terdapat kekurangan atau yang lainnya. Pada sistem yang dibangun ini, ada dua tahap pengujian yang dilakukan yaitu tahap pengujian menebak dengan benar kata baku yang dapat dibentuk dari huruf huruf yang diacak dan tahap pengujian menebak kata dengan salah.

4.2.1 Tahap pengujian menebak kata dengan benar

Pada tahap ini, huruf huruf acak yang ada akan dijawab dengan benar sesuai pembacaan dari penulisan kata bakunya. Apabila pada tahap ini aplikasi sudah dapat mengenali input kata yang benar tersebut yang kemudian dicocokkan dengan data yang ada pada database dan aplikasi memunculkan icon checklist yang berarti jawaban benar, maka sistem yang dimaksud sudah sesuai dengan rancangan yang diinginkan. Pengujian tahapan ini dapat dilihat pada gambar 4.5


(52)

4.2.2 Tahap pengujian menebak kata dengan salah

Pada tahap ini, huruf-huruf acak yang ada akan ditebak dengan salah, dimana kata yang ditebak tidak sesuai pembacaan dari penulisan kata bakunya. Apabila pada tahap ini aplikasi memunculkan icon silang yang berarti jawaban salah dan gambar pohon yang berada si sudut atas sebelah kanan berkurang, maka sistem yang dimaksud sudah sesuai dengan rancangan yang diinginkan. Pengujian tahapan ini dapat dilihat pada gambar 4.6

Dalam tahap ini juga dilakukan pengujian menebak dengan kata yang salah sebanyak tiga kali sampai gambar pohon yang disudut atas sebelah kanan terhapus. Apabila setelah tiga kali menebak dengan kata yang salah permainan berakhir (game over), maka aplikasi yang dibangun ini sudah sesuai dengan rancangan awal. Tahap pengujian ini dapat dilihat pada gambar 4.7.


(53)

Setelah melakukan tahapan implementasi dan pengujian tersebut, dilakukanlah suatu percobaan sendiri terhadap aplikasi yang telah dibangun yang bertujuan untuk mencari kesimpulan tentang kepekaan aplikasi dalam hal menerima input suara dalam bahasa Indonesia.Hasil percobaan dapat dilihat pada tabel 4.1.

Tabel 4.1 percobaan aplikasi menggunakan 5 pertanyaan berbeda Soal (Kata Baku) Banyak Percobaan Menjawab Benar/ Salah

Sistem

Percobaan 1 Benar

Percobaan 2 Benar

Percobaan 3 Benar

Hipotesis

Percobaan 1 Benar

Percobaan 2 Salah

Percobaan 3 Benar


(54)

Metode

Percobaan 1 Benar

Percobaan 2 Salah

Percobaan 3 Salah

Moral

Percobaan 1 Benar

Percobaan 2 Benar

Percobaan 3 Benar

Masjid

Percobaan 1 Benar

Percobaan 2 Benar

Percobaan 3 Salah

Dari tabel 4.1, dapat dilihat persentase keberhasilan sistem dalam mengenali input suara pada grafik berikut ini

Gambar 4.8 Grafik Persentase Tiap-Tiap Soal Yang Diuji

100%

67%

33%

100%

67%

0% 20% 40% 60% 80% 100% 120%

Sistem Hipotesis Metode Moral Masjid


(55)

Dari gambar 4.8 grafik persentase tiap-tiap soal yang diuji, dapat dilihat bahwa keberhasilan kepekaan sistem/ aplikasi dalam mengenal masukan suara belum 100%.

Dari tiga kali percobaan, untuk kata “sistem” dan kata “Moral”, aplikasi dapat

mengenali input suara dengan baik. Kata “Hipotesis” dan “Masjid” dari tiga kali percobaan aplikasi hanya dapat mengenali input dengan benar sebanyak dua kali.

Sedangkan untuk kata “Metode”, aplikasi hanya dapat mengenal input dengan benar sebanyak satu kali. Dari beberapa kata yang diuji tersebut, dapat disimpulkan bahwa aplikasi hanya memiliki kepekaan terhadap input suara sebesar 70 sampai 75 %.


(56)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari pembangunan aplikasi ini, maka dapat diambil beberapa kesimpulan sebagai berikut :

1. Aplikasi menebak kata baku dalam bentuk permainan pada komputer ini dapat membantu anak-anak yang berusia 9 sampai 15 tahun dalam hal pembelajaran untuk mengetahui kata baku dan tidak baku bahasa Indonesia.

2. Keakuratan aplikasi untuk mengenal input suara belum 100%, dikarenakan Speech Application Programming Interface (SAPI) belum peka terhadap kata dalam bahasa Indonesia.

5.2 Saran

Adapun saran saran untuk penelitian berikutnya guna pengembangan yang lebih lanjut adalah sebagai berikut :

1. Aplikasi dibangun dengan menambahkan waktu terbatas untuk menebak kata dari huruf-huruf yang teracak. Hal ini bertujuan agar anak-anak berpacu dengan waktu sehingga lebih tanggap untuk menebak kata.

2. Dalam hal kemampuan aplikasi untuk mengenal input suara kata bahasa Indonesia, agar aplikasi lebih peka terhadap input suara dalam bahasa Indonesia.


(57)

DAFTAR PUSTAKA

Junaedih. 2007. Implementasi Speech Recognition Menggunakan SAPI 5 dan Visual Basic 6.0 Pada Pembuatan Aplikasi Kalkulator Audio Visual. Indonesia: Teknik Informatika Universitas Islam Negeri Syarif Hidayatullah.

Noertjahyana, A. & Adipranata, R. 2003. Implementasi Sistem Pengenalan Suara Menggunakan SAPI 5.1 dan DELPHI 5. Indonesia : Teknik Informatika Universitas Kristen Petra.

Permadi, T. 2008. Pemanfaatan Microsoft Speech Application Programming Interface Pada Pembuatan Aplikasi Perintah Suara. Indonesia : Universitas

Pembangunan Nasional “Veteran” Jakarta.

Prasetyo, M.E.B. 2010. Teori Hidden Markov Model. Indonesia : Institut Teknologi Bandung.

Sunny, A.S. 2009. Speech Recognition Menggunakan Algoritma Program Dinamis. Indonesia : Teknik Informatika Institut Teknologi Bandung.

Syarif, A., Daryanto, T. & Arifin, M.J. 2011. Aplikasi Speech Application Programming Interface (SAPI) 5.1 Sebagai Perintah Untuk Pengoperasian Aplikasi Berbasis Windows. Indonesia : Universitas Mercu Buana.

Tumpak, P., Suwastio, H., & Iwut I. T. 2005. Metode Independent Component Analysis Pada Sistem Automatic Speech Recognition. Indonesia : Teknik Elktro Sekolah Tinggi Teknologi Telkom.


(58)

LAMPIRAN 1 LISTING PROGRAM //Halaman HomeScreen.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Input; namespace KataBakuGame {

class HomeScreen : Screen {

Texture2D bgTexture; Rectangle bgPosition; /* Start Button */

Rectangle startBtnPosition; Texture2D btnStart;

Texture2D startActive; Texture2D startHover; /* Help button */

Rectangle helpPosition; Texture2D btnHelp; Texture2D helpActive; Texture2D helpHover; /* About button */

Rectangle aboutPosition; Texture2D btnAbout; Texture2D aboutActive; Texture2D aboutHover; /* Exit button */

Rectangle exitPosition; Texture2D btnExit; Texture2D exitActive; Texture2D exitHover; SpriteFont menuFont;

public HomeScreen(ContentManager theContent, GraphicsDevice graphicDevice, EventHandler theScreenEvent)

: base(theScreenEvent) {


(59)

bgPosition = new Rectangle(0, 0,

graphicDevice.Viewport.Width, graphicDevice.Viewport.Height); bgTexture = theContent.Load<Texture2D>("image/home"); menuFont = theContent.Load<SpriteFont>("menuFont"); /* Start button load */

startActive = theContent.Load<Texture2D>("image/btn-mulai");

startHover = theContent.Load<Texture2D>("image/btn-mulai hover");

btnStart = startActive;

startBtnPosition = new Rectangle(310, 440, 160, 25); /* Help button load */

helpActive = theContent.Load<Texture2D>("image/btn-help");

helpHover = theContent.Load<Texture2D>("image/btn-help hover");

btnHelp = helpActive;

helpPosition = new Rectangle(90, 173, 160, 25); /* About button load */

aboutActive = theContent.Load<Texture2D>("image/btn-about");

aboutHover = theContent.Load<Texture2D>("image/btn-about hover");

btnAbout = aboutActive;

aboutPosition = new Rectangle(473, 173, 250, 25); /* Exit button load */

exitActive = theContent.Load<Texture2D>("image/btn-exit");

exitHover = theContent.Load<Texture2D>("image/btn-exit hover");

btnExit = helpActive;

exitPosition = new Rectangle(300, 545, 180, 25); }

//Update all of the elements that need updating in the Controller Detect Screen

public override void Update(GameTime theTime) {

//Poll all the gamepads (and the keyboard) to check to see

//which controller will be the player one controller. When the controlling

//controller is detected, call the screen event associated with this screen

MouseState mouse = Mouse.GetState();

if (mouse.LeftButton == ButtonState.Pressed) {

Point pointer = new Point(mouse.X, mouse.Y); if (startBtnPosition.Contains(pointer)) {


(60)

Game1.MOUSE_DOWN.Play();

ScreenEvent.Invoke(Game1.PLAY, new EventArgs()); return;

}

else if (aboutPosition.Contains(pointer)) {

Game1.MOUSE_DOWN.Play();

ScreenEvent.Invoke(Game1.ABOUT, new EventArgs()); return;

}

else if (helpPosition.Contains(pointer)) { Game1.MOUSE_DOWN.Play(); ScreenEvent.Invoke(Game1.HOW_TO_PLAY, new EventArgs()); return; }

else if (exitPosition.Contains(pointer)) {

Game1.MOUSE_DOWN.Play();

ScreenEvent.Invoke(Game1.EXIT, new EventArgs()); return;

} }

/* Hover event hendler */

Rectangle hoverPosition = new Rectangle(mouse.X, mouse.Y, 1, 1);

if (hoverPosition.Intersects(startBtnPosition)) {

btnStart = startHover;

Game1.CURSOR_CSTM = Game1.CURSOR_HOVER; }

else if (hoverPosition.Intersects(helpPosition)) {

btnHelp = helpHover;

Game1.CURSOR_CSTM = Game1.CURSOR_HOVER; }

else if (hoverPosition.Intersects(aboutPosition)) {

btnAbout = aboutHover;

Game1.CURSOR_CSTM = Game1.CURSOR_HOVER; }

else if (hoverPosition.Intersects(exitPosition)) {

btnExit = exitHover;

Game1.CURSOR_CSTM = Game1.CURSOR_HOVER; }

else {

btnStart = startActive; btnHelp = helpActive; btnAbout = aboutActive; btnExit = exitActive; }


(61)

base.Update(theTime); }

//Draw all of the elements that make up the Controller Detect Screen

public override void Draw(SpriteBatch spriteBatch) {

spriteBatch.Draw(bgTexture, bgPosition, Color.White); spriteBatch.Draw(btnStart, startBtnPosition, Color.Red); spriteBatch.Draw(btnHelp, helpPosition, Color.Red); spriteBatch.Draw(btnAbout, aboutPosition, Color.Red); spriteBatch.Draw(btnExit, exitPosition, Color.Red); base.Draw(spriteBatch); } } } // HelpScreen.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Input; namespace KataBakuGame {

class HelpScreen : Screen { Texture2D bgTexture; Rectangle bgPosition; Texture2D btnBack; Rectangle btnBackPosition; SpriteFont menuFont; SpriteFont normalFont;

public HelpScreen(ContentManager theContent, GraphicsDevice graphicDevice, EventHandler theScreenEvent)

: base(theScreenEvent) {

bgPosition = new Rectangle(0, 0,

graphicDevice.Viewport.Width, graphicDevice.Viewport.Height); bgTexture = theContent.Load<Texture2D>("image/bg"); menuFont = theContent.Load<SpriteFont>("menuFont"); normalFont = theContent.Load<SpriteFont>("normalFont"); btnBack =

theContent.Load<Texture2D>("image/appbar.arrow.left");

btnBackPosition = new Rectangle(5, 500, 50, 50); }


(62)

//Update all of the elements that need updating in the Controller Detect Screen

public override void Update(GameTime theTime) {

//Poll all the gamepads (and the keyboard) to check to see

//which controller will be the player one controller. When the controlling

//controller is detected, call the screen event associated with this screen

MouseState mouse = Mouse.GetState();

if (mouse.LeftButton == ButtonState.Pressed) {

Point pointer = new Point(mouse.X, mouse.Y); if (btnBackPosition.Contains(pointer))

{

Game1.MOUSE_DOWN.Play();

ScreenEvent.Invoke(Game1.HOME, new EventArgs()); return;

} }

/* Hover event hendler */

Rectangle hoverPosition = new Rectangle(mouse.X, mouse.Y, 1, 1);

if (hoverPosition.Intersects(btnBackPosition)) {

Game1.CURSOR_CSTM = Game1.CURSOR_HOVER; }

}

//Draw all of the elements that make up the Controller Detect Screen

public override void Draw(SpriteBatch spriteBatch) {

spriteBatch.Draw(bgTexture, bgPosition, Color.Yellow); spriteBatch.DrawString(menuFont, " - Bantuan -", new Vector2(245, 169), Color.White);

spriteBatch.DrawString(normalFont,

"Aplikasi ini merupakan salah satu game yang pembelajaran. Dimana game ini bertujuan sebagai \n" +

" salah satu media pembelajaran dalam pengenalan tulisan kata baku Bahasa Indonesia.\n" +

"Kamu dapat bermain dengan cara mengklik tombol mulai. Setelah itu akan muncul huruf huruf acak \n" +

" Huruf huruf acak tersebut dapat membentuk satu kata baku dan tidak baku. Kamu akan dibantu \n" +

" dengan 'hint', yaitu kalimat yang dapat dijadikan petunjuk dan kata kunci untuk menebak kata\n" +

" dari huruf huruf acak tersebut menggunakan suara kamu. Salah atau benar, aplikasi akan \n" +

" memberitahu jawaban kata baku dan tidak baku yang sebenarnya dari huruf yang diacak. \n" +


(63)

" Jika kamu menebak dengan benar, maka kamu mendapatkan satu score atau point. \n" +

" Permainan selesai jika Anda salah tiga kali.\n" +

" \n" +

" Selamat Mencoba !!! ", new Vector2(120, 220), Color.White);

spriteBatch.Draw(btnBack, btnBackPosition, Color.White); base.Draw(spriteBatch); } } } // AboutScreen.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; namespace KataBakuGame {

class AboutScreen : Screen { Texture2D bgTexture; Rectangle bgPosition; Texture2D btnBack; Rectangle btnBackPosition; Texture2D logoUSU; Rectangle logoUSUPosition; SpriteFont menuFont; SpriteFont normalFont;

public AboutScreen(ContentManager theContent, GraphicsDevice graphicDevice, EventHandler theScreenEvent)

: base(theScreenEvent) {

bgPosition = new Rectangle(0, 0,

graphicDevice.Viewport.Width, graphicDevice.Viewport.Height); bgTexture = theContent.Load<Texture2D>("image/bg"); menuFont = theContent.Load<SpriteFont>("menuFont"); normalFont = theContent.Load<SpriteFont>("normalFont"); logoUSU = theContent.Load<Texture2D>("image/logo usu"); logoUSUPosition = new Rectangle(345, 400, 130, 130); btnBack =


(64)

btnBackPosition = new Rectangle(5, 500, 50, 50); }

//Update all of the elements that need updating in the Controller Detect Screen

public override void Update(GameTime theTime) {

//Poll all the gamepads (and the keyboard) to check to see

//which controller will be the player one controller. When the controlling

//controller is detected, call the screen event associated with this screen

MouseState mouse = Mouse.GetState();

if (mouse.LeftButton == ButtonState.Pressed) {

Point pointer = new Point(mouse.X, mouse.Y); if (btnBackPosition.Contains(pointer))

{

Game1.MOUSE_DOWN.Play();

ScreenEvent.Invoke(Game1.HOME, new EventArgs()); return;

} }

/* Hover event hendler */

Rectangle hoverPosition = new Rectangle(mouse.X, mouse.Y, 1, 1);

if (hoverPosition.Intersects(btnBackPosition)) {

Game1.CURSOR_CSTM = Game1.CURSOR_HOVER; }

}

//Draw all of the elements that make up the Controller Detect Screen

public override void Draw(SpriteBatch spriteBatch) {

spriteBatch.Draw(bgTexture, bgPosition, Color.Yellow); spriteBatch.DrawString(menuFont, " \n" + "- Tentang Pengembang -", new Vector2(245, 169), Color.White);

spriteBatch.DrawString(normalFont, " \n" + " \n" +

" \n" +

" Game ini dikembangkan oleh \"Andi Sianturi\" sebagai bahan penelitian skripsi yang merupakan \n" +

" syarat kelulusan program studi S1 Teknologi Informasi Universitas Sumatera Utara.\n" +

" \n" +

" Game ini dibangun menggunakan Microsoft SAPI sebagai speech recognizer dan \n" +

" Microsoft XNA Framework sebagai game framework pembangun aplikasi. \n" +


(65)

" Copyright 2014 - Andi Sianturi",

new Vector2(120, 220), Color.White);

spriteBatch.Draw(logoUSU, logoUSUPosition, Color.White); spriteBatch.Draw(btnBack, btnBackPosition, Color.White); base.Draw(spriteBatch); } } } // PlayScreen.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Input; using System.IO; using KataBakuGameObject; using Microsoft.Xna.Framework.Audio; using System.Threading; namespace KataBakuGame { class PlayScreen:Screen { Texture2D bgTexture; Rectangle bgPosition; Texture2D btnBack; Rectangle btnBackPosition; Texture2D btnRefresh; Rectangle btnRefreshPosition; /* cross and correct symbol */ Texture2D symbolImg;

Texture2D crossSymbol; Texture2D checkSymbol; Rectangle symbolPosition; /* List Huruf Image */

Dictionary<String, Texture2D> listHuruf; /* Font */

SpriteFont scoreFont; SpriteFont titleFont; SpriteFont hintFont; /* Sound */

SoundEffect levelStart;


(66)

SoundEffect trueSound; SoundEffect falseSound; SoundEffect finishedSound; SoundEffect silientSound; SoundEffectInstance silentSoundInstance; List<KataBaku> ListSoal; SpeechRecognizer speechRecognizer; int viewPortWidth;

string soalHurufAcak = ""; KataBaku currentSoal; int totalFalse = 0; bool newSoal = true;

bool drawQuestion = false; bool drawAnsware = false; int score = 0;

bool playfinishedSound = true; /* List soal yang sudah keluar */

Dictionary<String, int> rejectedQuestion;

public PlayScreen(ContentManager theContent, GraphicsDevice graphicDevice, EventHandler theScreenEvent)

: base(theScreenEvent) {

viewPortWidth = graphicDevice.Viewport.Width; bgPosition = new Rectangle(0, 0,

graphicDevice.Viewport.Width, graphicDevice.Viewport.Height); bgTexture = theContent.Load<Texture2D>("image/bg"); btnBack =

theContent.Load<Texture2D>("image/appbar.arrow.left");

btnBackPosition = new Rectangle(5, 500, 50, 50); btnRefresh =

theContent.Load<Texture2D>("image/appbar.refresh");

btnRefreshPosition = new Rectangle(5, 450, 50, 50); checkSymbol =

theContent.Load<Texture2D>("image/appbar.check"); crossSymbol =

theContent.Load<Texture2D>("image/appbar.close");

symbolPosition = new Rectangle((viewPortWidth / 2) - 45, 284, 90, 90);

scoreFont = theContent.Load<SpriteFont>("scoreFont"); titleFont = theContent.Load<SpriteFont>("titleFont"); hintFont = theContent.Load<SpriteFont>("hintFont"); listHuruf =

TextureContent.LoadListHuruf<Texture2D>(theContent); ListSoal =

theContent.Load<List<KataBaku>>("data/KataBaku");


(67)

speechRecognizer = new SpeechRecognizer(kata); /* Load Sound Effect */

levelStart =

theContent.Load<SoundEffect>("sound/level_start");

levelStartInstance = levelStart.CreateInstance(); levelStartInstance.Play();

trueSound = theContent.Load<SoundEffect>("sound/true"); falseSound = theContent.Load<SoundEffect>("sound/false"); finishedSound =

theContent.Load<SoundEffect>("sound/score"); silientSound =

theContent.Load<SoundEffect>("sound/silent");

silentSoundInstance = silientSound.CreateInstance(); rejectedQuestion = new Dictionary<string, int>(); symbolImg = checkSymbol;

}

//Update all of the elements that need updating in the Controller Detect Screen

public override void Update(GameTime theTime) {

//Poll all the gamepads (and the keyboard) to check to see

//which controller will be the player one controller. When the controlling

//controller is detected, call the screen event associated with this screen

MouseState mouse = Mouse.GetState();

if (mouse.LeftButton == ButtonState.Pressed) {

Point pointer = new Point(mouse.X, mouse.Y); if (btnBackPosition.Contains(pointer))

{

Game1.MOUSE_DOWN.Play();

ScreenEvent.Invoke(Game1.HOME, new EventArgs()); return;

}

else if (btnRefreshPosition.Contains(pointer)) {

speechRecognizer.stopListening(); Thread.Sleep(200);

Game1.MOUSE_DOWN.Play(); levelStartInstance.Play(); soalHurufAcak = "";

totalFalse = 0; newSoal = true;

drawQuestion = false; drawAnsware = false; score = 0;


(1)

/// <summary>

/// UnloadContent will be called once per game and is the place to unload

/// all content. /// </summary>

protected override void UnloadContent() {

// TODO: Unload any non ContentManager content here }

/// <summary>

/// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio.

/// </summary>

/// <param name="gameTime">Provides a snapshot of timing values.</param>

protected override void Update(GameTime gameTime) {

// Allows the game to exit

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

// TODO: Add your update logic here MouseState mouse = Mouse.GetState(); CURSOR_CSTM = CURSOR_ACTIVE;

mCurrentScreen.Update(gameTime);

CURSOR_POS = new Vector2(mouse.X, mouse.Y); base.Update(gameTime);

}

/// <summary>

/// This is called when the game should draw itself. /// </summary>

/// <param name="gameTime">Provides a snapshot of timing values.</param>

protected override void Draw(GameTime gameTime) {

GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here

spriteBatch.Begin();

mCurrentScreen.Draw(spriteBatch);

spriteBatch.Draw(Game1.CURSOR_CSTM, Game1.CURSOR_POS, Color.White);

spriteBatch.End(); base.Draw(gameTime); }

//This event fires when the Controller detect screen is returning control back to the main game class

public void HomeScreenEvent(object obj, EventArgs e) {


(2)

//Switch to the title screen, the Controller detect screen is finished being displayed

if ((double)obj == Game1.PLAY) {

Game1.MENU_SOUND_INSTANCE.Stop();

mPlayScreen = new PlayScreen(this.Content, this.GraphicsDevice, new EventHandler(PlayScreenEvent)); mCurrentScreen = mPlayScreen;

}

else if ((double)obj == Game1.ABOUT) {

mCurrentScreen = mAboutScreen; }

else if ((double)obj == Game1.HOW_TO_PLAY) {

mCurrentScreen = mHelpScreen; }

else if ((double)obj == Game1.EXIT) {

this.Exit(); }

}

public void PlayScreenEvent(object obj, EventArgs e) {

if ((double)obj == Game1.HOME) {

Game1.MENU_SOUND_INSTANCE.Play(); mCurrentScreen = mHomeScreen; }

}

public void AboutScreeEvent(object obj, EventArgs e) {

if ((double)obj == Game1.HOME) {

mCurrentScreen = mHomeScreen; }

} } }

//SpeechRecognizer.cs using System;

using System.Collections.Generic; using System.Linq;

using System.Text;

using KataBakuGameObject;

using System.Speech.Recognition; using System.Windows.Forms; namespace KataBakuGame {

class SpeechRecognizer {


(3)

//Speech Recognition Engine

public SpeechRecognitionEngine speechRecognitionEngine = null;

// List of text to recognizing

public List<Kata> words = new List<Kata>(); public String soal;

public bool isTrue; public bool getResult;

public SpeechRecognizer(List<Kata> kata) {

try {

words = kata;

// create the engine

speechRecognitionEngine = createSpeechEngine("en-US");

// hook to events

speechRecognitionEngine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(speechRecognitionEngine_Speec hRecognized);

// load dictionary

loadGrammarAndCommands();

// use the system's default microphone

speechRecognitionEngine.SetInputToDefaultAudioDevice(); }

catch (Exception e) {

MessageBox.Show(e.Message, "Voice recognition failed");

} }

/// <summary>

/// Creates the speech engine. /// </summary>

/// <param name="preferredCulture">The preferred culture.</param>

/// <returns></returns>

private SpeechRecognitionEngine createSpeechEngine(string preferredCulture)

{

foreach (RecognizerInfo config in SpeechRecognitionEngine.InstalledRecognizers()) {

if (config.Culture.ToString() == preferredCulture) {


(4)

speechRecognitionEngine = new SpeechRecognitionEngine(config);

break; }

}

// if the desired culture is not found, then load default if (speechRecognitionEngine == null)

{

MessageBox.Show("The desired culture is not installed on this machine, the speech-engine will continue using "

+

SpeechRecognitionEngine.InstalledRecognizers()[0].Culture.ToString() + " as the default culture.",

"Culture " + preferredCulture + " not found!"); speechRecognitionEngine = new

SpeechRecognitionEngine(SpeechRecognitionEngine.InstalledRecognizers( )[0]);

}

return speechRecognitionEngine; }

/// <summary>

/// Loads the grammar and commands. /// </summary>

private void loadGrammarAndCommands() {

try {

Choices texts = new Choices(); foreach (Kata item in words) {

// add the text to the known choices of speechengine

texts.Add(item.Text); }

Grammar wordsList = new Grammar(new GrammarBuilder(texts));

speechRecognitionEngine.LoadGrammar(wordsList); stopListening();

}

catch (Exception ex) {

throw ex; }

}

/// <summary>

/// Handles the SpeechRecognized event of the engine control. /// </summary>

/// <param name="sender">The source of the event.</param> /// <param name="e">The <see

cref="System.Speech.Recognition.SpeechRecognizedEventArgs"/> instance containing the event data.</param>


(5)

void speechRecognitionEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)

{

String msg = "";

msg += "\r " + e.Result.Text; //MessageBox.Show(msg);

if (e.Result.Text.Equals(soal.ToLower())) {

isTrue = true; }

else {

isTrue = false; }

getResult = true; }

public void startListening() {

// start listening

speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); }

public void stopListening() {

speechRecognitionEngine.RecognizeAsyncStop(); }

public void unload() {

// unhook events

speechRecognitionEngine.RecognizeAsyncStop(); // clean references

speechRecognitionEngine.Dispose(); }

public void prepareNewListening() {

getResult = false; }

} }

// Kata.cs using System;

using System.Collections.Generic; using System.Linq;

namespace KataBakuGameObject {

public class Kata {


(6)

public string Value { get; set; } }

}

// KataBaku.cs using System;

using System.Collections.Generic; using System.Linq;

namespace KataBakuGameObject {

public class KataBaku {

public string Baku { get; set; } public string TidakBaku { get; set; } public string Hint { get; set; } }