Saturday, November 19, 2011

Speech Synthesis

Apa itu Speech Synthesis?
Speech synthesis adalah sebuah kemampuan bicara manusia yang dibuat oleh manusia (artificial). Sebuah sistem komputer digunakan untuk tujuan ini yang disebut sebagai speech synthesizer, dan dapat diimplementasikan ke dalam software atau hardware. Sebagai contoh sebuah sistem text-to-speech (TTS) yang dapat mengkonversikan teks dengan bahasa biasa menjadi suara.

Synthesized speech dapat diciptakan dengan menggabungkan beberapa potongan-potongan dari pembicaraan/pidato yang sudah direkam dalam sebuah basis data. Kualitas dari sebuah speech synthesizer dilihat dari kemiripannya dengan suara manusia dan kemampuannya untuk bisa dipahami. Program TTS yang jelas dapat membantu orang dengan gangguan visual atau ketidakmampuan membaca, untuk mendengarkan pada pekerjaan yang tertulis dalam komputer. Banyak Sistem Operasi komputer yang telah dimasukkan speech synthesizer sejak tahun 1980-an.

Teknologi Speech Synthesis
Yang paling penting dalam kualitas sistem speech synthesis adalah kealamian dan kejelasannya. Kealamaian menjelaskan bagaimana dekatnya suara output dengan suara manusia, sementara kejelasan adalah dengan kemudahan di mana output tersebut dapat dipahami. Speech synthesizer yang ideal adalah yang alami dan jelas. Sistem speech synthesis biasanya mencoba untuk memaksimalkan kedua karakteristik.

Dua teknologi utama dalam pembuatan gelombang suara synthetic speech adalah Concatenative Synthesis dan Formant Synthesis. Setiap teknologi mempunyai kekuatan dan kelemahannya, dan penggunaan yang ditujukan dari sistem synthesis akan menentukkan pendekatan mana yang digunakana.

Concatenative Synthesis
Concantenative synthesis didasarkan dengan penggabungan dari segmen-segmen dari pembicaraan yang sudah direkam. Secara umum, concatenative synthesis memproduksi synthesized speech dengan suara yang paling alami. Tetapi, perbedaan antara variasi alami dalam pembicaraaan dan sifat dari teknik otomasi untuk pensegmentasian gelombang suara terkadang menghasilkan kesalahan suara dalam output.

Formant Synthesis
Formant synthesis tidak menggunakan pembicaraan manusia sebagai sample pada runtime. Daripada itu, synthesized speech yang dihasilkan dibuat dengan additive synthesis dan sebuah model akustik (physical modelling synthesis). Parameter seperti frekuensi dasar, penyuaraan, dan tingkat kebisingan di variasikan dari waktu ke waktu untuk menciptakan gelombang buatan (artificial) dari sebuah pembicaraan. Banyak sistem yang berdasarkan formant synthesis menciptakan pembicaraan yang seperti robot yang tidak mungkin dapat dikenal sebagai suara manusia. Tetapi, kealamian maksimum bukan selalu tujuan dari sebuah sistem speech synthesis, dan sistem formant synthesis mempunyai keuntungan dari sistem concatenative. Pembicaraan yang di-formant synthesis-kan dapat menjadi sangat jelas, bahkan dalam kecepatan yang tinggi, sehingga menghindari kesalahan suara yang sering dialami sistem concatenative. Formant synthesis biasanya program yang lebih kecil dari concatenative sistem karena ia tidak menggunakan basis data dari sampel-sampel pembicaraan. Oleh karena itu formant synthesis dapat ditanamkan dalam sistem yang mempunyai memory dan microprosesor yang terbatas. Karena sistem yang berdasarkan formant mempunyai kendali penuh dari sluruh aspek dari hasil pembicaraan, variasi yang luas dari prosodi dan intonasi dapat dihasilkan, menyampaikan tidak hanya pertanyaan dan pernyataan tetapi juga emosi dan nada suara.


Wednesday, November 9, 2011

Perbedaan Metode Analisis dan Perancangan Sistem

Pada pengembangan suatu sistem, terdapat beberapa metode, seperti metode terstruktur dan metode berorientasi obyek. Di sini akan dijelaskan perbedaan antara kedua metode tersebut.

METODE ANALISIS DAN PERANCANGAN SISTEM TERSTRUKTUR

Metodologi yang umumnya digunakan dalam pembangunan sistem berbasis komputer dalam dunia bisnis dan industri saat ini adalah metode Analisis dan Design Terstruktur (Structured Analisys and Design / SSAD). Metode ini diperkenalkan pada tahun 1970, yang merupakan hasil turunan dari pemrograman terstruktur. Metode pengembangan dengan metode terstruktur ini terus diperbaiki sampai akhirnya dapat digunakan dalam dunia nyata.

Alat yang digunakan pada SSAD
  • Kamus data
  • Model data logik
  • ERD
  • DFD
  • STD

