JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
1
Rancang Bangun Modul Pengenalan Suara Menggunakan Teknologi Kinect Ratri Cahyarini, Umi Laili Yuhana, dan Abdul Munif Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember (ITS) Jl. Arief Rahman Hakim, Surabaya 60111 Indonesia E-mail:
[email protected] Abstrak—Saat ini perkembangan teknologi pengenalan suara telah banyak dikembangkan. Salah satunya adalah teknologi pengenalan suara menggunakan Kinect. Kinect telah mampu mengenali beberapa bahasa, tetapi tidak dengan bahasa Indonesia. Maka dikembangkanlah modul pengenalan suara berbahasa Indonesia menggunakan teknologi Kinect. Modul pengenalan suara ini dibangun menggunakan teknologi Kinect. Adapun tahap awal pengembangan modul ini adalah pembuatan fungsi deteksi suara. Setelah itu akan dicari ciri khusus (feature vector) dari suara dengan menggunakan metode Linear Predictive Coding (LPC). Hal ini bertujuan untuk membedakan suara yang satu dengan yang lain. Setelah itu dilakukan klasifikasi data feature vector menjadi beberapa kelas dengan metode Support Vector Machine (SVM). Kemudian proses pelatihan data kata dapat dilakukan. Proses pengenalan suara sendiri dapat dilakukan dengan mencari probabilitas kata yang paling tinggi dengan kata yang diucapkan pengguna menggunakan metode Hidden Markov Model (HMM). Dari pengujian yang telah dilakukan terhadap 16 buah kata, didapatkan hasil bahwa proses pengenalan kata berhasil dilakukan dengan rata-rata persentase pengenalan 51,25%. Kata kunci—HMM, Kinect, LPC, Pengenalan Suara, SVM.
I. PENDAHULUAN
K
INECT adalah teknologi sensor gerak yang dikembangkan oleh Microsoft. Microsoft sendiri telah mengembangkan Kinect untuk dapat digunakan tidak hanya untuk mendeteksi gerak yang telah umum dilakukan, namun juga sebagai media pengenalan suara. Sayangnya, Kinect belum dilengkapi dengan pengenalan suara berbahasa Indonesia. Untuk itulah dikembangkan modul pengenalan suara berbahasa Indonesia menggunakan Kinect. Pada modul ini nantinya masukan berupa suara yang diucapkan oleh pengguna akan diterjemahkan dan diperiksa ketepatannya dengan masukan kata. Aplikasi pengenalan suara sendiri telah banyak dimanfaatkan dalam berbagai bidang. Salah satunya sebagai media pembelajaran dalam mengucapkan kata. Adapun salah satu pengguna yang membutuhkan media pembelajaran pengucapan kata adalah penderita tunarungu. Penderita tunarungu merupakan orang yang kehilangan kemampuan mendengar baik secara keseluruhan maupun hanya sebagian. Penderita tunarungu pada dasarnya masih memiliki kemampuan berbicara, namun keadaan masyarakat yang kurang memahami hal ini mengakibatkan pembelajaran berbicara bagi penderita tunarungu kurang diterapkan. Hal
inilah yang menyebabkan kebanyakan penderita tunarungu juga mengalami tunawicara. Guna mendukung proses pembelajaran penderita tunarungu untuk berbicara secara lisan, maka modul pengenalan suara menggunakan teknologi Kinect yang dikembangkan ini akan diimplementasikan untuk melengkapi aplikasi pembelajaran pengucapan bagi tunarungu menggunakan teknlogi Kinect [1]. Modul ini berguna untuk memeriksa apakah kata yang diucapkan oleh penderita tunarungu sudah seperti orang normal. II. TINJAUAN PUSTAKA A. Kinect Kinect merupakan sensor gerak yang dikembangan oleh Microsoft untuk video game console Xbox dan komputer dengan sistem operasi Windows. Kinect dapat menginterpretasikan gesture secara spesifik, sehingga pengguna dapat melakukan kontrol tanpa menyentuh game controller [2]. Saat ini, Kinect sudah dilengkapi dengan speech recognition/pendeteksian suara. Namun, bahasa yang dapat dideteksi masih meliputi bahasa Inggris, Perancis, Spanyol, Italia, dan Jepang [3]. Sensor Kinect memiliki tiga bagian [4], yaitu: 1. Kamera RGB 2. Sensor kedalaman 3. Mikrofon Untuk menjalankan fungsi sebagai sensor suara, Kinect memiliki multi-array microphones yang terdiri dari empat mikrofon untuk menyimpan suara dari pengguna. Mikrofon inilah yang nantinya akan menangkap suara untuk kemudian diproses lebih lanjut. Kinect memiliki Analog to Digital Converter (ADC). Dengan adanya ADC, maka tahap pengolahan sinyal suara yang masuk akan berkurang. Karena pada umumnya proses pengenalan suara dilakukan dengan mikrofon biasa dan menghasilkan sinyal analog. B. Microsoft Kinect SDK Kinect SDK merupakan sebuah perangkat lunak yang digunakan untuk membantu pengembang perangkat lunak dalam mengembangkan aplikasi yang dikembangkan menggunakan sensor Kinect. Kinect SDK memiliki beberapa fitur [5], sebagai berikut: 1. Raw sensor stream Akses low level dari sensor sensor pada Kinect yang terdiri dari kamera RGB, sensor kedalaman, dan mikrofon.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
2. Skeletal tracking Akses untuk mendeteksi gambar kerangka dari satu atau dua pemain yang ada pada jangkauan Kinect. Dengan adanya skeletal tracking ini Kinect telah dapat mendeteksi sendi-sendi pada kerangka manusia. 3. Advance audio capabilities Memiliki integrasi dengan Windows speech recognition API. Di mana Kinect telah dapat mengenali beberapa bahasa, seperti Inggris, Jepang, Korea, Italia, Spanyol, dan Jerman. Selain itu Kinect memiliki kemampuan Acoustic echo cancellation, dan noise suppression. Acoustic echo cancellation (AEC) dapat menghilangkan echo yang muncul ketika pengguna mengucapkan suara. Sedangkan noise suppression sendiri akan meningkatkan tingkat kejernihan suara. 4. Dokumentasi dan contoh kode C. Linear Predictive Coding (LPC) LPC merupakan metode pengolahan data sinyal suara untuk mendapatkan model yang merepresentasikan suara tersebut. Model yang dihasilkan dari proses LPC ini berupa vektor yang berisi 24 parameter dan disebut vektor fitur. Adapun tahapan dari LPC ini adalah [6]: 1. Preemphasis Preemphasis merupakan proses perubahan sinyal suara menjadi sinyal yang lebih rata dan berguna untuk mengurangi adanya perbedaan yang terlalu ekstrim antara suatu sinyal dengan sinyal sebelumnya. Karena pada prakteknya, sinyal suara terkadang terlalu jauh berbeda satu dengan lainnya. 2. Frame Blocking Proses ini berguna untuk membagi keseluruhan sinyal yang merepresentasikan sebuah suara menjadi beberapa bagian/frame. Pembagian akan dilakukan dengan panjang frame 120 dan jarak setiap frame adalah 50 sinyal. Dengan demikian, suatu frame akan saling overlap dengan frame yang lain. 3. Frame Windowing Tahapan ini bertujuan untuk menghilangkan diskontinuitas dari semua sinyal yang diakibatkan oleh proses frame blocking dengan menggunakan metode hamming window. 4. Autocorellation Pada tahap ini, setiap sampel sinyal suara yang telah di-windowing dikorelasikan untuk menghasilkan sejumlah nilai yang dapat dibentuk menjadi toeplist matriks. Nilai tertinggi dari proses autokorelasi ini adalah nilai orde analisa LPC (P). Nilai P umumnya berada pada interval 8 sampai 16. Kegunaan dari proses autokorelasi ini adalah untuk mengkorelasikan bentuk gelombang dengan dirinya sendiri. 5. LPC-Analisys Pada tahapan ini akan dicari koefisien LPC dari setiap frame dengan menggunakan metode LevinsonDurbin [6]. Setelah itu koefisien LPC yang banyaknya 8 parameter setiap frame akan diproses lagi untuk menghasilkan 12 parameter.
2
6. Cepstral Weighting Pada tahapan ini akan dilakukan proses pembobotan koefisien cepstral dengan window khusus. Dari tahapan ini akan dihasilkan 12 koefisien. 7. Delta Cepstral Pada tahapan ini, akan dihitung turunan orde pertama dari koefisien cepstral. Sama seperti tahap cepstral weighting, tahapan ini juga akan menghasilkan 12 koefisien. Dari delapan proses di atas, akan dihasilkan 24 parameter yang disebut vektor fitur. Ke-24 parameter tersebut diambil dari 12 parameter hasil proses cepstral weighting dan 12 parameter yang dihasilkan proses delta cepstral. Ke-24 parameter ini nantinya akan digunakan sebagai ciri untuk mengenali suara tertentu. D. Support Vector Machine (SVM) SVM merupakan algoritma pengenalan pola berdasarkan prinsip linear classifier. Algoritma SVM ini bekerja dengan cara mencari garis terbaik yang memisahkan setiap kelas dengan kelas lainnya (hyperplane). Dalam proses pencarian hyperplane terbaik, maka perlu dicari margin terbesar dari hyperplane tersebut. Margin hyperplane merupakan jarak antara hyperplane dengan data yang letaknya paling dekat dengan hyperplane tersebut. Semakin besar margin maka akan semakin baik hyperplane yang didapat [7]. SVM terdiri dari 2 jenis, yaitu: 1. SVM klasifikasi linear Pada SVM jenis ini, kelas yang akan dipisahkan hanya terdapat 2 buah kelas. Sehingga klasifikasi dapat dilakukan pada ruang 2 dimensi, yaitu x dan y. Pada jenis SVM ini, data akan dipisahkan menjadi dua buah kelas, yaitu positif (+1) dan negatif (-1). SVM akan mencari hyperplane terbaik yang memisahkan dua kelas. 2. SVM klasifikasi non-linear SVM non-linear merupakan algoritma klasifikasi yang digunakan untuk memisahkan lebih dari dua buah kelas. Dalam menyelesaikan permasalahan klasifikasi non-linear SVM yang pada dasarnya berfungsi untuk memisahkan dua buah kelas dimodifikasi dengan memasukkan fungsi Kernel. Pada klasifikasi non-linear ini, proses klasifikasi dilakukan dalam ruang yang memiliki dimensi lebih tinggi jika dibandingkan dengan dimensi ruang pada klasifikasi linear. Dengan melakukan klasifikasi pada ruang dimensi yang lebih tinggi, hasil klasifikasi akan semakin baik. Tetapi, penggunaan ruang dimensi yang terlalu tinggi justru akan menimbulkan overfitting yaitu klasifikasi yang berlebihan. Di mana anggota suatu kelas akan terpisah-pisah menjadi beberapa kelas yang lebih kecil. E. Hidden Markov Model (HMM) Hidden Markov Model merupakan salah satu algoritma yang dapat dikembangkan untuk mengenali suara atau gerakan. Dasar algoritma ini adalah mencari probabilitas yang paling besar dari kemungkinan yang ada.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) Sebelumnya telah dijelaskan bahwa sebuah sinyal suara akan dibagi menjadi beberapa frame dan setiap frame akan memiliki vektor fitur masing-masing. Pada algoritma HMM sendiri, setiap frame akan dinamakan state. Sehingga setiap sinyal suara akan menghasilkan beberapa state. Untuk proses pengenalan suara, terlebih dahulu harus dibentuk matriks initial state, matriks transisi state, dan matriks observasi [8]. 1. Matriks initial state adalah matriks yang berisi probabilitas setiap state menempati posisi pertama dalam urutan frame sebuah suara. Matriks ini berbentuk N x 1 matriks. 2. Matriks transisi state adalah probabilitas perpindahan dari state satu ke state lainnya. Bentuk dari matriks ini adalah matriks NxN, di mana N merupakan jumlah state. 3. Masukan dari proses pengenalan suara ini berupa sequence state yang disebut data observasi. Kemudian akan dicari probabilitas setiap observasi menempati urutan tertentu. Untuk mengenali suara, maka yang perlu dilakukan adalah menghitung probabilitas suatu data observasi terjadi dengan probabilitas initial state, probabilitas transisi state, serta probabilitas observasi yang telah dihitung sebelumnya III. ANALISIS DAN PERANCANGAN SISTEM A. Analisis Sistem Modul yang dibangun pada artikel ini adalah modul yang dapat mengenali dan menerjemahkan suara berbahasa Indonesia. Kata yang akan dicoba untuk dikenali adalah kata terisolasi, yaitu kata yang diucapkan dengan jeda antar fonemnya. Data suara yang dibutuhkan oleh sistem adalah deret sinyal suara yang sudah dikonversi dari sinyal analog ke sinyal digital oleh Kinect. Dari deret sinyal ini akan dicari ciriciri khusus berupa vektor 24 dimensi dari setiap suara yang keluar yang digunakan untuk membedakan antara suara yang satu dengan lainnya. Untuk mengenali suara yang diucapkan data tersebut akan diklasifikasi untuk diperoleh label kelas setiap potongan suara. Data berupa ciri-ciri dari setiap potongan suara tersebut disimpan dalam sebuah file teks. Sedangkan data label kelas suara akan disimpan dalam file xml yang memiliki format tertentu. B. Deskripsi Umum Sistem Aplikasi yang dibangun merupakan aplikasi pengenalan suara berbahasa Indonesia. Modul ini akan dimanfaatkan dan dikembangkan oleh aplikasi pembelajaran pengucapan [2], sehingga diharapkan dapat membantu penderita tunarungu dalam memeriksa apakah suara yang diucapkan oleh penderita tunarungu telah mirip dengan suara orang normal. Modul pengenalan suara berbahasa Indonesia ini dikembangankan dengan memanfaatkan Kinect sebagai alat penerima suara. Setiap kata akan memiliki fonem pembentuk kata yang berbeda antara satu dengan yang lainnya. Misalnya sinyal suara pengucapan fonem “ti” dan “ga” memiliki perbedaan nilai sinyal. Perbedaan itulah yang dimanfaatkan oleh sistem untuk mengklasifikasikan suara tersebut.
3
Gambar. 1. Gambar Arsitektur Modul Pengenalan Suara
Tahap pertama dari proses pengenalan kata ini adalah mendeteksi awal dan akhir suara yang diucapkan pengguna. Sistem akan menyimpan sinyal yang berada diatas batas rendah suara. Setelah itu, modul bekerja dengan cara mengolah sinyal suara dari kata yang ditangkap oleh Kinect untuk kemudian dicari ciri khusus/vektor fitur dari suara tersebut. Proses pengenalan dilakukan dengan mencari kelas kata dari setiap potongan fonem yang diucapkan oleh pengguna. Kemudian data kelas tersebut akan dicari probabilitas pembentuk kata. Dimana hasil terjemahan adalah kata yang memiliki probabilitas paling tinggi. Gambaran arsitektur modul dapat dilihat pada Gambar 1. Selain fitur pengenalan suara juga terdapat fitur untuk melatih fonem dan kata. Fitur melatih fonem digunakan untuk menambahkan data latih fonem ke dalam modul. Sedangkan fitur melatih kata berguna untuk menambahkan kata yang bisa dikenali dan memasukkan data latih, sehingga nantinya kata baru tersebut dapat terkenali. C. Skenario Kasus Penggunaan Kasus penggunaan yang digunakan pada sistem perangkat lunak ini digambarkan secara garis besar pada Gambar 2. Penjelasan untuk tiap kasus penggunaan adalah sebagai berikut. 1. Memasukkan Data Pelatihan Fonem Kasus penggunaan ini adalah kasus penggunaan untuk menambahkan data pelatihan fonem. Pada kasus penggunaan ini aktor yang berperan adalah pengguna. Pengguna dapat menambahkan data masukan berupa ucapan fonem. Data suara/ucapan yang masuk akan diproses dan digunakan sebagai data masukan proses klasifikasi kelas. 2. Memasukkan Data Pelatihan Kata Kasus penggunaan ini adalah kasus penggunaan untuk memasukkan data pelatihan kata. Pengguna dapat menambahkan data pelatihan kata ke dalam file teks. Data pelatihan ini nantinya berguna sebagai bahan dasar pada proses pengenalan kata yang diucapkan pengguna. Proses pengenalan kata tersebut sangat bergantung pada proses pelatihan data kata ini. Jika data pelatihan data kata yang dimasukkan kurang tepat, maka akan berpengaruh pada tingkat kesalahan pengenalan kata.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
4
System
menambah data pelatihan fonem
menambah data pelatihan kata Pengguna
melakukan pengenalan suara
Gambar. 3. Hasil Pengujian Sistem Menampilkan Hasil Pengenalan Suara Tabel 1. Hasil Pengujian Pengenalan Suara
Gambar. 2. Diagram Kasus Penggunaan Sistem
3. Melakukan Pengenalan Suara Kasus penggunaan ini adalah kasus penggunaan melakukan latihan pengenalan suara berbahasa Indonesia. Pengguna dapat berlatih untuk mengucapkan kata berbahasa Indonesia, kemudian sistem akan menerjemahkan suara yang diucapkan oleh pengguna ke dalam bahasa Indonesia. Kata berbahasa Indonesia yang dapat dikenali hanyalah kata yang sudah dilatih sebelumnya dengan memanfaatkan fitur pelatihan data fonem dan pelatihan data kata. IV. IMPLEMENTASI A. Implementasi Klasifikasi Vektor Fitur Pada proses klasifikasi vektor fitur ini tahap pertama sistem akan membaca data latih dari vektor fitur yang sudah disimpan dalam file. Setelah itu sistem juga akan membaca data vektor fitur yang akan diuji. Data yang akan diuji ini merupakan data vektor fitur dari suara yang akan dikenali dan baru saja dimasukkan ke sistem oleh pengguna. Selanjutnya sistem akan melakukan proses klasifikasi. Proses klasifikasi ini dibangun dengan memanfaatkan kakas bantu SVM. Pada proses tersebut data latih vektor fitur akan diolah untuk dipisah menjadi beberapa kelas. Setelah itu sistem akan menguji data uji yang sebelumnya telah dibaca. B. Implementasi Menambahkan Data Pelatihan Kata Penambahan data latih kata dimulai dengan membaca daftar kata yang dimasukkan sebagai kelas dari file teks. Kemudian sistem mencari indeks dari kata yang akan dimasukkan data latihnya. Setelah itu sistem membentuk kelaskelas dari daftar kata yang sudah dibaca. Pada proses selanjutnya, sistem memproses suara yang masuk untuk mendapatkan urutan kelas kata. Setelah mendapat sequence kelas dari data uji, maka sistem dapat menyimpan data uji pada file xml. C. Implementasi Pengenalan Suara Untuk melakukan pengenalan suara, pengguna terlebih dahulu harus menjalankan proses pelatihan kata. Dengan memanggil proses tersebut, kakas bantu HMM akan menghitung probabilitas yang dibutuhkan untuk mengenali kata. Setelah pengguna memilih pilihan rekam, sistem mulai
Kata Vas Rok Bis Tas Truk Mie Skor Sapi Juli Satu Tiga Tujuh Membawa Selasa Delapan Januari
Percobaan Berhasil 16 4 5 9 14 8 12 10 10 6 13 5 8 13 15 14 Rata-rata
Persentase (%) 80 20 25 45 75 40 60 50 50 30 65 25 40 65 75 75 51,25
mendeteksi awal dan akhir suara yang diucapkan pengguna dengan menjalankan proses deteksi suara yang sebelumnya telah dijelaskan. Setelah sistem mendapat deret sinyal, maka deret sinyal tersebut akan dimasukkan pada proses LPC analisis untuk mendapatkan vektor fitur dari tiap-tiap potongan suara (frame). Selanjutnya sistem akan mengenali suara yang masuk. Pada tahapan ini sistem akan mencari kata yang memiliki probabilitas paling tinggi dengan suara yang diucapkan pengguna. Hasil berupa kata tersebut akan ditampilkan pada label antarmuka. V. PENGUJIAN DAN EVALUASI Pengujian dilakukan untuk menguji apakah fungsionalitas sistem sudah berjalan dengan benar. Rincian pengujian adalah sebagai berikut. 1. Pengujian Kasus Penggunaan Seluruh kasus penggunaan telah diuji dan hasilnya menunjukkan bahwa semua fungsi untuk menjalankan tiga fungsional berdasarkan kasus penggunaan berjalan dengan benar. a. Hasil pengujian memasukkan data pelatihan fonem dapat berjalan dengan benar. Dari pengujian tersebut dapat dibuktikan bahwa fungsi mengganti label kelas setiap frame dapat berjalan dengan benar. Selain itu dapat
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) dibuktikan juga bahwa proses penyimpanan data latih fonem dapat berjalan dengan benar. b. Hasil pengujian menambahkan data pelatihan kata dapat berjalan dengan benar. Dari pengujian tersebut dapat dibuktikan bahwa fungsi untuk memasukkan data pelatihan kata ke dalam file berjalan dengan benar. c. Tampilan antarmuka proses pengenalan suara ditunjukkan pada Gambar 3, sedangkan hasil pengujian ditunjukkan pada Tabel 1. Dari pengujian tersebut terbukti bahwa fungsi untuk melakukan pengenalan terhadap suara yang diucapkan pengguna dan menampilkan hasil pengenalan suara dapat berjalan dengan benar. VI. KESIMPULAN/RINGKASAN Dari hasil pengamatan selama proses perancangan, implementasi, dan pengujian perangkat lunak, dapat diambil beberapa kesimpulan, yaitu: 1. Modul pengenalan suara ini dibangun menggunakan teknologi Kinect. Adapun tahap awal pengembangan modul ini adalah pembuatan fungsi deteksi suara. Setelah itu akan dicari ciri khusus (feature vector) dari suara dengan menggunakan metode LPC. Hal ini bertujuan untuk membedakan suara yang satu dengan yang lain. Setelah itu dilakukan klasifikasi data feature vector menjadi beberapa kelas dengan metode SVM. Kemudian proses pelatihan data kata dapat dilakukan. Proses pengenalan suara sendiri dapat dilakukan dengan mencari probabilitas kata yang paling tinggi menggunakan metode HMM dengan kata yang diucapkan pengguna. Sistem telah dapat mengenali suara terisolasi berbahasa Indonesia dan menampilkan nilai ketepatan pengenalan. Kata yang dapat dikenali sebanyak 16 kata. 2. Ketepatan hasil pengenalan suara didapat dengan cara memeriksa apakah kata yang dimasukkan pada kolom masukan kata sama dengan hasil terjemahan yang dihasilkan oleh modul ini. Rata-rata presentase pengenalan suara adalah 51,25%. Ketepatan pengenalan suara paling tinggi yang didapat dari proses uji coba ini adalah kata “vas” dengan nilai ketepatan 80%. Sedangkan kata terendah adalah “rok” dengan nilai ketepatan 20%. 3. Pengenalan kata dapat dilakukan pada kata terisolasi. UCAPAN TERIMA KASIH Penulis R.C. mengucapkan terima kasih kepada Allah SWT, kedua orangtua dan keluarga penulis, dosen pembimbing, seluruh dosen Teknik Informatika ITS, kerabat dekat, serta berbagai pihak yang telah membantu penulis dalam menyelesaikan penelitian ini. DAFTAR PUSTAKA [1] Hardiyanti, Margareta. 2013. Rancang Bangun Aplikasi Pembelajaran Pengucapan bagi Penderita Tunarungu Menggunakan Teknologi Kinect. Surabaya: Institut Teknologi Sepuluh Nopember. [2] Kinect, 2012. [Online]. Available: http://en.wikipedia.org/wiki/Kinect. [3] Kinect for Windows, 2012. [Online]. Available: http://blogs.msdn.com/b/kinectforwindows/archive/2012/03/26/what-sahead-a-sneak-peek.aspx.
5
[4] Kinect for Windows Sensor Components and Spesification, 2013. [Online]. Available: http://msdn.microsoft.com/enus/library/jj131033.aspx. [5] Ramadham, Ilham. 2012. Rancang Bangun Modul Pencocokan Gerakan Menjadi Skor pada Permainan SKJ Ekspres menggunakan Microsoft Kinect SDK. [6] Rabiner, Lawrence R. 1989. A Tutorial on Hidden Markov Models and Selected Application in Speech Recognition. [7] Nugroho, Anto Satriyo., Witarto, Arief Budi., Handoko, Dwi. 2003. Support Vector Machine, Teori dan Aplikasinya dalam Bioinformatika. [8] Juang, B, H., Rabiner, L, R. 1991. Hidden Markov Model for Speech Recognition.