BAB II DASAR TEORI
2.1 TIPE INTERAKSI MANUSIA DAN KOMPUTER
Interaksi dapat dilihat sebagai dialog antara komputer dan pengguna (Alan Dix et al. 136). Pemilihan tipe interaksi yang tepat dapat memberikan efek yang baik terhadap dialog antara pengguna dengan komputer. Terdapat beberapa tipe interaksi yang umum digunakan, diantaranya meliputi antarmuka baris perintah, menu, bahasa alami, dialog dengan tanya jawab terstruktur, formulir isian dan kertas kerja serta WIMP. Antarmuka baris perintah (command line interface) merupakan bentuk dialog interaktif yang pertama digunakan dan masih dipakai hingga saat ini. Dengan antarmuka baris perintah, pengguna memberikan instruksi secara langsung kepada komputer menggunakan tombol fungsi, karakter tunggal, perintah dalam bentuk singkat maupun panjang. Antarmuka baris perintah memungkinkan pengguna mengakses dengan cepat fungsi sistem dan beberapa alat. Menu merupakan sekumpulan pilihan yang tersedia bagi pengguna yang ditampilkan pada layar dan dapat dipilih dengan menggunakan mouse atau tombol numerik maupun alfabetik. Pilihan pada menu harus merepresentasikan arti dan dikelompokkan berdasarkan suatu kategori agar mudah dikenali dan memudahkan pengguna memilih sesuai dengan tugas yang akan dilaksanakan. Bahasa alami (natural language) merupakan mekanisme komunikasi yang atraktif. Umumnya, komputer tidak dapat mengerti instruksi yang dituliskan dalam bahasa sehari-hari. Bahasa alami dapat mengerti masukan tertulis (written input) dan masukan ucapan (speech input). Namun masih ada kekurangan dalam hal kerancuan (ambiguity) pada aspek sintaksis dan semantik. Dialog dengan tanya jawab terstruktur (question/answer and query dialog) merupakan mekanisme sederhana untuk masukan pada beberapa aplikasi.
7
8
Pengguna diberikan serangkaian pertanyaan umumnya dalam bentuk jawaban ya/tidak (Y/N), pilihan ganda atau dalam bentuk kode, dan dibimbing tahap demi tahap selama proses interaksi. Antarmuka ini mudah dipelajari namun terbatas fungsinya. Formulir isian (form-fills) utamanya digunakan untuk aplikasi pemasukan data (data entry) dan pencarian data (data retrieval). Bentuk formulir isian adalah berupa tampilan yang menyerupai selembar kertas dengan beberapa celah (slot/field) untuk diisi. Kertas kerja (spreadsheets) adalah variasi dari formulir isian. Kertas kerja terdiri dari sel yang dapat berisi nilai atau formula. WIMP (Window Icon Menu Pointer) merupakan antarmuka standar untuk sebagian besar sistem komputer interaktif yang digunakan saat ini terutama pada komputer pribadi dan desktop workstation. Window merupakan area layar yang berperilaku seperti terminal tersendiri dan berisi grafik atau teks yang dapat dipindahkan dan diubah ukurannya. Satu layar dapat terdiri dari satu dan lebih window yang memungkinkan lebih dari satu tugas aktif pada saat yang sama. Icon merupakan sebuah gambar kecil yang digunakan untuk merepresentasikan window yang sedang berada dalam keadaan tertutup (closed). Window dapat diaktifkan atau diperbesar dengan melakukan klik icon yang bersangkutan, dan sebaliknya jika pengguna tidak menggunakan atau mengerjakan tugas pada satu window tertentu maka dia dapat menonaktifkan window menjadi icon yang disebut sebagai iconifying. Menu adalah teknik interaksi yang umum digunakan bahkan oleh sistem yang bukan window sekalipun. Menu menampilkan pilihan operasi atau layanan yang diberikan atau tersedia oleh sistem. Pengguna dapat memperoleh petunjuk mengenai operasi apa saja pada sistem melalui menu. Oleh karena itu penamaan pada menu haruslah memiliki arti dan informatif. Pointer merupakan komponen yang penting dalam sistem WIMP karena interaksi pada sistem ini memerlukan aktifitas menunjuk (pointing) dan memilih (selecting). Pengguna diberikan cursor pada layar yang dapat dikendalikan oleh peralatan masukan seperti mouse, joystick, ataupun trackball.
2.2 KOMPONEN SISTEM DIALOG LISAN
9
Sistem dialog lisan terdiri dari beberapa komponen yang dibutuhkan supaya sistem dapat berfungsi dengan sukses, diantarnya pengenalan ucapan (speech recognition) dan teks ke ucapan (text to speech) (Michael F. Mctear 79). Gambaran berikut menjelaskan komponen yang fokus dengan proses masukan dari pengguna ke dalam sistem dan keluaran dari sistem kepada pengguna, yaitu pengenalan ucapan (speech recognition), pemahaman bahasa (language understanding), pembangkitan bahasa (language generation) dan keluaran ucapan (speech output). Dialog berikut dapat digunakan untuk memperkenalkan berbagai komponen dari sistem dialog lisan dan untuk menjelaskan peran setiap komponen didalam sistem. System: Welcome to the Flight Information Service.Where would you like to travel to? Caller : I would like to fly to London on Friday arriving around 9 in the morning. System : There is a flight that departs at 7.45 a.m. and arrives at 8.50 a.m. Dialog tersebut dimulai dengan ucapan salam sistem kepada pengguna dan penyampaian informasi kepada pengguna. Penelepon (caller) merespon dengan ucapan. Untuk proses ucapan ini sistem harus terlibat dalam proses berikut: 1. Mengenali kata-kata yang diucapkan oleh penelepon (speech recognition). 2. Menetapkan arti dari masing-masing kata (language understanding). 3. Menentukan bahwa dialognya sesuai dan memutuskan apa yang harus dilakukan selanjutnya, misalnya memperjelas ucapan yang tidak jelas, melakukan konfirmasi, meminta informasi lebih lanjut atau mencari sumber informasi (dialogue manager). 4. Mengambil penerbangan yang sesuai dengan kebutuhan pengguna (external communication). 5. Memilih kata dan frasa untuk digunakan dalam menanggapi (language generation). 6. Mengucapkan tanggapan (text to speech synthesis). Proses ini menggambarkan peran setiap komponen dari sistem dialog lisan. Dalam contoh ini masing-masing proses berjalan dengan lancar. Namum pada kondisi yang sesungguhnya mungkin ada masalah pada setiap tahap.
10
Komponen pengenalan ucapan mungkin gagal untuk mengenali kata-kata penelepon secara benar, komponen pemahaman bahasa bisa menetapkan arti yang salah atau tidak bisa memilih arti yang benar jika ucapannya ambigu dan sebagainya. Pengaturan dialog mungkin menempatkan sistem pada posisi mengambil informasi dari informasi luar atau mengklarifikasi masukan dari pengguna. Keluaran yang bersangkutan dan komponen pembangkitan bahasa perlu merumuskan ucapan sistem sedemikian rupa sehingga informasi yang disajikan tidak ambigu dan jelas ketika komponen sistesis teks ke ucapan mengucapkan kata-kata sehingga kalimatnya benar supaya pesan tersebut dipahami. Arsitektur dasar dari sistem dialog lisan yang mendukung fungsi tersebut ditunjukkan dalam gambar.
Gambar 2.1 Arsitektur Sistem Dialog Lisan Sumber: McTear, Michael F. Spoken Dialogue Technology Toward the Conversational User Interface, London:Springer, 2004
Perlu dicatat bahwa aliran kontrol dalam arsitektur ini adalah serial. Masukan ucapan dari pengguna diproses oleh pengenal ucapan (speech recogniser) dan diteruskan kepada komponen pemahaman bahasa (language understanding). Representasi yang dihasilkan oleh komponen pemahaman bahasa ini kemudian diteruskan ke manajer dialog (dialogue manager). Dalam beberapa hal manajer dialog akan menghasilkan pesan yang akan dikeluarkan untuk
11
pengguna. Pesan ini akan melewati pembangkitan bahasa dan komponen sintesis teks ke ucapan sehingga sudah dalam bentuk yang akan diucapkan kepada pengguna. Manajer dialog juga akan berinteraksi dengan sumber pengetahuan luar (external information source) yang memberikan informasi untuk menjadi keluaran bagi pengguna. Beberapa pesan yang lewat melalui sistem mungkin dibutuhkan untuk melengkapi dialog. Sebagai contoh manajer dialog perlu untuk mengklarifikasi beberapa hal atau mungkin perlu untuk mengajukan pertanyaan tambahan sebelum dapat mengambil informasi yang diperlukan dari sumber pengetahuan luar (external information source). Sebagian besar sistem dialog lisan, terutama yang dikembangkan secara komersial dirancang menggunakan kontrol aliran serial. Sistem yang lebih canggih seperti yang sedang dikembangkan di laboratorium riset, mungkin melibatkan arsitektur yang berbeda dimana manajer dialog memerankan fungsi pengawasan pusat dan berinteraksi secara langsung dengan komponen lainnya. Sebagai contoh jika ada masalah pada tingkat pengenalan ucapan, manajer dialog mungkin bisa membawa beberapa pengetahuan kontekstual untuk menanggung yang tidak tersedia dalam komponen pengenalan ucapan. Penggunaan sumbersumber pengetahuan berganda pada berbagai tahap proses pengendalian dialog adalah subjek penelitian saat ini.
2.3 SPEECH APPLICATION PROGRAMMING INTERFACE (SAPI)
Salah satu ekstensi terbaru untuk sistem operasi Windows 95 adalah Speech Application Programming Interface (SAPI) (Michael C. Amunsen 362). Ekstensi Windows ini memberikan workstation kemampuan untuk mengenali ucapan manusia sebagai masukan, dan menciptakan keluaran audio seperti ucapan manusia dari teks. Kemampuan ini menambahkan dimensi baru bagi interaksi antara manusia dan komputer. Layanan pengenalan ucapan (Speech Recognition) dapat digunakan untuk memperluas penggunaan komputer bagi pengguna yang menemukan kesulitan dalam mengetik atau butuh waktu lama dalam mengetik. Layanan teks ke ucapan (Text To Speech) dapat digunakan untuk menyediakan
12
representasi suara dari dokumen teks bagi mereka yang tidak dapat melihat tampilan layar karena keterbatasan fisik atau karena sifat pekerjaan mereka. Speech API (SAPI) merupakan bagian dari model Windows Open Services Architecture (WOSA). Layanan pengenalan ucapan Speech Recognition (SR) dan Text To Speech (TTS) disediakan oleh modul terpisah yang disebut mesin (engine). Pengguna dapat memilih mesin pengenalan ucapan yang lebih disukai untuk digunakan, asalkan tetap sesuai dengan antarmuka SAPI.
2.3.1 Sistem Pengenalan Ucapan SAPI
Setiap sistem pengenalan ucapan pada intinya memiliki suatu proses untuk mengenali ucapan manusia dan mengubahnya menjadi sesuatu yang dimengerti oleh komputer. Untuk itu sebuah komputer membutuhkan penerjemah. Penelitian algoritma pengenalan ucapan yang efektif dan model pengolahannya telah berlangsung hampir sejak komputer diciptakan. Setiap sistem pengenalan ucapan menggunakan empat operasi kunci untuk mendengarkan dan memahami ucapan manusia, yaitu: 1. Pemisahan kata (word separation), ini adalah proses menciptakan bagian terpisah (discreet) dari ucapan manusia. Setiap bagian dapat sebagai frasa yang besar atau kecil sebagai suku kata tunggal atau bagian kata. 2. Perbendaharaan kata (vocabulary), ini adalah daftar item suara yang dapat diidentifikasi oleh mesin pengenalan ucapan. 3. Pencocokan kata (word matching), ini adalah metode sistem pengenalan ucapan yang digunakan untuk mencari bagian suara di sistem perbendaharaan kata (bagian mesin pencari dari sistem). 4. Ketergantungan pembicara (speaker dependence), ini adalah sejauh mana mesin pengenalan ucapan bergantung pada nada vokal dan pola bicara individu. Keempat operasi kunci dalam sistem pengenalan ucapan tersebut secara erat berhubungan. Jika ingin mengembangkan sistem pengenalan ucapan dengan perbendaharaan kata yang besar, diperlukan sistem pencocokan kata yang canggih supaya cepat mencari dalam perbendaharaan kata. Selain itu, semakin besar
13
perbendaharaan kata, maka lebih banyak item didalam daftar yang memiliki suara yang sama (misalnya, yes dan yet). Supaya berhasil mengidentifikasi bagian suara, bagian pemisahan kata dari sistem harus dapat menentukan perbedaan yang lebih kecil dan rinci diantara item suara. Mesin pengenalan ucapan harus menyeimbangkan semua faktor tersebut terhadap aspek ketergantungan terhadap pembicara. Sebagai sistem pengenalan ucapan yang mampu mempelajari perbedaan yang sekecil-kecilnya diantara kata, sistem menjadi lebih tergantung pada kebiasaan pembicaraan satu pengguna. Aksen individu dan pola bicara bisa membingungkan mesin pengenalan ucapan. Dengan kata lain, sebuah sistem menjadi lebih responsif kepada pengguna tunggal dan sistem yang sama menjadi kurang mampu menerjemahkan ucapan pengguna lainnya.
2.3.1.1 Pemisahan Kata
Tugas pertama dari mesin pengenalan ucapan adalah untuk menerima kata-kata sebagai masukan. Mesin pengenalan ucapan menggunakan proses yang disebut pemisahan kata (word separation) untuk mengumpulkan suara manusia, sama seperti keyboard yang digunakan sebagai perangkat masukan untuk menerima penekanan tombol fisik untuk penjabaran ke dalam karakter yang bisa dibaca. Proses pemisahan kata menerima suara manusia untuk diterjemahkan oleh komputer. Ada tiga metode dasar pemisahan kata, yaitu: a. Ucapan terpisah (discrete speech) b. Mengenal kata (word spotting) c. Ucapan kontinu (continuous speech) Sistem yang menggunakan metode ucapan terpisah dari proses pemisahan kata meminta pengguna untuk menempatkan jeda di antara masing-masing kata yang diucapkan. Jeda sunyi tersebut memungkinkan sistem pengenalan ucapan untuk mengenali awal dan akhir dari setiap kata. Jeda tersebut memisahkan katakata seperti tombol spasi yang dilakukan ketika mengetik. Keuntungan dari metode ucapan terpisah adalah memerlukan paling sedikit sumber daya komputasi. Kerugian dari metode ini adalah tidak mudah digunakan. Sistem yang
14
menggunakan metode ucapan terpisah dapat dengan mudah menjadi bingung jika pengguna tidak memberikan jeda di antara kata. Sistem yang menggunakan metode mengenal kata menghindarkan pengguna dari memberikan jeda di antara kata dengan hanya mendengarkan katakata kunci atau frasa. Sistem mengenal kata, pada dasarnya mengabaikan kata yang tidak ditahui dan bertindak hanya pada kata-kata yang dapat dicocokkan dalam perbendaharaan kata. Misalnya, sistem pengenalan ucapan dapat mengenali kata help, dan sistem akan menjalankan windows help setiap kali mendengar kata itu. Dalam metode mengenal kata, kalimat-kalimat berikut ini semuanya akan mengakibatkan mesin pengenalan ucapan melakukan pemanggilan windows help. Please load Help. Can you help me, please? These definitions are no help at all! Seperti yang terlihat, salah satu kelemahan dari metode mengenal kata adalah sistem dapat dengan mudah salah dalam menafsirkan maksud dari pengguna. Namun metode mengenal kata juga memiliki beberapa keuntungan utama. Metode mengenal kata memungkinkan pengguna untuk berbicara normal, tanpa memberikan jeda. Selain itu, karena sistem mengenal kata mengabaikan kata-kata yang tidak diketahui dan bertindak hanya pada kata-kata kunci, sistem ini dapat memberikan penampilan yang lebih canggih. Metode mengenal kata membutuhkan lebih besar sumber daya komputasi daripada metode ucapan terpisah, tetapi tidak sebanyak metode terakhir dari pemisahan kata yaitu metode ucapan kontinu. Sistem ucapan kontinu mengenali dan memproses setiap kata yang diucapkan. Hal ini memberikan tingkat akurasi terbesar saat mencoba untuk memahami permintaan pembicara. Namun hal itu juga membutuhkan jumlah terbesar sumber daya komputasi. Pertama, sistem pengenalan ucapan harus menentukan awal dan akhir setiap kata tanpa menggunakan jeda. Hal ini mirip readingtextthathasnospacesinit. Setelah kata-kata dipisahkan sistem harus melihat di dalam perbendaharaan kata dan mengidentifikasinya. Proses tersebut juga, dapat mengambil waktu komputasi yang berharga. Keuntungan utama dari sistem ucapan kontinu adalah menawarkan tingkat kecanggihan terbesar dalam
15
mengenali suara manusia. Kelemahan utamanya adalah jumlah sumber daya komputasi yang dibutuhkan.
2.3.1.2 Ketergantungan Pembicara
Ketergantungan pembicara merupakan faktor kunci dalam desain dan implementasi sistem pengenalan ucapan. Secara teori, kita pasti menginginkan sebuah sistem yang memiliki ketergantungan terhadap pembicara yang sangat kecil. Ini berarti bahwa workstation yang sama dapat diakses menggunakan ucapan oleh beberapa orang dengan hasil yang sama positif. Cara setiap orang dalam berbicara sangat berbeda dari satu dengan yang lain, hal inilah yang dapat menyebabkan masalah. Dengan adanya kasus aksen, misalnya Amerika Serikat sebagai contoh, kita dapat mengidentifikasi suara beberapa daerah. Ditambah lagi kemungkinan bahwa pembicara juga mungkin memiliki aksen yang berasal dari luar Amerika Serikat karena pengaruh bahasa lain (Spanyol, Jerman, Jepang), dan setiap orang memiliki berbagai pengucapan bahkan untuk kalimat yang paling sederhana. Kecepatan pembicara dan infleksi nada juga bisa sangat bervariasi, yang dapat menimbulkan masalah bagi sistem pengenalan ucapan dalam menentukan apakah sebuah ungkapan lisan pembicara adalah suatu pernyataan atau pertanyaan. Sistem pengenalan ucapan dibagi ke dalam tiga kategori dalam hal ketergantungan pembicara, yaitu: a. Pembicara bebas (speaker independent) b. Pembicara terikat (speaker dependent) c. Pembicara adaptif (speaker adaptive) Sistem pembicara bebas membutuhkan sumber daya yang paling besar. Sistem ini harus mampu secara akurat menerjemahkan bahasa manusia dari berbagai dialek dan aksen. Sistem pembicara terikat memerlukan paling sedikit sumber daya komputasi. Sistem ini mengharuskan pengguna melatih sistem sebelum dapat akurat mengkonversi ucapan manusia. Sebuah kompromi antara kedua pendekatan ini adalah metode pembicara adaptif. Sistem pembicara adaptif
16
siap untuk bekerja tanpa pelatihan dan akurasi akan meningkat setelah bekerja dengan pembicara yang sama untuk jangka waktu tertentu. Pelatihan tambahan yang diperlukan oleh sistem pembicara terikat bisa membuat frustasi bagi pengguna. Biasanya pelatihan dapat memakan waktu, namun beberapa sistem dapat mencapai akurasi 90 persen atau lebih setelah hanya lima menit pelatihan. Pengguna dengan cacat fisik, atau mereka yang menemukan kesulitan dalam pengetikan, akan paling mungkin menerima dalam menggunakan sistem pembicara terikat. Sistem yang akan digunakan oleh banyak orang yang berbeda membutuhkan kekuatan sistem pembicara bebas. Hal ini terutama berlaku untuk sistem yang akan bertemu dengan orang yang berbeda-beda, seperti sistem pengenalan ucapan pada kios informasi di bandara. Dalam situasi tersebut, pelatihan tidak mungkin terjadi dan tingkat akurasi yang tinggi sangat diharapkan. Untuk sistem pengenalan ucapan, dimana beberapa orang akan mengakses workstation yang sama selama jangka waktu yang lama, sistem pembicara adaptif akan bekerja dengan baik. Sebagai contoh sebuah workstation yang digunakan oleh beberapa karyawan suatu perusahaan untuk mencari informasi dari basis data. Investasi awal yang dibutuhkan untuk pelatihan sistem pengenalan ucapan akan terlunasi dari waktu ke waktu seiring dengan manfaat sistem yang digunakan oleh staf perusahaan tersebut.
2.3.1.3 Pencocokan Kata
Pencocokan kata adalah proses melakukan pencarian (look-up) ke basis data suara. Setiap kata yang telah dikumpulkan (menggunakan teknik pemisahan kata), maka harus dicocokkan terhadap beberapa item dalam basis data mesin pengenalan ucapan. Ini adalah proses pencocokan kata yang menghubungkan sinyal masukan audio ke item yang dimaksud dalam basis data mesin pengenalan ucapan. Ada dua metode utama dari pencocokan kata, yaitu: a. Pencocokan seluruh kata (whole-word matching) b. Pencocokan fonem (phoneme matching)
17
Dalam metode pencocokan seluruh kata, mesin pengenalan ucapan mencari dalam perbendaharaan kata untuk kata yang cocok dengan masukan audio. Metode pencocokan seluruh kata memerlukan lebih sedikit kemampuan pencarian daripada pencocokan fonem. Tetapi, metode pencocokan seluruh kata membutuhkan lebih besar jumlah kapasitas penyimpanan. Berdasarkan model pencocokan seluruh kata, sistem harus menyimpan contoh (template) kata yang mewakili setiap kemungkinan kata yang dapat dikenali oleh mesin pengenalan ucapan. Sistem pencocokan fonem menyimpan kamus bahasa fonem. Fonem adalah bagian terkecil suara unik dari bahasa. Sebagai contoh, bahasa Inggris memiliki 26 huruf, huruf-huruf ini tidak mewakili daftar kemungkinan seluruh fonem. Fonem juga tidak dibatasi oleh konvensi ejaan. Misalnya kata Philip dan fill up. Kata-kata ini memiliki fonem yang sama: f, eh, ul, ah, dan pah. Namun kedua kata tersebut sama sekali berbeda makna. Berdasarkan model pencocokan seluruh kata, kata-kata ini dapat mewakili beberapa masukan dalam basis data. Berdasarkan model pencocokan fonem, fonem lima yang sama dapat digunakan untuk mewakili kedua kata tersebut. Sistem pencocokan fonem memerlukan lebih banyak sumber daya komputasi, tapi ruang penyimpanan lebih sedikit.
2.3.1.4 Perbendaharaan Kata
Elemen terakhir dari sistem pengenalan ucapan adalah perbendaharaan kata. Ada dua hal yang bersaing tentang perbendaharaan kata, yaitu ukuran dan akurasi. Dengan meningkatnya ukuran perbendaharaan kata, pengenalan akan membaik. Dengan perbendaharaan kata besar, mudah bagi sistem pengenalan ucapan untuk menemukan kata yang cocok yang diidentifikasi dalam tahap pemisahan kata. Namun mungkin lebih dari satu masukan dalam perbendaharaan kata akan cocok dengan masukan yang diberikan. Misalnya, kata no dan go sangat mirip untuk sebagian besar mesin pengenalan ucapan. Karena itu, semakin besar ukuran perbendaharaan kata maka akurasi dari pengenalan ucapan bisa menurun. Perbendaharaan kata dari mesin pengenalan ucapan mewakili jumlah kata yang dapat dikenali dalam state. Sebagai contoh, kita asumsikan frasa kata berikut
18
telah terdaftar pada mesin pengenalan ucapan, yaitu "Start running Exchange" dan "Start running Word". Sebelum kita mengucapkan apa-apa, keadaan state mesin pengenalan ucapan memiliki empat kata: start, running, Exchange, dan Word. Setelah kita mengucapkan "Start running" hanya ada dua kata dalam keadaan state ini yaitu Exchange dan Word. Kemampuan sistem untuk melacak kemungkinan kata berikutnya ditentukan oleh ukuran perbendaharaan katanya. Sistem dengan perbendaharaan kata kecil (100 kata atau kurang) bekerja dengan baik dalam situasi di mana sebagian besar pengenalan ucapan dikhususkan untuk pemrosesan perintah. Namun diperlukan perbendaharaan kata besar untuk menangani sistem dikte. Perbendaharaan kata sistem dikte dapat mencapai puluhan ribu kata. Ini adalah salah satu alasan bahwa sistem dikte begitu sulit untuk diterapkan. Tidak hanya memerlukan perbendaharaan kata yang diperbanyak, resolusi juga harus dibuat dengan cukup cepat.
2.3.2 Teks Ke Ucapan SAPI
Tipe kedua layanan suara menyediakan kemampuan untuk mengubah teks tertulis ke dalam kata-kata yang diucapkan. Hal ini disebut teknologi Text To Speech
(TTS).
Seperti
halnya
terdapat
sejumlah
faktor
yang
perlu
dipertimbangkan ketika mengembangkan mesin Speech Recognition (SR), ada beberapa hal pula yang harus diperhatikan saat membuat dan menerapkan aturan untuk mesin TTS. Keempat hal tersebut yang harus diatasi ketika membuat mesin TTS adalah sebagai berikut: 1. Fonem (phonemes) 2. Kualitas suara (voice quality) 3. Teks ke ucapan sintesis (TTS synthesis) 4. TTS diphone concatenation
2.3.2.1 Kualitas Suara
19
Kualitas suara terkomputerisasi secara langsung berkaitan dengan kecanggihan dari aturan yang mengidentifikasi dan mengkonversi teks ke sinyal audio. Tidak terlalu sulit untuk membangun sebuah mesin TTS yang dapat membuat suara yang dikenali, namun sangat sulit untuk membuat mesin TTS yang tidak terdengar seperti suara buatan komputer. Tiga faktor dalam ucapan manusia yang sangat sulit untuk dihasilkan dengan komputer, yaitu: a. Prosodi (prosody) b. Emosi (emotion) c. Anomali pengucapan (pronunciation anomalies) Ucapan manusia memiliki irama khusus atau prosodi (pola jeda), infleksi, dan penekanan yang merupakan bagian integral dari bahasa. Komputer dapat melakukan pekerjaan dengan baik jika hanya melakukan pengucapan kata-kata individual, tetapi sulit untuk membuat komputer akurat meniru nada dan irama ucapan manusia. Untuk alasan ini, selalu cukup mudah untuk membedakan suara yang dihasilkan komputer dengan komputer memutar ulang rekaman suara manusia. Faktor lain dari ucapan manusia yang masih membuat komputer memiliki kesulitan dalam menerjemahkan adalah emosi. Meskipun mesin TTS mampu membedakan pernyataan deklaratif dari pertanyaan atau seruan, komputer masih belum mampu menyampaikan kualitas emotif ketika menterjemahkan teks ke ucapan. Selain itu setiap bahasa memiliki anomali pengucapan sendiri yang tidak dimainkan dengan aturan ketika mengubah teks menjadi ucapan. Beberapa contoh umum dalam bahasa Inggris adalah dough dan tough atau comb dan home. Sistem teks ke ucapan biasanya menawarkan beberapa cara untuk mengoreksi jenis masalah. Salah satu solusi yang khas adalah menyertakan kemampuan
untuk
memasukkan
ejaan
fonetik
dari
sebuah
kata
dan
menguhubungkan ejaan tersebut ke dalam versi teks. Penyesuaian lainnya yang umum adalah mengizinkan pengguna untuk memasukkan tags kontrol dalam teks untuk menginstruksikan mesin teks ke ucapan untuk menambahkan penekanan atau infleksi, atau mengubah kecepatan atau pitch dari keluaran audio.
2.3.2.2 Fonem
20
Fonem adalah bagian suara yang membentuk kata-kata. Ahli bahasa menggunakan fonem untuk merekam secara akurat suara vokal yang diucapkan oleh manusia ketika berbicara. Fonem yang sama juga dapat digunakan untuk menghasilkan suara terkomputerisasi. Mesin TTS menggunakan pengetahuan ahli bahasa tentang aturan tata bahasa (grammar rule) dan fonem untuk memindai teks tercetak dan menghasilkan keluaran audio. Model desain SAPI mengenali dan memungkinkan penggabungan fonem sebagai metode untuk membuat keluaran suara. Microsoft telah mengembangkan sebuah ekspresi dari International Phonetic Alphabet (IPA) dalam bentuk string Unicode. Pemrogram dapat menggunakan string untuk meningkatkan kemampuan pengucapan dari mesin TTS, atau untuk menambahkan kata-kata yang sama sekali baru ke dalam perbendaharaan kata.
2.3.2.3 Teks Ke Ucapan Sintesis
Setelah TTS mengetahui fonem yang digunakan untuk mereproduksi kata, ada dua metode yang mungkin untuk menciptakan keluaran audio, yaitu sintesis atau diphone concatenation. Metode sintesis menggunakan perhitungan dari bibir seseorang dan posisi lidah, kekuatan napas, dan faktor lainnya untuk mensintesis ucapan manusia. Metode ini biasanya tidak seakurat metode diphone. Namun, jika TTS menggunakan metode sintesis untuk menghasilkan keluaran, sangat mudah untuk memodifikasi beberapa parameter, dan kemudian membuat suara baru. Sintesis berbasis mesin TTS secara keseluruhan memerlukan sumber daya komputasi yang sedikit dan kapasitas penyimpanan sedikit. Sistem berbasis sintesis yang sedikit lebih sulit untuk dimengerti pada awalnya, tetapi biasanya menawarkan pengguna kemampuan untuk menyesuaikan nada, kecepatan, dan infleksi suara yang agak mudah.
2.3.2.3 TTS Diphone Concatenation
21
Metode diphone concatenation dalam pembangkitan suara menggunakan pasangan fonem untuk memproduksi masing-masing suara. Diphone ini merupakan awal dan akhir setiap bagian suara individu. Misalnya, kata “pig” berisi diphone silence-p, p-i, i-g, dan g-silence. Sistem TTS Diphone meneliti kata dan kemudian menyusun pasangan fonem yang benar untuk mengucapkan kata tersebut. Pasangan fonem ini diproduksi bukan oleh sintesis komputer, tapi dari rekaman sebenarnya suara manusia yang telah telah dipecah menjadi unsur-unsur terkecil dan dikelompokkan ke dalam berbagai pasangan diphone. Karena sistem TTS yang menggunakan diphone menggunakan elemen dari ucapan manusia yang sebenarnya, sehingga dapat menghasilkan keluaran lebih menyerupai manusia. Namun, karena pasangan diphone sangat bersifat bahasa spesifik, sistem diphone TTS biasanya didedikasikan untuk memproduksi satu bahasa. Karena itu, sistem diphone tidak bisa diterapkan dengan baik dalam lingkungan di mana ada katakata asing yang banyak, atau dimana TTS mungkin diperlukan untuk menghasilkan keluaran lebih dari satu bahasa.
2.3.3 Aturan Tata Bahasa
Elemen terakhir dari mesin pengenalan ucapan adalah aturan tata bahasa (grammar rule). Aturan tata bahasa digunakan oleh perangkat lunak pengenalan ucapan untuk menganalisis masukan ucapan manusia dan di dalam proses berupaya untuk memahami apa yang seseorang katakan. Ada banyak tata bahasa, masing-masing terdiri dari satu set aturan pengucapan. Sama seperti manusia yang harus belajar memakai tata bahasa umum agar dapat dipahami, komputer juga harus memakai tata bahasa yang sama dengan pembicara untuk mengkonversi informasi audio ke dalam teks. Tata bahasa dapat dibagi dalam tiga jenis, yaitu: a. Tata bahasa bebas konteks (context-free grammars) b. Tata bahasa dikte (dictation grammars) c. Tata bahasa domain terbatas (limited domain grammars)
22
Tata bahasa bebas konteks menawarkan tingkat terbesar fleksibilitas ketika menafsirkan ucapan manusia. Tata bahasa dikte menawarkan tingkat akurasi terbesar saat mengubah kata yang diucapkan menjadi teks. Tata bahasa domain terbatas menawarkan kompromi antara tata bahasa bebas konteks yang sangat fleksibel dan tata bahasa dikte yang terbatas.
2.3.3.1 Tata Bahasa Bebas Konteks
Tata bahasa bebas konteks (context-free grammars) bekerja pada prinsip aturan-aturan berikut yang ditetapkan untuk menentukan kandidat yang paling mungkin untuk kata berikutnya di dalam kalimat. Context-Free Grammars (CFG) tidak bekerja pada pemikiran bahwa setiap kata harus dipahami dalam konteks. Sebaliknya, mereka mengevaluasi hubungan dari setiap kata dan frasa kata untuk mengetahui satu set aturan tentang kata apa yang mungkin pada suatu waktu tertentu. Unsur-unsur utama CFG yaitu: a. Kata-kata (words ), sebuah daftar kata yang valid untuk diucapkan. b. Aturan-aturan (rules), satu set struktur ucapan di mana kata-kata digunakan. c. Daftar (lists), satu atau lebih set kata untuk digunakan dalam aturan. CFG baik untuk sistem yang harus berurusan dengan berbagai masukan. CFG juga mampu menangani perbendaharaan kata yang berubah-ubah. Hal ini karena sebagian besar bangunan aturan dilakukan CFG untuk menyelesaikan daftar deklarasi dan kelompok kata yang sesuai dengan pola umum atau aturan umum. Setelah mesin pengenalan ucapan memahami aturan, sangat mudah untuk memperluas perbendaharaan kata dengan memperluas daftar kemungkinan anggota kelompok. Sebagai contoh, aturan dalam CFG:
=ALT("Mike","Curt","Sharon","Angelique") <SendMailRule>=("Send Email to", ) Dalam contoh di atas, dua aturan telah ditetapkan. Aturan pertama, , menciptakan daftar nama yang mungkin. Aturan kedua, <SendMailRule>, menciptakan aturan yang bergantung pada . Dengan cara ini, CFG memungkinkan untuk membangun aturan tata bahasa sendiri sebagai pemrediksi bagaimana manusia akan berinteraksi dengan sistem.
23
Bahkan lebih penting lagi, CFG memungkinkan untuk ekspansi yang mudah pada saat run-time. Karena banyak cara operasi CFG berfokus pada daftar, memungkinkan kemudahan bagi pengguna untuk menambah daftar anggota dan karena hal itulah yang meningkatkan nilai sistem pengenalan ucapan cepat. Hal ini mempermudah dalam menginstal sebuah sistem dengan hanya menggunakan komponen dasar. Sistem dasar dapat diperluas untuk memenuhi kebutuhan dari berbagai pengguna. Dengan cara ini, CFG menawarkan fleksibilitas tinggi dengan biaya pengembangan yang sangat sedikit atau sedikit komplikasi. Pembangunan CFG yang berkualitas merupakan tantangan, namun sistem yang hanya perlu melakukan beberapa hal-hal (seperti memuat dan menjalankan program, eksekusi petunjuk sederhana, dan sebagainya) mudah disajikan menggunakan CFG. Namun, dalam rangka untuk melakukan tugas yang lebih kompleks atau tugas yang lebih luas, aturan tambahan diperlukan. Karena CFG dasar prediksinya pada aturan yang telah ditetapkan, CFG tidak baik untuk tugastugas seperti dikte, dimana perbendaharaan kata yang besar merupakan suatu hal yang paling penting.
2.3.3.2 Tata Bahasa Dikte
Tidak seperti CFG yang beroperasi menggunakan aturan, tata bahasa dikte (dictation grammar) berdasarkan evaluasi pada perbendaharaan kata. Fungsi utama dari suatu tata bahasa dikte adalah mengkonversi ucapan manusia ke dalam teks seakurat mungkin. Dalam rangka melakukan ini, tata bahasa dikte tidak hanya membutuhkan perbendaharaan kata yang banyak untuk bekerja, tetapi juga contoh keluaran untuk digunakan sebagai model ketika menganalisis masukan ucapan. Aturan dari pengucapan tidak penting untuk suatu sistem yang hanya mengkonversi masukan manusia menjadi teks. Elemen dari tata bahasa dikte adalah: a. Topik (topic), mengidentifikasi topik dikte (misalnya, medis atau hukum). b. Umum (common), satu set kata yang biasa digunakan dalam dikte. Biasanya kelompok umum berisi teknis atau kata-kata khusus yang diharapkan muncul selama dikte yang biasanya tidak ditemukan di percakapan reguler.
24
c. Grup (group), satu set kata terkait yang diharapkan, tetapi yang tidak langsung berkaitan dengan topik dikte. Grup biasanya memiliki seperangkat kata yang diharapkan sering terjadi selama dikte. Model tata bahasa bisa mengandung lebih dari satu grup. d. Contoh (sample), contoh teks yang menunjukkan gaya penulisan pembicara atau format umum dikte. Teks ini digunakan untuk membantu mesin pengenalan ucapan dalam menganalisis masukan ucapan. Keberhasilan
tata
bahasa
dikte
tergantung
pada
kualitas
dari
perbendaharaan kata. Semakin banyak item pada daftar, semakin besar peluang mesin pengenalan ucapan salah antara satu item dengan yang lain. Namun, semakin terbatas perbendaharaan kata, semakin besar jumlah kata yang tidak diketahui yang akan terjadi selama dikte. Sistem dikte yang paling sukses dengan adanya keseimbangan kedalaman perbendaharaan kata dan keunikan kata-kata dalam basis data. Untuk alasan ini, sistem dikte biasanya disetel untuk satu topik, seperti dikte hukum atau medis. Dengan membatasi perbendaharaan kata kepada kata yang paling mungkin terjadi diperjalanan dikte, akurasi terjemahan meningkat.
2.3.3.3 Tata Bahasa Domain Terbatas
Tata bahasa domain terbatas (limited domain grammars) menawarkan kompromi antara fleksibilitas CFG dan keakuratan tata bahasa dikte. Tata bahasa domain terbatas memiliki unsur-unsur berikut: a. Kata-kata (words), ini adalah daftar kata khusus yang mungkin terjadi selama sesi. b. Grup (group), ini adalah satu set kata terkait yang dapat terjadi selama sesi. Tata bahasa dapat berisi beberapa kelompok kata. Sebuah frasa tunggal akan diharapkan untuk memasukkan salah satu kata dalam kelompok. c. Contoh (sample), contoh teks yang menunjukkan gaya penulisan pembicara atau format umum dikte. Teks ini digunakan untuk membantu mesin pengenalan ucapan dalam menganalisis masukan ucapan.
25
Tata
bahasa
domain
terbatas
berguna
dalam
situasi
di
mana
perbendaharaan kata sistem tidak perlu sangat besar. Contohnya sistem yang menggunakan bahasa alami untuk menerima pernyataan perintah, seperti "How can I set the margins?" atau "Replace all instances of 'New York' with 'Los Angeles'". Tata bahasa domain terbatas juga bekerja dengan baik untuk mengisi formulir atau untuk masukan teks sederhana.
2.4 APPLICATION PROGRAMMING INTERFACE (API) SAPI 5.1
Application Programming
Interface
(API) SAPI secara dramatis
mengurangi pemakaian berlebih kode yang diperlukan sebuah aplikasi untuk menggunakan pengenalan ucapan dan teks ke ucapan, sehingga membuat teknologi mesin ucapan lebih mudah diakses dan baik untuk berbagai aplikasi. API SAPI menyediakan antarmuka tingkat tinggi antara aplikasi dan mesin ucapan. SAPI menerapkan semua detil tingkat rendah (low-level) yang dibutuhkan untuk mengendalikan dan mengelola operasi secara langsung (real-time) dari berbagai mesin ucapan. Dua tipe dasar mesin SAPI adalah sistem teks ke ucapan (Teks-To-Speech) dan pengenalan ucapan (Speech Recognition). Sistem TTS mensintesis string teks dan file ke dalam audio ucapan menggunakan suara sintetik. Pengenalan ucapan mengkonversi audio yang diucapkan manusia ke dalam string teks yang dapat dibaca dan file.
2.4.1 API Untuk Teks Ke Ucapan
Aplikasi dapat mengontrol teks ke ucapan (TTS) dengan menggunakan Component Object Model (COM) ISpVoice. Setelah aplikasi menciptakan suatu obyek ISpVoice, aplikasi hanya perlu untuk memanggil ISpVoice::Speak untuk menghasilkan keluaran ucapan dari beberapa data teks. Selain itu, antarmuka ISpVoice juga menyediakan beberapa metode untuk mengubah properti suara dan
26
sintesis seperti tingkat pengucapan ISpVoice::SetRate, volume keluaran ISpVoice::SetVolume dan mengubah suara pembicara ISpVoice::SetVoice. SAPI kontrol khusus juga dapat dimasukkan bersama dengan masukan teks untuk mengubah properti sintesis secara langsung (real-time) seperti suara, pitch, penekanan kata, kecepatan ucapan dan volume. Markup sintesis sapi.xsd, menggunakan format standar XML, merupakan cara sederhana namun handal untuk menyesuaikan ucapan TTS, tanpa terikat dari mesin tertentu atau suara yang sedang digunakan. Metode ISpVoice::Speak dapat beroperasi baik secara synchronous (mengembalikan nilai hanya ketika benar-benar selesai melakukan pengucapan) atau asynchronous (segera mengembalikan nilai dan pengucapan sebagai proses latar belakang). Ketika pengucapan secara asynchronous, informasi status secara langsung (real-time) seperti status pengucapan dan lokasi teks dapat disurvei menggunakan ISpVoice::GetStatus. Juga ketika pengucapan secara asynchronous, teks baru dapat diucapkan oleh salah satu keluaran langsung menyela saat itu juga atau dengan secara otomatis menambahkan teks baru ke akhir keluaran. Selain antarmuka ISpVoice, SAPI juga menyediakan banyak utilitas antarmuka COM untuk aplikasi TTS yang lebih maju. SAPI berkomunikasi dengan aplikasi dengan mengirim kejadian-kejadian (events) menggunakan mekanisme callback standar (pesan Window, Proc Callback atau Win32 Event). Untuk TTS, kejadian-kejadian secara banyak digunakan untuk sinkronisasi keluaran ucapan.
2.4.2 API Untuk Pengenalan Ucapan
Sama seperti ISpVoice yang merupakan antarmuka utama untuk sintesis ucapan, ISpRecoContext adalah antarmuka utama untuk pengenalan ucapan. ISpRecoContext adalah kendaraan aplikasi pengenalan ucapan untuk menerima pemberitahuan untuk kejadian pengenalan ucapan yang diminta. Sebuah aplikasi memiliki dua pilihan jenis mesin pengenalan ucapan (ISpRecognizer). Sebuah pengenalan bersama yang mungkin bisa dibagi dengan aplikasi pengenalan ucapan lainnya dianjurkan untuk sebagian besar aplikasi pengenalan ucapan. Untuk membuat ISpRecoContext untuk ISpRecognizer
27
bersama
aplikasi
(shared),
hanya
perlu
melakukan
panggilan
COM
CoCreateInstance pada komponen CLSID_SpSharedRecoContext. Dalam hal ini, SAPI akan mengatur masukan stream audio, mengaturnya ke standar SAPI input streaming audio. Untuk aplikasi server besar yang akan berjalan sendirian pada sebuah sistem, dan kinerja adalah kunci, mesin pengenalan ucapan InProc yang lebih sesuai. Dalam rangka menciptakan ISpRecoContext untuk ISpRecognizer InProc, pertama aplikasi harus memanggil CoCreateInstance pada komponen CLSID_SpInprocRecoInstance untuk membuat sendiri ISpRecognizer InProc. Maka aplikasi harus membuat panggilan ke ISpRecognizer::SetInput mengatur
masukan
audio.
Akhirnya,
aplikasi
dapat
untuk
memanggil
ISpRecognizer::CreateRecoContext untuk mendapatkan sebuah ISpRecoContext. Langkah selanjutnya adalah mengatur pemberitahuan untuk kejadiankejadian
aplikasi
tersebut
tertarik.
ISpRecognizer
juga
merupakan
ISpEventSource, yang pada gilirannya merupakan ISpNotifySource, aplikasi dapat memanggil salah satu metode ISpNotifySource dari ISpRecoContext untuk menunjukkan di mana aktivitas untuk yang ISpRecoContext harus dilaporkan. Kemudian harus memanggil ISpEventSource::SetInterest untuk menunjukkan aktivitas yang perlu diberitahu. Kejadian yang paling penting adalah SPEI_RECOGNITION, yang menunjukkan bahwa ISpRecognizer telah mengenali beberapa ucapan untuk ISpRecoContext ini. Akhirnya, sebuah aplikasi pengenalan ucapan harus membuat (create), memuat (load), dan mengaktifkan ISpRecoGrammar, yang pada dasarnya menunjukkan jenis ujaran untuk dikenali, yaitu tata bahasa dikte (dictation) atau perintah dan kontrol (command and control). Pertama, aplikasi ini menciptakan ISpRecoGrammar menggunakan ISpRecoContext::CreateGrammar. Kemudian, memuat
aplikasi
tata
bahasa
yang
sesuai,
baik
dengan
memanggil
ISpRecoGrammar::LoadDictation untuk dikte atau salah satu dari cara ISpRecoGrammar:: LoadCmdxxx untuk perintah dan kontrol. Akhirnya, untuk mengaktifkan tata bahasa ini sehingga pengenalan ucapan dapat memulai aplikasi dengan memanggil ISpRecoGrammar::SetDictationState untuk dikte atau ISpRecoGrammar::SetRuleState atau ISpRecoGrammar::SetRuleIdState untuk perintah dan kontrol.
28
Ketika pengenalan kembali ke aplikasi melalui mekanisme pemberitahuan yang diminta, anggota lParam dari struktur SPEVENT akan menjadi ISpRecoResult oleh aplikasi yang dapat menentukan apa yang dikenali dan untuk ISpRecoGrammar
yang
mana
dari
ISpRecoContext
tersebut.
Sebuah
ISpRecognizer, baik Shared atau InProc, dapat memiliki ISpRecoContext yang dikaitkan dengannya, dan masing-masing bisa diberitahu dengan caranya sendiri dari kejadian yang berkaitan dengannya. ISpRecoContext dapat memiliki beberapa ISpRecoGrammars, masing-masing untuk mengenali berbagai jenis tuturan.
2.5 SHORTCUT
Shortcut adalah ikon pada desktop yang dihubungkan ke file, folder, dan program di lokasi lain (Kok Yung 8). Shortcut ke sebuah dokumen akan membuka dokumen itu dengan program default-nya, shortcut ke file program akan menjalankan program tersebut, shortcut ke folder membuka folder tersebut dalam sebuah jendela. Pengguna dapat dengan mudah membuat atau membuang shortcut di mana pun dan kapan pun. Saat shortcut dihapus tidak berarti program atau file yang di-link dengan shortcut ikut dihapus. Suatu aplikasi pada umumnya disertai dengan berbagai macam kombinasi shortcut. Fungsi dari shortcut tersebut adalah untuk melakukan eksekusi tanpa harus mengklik menu, ikon, ataupun tools. Shortcut tersebut merupakan tombol kombinasi dari keyboard. Dengan adanya shortcut tersebut, maka kita dapat dengan mudah mengoperasikan suatu aplikasi (program).
2.6 HANDLE WINDOW (HWND)
Untuk mengetahui semua sistem kerja Windows, dibutuhkan sebuah buku besar untuk memahami semua hal yang ada di dalamnya. Namun pada dasarnya, kerja sistem Windows dapat dipahami lewat tiga konsep utama, yaitu konsep window sendiri, event dan message. Sistem operasi Microsoft Windows mengatur semua window dengan memasukkan nomor ID (hWnd). Sistem secara terus
29
menerus memonitor aktivitas window atau sering disebut dengan event. Sebuah event dapat terjadi saat pengguna melakukan sesuatu misalnya mengklik mouse atau menekan tombol keyboard. Sebuah event dapat juga diatur atau dikontrol secara progmatik misalnya terjadi saat ada aksi pada window yang lain. Setiap terjadi sebuah event, hal ini akan menyebabkan terjadinya pengiriman atau pemutusan pesan ke window. Setiap window selanjutnya dapat melakukan aksinya yang berpedoman pada instruksi atau pesan yang telah diterima. HWND adalah singkatan dari handle window. Properti ini merupakan nomor identitas dari masing-masing form yang ada pada Windows. Properti hWnd bertipe run time only. Properti ini mengembalikan nilai integer 32-bit yang digunakan Windows untuk mengidentifikasi kontrol (Rahadian Hadi 18). Dalam kontrol Visual Basic, baik kontrol bawaan (intrinsic) maupun kontrol ActiveX terbagi menjadi dua kategori, yaitu kontrol standar dan kontrol windowless (atau lightweight). Ciri-ciri kontrol standar adalah mempunyai nilai hWnd, dan sebaliknya kontrol windowless tidak mempunyai nilai hWnd. Sebagai contoh, kontrol PictureBox dan kontrol Image sama-sama berfungsi untuk menampilkan gambar, tetapi kedua kontrol itu berbeda dalam kategorinya, yaitu PictureBox (standar) dan Image (windowless).
2.7 INTERACTION MODULE
Interaction module dalam Visual Basic berisi perintah yang berkaitan dengan pesan, aplikasi, obyek, dan sistem. Contoh interaction module yaitu AppActive dan Shell. Fungsi perintah AppActive adalah untuk mengaktifkan aplikasi yang sudah dijalankan (Hendrayudi 107). Sedangkan fungsi perintah shell adalah untuk menjalankan aplikasi yang belum aktif. Selain itu ada juga perintah sendkeys. Sendkeys adalah fitur yang berisi perintah penulisan atau pengetikan keyboard secara virtual dengan cara mengirim perintah-perintah pengetikan tombol keyboard ke komputer. Misalnya perintah SendKeys vbTab berfungsi untuk membaca tombol tab pada keyboard.
30
2.8 DATABASE MANAGEMENT SYSTEM (DBMS)
Database Management System atau disingkat DBMS adalah perangkat lunak yang berfungsi untuk mengelola basis data (Yuhefizard 3). Mulai dari membuat basis data itu sendiri, sampai dengan proses yang berlaku dalam basis data tersebut, baik berupa entry, edit, delete, query terhadap data, membuat laporan dan lain sebagainya secara efektif dan efisien. Salah satu jenis DBMS yang sangat terkenal saat ini adalah Relational DBMS (RDBMS). RDBMS merepresentasikan data dalam bentuk tabel-tabel yang saling berhubungan. Sebuah tabel disusun dalam bentuk baris (record) dan kolom (field). Banyak sekali berkembang perangkat lunak RDBMS ini, misalnya MySQL, Oracle, Sybase, dBase, MS. SQL, Microsoft Access (MS. Access) dan lain-lain. Ada
tiga
kelompok
perintah
yang
digunakan
dalam
mengelola
dan
mengorganisasikan data dalam RDBMS, yaitu: 1. Data Definition Language (DDL) Merupakan perintah yang digunakan oleh seorang administrator basis data untuk mendefinisikan struktur basis data, baik membuat tabel baru, menentukan struktur penyimpanan tabel, model relasi antar tabel, validasi data, dan lain sebagainya. 2. Data Manipulation Language (DML) Perintah-perintah yang digunakan untuk memanipulasi dan mengambil data pada suatu basis data. Manipulasi yang dapat dilakukan terhadap data yaitu, penambahan data, penyisipan data, penghapusan data dan pengubahan data. DML merupakan bahasa yang memudahkan pengguna dalam mengakses basis data. Ada dua jenis DML, yaitu: a. Prosedural, mengharuskan pengguna menentukan spesifikasi data apa yang dibutuhkan dan bagaimana cara mendapatkannya. Contoh paket bahasanya adalah dBase Ill, FoxBase, FoxPro. b. Non Prosedural, pengguna hanya menentukan data apa yang dibutuhkan tanpa harus tahu cara mendapatkannya. Contoh paket bahasanya diberi nama Structural Query Language (SQL). 3. Data Control Language (DCL)
31
Bagian ini berkenaan dengan cara mengendalikan data, seperti siapa saja yang bisa melihat isi data, bagaimana data bisa digunakan oleh banyak pengguna, dan lain-lain. Lebih mengarah ke segi sekuritas data.
2.8.1 Data Manipulation Language (DML)
Data Manipulation Language yang akan dikelola adalah record yang ada di dalam tabel (M. Rudyanto Arief 73). Perbedaan antara DDL (Data Definion Language) dan DML (Data Manipulation Language) adalah pada obyek yang dikelolanya. Jika pada DDL yang dikelola adalah obyek basis data, tabel, view, trigger, dan stored procedure, pada DML yang dikelola adalah pada record. SQL menyediakan 4 perintah DML yaitu select, insert, update, dan delete. •
INSERT Perintah INSERT digunakan untuk menyisipkan record ke dalam tabel. Penyisipan record ke dalam tabel bisa dilakukan secara penuh, artinya setiap field pada tabel dalam satu record diisi semua atau hanya pada field tertentu saja. Penyisipan record secara penuh atau hanya sebagian tergantung pada rancangan constraint yang diberikan pada sebuah tabel ketika pertama kali dibuat. Jika sebuah field dideklarasikan NOT NULL, itu artinya record untuk field tersebut harus berisi nilai dan jika tidak berisikan nilai, maka akan muncul pesan kesalahan oleh SQL Server yang menyatakan bahwa field tersebut harus berisi nilai dan tidak boleh kosong. Berikut perintah dasar untuk menyisipkan record: INSERT INTO nama_tabel (field1, field2, ...fieldn) VALUES (‘valuel’, ‘value2’, ‘...value_n’) atau INSERT INTO nama_tabel VALUES (‘valuel’,’value2’,’...’,’value_n’) Perhatikan kedua perintah di atas. Perintah pertama digunakan jika ingin menyisipkan record ke dalam sebuah tabel yang nilainya tidak diisikan penuh. Artinya, kita dapat memilih field mana yang akan diisikan nilai dan mana yang tidak dengan cara menyebutkan langsung field-nya, kemudian nilainya
32
diisikan sesuai dengan jumlah field yang disebutkan. Perintah kedua digunakan jika Anda dapat memastikan bahwa semua field yang ada di dalam tabel akan diisikan penuh dengan nilai sehingga tidak perlu lagi mendefinisikan field mana saja yang akan diisikan nilai. •
UPDATE Perintah tersebut digunakan untuk mengubah data/record dari tabel. Berikut perintah dasar UPDATE: UPDATE nama_tabel SET nama_kolom = ‘nilai_data_baru’ WHERE (kondisi)
•
DELETE Perintah DELETE untuk menghapus data di dalam tabel. Perintah dasar DELETE, yaitu: DELETE FROM nama_tabel WHERE (kondisi)
•
SELECT Perintah SELECT digunakan untuk menampilkan baris-baris data dari tabel. Berikut perintah dasarya: SELECT (fieldl,field2, field_n) FROM tabel_source WHERE [search_condition] GROUP BY [group_by_expression] HAVING [search_condition] ORDER BY [order_expression] [ASC | DESC]
2.9 ANALISIS DAN DISAIN BERORIENTASI OBYEK
Analisis dan disain yang berorientasi obyek (sekali lagi yang ‘berorientasi obyek’, karena dalam banyak kasus masih banyak ditemukan pemrograman dilakukan dengan bahasa pemrograman berorientasi obyek namun analisis dan disain masih dilakukan mengikuti pendekatan terstruktur/fungsional) amat sangat perlu dilakukan dalam pengembangan sistem berorientasi obyek (Julius Hermawan 5). Hanya dengan kemampuan menggunakan bahasa pemrograman berorientasi obyek yang andal akan dapat membangun suatu sistern berorientasi
33
obyek, namun sistem aplikasi yang dibangun akan menjadi lebih baik lagi bila langkah awalnya didahului dengan proses analisis dan disain yang berorientasi obyek, terutama untuk membangun sistem yang robust dan mudah dipelihara. Pertama-tama perlu dibedakan apa yang menjadi tujuan dari proses analisis dan proses disain. Proses analisis bertujuan memahami masalah, yaitu dengan memahami apa yang sebenarnya ada di dalam dunia nyata. Sementara proses disain bertujuan memahami pemecahan masalah yang didapatkan dari proses analisis, yaitu dengan mengusulkan secara detail sistem komputer seperti apa yang perlu dibangun untuk mengatasi suatu masalah. Proses analisis dan disain ini memang merupakan suatu proses yang saling berkelanjutan; proses analisis dulu dan kemudian baru proses disain. Tujuan keduanya adalah jelas untuk mendapatkan domain masalah dan pemecahan logis atas masalah dari kaca mata teknologi obyek. Dalam analisis berorientasi obyek diidentifikasi dan dijelaskan obyek-obyek yang terlibat dalam domain masalah dan bagaimana interaksi terjadi antara obyek tersebut. Obyek dalam analisis adalah obyek dan perspektif dunia nyata. Dalam disain berorientasi obyek didefinisikan obyek-obyek yang bakal diimplentasikan oleh bahasa pemrograman berorientasi obyek. Obyek dalam disain adalah obyek yang sudah dilihat dari perspektif perangkat lunak komputer.
2.10
PEMROGRAMAN BERORIENTASI OBYEK
Pemrograman berorientasi obyek merupakan kelanjutan dari proses analisis dan disain berorientasi obyek. Dalam pemrograman berorientasi obyek ini komponen yang didisain dalam proses disain kemudian diimplementasikan dengan menggunakan bahasa pemrograman berorientasi obyek. Syarat sebuah bahasa pemrograman bisa digolongkan sebagai berorientasi obyek adalah bila bahasa pemrograman tersebut memiliki fitur untuk mengimplementasikan ke 4 konsep berorientasi obyek, yaitu abstraksi, encapsulation, polymorphism, dan inheritance. Dikenal beberapa bahasa pemrograman berorientasi obyek, seperti C++, Java, dan Visual Basic .NET.
34
2.11
UNIFIED MODELLING LANGUAGE (UML)
Unified Modelling Language adalah bahasa standar yang digunakan untuk menjelaskan dan memvisualisasikan artifak dari proses analisis dan disain berorientasi obyek. UML menyediakan standar pada notasi dan diagram yang bisa digunakan untuk memodelkan suatu sistem. UML dikembangkan oleh 3 pendekar ‘berorientasi obyek’, yaitu Grady Booch, Jim Rumbaugh, dan Ivar Jacobson. UML menjadi bahasa yang bisa digunakan untuk berkomunikasi dalam perspektif obyek antara pengguna dengan developer, antara developer dengan developer, antara developer analisis dengan developer disain, dan antara developer disain dengan developer pemrograman. UML memungkinkan developer melakukan permodelan secara visual, yaitu penekanan pada penggambaran, bukan didominasi oleh narasi. Pemodelan visual membantu untuk menangkap struktur dan kelakuan dari obyek, mempermudah penggambaran interaksi antara elemen dalam sistem, dan mempertahankan
konsistensi
antara
disain
dan
implementasi
didalam
pemrograman.
2.11.1
Notasi Dan Artifak Dalam UML
UML menyediakan beberapa notasi dan artifak standar yang bisa digunakan sebagai alat komunikasi bagi para pelaku dalam proses analisis dan disain. Artifak di dalam UML didefinisikan sebagai informasi dalam berbagai bentuk yang digunakan atau dihasilkan dalam proses pengembangan perangkat lunak. Contohnya adalah source code yang dihasilkan oleh proses pemrograman. Di dalam bab ini akan dibahas tiga artifak yang penting saja dari proses analisis dan disain, yaitu Use Case Diagram, Sequence Diagram dan Class Diagram beserta notasi yang berhubungan dengannya yaitu Actor, Class, Interface, Use Case, Interaction, Package, Note, Dependency, Association dan Generalization. Use case diagram merupakan artifak dari proses analisis, sementara Sequence diagram dan Class diagram merupakan artifak dari proses disain.
35
Yang perlu diperhatikan untuk menjaga konsistensi antara artifak selama proses analisis dan disain adalah bahwa setiap perubahan yang terjadi pada satu artifak harus juga dilakukan pada artifak sebelumnya. Misalnya ditemukan satu cara yang lebih efisien sewaktu membuat Sequence diagram, maka perbaikan tersebut perlu diverifikasi terhadap Use case diagram dan apakah perlu dilakukan perubahan juga dalam Use case specification-nya. Actor adalah segala sesuatu yang berinteraksi dengan sistem aplikasi komputer. Jadi actor ini bisa berupa orang, perangkat keras, atau mungkin juga obyek lain dalam sistem yang sama. Biasanya yang dilakukan oleh actor adalah memberikan informasi pada sistem dan/atau memerintahkan sistem untuk melakukan sesuatu. Class merupakan pembentuk utama dari sistem berorientasi obyek karena class menunjukkan kumpulan obyek yang memiliki atribut dan operasi yang sama. Class digunakan untuk mengimplementasikan interface. Class digunakan untuk mengabstraksikan elemen-elemen dari sistem yang sedang dibangun. Class bisa untuk merepresentasikan baik perangkat lunak maupun perangkat keras, baik konsep maupun benda nyata. Notasi class berbentuk persegi panjang berisi 3 bagian: persegi paling atas untuk nama class, persegi panjang paling bawah untuk operasi, dan persegi panjang di tengah untuk atribut. Atribut digunakan untuk menyimpan informasi. Nama atribut menggunakan kata benda yang bisa dengan jelas merepresentasikan informasi yang disimpan di dalamnya. Operasi menunjukkan sesuatu yang bisa dilakukan oleh obyek, dan menggunakan kata kerja. Interface merupakan kumpulan operasi tanpa implementasi dari suatu class. Implementasi operasi dalam interface dijabarkan oleh operasi dalam class. Oleh karena itu keberadaan interface selalu disertai oleh class yang mengimplementasikan operasinya. Interface mi merupakan salah satu cara mewujudkan prinsip enkapsulasi dalam obyek. Use case menjelaskan urutan kegiatan yang dilakukan actor dan sistem untuk mencapai suatu tujuan tertentu. Walaupun menjelaskan kegiatan namun use case hanya menjelaskan apa yang dilakukan oleh actor dan sistem, bukan bagaimana actor dan sistem melakukan kegiatan tersebut.
36
Interaction digunakan untuk menunjukkan baik aliran pesan atau informasi antar obyek maupun hubungan antar obyek. Biasanya interaction ini dilengkapi juga dengan teks bernama operation signature yang tersusun dan nama operasi, parameter yang dikirim dan tipe parameter yang dikembalikan. Package adalah kontainer atau wadah konseptual yang digunakan untuk mengelompokkan elemen-elemen dari sistem yang sedang dibangun, sehingga bisa dibuat model yang lebih sederhana. Tujuannya adalah untuk mempermudah penglihatan (visibility) dan model yang sedang dibangun. Note digunakan untuk memberikan keterangan dan komentar tambahan dari suatu elemen sehingga bisa langsung terlampir dalam model. Note ini bisa ditempelkan ke semua elemen notasi yang lain. Dependency merupakan relasi yang menunjukkan bahwa perubahan pada salah satu elemen memberi pengaruh pada elemen lain. Elemen yang ada di bagian tanda panah adalah elemen yang tergantung pada elemen yang ada di bagian tanpa tanda panah. Terdapat 2 stereotype dari dependency, yaitu Include dan Extend. Include menunjukkan hahwa suatu bagian dari elemen (yang ada di garis tanpa panah) memicu eksekusi bagian dari elemen lain (yang ada di garis dengan panah), misalnya untuk notasi A — > B operasi yang ada di class A memicu dieksekusinya operasi yang ada di class B. Extend menunjukkan bahwa suatu bagian dari elemen di garis tanpa panah bisa disisipkan ke dalam elemen yang ada di garis dengan panah; misalnya untuk notasi A --> B suatu fungsi dari use case A bisa disisipkan ke dalam use case B atau dengan kata lain A optional untuk B. Kedua stereotype ini direpresentasikan dengan menambahkan text include atau extend di notasi dependency. Association menggambarkan navigasi antar class (Navigation), berapa banyak obyek lain yang bisa berhubungan dengan satu obyek (Multiplicity antar class), dan apakah suatu class menjadi bagian dari class lainnya (Aggregation). Navigation dilambangkan dengan penambahan tanda panah di akhir garis. Bidirectional navigation menunjukkan bahwa dengan mengetahui salah satu class bisa didapatkan informasi dari class lainnya. Sementara dengan UniDirectional navigation hanya dengan mengetahui class di ujung garis association tanpa panah kita bisa mendapatkan informasi dari class di ujung dengan panah, tetapi tidak
37
sebaliknya. Multiplicity dinotasikan dengan menambahkan teks (1), (0.. 1), (0..*), (1..*) atau bilangan tertentu (3) di masing-masing ujung garis association. Misalnya terdapat hubungan sebagai berikut: A(1..*) --- (O..*)B. Cara membacanya adalah bahwa untuk setiap obyek B harus berhubungan dengan lebih dari 1 obyek A atau untuk setiap obyek A bisa berhubungan dengan banyak obyek B atau tidak sama sekali. Aggregation mengacu pada hubungan “has-a”, yaitu bahwa suatu class memiliki class lain, misalnya class Rumah memiliki class Kamar. Generalization menunjukkan hubungan antara elemen yang lebih umum ke elemen yang lebih spesifik. Dengan generalization, class yang lebih spesifik (subclass) akan menurunkan atribut dan operasi dari class yang lebih umum (superclass), atau “subclass is a superclass”. Dengan menggunakan notasi generalization ini konsep inheritance dan prinsip hirarki dimodelkan. Realization menunjukkan hubungan bahwa elemen yang ada di bagian tanpa panah akan merealisasikan apa yang dinyatakan oleh elemen yang ada di bagian dengan panah. Misalnya class merealisasikan package, component merealisasikan class atau interface. Use Case Diagram (UCD) menjelaskan apa yang akan dilakukan oleh sistem yang akan dibangun dan siapa yang berinteraksi dengan sistem. UCD menjadi dokumen kesepakatan antara customer, user, dan developer. User menggunakan dokumen UCD ini untuk memahami sistem dan mengevaluasi bahwa benar yang dilakukan sistem adalah untuk memecahkan masalah yang user ajukan atau sedang dihadapi. Developer rnenggunakan dokumen UCD ini sebagai rujukan yang benar dalam pengembangan sistem. Use case diagram pada umumnya tersusun dari elemen actor, use case, dependency, generalization, dan association. UCD ini memberikan gambaran statis dari sistem yang sedang dibangun dan merupakan artifak dari proses analisis. Sequence diagram menjelaskan secara detil urutan proses yang dilakukan dalam sistem untuk mencapai tujuan dari use case: interaksi yang terjadi antar class, operasi apa saja yang terlibat, urutan antar operasi, dan informasi yang diperlukan oleh masing-masing operasi. Pembuatan sequence diagram merupakan aktivitas yang paling kritikal dari proses disain karena artifak inilah yang menjadi
38
pedoman dalam proses pemrograman nantinya dan berisi aliran kontrol dari program. Oleh karena itu berharga untuk meluangkan waktu lebih lama di pembuatan sequence diagram ini untuk menghasilkan sequence diagram yang terdisain dengan baik. Sequence diagram biasanya tersusun dari elemen Obyek, Interaction dan Message. Interaction menghubungkan 2 obyek dengan pesannya. Diagram ini menjelaskan aspek dinamis dari sistem yang sedang dibangun. Sama seperti class, maka class diagram merupakan diagram yang selalu ada di permodelan sistem berorientasi obyek. Class diagram menunjukkan hubungan antar class dalam sistem yang sedang dibangun dan bagaimana mereka saling berkolaborasi untuk mencapai suatu tujuan. Class diagram umumnya tersusun dari elemen Class, Interface, Dependency, Generalization dan Association. Relasi dependency menunjukkan bagaimana ketergantungan terjadi antar class yang ada. Relasi generalization menunjukkan bagaimana suatu class menjadi superclass dari class lainnya dan class yang lain tersebut menjadi subclass dari class tersebut. Relasi association menggambarkan navigasi antar class, berapa banyak obyek lain bisa berhubungan dengan satu obyek (multiplicity antar class), dan apakah suatu class menjadi bagian dari class lainnya (aggregation). Class diagram digunakan untuk menggambarkan disain statis dari sistem yang sedang dibangun.