Karakteristik dari SSAD
  • Modul disusun secara hirarkis (bagan struktur,diagram jackson,diagram warnierorr)
  • Menggunakan Logika CALL-based atau PERFORM-based
  • Menggunakan control flow dan rancangan top-to-bottom dan pengkodean top-to-bottom
  • atau bottom-to-top
  • Merancang repetisi atau loop
  • Menerapkan konsepsi kendali standar untuk urutan

Kelebihan
  • Milestone diperlihatkan dengan jelas yang memudahkan dalam manajemen proyek
  • SSAD merupakan pendekatan visual, ini membuat metode ini mudah dimengerti oleh pengguna atau programmer.
  • Penggunaan analisis grafis dan tool seperti DFD menjadikan SSAD menjadikan bagus untuk digunakan.
  • SSAD merupakan metode yang diketahui secara umum pada berbagai industry.
  • SSAD sudah diterapkan begitu lama sehingga metode ini sudah matang dan layak untuk digunakan.
  • SSAD memungkinkan untuk melakukan validasi antara berbagai kebutuhan
  • SSAD relatif simpel dan mudah dimengerti.

Kekurangan
  • SSAD berorientasi utama pada proses, sehingga mengabaikan kebutuhan non-fungsional.
  • Sedikit sekali manajemen langsung terkait dengan SSAD
  • Prinsip dasar SSAD merupakan pengembangan non-iterative (waterfall), akan tetapi kebutuhan akan berubah pada setiap proses.
  • Interaksi antara analisis atau pengguna tidak komprehensif, karena sistem telah didefinisikan dari awal, sehingga tidak adaptif terhadap perubahan (kebutuhan-kebutuhan baru).
  • Selain dengan menggunakan desain logic dan DFD, tidak cukup tool yang digunakan untuk mengkomunikasikan dengan pengguna, sehingga sangat sliit bagi pengguna untuk melakukan evaluasi.
  • Pada SAAD sulit sekali untuk memutuskan ketika ingin menghentikan dekomposisi dan mulai membuat sistem.
  • SSAD tidak selalu memenuhi kebutuhan pengguna.
  • SSAD tidak dapat memenuhi kebutuhan terkait bahasa pemrograman berorientasi obyek, karena metode ini memang didesain untuk mendukung bahasa pemrograman terstruktur, tidak berorientasi pada obyek (Jadalowen, 2002).

METODE ANALISIS DAN PERANCANGAN SISTEM BERORIENTASI OBYEK

Disamping itu, akhir-akhir ini bahasa pemrograman object-oriented (OO) mulai populer dan banyak digunakan pada organisasi bisnis maupun institusi pendidikan. Seiring dengan trend sebuah metodologi dibangun untuk membantu programmer dalam menggunakan bahasa pemrograman berorientasi obyek. Metodologi ini dikenal dengan Object-Oriented Analysis and Design (OOAD).

Metode OOAD melakukan pendekatan terhadap masalah dari perspektif obyek, tidak pada perspektif fungsional seperti pada pemrograman terstruktur. Akhir-akhir ini penggunakan OOAD meningkat dibandingkan dengan pengunaan metode pengembangan software dengan metode tradisional. Sebagai metode baru dan sophisticated bahasa pemrograman berorientasi obyek diciptakan, hal tersebut untuk memenuhi peningkatan kebutuhan akan pendekatan berorientasi obyek pada aplikasi bisnis.

Karakteristik Objek
  • Identitas berarti bahwa data diukur mempunyai nilai tertentu yang membedakan entitas disebut Objek.
  • Objek dapat kongkrit, seperti halnya arsip dalam sistem, atau konseptual seperti kebijakan penjadualan dalam multiprocessing pada sistem operasi.
  • Setiap objek mempunyai sifat yang melekat pada identitasnya.
  • Dua objek dapat berbeda walaupun bila semua nilai atributnya identik.

Kelas Objek
  • Kelas merupakan gambaran sekumpulan Objek yang terbagi dalam atribut, operasi, metode, hubungan, dan makna yang sama.
  • Suatu kegiatan mengumpulkan data (atribut) dan perilaku (operasi) yang mempunyai struktur data sama ke dalam satu grup.
  • Kelas Objek merupakan wadah bagi Objek. Dapat digunakan untuk menciptakan Objek.
  • Objek mewakili fakta/keterangan dari sebuah kelas.

Istilah-istilah Objek
  • Atribut : Data item yang menegaskan Objek
  • Operasi : Fungsi di dalam kelas yang dikombinasikan ke bentuk tingkah laku kelas
  • Metode : Pelaksanaan prosedur (badan dari kode yang mengeksekusi respon terhadap permintaan objek lain di dalam sistem).

Karakteristik OOAD

