LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech...

18
LAPORAN TUGAS KHUSUS 2 Aplikasi Speech Recognizer Pada Speech Shortcut Dengan Java Disusun oleh: 1.   Muhammad Fuad DR(03/165203/PA/9277) 2. Wijaya Adhi Surya(03/165672/PA/9459 ) PROGRAM STUDI ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA YOGYAKARTA 2006

Transcript of LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech...

Page 1: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

LAPORAN TUGAS KHUSUS 2

Aplikasi Speech Recognizer Pada Speech Shortcut

Dengan Java

Disusun oleh:

1.   Muhammad Fuad DR(03/165203/PA/9277)2. Wijaya Adhi Surya(03/165672/PA/9459 )

PROGRAM STUDI ILMU KOMPUTERFAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADAYOGYAKARTA

2006

Page 2: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

Shortcut Aplikasi Komputer Dengan Ucapan(Speech Shortcut)

Abstrak

Dalam jurnal ini, kami akan mengeksplorasi penggunaan voice command1). Dimana untuk  membangun voice command tersebut, dibutuhkan speech recognizer. Speech recognizer adalah  satu sistem dimana sistem tersebut dapat mengenali ucapan (speech) sehingga user dan sistem dapat berkomunikasi. Hal yang memotivasi kami untuk mengeksplorasi speech recognizer adalah  karena penggunaan speech recognizer saat ini belum maksimal, khususnya di Indonesia. Sebagai  tambahan, dari  hasil  eksplorasi   tersebut  kami membuat sebuah aplikasi  yang kami beri  nama  Myna, dimana aplikasi tersebut digunakan sebagai alternatif perintah masukkan (input command)  ke komputer lewat ucapan (dalam hal ini ucapan manusia).

Latar Belakang

Pembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, 

hal ini terlihat dari aplikasi­aplikasi yang diintegrasikan dengan SR tidak begitu banyak, Microsoft 

merupakan   salah   satu   vendor   yang   cukup   rajin   menggunakan   SR,   merekan   telah 

mengintegrasikannya kedalam Microsoft Office dengan sangat baik.

Adanya rasa penasaran pembuat untuk mengetahui  tentang SR, merupakan salah satu 

alasan kenapa pembuat merasa perlu membuat Myna.

Selain itu pembuat merasa rutinitas pemanggilan beberapa aplikasi yang sama sekaligus 

dengan keyboard atau mouse setiap harinya sebenarnya bisa dipersingkat,  salah satu caranya 

dengan pemanggilan lewat perintah suara.

Manfaat

­ User dapat memanggil sebuah aplikasi lewat perintah suara.

­ Diharapkan   user   awam   sekalipun   bisa   menggunakan   komputer   dengan   maksimal 

(biasanya user awam kesulitan dalam mencari dan menjalankan suatu aplikasi dengan 

mouse).

­ Perpaduan dengan microphone wireless membuat pemanggilan aplikasi bisa dilakukan 

dalam jangkauan beberapa meter.

­ Perpaduan dengan input seperti HP, telephone, alat penerima telephone bisa membuat 

pemanggilan  aplikasi  dapat  dilakukan  dalam  jarak   ratusan kilometer   (belum pernah 

1  Mengeksekusi suatu preintah, dalam hal ini perintah komputer, dengan ucapan atau perintah melalui suara.

Page 3: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

dicoba).

Dasar Teori

Shortcut  adalah  sebuah  berkas   (file)   yang  memiliki   link   ke  sebuah aplikasi.  Pengguna komputer biasanya lebih suka memanggil/mengeksekusi program dengan shortcut dibandingkan dengan   mengeksekusi   program   langsung   dari   direktori   tempat   program   disimpan,   biasanya terletak jauh di dalam sistem berkas komputer (misal “c:\program files\openoffice.org\writer.exe”). Bagi para pemula, shortcut sangat membantu karena bagi mereka mengeksplorasi sistem berkas komputer   adalah   sesuatu   yang   sangat   asing   (terutama   di   sistem   operasi   GNU/Linux)   dan membingungkan. Sedang bagi yang sudah mahir meski telah familiar dengan sistem berkas pada komputer   tetap   saja   penggunaan   shortcut   lebih   efisien.   Shortcut   ini   dapat   berupa   icon   pada desktop, icon pada desktop toolbar, menu pada start menu, ataupun kombinasi pada keyboard.

