Java Speech API

**Java Speech API** (JSAPI) adalah antarmuka pemrograman aplikasi untuk dukungan lintas platform dari pengenal perintah dan kontrol, sistem dikte, dan penyintesis ucapan. Meskipun JSAPI mendefinisikan antarmuka hanya ada beberapa implementasi yatng dibuat oleh pihak ketiga, misalnya FreeTTS.

## Teknologi inti
Dua teknologi ucapan inti didukung melalui Java Speech API: *[[Sintesis bunyi|sintesis ucapan]]* dan *[[Pengenalan ucapan|pengenalan suara]]*.

### Sintesis ucapan
Sintesis ucapan menyediakan proses kebalikan dari menghasilkan ucapan sintetis dari teks yang dihasilkan oleh aplikasi, applet, atau pengguna. Hal ini sering disebut sebagai teknologi text-to-speech.

Langkah-langkah utama dalam memproduksi ucapan dari teks adalah sebagai berikut:

* Analisis struktur: Memproses teks masukan untuk menentukan di mana paragraf, kalimat, dan struktur lainnya dimulai dan diakhiri. Untuk sebagian besar bahasa, data tanda baca dan pemformatan digunakan dalam tahap ini.
* Pra-pemrosesan teks: Menganalisis teks input untuk konstruksi khusus bahasa. Dalam bahasa Inggris, perlakuan khusus diperlukan untuk singkatan, akronim, tanggal, waktu, angka, jumlah mata uang, alamat email, dan banyak bentuk lainnya. Bahasa lain memerlukan pemrosesan khusus untuk bentuk ini, dan sebagian besar bahasa memiliki persyaratan khusus lainnya.

Hasil dari dua langkah pertama ini adalah bentuk lisan dari teks tertulis. Berikut adalah contoh perbedaan antara teks tertulis dan lisan:
 Rumah sakit St. Matthew ada di Main St.
 -> “Rumah sakit Saint Matthew ada di Main Street”
 
 Tambahkan $20 ke akun 55374.
 -> “Tambahkan dua puluh dolar ke akun lima lima, tiga tujuh empat.”
Langkah selanjutnya mengubah teks lisan menjadi ucapan:

* Konversi teks ke fonem: Mengonversi setiap kata menjadi fonem. Fonem adalah satuan dasar bunyi dalam suatu bahasa.
* Analisis prosodi: Memproses struktur kalimat, kata, dan fonem untuk menentukan prosodi yang sesuai untuk kalimat tersebut.
* Produksi bentuk gelombang: Menggunakan fonem dan informasi prosodi untuk menghasilkan bentuk gelombang audio untuk setiap kalimat.

Penyintesis ucapan dapat membuat kesalahan dalam salah satu langkah pemrosesan yang dijelaskan di atas. Telinga manusia disetel dengan baik untuk mendeteksi kesalahan ini, tetapi ketelitian oleh pengembang dapat meminimalkan kesalahan dan meningkatkan kualitas keluaran suara. Sementara Java Speech API 1 mengandalkan Java Speech API Markup Language (JSML), rilis yang lebih baru menggunakan SSML untuk menyediakan banyak cara bagi Anda untuk meningkatkan kualitas output dari penyintesis ucapan.

### Pengenalan suara
Pengenalan suara memberi komputer kemampuan untuk mendengarkan bahasa lisan dan menentukan apa yang telah dikatakan. Dengan kata lain, ia memproses input audio yang berisi ucapan dengan mengubahnya menjadi teks.

Langkah-langkah utama dari pengenalan ucapan biasa adalah sebagai berikut:

* Desain tata bahasa: Mendefinisikan kata-kata yang mungkin diucapkan oleh pengguna dan pola di mana mereka dapat diucapkan.
* Pemrosesan sinyal: Menganalisis karakteristik spektrum (yaitu, frekuensi) dari audio yang masuk.
* Pengenalan fonem: Membandingkan pola spektrum dengan pola fonem bahasa yang dikenali.
* Pengenalan kata: Membandingkan urutan kemungkinan fonem dengan kata dan pola kata yang ditentukan oleh tata bahasa aktif.
* Pembuatan hasil: Menyediakan aplikasi dengan informasi tentang kata-kata yang telah dideteksi oleh pengenal dalam audio yang masuk.