A. Encapsulation (Pengkapsulan)
  • Encapsulation merupakan dasar untuk pembatasan ruang lingkup program terhadap data yang diproses.
  • Data dan prosedur atau fungsi dikemas bersama-sama dalam suatu objek, sehingga prosedur atau fungsi lain dari luar tidak dapat mengaksesnya.
  • Data terlindung dari prosedur atau objek lain, kecuali prosedur yang berada dalam objek itu sendiri.

B. Inheritance (Pewarisan)
  • Inheritance adalah teknik yang menyatakan bahwa anak dari objek akan mewarisi data/atribut dan metode dari induknya langsung. Atribut dan metode dari objek dari objek induk diturunkan kepada anak objek, demikian seterusnya.
  • Inheritance mempunyai arti bahwa atribut dan operasi yang dimiliki bersama di anatara kelas yang mempunyai hubungan secara hirarki.
  • Suatu kelas dapat ditentukan secara umum, kemudian ditentukan spesifik menjadi subkelas. Setiap subkelas mempunyai hubungan atau mewarisi semua sifat yang dimiliki oleh kelas induknya, dan ditambah dengan sifat unik yang dimilikinya.
  • Kelas Objek dapat didefinisikan atribut dan service dari kelas Objek lainnya.
  • Inheritance menggambarkan generalisasi sebuah kelas.

C. Polymorphism (Polimorfisme)
  • Polimorfisme yaitu konsep yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku berbeda.
  • Polimorfisme mempunyai arti bahwa operasi yang sama mungkin mempunyai perbedaan dalam kelas yang berbeda.
  • Kemampuan objek-objek yang berbeda untuk melakukan metode yang pantas dalam merespon message yang sama.
  • Seleksi dari metode yang sesuai bergantung pada kelas yang seharusnya menciptakan Objek.

Kelebihan
  • Dibandingkan dengan metode SSAD, OOAD lebih mudah digunakan dalam pembangunan sistem
  • Dibandingkan dengan SSAD, waktu pengembangan, level organisasi, ketangguhan,dan penggunaan kembali (reuse) kode program lebih tinggi dibandingkan dengan metode OOAD (Sommerville, 2000).
  • Tidak ada pemisahan antara fase desain dan analisis, sehingga meningkatkan komunikasi antara user dan developer dari awal hingga akhir pembangunan sistem.
  • Analis dan programmer tidak dibatasi dengan batasan implementasi sistem, jadi desain dapat diformalisasikan yang dapat dikonfirmasi dengan berbagai lingkungan eksekusi.
  • Relasi obyek dengan entitas umumnya dapat di mapping dengan baik seperti kondisi pada dunia nyata dan keterkaitan dalam sistem. Hal ini memudahkan dalam mehami desain (Sommerville, 2000).
  • Memungkinkan adanya perubahan dan kepercayaan diri yang tinggi terhadap kebenaran software yang membantu untuk mengurangi resiko pada pembangunan sistem yang kompleks (Booch, 2007).
  • Encapsulation data dan method, memungkinkan penggunaan kembali pada proyek lain, hal ini akan memperingan proses desain, pemrograman dan reduksi harga.
  • OOAD memungkinkan adanya standarisasi obyek yang akan memudahkan memahami desain dan mengurangi resiko pelaksanaan proyek.
  • Dekomposisi obyek, memungkinkan seorang analis untuk memecah masalah menjadi pecahan-pecahan masalah dan bagian-bagian yang dimanage secara terpisah. Kode program dapat dikerjakan bersama-sama. Metode ini memungkinkan pembangunan software dengan cepat, sehingga dapat segera masuk ke pasaran dan kompetitif. Sistem yang dihasilkan sangat fleksibel dan mudah dalam memelihara.

Kekurangan
  • Pada awal desain OOAD, sistem mungkin akan sangat simple.
  • Pada OOAD lebih fokus pada coding dibandingkan dengan SSAD.
  • Pada OOAD tidak menekankan pada kinerja team seperti pada SSAD.
  • Pada OOAD tidak mudah untuk mendefinisikan class dan obyek yang dibutuhkan sistem.
  • Sering kali pemrogramam berorientasi obyek digunakan untuk melakukan anlisisis terhadap fungsional siste, sementara metode OOAD tidak berbasis pada fungsional sistem.
  • OOAD merupakan jenis manajemen proyek yang tergolong baru, yang berbeda dengan metode analisis dengan metode terstruktur. Konsekuensinya adalah, team developer butuh waktu yang lebih lama untuk berpindah ke OOAD, karena mereka sudah menggunakan SSAD dalam waktu yang lama ( Hantos, 2005).
  • Metodologi pengembangan sistem dengan OOAD menggunakan konsep reuse. Reuse merupakan salah satu keuntungan utama yang menjadi alasan digunakannya OOAD. Namun demikian, tanpa prosedur yang emplisit terhadap reuse, akan sangat sulit untuk menerapkan konsep ini pada skala besar (Hantos, 2005).