Gambar 1. Beberapa contoh icon shortcut

Walaupun   shotcut   dapat   membantu   penggunaan   komputer,   tetap   saja   ada   keadaan­keadaan dimana penggunaan shortcut konvensional (shortcut sesuai dengan definisi di atas) tidak efisien.  Untuk  pekerjaan­pekerjaan  yang  menyibukkan   tangan  dan    mata,   seperti   pengetikan, pengeditan   video,   pendesainan   dll,   penggunaan   shortcut   konvensional   cukup   mengganggu pekerjaan­pekerjaan tersebut. Misalnya saat sedang mengetik sebuah dokumen, ada sebuah file spreadsheet yang mesti dibuka, sebagai data pendukung pengetikan dokumen tadi. Saat seperti ini   file   biasanya   dibuka   dengan   membuka   program   pada   tempat   aslinya   ataupun   dengan menggunakan   shortcut   konvensional.   Hal   ini   tentunya   akan   cukup   mengganggu   pekerjaan pengetikkan tadi. Untuk pekerjaan yang tidak diburu waktu, hal seperti ini biasanya bisa ditolerir, tetapi untuk pekerjaan yang dikejar  deadline  keadaan tersebut sangatlah tidak menguntungkan. Bayangkan   saat   kita   sedang   mengerjakan   sebuah   dokumen   penting   yang   akan   dirapatkan setengah  jam kemudian.  Saat   ide­ide  penulisan muncul  dengan  lancarnya di  kepala kita,   lalu seperti situasi diatas file  spreadsheet  dibuka dengan cara konvensional. Bisa­bisa   ide­ide yang tadinya muncul seperti air yang mengalir, bisa lenyap tak tersisa. 

Gambar 2. Flowchart penggunaan shortcut

Jika melihat flowchart diatas, perbedaan mendasar antara shortcut konvensional dengan speech   shortcut   adanlah   pada   bagian   input   “Panggil   shortcut”,   pada   shortcut   konvensional pemanngilan   dilakukan   dengan   cara   mengklik   icon   atau   dengan   kombinasi   keyboard   (misal 

MulaiPanggil shorcut

Pemanggilan aplikasi Selesai

Page 4: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

ctrl+alt+o), sedang pada speech shortcut pemanggilan dilakukan dengan ucapan manusia, misal “jalankan word”.

Proses Pengenalan Ucapan dengan Neural Network

Gambar 3. Flowchart proses pengenalan ucapanKami tidak akan membahas proses pengenalan ucapan terlalu mendetail, sebab ini bukan 

tujuan paper ini dibuat. Ada 4 langkah dasar dalam proses pengenalan. Setiap langkah akan kami jelaskan secara singkat disini.

Mula­mula, kita mendigitalkan ucapan yang ingin kita kenali, misalnya dengan microphone. Kedua,   kita   menghitung   ciri   yang   menggambarkan   isi   domain­spektrum   dari   ucapan   (bagian dengan energi kuat pada frekuensi khusus). Ciri­ciri ini dihitung setiap 10 mili detik, dengan setiap 10   mili   detik   disebut   frame.   Ketiga,   sebuah   neural   network   (juga   disebut   ANN,   multi­layer perceptron atau MLP) digunakan untuk mengklasifikasi sekumpulan ciri tadi menjadi kategori yang didasarkan pada fonetis pada setiap frame untuk menentukan kata yang paling mirip dengan yang diucapkan.

Selain itu, dimungkinkan juga untuk menganalisa hasil dengan melihat skor keyakinan yang kita punya pada kata dengan skor tertinggi. Kata bisa ditolak sebagai diluar perbendaharaan jika skor   kepercayaan   jauh   dibawah   ambang   batas   yang   ditentukan   sebelumnya.   Nilai   keyakinan selalu di hitung dengan peralatan CSLU (Center  for Spoken Language Understanding) selama pengenalan   ucapan,   tetapi   sekarang   ini   kita   tidak   menggunakan   peralatan   CSLU   untuk pengenalan ucapan secara umum.