*Tata bahasa* adalah objek di Java Speech API yang menunjukkan kata-kata apa yang diduga diucapkan oleh pengguna dan dalam pola apa kata-kata itu mungkin muncul. Tata bahasa penting bagi pengenal suara karena membatasi proses pengenalan. Pembatas ini membuat pengenalan lebih cepat dan lebih akurat karena pengenal tidak harus memeriksa kalimat aneh.

Java Speech API 1 mendukung dua tipe tata bahasa dasar: tata bahasa aturan dan tata bahasa dikte. Jenis-jenis ini berbeda dalam berbagai cara, termasuk bagaimana aplikasi mengatur tata bahasa; jenis kalimat yang mereka izinkan; bagaimana hasil disediakan; jumlah sumber daya komputasi yang dibutuhkan; dan bagaimana mereka digunakan dalam desain aplikasi. Tata bahasa aturan ditentukan dalam JSAPI 1 oleh JSGF, Java Speech Grammar Format. JSAPI 2 yang lebih baru mendukung format SRGS yang lebih baru. JSAPI 2 tidak menawarkan dukungan untuk dikte.

## Kelas dan antarmuka Java Speech API
Kelas dan antarmuka berbeda yang membentuk Java Speech API dikelompokkan ke dalam tiga paket berikut:

* **javax.speech** : Berisi kelas dan antarmuka untuk mesin ucapan generik.
* **javax.speech.synthesis** : Berisi kelas dan antarmuka untuk sintesis ucapan.
* **javax.speech.recognition** : Berisi kelas dan antarmuka untuk pengenalan ucapan.

Kelas EngineManager seperti kelas pabrik yang digunakan oleh semua aplikasi Java Speech API. Kelas tersebut menyediakan metode statis untuk memungkinkan akses ke sintesis ucapan dan mesin pengenalan suara. Antarmuka Engine merangkum operasi umum yang harus disediakan oleh mesin ucapan yang sesuai dengan Java Speech API untuk aplikasi ucapan.

Aplikasi ucapan utamanya dapat menggunakan metode untuk melakukan tindakan seperti mengambil properti dan status mesin ucapan dan mengalokasikan serta membatalkan alokasi sumber daya untuk mesin ucapan. Selain itu, antarmuka Engine memaparkan mekanisme untuk menjeda dan melanjutkan aliran audio yang dihasilkan atau diproses oleh mesin ucapan. AudioManager dapat memanipulasi aliran. Antarmuka Engine disubklasifikasikan oleh antarmuka Synthesizer dan Recognizer, yang menentukan fungsi sintesis ucapan dan pengenalan suara tambahan. Antarmuka Synthesizer merangkum operasi mesin sintesis ucapan yang sesuai dengan Java Speech API untuk aplikasi ucapan.

Java Speech API didasarkan pada penanganan event. Event yang dihasilkan oleh mesin ucapan dapat diidentifikasi dan ditangani sesuai kebutuhan. Event ucapan dapat ditangani melalui antarmuka EngineListener, khususnya melalui RecognizerListener dan SynthesizerListener.

## Spesifikasi terkait
Java Speech API ditulis sebelum Java Community Process (JCP) dan menargetkan Java Platform, Standard Edition (Java SE). Selanjutnya, Java Speech API 2 (JSAPI2) dibuat sebagai JSR 113 di bawah JCP. API ini menargetkan Java Platform, Micro Edition (Java ME), tetapi juga sesuai dengan Java SE.

## Referensi

* FAQ Java Speech API oleh Sun/Oracle
* JavaDocs untuk JSAPI 1
* http://jsapi.sourceforge.netOpen Source JSAPI 2 Wrapper
* Teknologi ini digunakan untuk tujuan keamanan yang berbeda