Speech Shortcut

Speech   shortcut   adalah   suatu   shortcut   yang   memanfaatkan   ucapan   manusia   (human speech) untuk memanggil sebuah aplikasi, bukan dengan mengklik icon atau kombinasi keyboard misalnya. Sebelum membahas lebih jauh mengenai speech shortcut, lebih baik kita bahas lebih 

Page 5: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

dahulu tentang kelebihan penggunaan suara.Menurut penelitian, sebagian besar hidup manusia dihabiskan untuk berkomunikasi dengan 

manusia yang lain (yang tentunya dengan suara), dari riset yang dilakukan pada pegawai kantor ditemukan bahwa 60%­85% dari  waktu mereka bekerja, dihabiskan untuk berkomunikasi  antar sesama pegawai. Bicara adalah hal yang lebih natural daripada menulis atau membaca, kita tahu cara untuk berbicara lebih dahulu daripada cara untuk menulis atau membaca. Bicara juga lebih efisien   dibanding   menulis   atau   mengetik.   Orang   dapat   berbicara   sepuluh   kali   lebih   cepat dibandingkan dengan menulis dan lima kali lebih cepat dibandingkan dengan mengetik.

Speech shortcut bisa mengatasi atau paling tidak mengurangi kerugian yang diakibatkan oleh masalah pengeksekusian aplikasi dengan shortcut konvensional di atas. Dengan memanggil aplikasi melalui ucapan, aktivitas yang sedang kita kerjakan tidak akan terganggu.

Jika menghadapi masalah seperti di atas, dimana kita sedang mengetik sebuah dokumen dan harus membuka sebuah aplikasi penting. Kita tinggal membuat speech shortcut untuk aplikasi tersebut   dan   tinggal   memanggilnya   dengan   ucapan.   Misal   bila   aplikasi   “OpenOffice.org  Spreadsheet” yang ingin dibuka, kita tinggal membuat speech shortcut dengan kata kunci “office” ataupun “spreadsheet”.

Myna, Aplikasi Speech ShortcutPada   paper   ini,   kami   akan   memperkenalkan   aplikasi   yang   dapat   memberi   gambaran 

tentang penggunaan speech shortcut. Kami menyebutnya Myna, diambil dari kosa kata bahasa Inggris yang artinya burung Beo. Myna dibangun menggunakan mesin Microsoft Speech To Text & Speech Recognizer serta bahasa pemrogramman Java dengan memanfaatkan API javax.speech yang menggunakan library2) TalkingJava SDK buatan CloudGarden, sedang untuk penyimpanan data­data program digunakan database open source3) MySQL.

Myna menyediakan 4 (empat) layanan perintah untuk mengolah database grammar speech shortcut, yaitu:

1. Add Grammar, digunakan untuk membuat speech shortcut.2. Update Grammar, digunakan untuk mengubah ucapan pada speech shortcut yang telah 

ada di database.3. Update   Command,  digunakan   untuk   mengubah   perintah/aplikasi   pada   speech  shortcut 

yang telah ada di database.4. Delete Gramar, digunakan untuk menghapus speech shortcut yang ada di database.

Berikut ini merupakan tampilan pembuka Myna. Dengan sebuah menubar dan sebuah text area, Myna memang terlihat sangat simpel tapi hal tersebut tidaklah mengurangi fitur­fiturnya.

2  Kumpulan/pengkapsulan prosedur dan fungsi yang saling terkait dalam satu tempat, gunanya untuk mempermudah penggunaannya.

3   Seluruh kode sumber yang membangun aplikasi yang bersangkutan boleh disebar, dilihat dan diubah.

Page 6: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

Gambar 4. Tampilan pembuka Myna

Untuk saat  ini,  Myna hanya mendukung  spelling  bahasa  Inggris,  sedang untuk  spelling bahasa Indonesia masih dalam tahap pengembangan. Selama pembuatan dan pengeksekusian speech shortcut, Myna harus dijalankan terlebih dahulu. Ucapan–ucapan speech shortcut pada Myna haruslah unik atau tidak boleh ada yang sama.

Myna   dapat   berjalan   secara   background,   maksudnya   walaupun   user   sedang   bekerja dengan aplikasi selain Myna, Myna tetap dapat digunakan untuk pemanggilan speech shortcut.

Pembuatan dan pengeksekusian speech shortcut ditangani sepenuhnya oleh Myna. Untuk membuat     speech     shortcut,   user   tinggal   mengucapkan   “add   grammar”   ,   setelah   itu   secara otomatis dialog “add grammar” akan tampil, seperti  pada gambar 5. Pada dialog tersebut user diharuskan memasukkan command (aplikasi yang ingin dijalankan/dieksekusi),   kemudian   kata unik  yang  ingin  diucapkan  serta kata alternatif 

Gambar 5. Dialog Myna untuk membuat speech shortcut

(optional) misalnya please, run atau yang lainnya. Jika sudah user tinggal mengucapkan “ok” atau menekan tombol ok, setelah itu speech shortcut sudah bisa digunakan. Selama dialog pada Myna muncul (misal dialog “add grammar”) maka speech shortcut tidak akan dapat dieksekusi.

Untuk   menanganni   perubahan   pada   pemakaian   speech   shortcut,   Myna   menyediakan fasilitas update.  Fasilitas update  ini   terdiri  atas dua  jenis  yaitu:  update grammar untuk meng­update  kata  speech  shortcut   (kata  unik)  dan  update  command untuk  meng­update  command (aplikasi yang ingin dijalankan).

Page 7: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

Gambar 6. Dialog Myna untuk meng­update kata pada speech shortcut

Gambar 7. Dialog Myna untuk meng­update command pada speech shortcut

untuk   pemanggilannya,   user   tinggal   mengucapkan   “update   grammar”   atau   ”update   grammar please” secara otomatis Myna akan menampilkan dialog seperti yang terlihat di gambar 6, sedang untuk membuka dialog yang terlihat di gambar 7, cukup dengan mengucapkan “update command” atau ”update comamnd  please”, penggunannya hampir sama dengan dialog ”add grammar” tadi. Untuk mengupadate kata, user diharuskan memasukkan command yang ingin diganti katanya, lalu memasukkan kata dan kata alternatif  pengganti, setelah selesai tinggal mengucapkan “update” atau menekan tombol update. Untuk meng­update command, user diharuskan memasukkan kata yang   akan   diganti   command/programnya,   setelah   memasukkan   command   pengganti   lalu mengucapkan “update” atau menekan tombol update, setelah itu speech shortcut tadi akan ter­update.

Penghapusan speech shortcut  dapat  dilakukan dengan mengucapkan ”hapus grammar” atau “hapus grammar please” (dengan spelling English). Setelah dialog  seperti

Gambar 8. Dialog Myna untuk menghapus speech shortcut

terlihat pada gambar 8 muncul, user tinggal memasukkan kata kunci yang bisa dipilih, apakah itu berupa kata, command/program yang dipanggil, atau kata alternatifnya, setelah diisi user tinggal mengucapkan kata “Ok” atau menekan tombol ok.

Semua   dialog   di   atas,   baik   itu   dialog   menambah,   menghapus,   ataupun   meng­update grammar, dapat dibatalkan pemanggilannya dengan mengucapkan “cancel” atau “exit”.

Pengaplikasian Myna

Myna dapat digunakan untuk banyak hal karena Myna hanya sebagai shortcut ke aplikasi 

Page 8: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

lain. Misal bagi anda yang mempunyai rutinitas pemanggilan aplikasi yang sama setiap harinya (misalnya OpenOffice.org writer)   anda bisa mempermudah pemaggilan dengan speech shortcut dengan   ucapan   “writer”   lalu   secara   otomatis   OpenOffice.org   writer   akan   dipanggil.   Rutinitas lainnya   seperti   membuka  file   explorer  atau  file   browser  dapat   dipersingkat   dengan   speech shortcut,  sehingga setiap kali  anda  ingin mecari   file  lewat  explorer  anda  tinggal mengucapkan “explorer” lalu window explorer pun muncul.

Penggunaan   lainnya   misalnya   anda   sedang   membuat   suatu   artikel,   lalu   anda   ingin mendengarkan musik,  dengan  tangan   tetap mengetik  di   keyboard  anda  tinggal  mengucapkan “music” pada microphone lalu music player kesayangan anda pun akan segera muncul.

Bahkan Myna pun dapat digunakan untuk menutup aplikasi yang sedang berjalan, misal anda sudah selesai mengetik di OpenOffice.org writer, anda tinggal mengucapkan “close writer”, lalu OpenOffice.org writer pun ditutup tanpa harus mengklik icon close.

Selain itu Myna juga dapat mematikan dan merestart komputer, dengan membuat speech shortcut untuk shutdown atau reboot komputer, anda bisa dengan mudah mematikan komputer misal dengan ucapan “shutdown” atau “restart”.

Tidak hanya itu saja, dengan sedikit kreatifitas anda, anda dapat membuat file batch atau shell script untuk meng­copy seluruh isi disket atau membuat backupnya ke dalam harddisk anda, hanya dengan mengucapkan “backup please” misalnya.  Jika anda pengguna GNU/Linux anda akan bisa lebih banyak bereksperimen dengan speech shortcut.

Penjelasan program

Myna adalah program java yang dapat menggantikan command prompt /konsole, dimana 

dengan program ini user memasukkan perintah/command dengan suara. Di dalam program myna 

terdapat tiga menu utama yaitu :

1. AddGrammar

2. UpdateGrammar

3. DeleteGrammar

Menu AddGrammar digunakan  untuk memasukkan command­command yang diinginkan 

ke dalam program, beserta kata yang akan diucapkan user serta kata alternatif (bisa diucapkan 

user bisa juga tidak). Misal jika ingin dimasukkan perintah “Notepad.exe” kita bisa memasukkan 

kata “editor” ke dalam program dan dengan alternatif “please” (jika menggunakan alternatif maka 

posisinya pun harus ditentukan apakah di depan kata yang ada atau di belakang kata), sehingga 

Page 9: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

ketika kata “editor” atau “editor please” (jika alternatif ada di depan)diucapkan user maka Myna 

akan mengeksekusi perintah “Notepad.exe” tersebut.

UpdateGrammar digunakan untuk mengupadate grammar yang ada. Di dalam menu ini 

terdapat dua sub menu yaitu Update Kata dan Update Command. Update kata digunakan jika 

ingin mengganti kata yang telah ada pada program, sedang update command jika user ingin 

megganti commandline yang telah dimasukkanya tadi.

Delete Grammar digunakan jika user ingin menghapus salah satu kata/command yang 

telah dimasukkan pada program Myna sebelumnya.

Di dalam program  telah dimasukkan beberapa command built in(diinput dengan suara) 

sperti terminate[please](mengehentikan program myna ini), Add[please](menampilkan dialog 

AddGrammar), UpdateKata[please] ( menampilkan dialog UpdateKata),

UpdateCommand[please]( menampilkan dialog UpdateCommand), dan 

HapusGrammar[please](menampilkan dialog DeleteGrammar.

Perancangan Program

Myna dibuat dengan pendekatan Object Oriented dimana program dibuat dengan

membagi­bagi program ke dalam kelas­kelas sesuai dengan fungsinya masing­masing.Kelas­

kelas utama yang digunakan dalam pembuatan program ini adalah RecognizerEngine,Make 

Grammar, dan VoiceAction.

VoiceAction adalah kelas yang berfungsi untuk mengeksekusi command setelah dicocokkan 

dengan suara yang diinputkan oleh user. Baik itu perintah built in maupun perintah yang telah 

dimasukkan user.

MakeGrammar digunakan untuk membuat grammar sesuai dengan kata yang dimasukkan 

user atau mengganti kata yang ada melalui dialog­dialog yang telah dijelaskan tadi.

RecognizerEngine adalah kelas utama dari program ini dimana user berinteraksi dengan 

program melalui kelas ini. Di kelas inipun diiniisialisasi mesin recognizer yang digunakan 

program. Pada lingkungan windows mesin yang digunan adalah Microsoft Speech recognizer.

Cara Kerja Program

Cara kerja program secara garis besar seperti ini:

Pertama­tama   mesin   recognizer   yang   akan   digunakan   diinisialisasi   lebih   dahulu,   pada 

Page 10: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

penginisialisasian   ini   mesin   yang   digunakan   ditentukan   memakai   bahasa   apa(Inggris, 

Indonesia, dll).  Setelah  itu grammar­grammar yang telah dimasukkan sebelumnya diload ke 

dalam program dengan metode LoadGrammar pada kelas MakeGrammar. Lalu grammar yang 

telah diload  diaktifkan.lalu  Action  yang  diinginkan  ditambahkan  ke object  mesin   recognizer 

dengan metode  addResultListener.Ketika user  memasukkan suara melalui  microphone atau 

yang lainnya, program akan menunggu sampai ada suara yang cocoki dengan grammar yang 

ada. Jika telah ada yang cocok maka program akan mengambil pada database, perintah apa 

yang cocok dengan kata yang diucapkan user tadi. Seteleh perintah diambil lalu dieksekusi.

Diagram UML

Implementasi Program

import javax.speech.*;import javax.speech.recognition.*;import java.util.Locale;import java.io.*;

Page 11: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

import java.sql.*;

public class MakeGrammar{

private Recognizer rec;private RuleGrammar gram;private RuleSequence seq;private RuleAlternatives rulealt;private RuleAlternatives newrulealt;private String GrammarName;private String ruleName="rule";public MakeGrammar(Recognizer r,String nama){

rec=r;gram = rec.newRuleGrammar(nama);rulealt = new RuleAlternatives();GrammarName=nama;

}public void addRule(String kata){

seq = new RuleSequence(new RuleToken(kata));rulealt.append(seq);gram.setRule(ruleName, rulealt, true);try{

rec.commitChanges();}catch(GrammarException g){

g.printStackTrace();}

}public void addRule(String kata, String alternatif,int posisi){

RuleCount r1 = new RuleCount(new RuleToken(alternatif), RuleCount.OPTIONAL);if(posisi==0){

seq=new RuleSequence(r1);seq.append(new RuleToken(kata));

}else{

seq = new RuleSequence(new RuleToken(kata));seq.append(r1);

}rulealt.append(seq);gram.setRule(ruleName, rulealt, true);try{

rec.commitChanges();}catch(GrammarException g){

g.printStackTrace();}

}public void updateRule(String kata){

seq= new RuleSequence( new RuleToken(kata));newrulealt.append(seq);gram.setRule(ruleName,newrulealt,true);try{

rec.commitChanges();}catch(GrammarException g){

Page 12: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

g.printStackTrace();}newrulealt.toString();

}public void updateRule(String kata, String alternatif, int posisi){

RuleCount r1= new RuleCount(new RuleToken(alternatif),RuleCount.OPTIONAL);if(posisi==0){

seq=new RuleSequence(r1);seq.append(new RuleToken(kata));

}else{

seq=new RuleSequence(new RuleToken(kata));seq.append(r1);

}newrulealt.append(seq);gram.setRule(ruleName,newrulealt,true);try{

rec.commitChanges();}catch(GrammarException g){

g.printStackTrace();}

}public void loadGrammar(String db, String tbl,String u, String p){

Connection conn = null;try{

String jdbcDriver= "org.gjt.mm.mysql.Driver";Class.forName(jdbcDriver);String url = "jdbc:mysql://localhost:3306/"+db;conn = DriverManager.getConnection(url, u, p);

}catch(ClassNotFoundException cnfe){

cnfe.printStackTrace();}

String sqlSelect ="SELECT kata,alternatif,posisi FROM "+tbl;Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sqlSelect);while(rs.next()){

String kata=rs.getString("kata");String alt=rs.getString("alternatif");int posisi=rs.getInt("posisi");System.out.println(kata);System.out.println(alt);System.out.println(""+posisi);if(alt!=null){

this.addRule(kata,alt,posisi);}else{

this.addRule(kata);

Page 13: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

}public void updateGrammar(String db, String tbl,String u, String p){

newrulealt= new RuleAlternatives();printRule();Connection conn = null;try{

String jdbcDriver= "org.gjt.mm.mysql.Driver";Class.forName(jdbcDriver);String url = "jdbc:mysql://localhost:3306/"+db;conn = DriverManager.getConnection(url, u, p);

}catch(ClassNotFoundException cnfe){

cnfe.printStackTrace();}String sqlSelect ="SELECT kata,alternatif,posisi FROM "+tbl;try{

Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sqlSelect);while(rs.next()){

String kata=rs.getString("kata");String alt=rs.getString("alternatif");int posisi=rs.getInt("posisi");System.out.println(kata);System.out.println(alt);System.out.println(""+posisi);if(alt!=null){

this.updateRule(kata,alt,posisi);}else{

this.updateRule(kata);}

}}

}

import java.io.*;import java.sql.*;public class VoiceAction{

private Runtime command;private Connection conn = null;private String tabel;

public VoiceAction(String u,String p, String db, String tbl){try{

String jdbcDriver= "org.gjt.mm.mysql.Driver";Class.forName(jdbcDriver);String url = "jdbc:mysql://localhost:3306/"+db;String user = u;

Page 14: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

String pwd = p;tabel=tbl;conn = DriverManager.getConnection(url, user, pwd);

}catch(ClassNotFoundException cnfe){

cnfe.printStackTrace();}catch(SQLException sqle){

sqle.printStackTrace();}

}public void addCommand(String kata, String Command)throws VoiceCommandException{

try{String sqlInsert ="INSERT INTO "+tabel+"(kata, perintah,katalengkap) values("+"'"+kata+"','"+Command+"','"+kata+"')";Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sqlInsert);

}catch(SQLException s){

//s.printStackTrace();throw new VoiceCommandException();

}}public void addCommand(String kata, String alt, int pos,String Command) throws VoiceCommandException{

String kataLengkap=null;if(pos==0){

kataLengkap=alt+" "+kata;}else

kataLengkap=kata+" "+alt;try{

String sqlInsert ="INSERT INTO "+tabel+"(kata, alternatif, posisi,perintah,katalengkap) values("+"'"+kata+"','"+alt+"',"+pos+",'"+Command+"','"+kataLengkap+"')";Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sqlInsert);System.out.println();System.out.println("Query OK, " + count + " row affected");

}catch(SQLException s){

s.printStackTrace();throw new VoiceCommandException(); 

}}public void updateCommand(String Kata, String newCommand) throws UpdateException {

try{String sql="update "+tabel+" set perintah = '"+newCommand+"' where kata =  

'"+Kata+"'";Statement stmt = conn.createStatement();

Page 15: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

int count = stmt.executeUpdate(sql);if(count==0)

throw new UpdateException();}catch(SQLException s){

s.printStackTrace();}

}public void updateKata(String Command, String newKata, String newAlt, int newpos) throws  

VoiceCommandException,UpdateException{String kataLengkap=null;if(newpos==0){

kataLengkap=newAlt+" "+newKata;}else if(newpos==1)

kataLengkap=newKata+" "+newAlt;try{

String sql="update "+tabel+" set kata = '"+newKata+"',  alternatif ='"+newAlt+"', posisi =  "+newpos+", katalengkap = '"+kataLengkap+"' where perintah = '"+Command+"'";

Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sql);if(count==0)

throw new UpdateException();}catch(SQLException s){

s.printStackTrace();throw new VoiceCommandException(); 

}}

public void updateKata(String Command, String newKata)  throws  VoiceCommandException,UpdateException{

try{String sql="update "+tabel+" set kata = '"+newKata+"', alternatif = null, posisi=null,  

katalengkap= '"+newKata+"' where perintah = '"+Command+"'";Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sql);if(count==0)

throw new UpdateException();}catch(SQLException s){

s.printStackTrace();throw new VoiceCommandException(); 

}}public void deleteKata(String kata) throws DeleteException{

try{String sql=" delete from "+tabel+" where kata = '"+kata+"'";Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sql);if(count==0)

throw new DeleteException();

Page 16: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

}catch(SQLException s){

s.printStackTrace();}

}public void deleteCommand(String command) throws DeleteException{

try{String sql=" delete from "+tabel+" where perintah = '"+command+"'";Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sql);if(count==0)

throw new DeleteException();}

}

public void deleteAlternatif(String alt) throws DeleteException{try{

String sql=" delete from "+tabel+" where alternatif = '"+alt+"'";Statement stmt = conn.createStatement();int count = stmt.executeUpdate(sql);if(count==0)

throw new DeleteException();}

}public void systemCommand(String s){

//memanggil database selectString Com=null;String sqlSelect=null;//Kalimat k= new Kalimat(s);System.out.println("sebelum"+s);//if(k.contain(" ")){

System.out.println("halo");sqlSelect ="SELECT perintah FROM tcommand where katalengkap='"+s+"' or kata =  

'"+s+"'";//}//else{

System.out.println("halo1");//sqlSelect ="SELECT perintah FROM tcommand where kata='"+s+"'";

//}try{

Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sqlSelect);while(rs.next()){

Com=rs.getString("perintah");}

}catch(SQLException sq){

sq.printStackTrace();}command= Runtime.getRuntime();

}import javax.speech.*;

Page 17: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

import javax.speech.recognition.*;import java.io.FileReader;import java.util.Locale;import javax.swing.*;import java.awt.event.*;import java.awt.BorderLayout;

public class RecognizerEngine extends JFrame {

private MakeGrammar mgram;private Recognizer rec;private RecognizerResult recsult;private VoiceAction voa;

//gui componentprivate JTextArea display;private JMenuBar menuBar;private JMenu EditGrammar;private JMenuItem addGram;private JMenu updateGram;private JMenuItem updateKata;private JMenuItem updateCommand;private JMenuItem deleteGram;

public RecognizerEngine(){super();setGuiComponent();try{

// Create a recognizer that supports English.rec = Central.createRecognizer(new EngineModeDesc(Locale.ENGLISH));

// Start up the recognizerrec.allocate();this.setVisible(true);

}catch(EngineException ee){ee.printStackTrace();

}mgram= new MakeGrammar(rec,"aturan");mgram.loadGrammar("command_db","tcommand","fuad","anjingarab");voa= new VoiceAction("fuad","anjingarab","command_db","tcommand");recsult=new RecognizerResult(this,rec,voa);mgram.printRule();mgram.setEnabled(true);// Add the listener to get resultsrec.addResultListener(recsult);try{

// Commit the grammar // meyakinkan bahwa grammar telah diupdate rec.commitChanges();

// Request focus and start listeningrec.requestFocus();

Page 18: LAPORAN TUGAS KHUSUS 2 Aplikasi Speech · PDF filePembuat Myna merasa pemanfaatan Speech Recognition (SR) dirasa kurang maksimal, hal ... TalkingJava SDK buatan CloudGarden, sedang

rec.resume();

}catch(Exception ge){ge.printStackTrace();

}display.setText("Recognizer Engine start Listening\n");

}

private void setGuiComponent(){menuBar= new JMenuBar();EditGrammar= new JMenu("Grammar");EditGrammar.setMnemonic('G');addGram = new JMenuItem("Add",'A');updateGram= new JMenu("Update");updateKata= new JMenuItem("Kata",'K');updateCommand=new JMenuItem("Command",'C');updateGram.add(updateKata);updateGram.add(updateCommand);deleteGram=new JMenuItem("Delete",'D');EditGrammar.add(addGram);EditGrammar.add(updateGram);EditGrammar.add(deleteGram);menuBar.add(EditGrammar);this.setJMenuBar(menuBar);display= new JTextArea(150,150);JScrollPane scrollbar;scrollbar= new JScrollPane(display,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);getContentPane().add(scrollbar,BorderLayout.CENTER);

InitializeAction();

this.setLocation(10, 10);this.setSize(200,200);this.setTitle("MYNA");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

Untuk Download Myna Silahkan ke Website http://kleq.web.ugm.ac.idJangan lupa kunjungi Webloghttp://fuad.wordpress.com