Aplikasi yang membuat HP bisa Ngomong

Sejak android 1.6 telah ada TTS(text to speech) engine dalam android sistim. TTS adalah engine suara manusia yang bisa membaca apa saja yang tertulis di layar HP. Saya sangat tertarik karena teknologinya sederhana untuk di implementasikan namun akan sangat berpengaruh besar bagi mereka yang ingin belajar bahasa inggris sendiri(tanpa guru).
Di lain pihak, guru2 bahasa inggris di Indonesia kebanyakan sangat pintar dalam hal grammar, bahkan melebihi mereka yang lahir dan di besarkan di Inggris. Di Indonesia masih membutuhkan banyak guru bahasa Inggris yang pandai dalam pronunciation(begitukah tulisan-nya?)... mudah2-an aplikasi kecil ini bisa membantu bagi yang perlu di bantu.


Untuk membangun aplikasi ini tak terlalu rumit karena tidak banyak user interface(UI)-nya.
Pada gambar di atas saya hanya membutuhkan 4 buah UI ... 2 di antaranya yaitu nama aplikasi 'Hp_Bisa_Ngomong' dan tulisan  paling bawah pada layar di gambar di atas, keduanya adalah tidak ada logika programnya. Yang ada logika programnya adalah hanya kotak tempat untuk ketik kata-kata inggris... dan tombol 'Baca' yang berguna untuk menyuruh HP membaca apa yang kita tulis
Silahkan baca2 disini untuk konsep UI dengan xml

Berikut adalah main.xml sebagai tampang depan dari aplikasi ini agar terlihat seperti gambar di atas. Tapi sebagai UI designer anda boleh design yang lebih indah dari yang saya buat di atas. Di sini saya hanya berkepentingan pada cara kerjanya saja daripada tampangnya.

 <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:orientation="vertical" >

<edittext 
android:id="@+id/tempat_ketik" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="">
</edittext> 

<button 
android:id="@+id/untuk_di_pencet" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/baca">
</button>

<textview 
android:id="@+id/pesan" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/pesan" 
android:textsize="15sp">
</textview>
</linearlayout>
Kog cuma tiga object?... anda benar, walau di layar terlihat 4 object, tapi di kode xml di atas cuma ada 3 obyek yaitu 'tempat_ketik' yang di buat dari widget bernama EditText, dan tombol 'untuk_di_pencet' di buat dari widget yang bernama 'Button', serta 'pesan di buat dari widget 'TextView'
Sedangkan nama aplikasinya Hp_bisa_ngomong akan di pasang di halaman 'strings.xml' melalui 'AndroidManifest.xml'

AndroidManifest adalah spesial untuk android struktur, di AndroidManifest akan di tempatkan printah2 yang mencakup 'application wide'. Saya tidak tahu apa bahasa indonesia yang cocok untuk 'application wide' tapi yang saya maksudkan di sini adalah printah2 android yang menyangkut aspek menyeluruh dan menyangkut pengaruh aspek luar dari sebuah aplikasi. Aspek luar misalnya koneksi ke internet... aspek luar juga termasuk logo dan nama aplikasi dan banyak lagi aspek luar lainnya tapi di luar scope tulisan ini. Yang jelas bahwa semua aspek seperti itu akan di pasang di halaman androidManifest.
Logo dan nama aplikasi di pasang di AndroidManifest (sebagai aspek luar) karena keduanya bisa menempatkan diri di tempat2 berbeda pada folder di dalam HP, misalnya sebuah aplikasi berada di sebuah folder A atau di foder B tapi aplikasi tersebut bisa juga di drag dan di drop di halaman depan(Homepage). Yang di drag dan drop itu adalah logo dan nama aplikasi, bukan seluruh aplikasi, nanti logo dan nama aplikasi bikin back link sendiri ke aplikasinya. Kalau aplikasinya yang harus di drag maka helaman depan hanya di penuhi satu aplikasi saja, itupun bahkan tak cukup.

Berikut adalah isi dari AndroidManifest.xml untuk aplikasi ini
 
<manifest 
android:versioncode="1" 
android:versionname="1.0" 
package="com.vik_sintus.projects.hpNgomong" xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-sdk android:minsdkversion="4" android:targetsdkversion="1.6"></uses-sdk>

    <application android:icon="@drawable/logotts" android:label="@string/app_name">
        <activity android:label="@string/app_name" android:name=".HpBisaNgomong">
            <intent-filter>
                <action android:name="android.intent.action.MAIN">

                <category android:name="android.intent.category.LAUNCHER">
            </category></action></intent-filter>
        </activity>
    </application></manifest> 
Android:versionCode dan android:versionName berguna untuk rekam jikalau ada aplikasi versi baru untuk dapat di download oleh pengguna, sehingga ia otomatis menghapus versi lama dan di ganti versi baru tanpa membebani resource HP pengguna. Tentunya ketika membuat versi baru, developer harus ingat untuk ganti nama atau nomor yang terkandung dalam kedua object tsb.

android:minSdkVersion dan android:targetSdkVersion untuk tingkatan2 android apa saja yang menjadi tujuan aplikasi yang kita bangun. Sebagai acuan, ushakan untuk memilih android yang paling tua sebagai sasaran, karena jikalau aplikasinya bisa bekerja di android tua bangka maka akan bekerja pula di android moderen.
Hanya saja android versi lama tidak ada (kurang) hal yang mewah2 seperti screen hidup dan hal mewah lain-nya, namun proses kerja mendasar di antara android lama dan android baru masih sama. Jadi kalau mau develop aplikasi mewah maka harus pakai android versi baru pula dan memaksa pengguna untuk meninggalkan android versi lama dan membeli yang versi baru(tegahnya di kau).

@drawable/logotts katakan pada android bahwa logo yang bernama logotts berada di(@) folder yang bernama drawable. Proses memilih nama harus memiliki logika anda sendiri yah, logotts(logoTextToSpeech) adalah logika saya sendiri karena saya punya banyak logo maka logo yang ini saya sebut 'logotts'

android:label="@string/app_name" ada dua android lable, satunya di bagian aplication dan yang lain berada di activity. Yang berada aplication akan muncul di luar layar HP, sedangkan yang lain akan muncul di dalam layar HP bersama logonya.
 @string/app_name adalah untuk menunjukan kepada android di mana tempat simpan app_name, dalam hal ini ia berada di(@) file yang bernama strings.xml

android:name=".HpBisaNgomong" adalah nama class utama yang bekerja untuk melakukan aktivitas utama agar bekerja denagn logika untuk mencapai tujuan pembuatan aplikasi ini, itulah sebabnya mengapa dia berada dalam tag activity

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> keduanya adalah printah internal tak perlu di pikirin untuk sekarang.

Pada halaman main.xml di atas ada beberapa bagian yang mengarahkan ke @string itu maksudnya bahwa isinya berada di halaman strings.xml oleh karena itu maka kita harus membuat halaman strings.xml sbb:


    Hp_Bisa_Ngomong!
    silahkan tulis kata-kata bahasa inggris yang mau di baca oleh hp pada kotak di atas,
         dan tekan tombol Baca. Agar terdengar lebih jelas silahkan letakan koma di antara kata-kata 
     Baca    

Perhatikan ketiga string object yang pada kode di atas, ketiganya muncul di layar HP... self explanatory-lah....sampai disini maka selesailah suadah pembuatan tampang/UI dari aplikasi ini

Sekarang mari kita membangun cara kerja dan logika di balik aplikasi ini dengan menulis sebuah class utama yang bekerja sebagai otak untuk menjalankan aplikasi.
Sesuai nama aplikasi maka saya akan menamakan class utamanya HpBisaNgomong.java
Kita tidak perlu tulis banyak kode java untuk membuat HpBisaNgomong agar dapat bekerja dengan baik, hal tersebut sangat membantu orang seperti saya yang masih rabun dengan logika java.
Untuk membangun aplikasi ini kita hanya mengimport, mendeklarasikan dan mengimplementasikan kode java dan class java yang telah ada di setiap HP yang menggunakan android sistim. Banyak class didalam sistim android yang duduk manis, menunggu kalau suatu hari ada yang ingin mengimplementasikan-nya.... tapi itulah kendalanya, kita/saya tidak tahu banyak bagaimana untuk mengimplementasikan-nya. ... belajar jalan terus man

Class utama yang membuat HP android bisa membaca adalah bernama TextToSpeech , jadi kita tinggal deklarasikan TextToSpeech dan dua objects lain seperti terlihat pada gambar di atas. Dua benda lain itu adalah sebuah kotak untuk isi tulisan dan sebuah tombol yang saya beri nama 'Baca'.

class HpBisaNgomong.java ini juga butuh gandengan dengan class Activity serta mengimplementasikan class OnInitListener

package com.vik_sintus.projects.hpNgomong;

public class HpBisaNgomong extends Activity implements OnInitListener {
    
    private int KODE_UNTUK_PRIKSA_TTS = 0;
    private TextToSpeech hpMembaca;
    private EditText kata_kata_yg_mau_di_baca;
    private Button tombol;
/** kode java selengkapnya akan di tempatkan di sini */
Selain deklarasi 3 obyek utama yang kita butuhkan , aplikasi ini juga membutuhkan satu data bertipe integer(int) untuk melakukan pengecekan terhadap data di dalam kata_kata_yang_mau_di_baca

Kode di atas berisikan beberapa class siluman, antara lain Activity, OnInitListener,  TextToSpeech, EditText,  Button. Di sebut siluman karena tak jelas sumbernya darimana, oleh karena itu maka kode tersebut akan di anggap salah oleh API (ada warning-salah). Dan untuk menjadi benar maka class siluman itu harus di import terlebih dahulu ke dalam halaman HpBisaNgomong.java  agar ia dapat di konstruksi lebi lanjut.
Kode java akan menjadi benar dan nampak sbb, setelah class-class siluman itu terimport
package com.vik_sintus.projects.hpNgomong;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.widget.Button;
import android.widget.EditText;

public class HpBisaNgomong extends Activity implements OnInitListener {
    
    private int KODE_UNTUK_PRIKSA_TTS = 0;
    private TextToSpeech hpMembaca;
    private EditText kata_kata_yg_mau_di_baca;
    private Button tombol;
/** kode java selengkapnya akan di tempatkan di sini */
Setelah deklarasi semua obyek-obyek yang kita butuhkan di class ini, maka di lanjutkan dengan memulai proses kerja java, dengan cara ciri khas android
@Override
 public void onCreate(Bundle savedInstanceState) {
    
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
  tombol = (Button) findViewById(R.id.untuk_di_pencet);

Silahkan baca tentang @override di http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adalah cara android untuk membuat sesuatu. Disini android menyatakan, hey ketika membuat/menunjukan aplikasi ke layar HP tunjukan isinya menggunakan main.xml yang berlokasi R.layout.main .
 Kotak yang telah saya deklarasikan bernama kata_kata_yg_mau_di_baca adalah terbuat dari widget  EditText dapat di temukan di file R dan beridentitas tempat_ketik.

Perlu di ketahui bahwa kita sedang berbicara menjelaskan tujuan kita membuat aplikasi kepada komputer. Berbeda dengan manusia yang punya logika, komputer memang pintar tapi ia tak punya logika iapun bisu, tuli dan tak punya perasaan. Oleh karena itu kita harus jelaskan kepadanya sejelas-jelasnya sampai dia paham apa yang kita maksudkan.

Oh mister komputer yang bisu, tuli dan tak punya perasaan, masih ingatkah engkau private Button tombol yang telah saya deklarasikan sebelumnya? tombol yang saya maksudkan adalah seperti tombol = (Button) findViewById(R.id.untuk_di_pencet); yaitu tombol yang terbuat dari widget Button, please...mr komputer silahkan melihatnya di file R yang identitas-nya untuk_di_pencet
Setelah susah paya untuk menjelaskan itu kepada mister komputer eeehhh, belaiu masih juga tak paham tombol itu di pakai untuk apa?.... iyalahhh untuk di pencet dong. Sebelum selesai di jawab, mr komputernya bertanya, tombol-nya sudah siap di pencet enggak?
jadi sebelum menyuruh mr komputer untuk pencet tombol maka kita harus siapkan tombolnya agar terlihat hidup ketika di sentuh dan telah siap untuk di pencet.berikut adalah kode untuk membuat tombol siap dan bersedia di pencet  tombol.setOnClickListener(new OnClickListener() dan sebelum mr komputer bertanya untuk apa tombol di pencet maka kita siapkan ini

@Override
public void onClick(View v) {
String kata_kata = kata_kata_yg_mau_di_baca.getText().toString();
if (kata_kata!=null && kata_kata.length()>0) {
Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);
}
}
});
Kode di atas mengatakan, pada waktu pencet tombol, ambill kata-kata dari dalam kata_kata_yang_mau_di_baca dan di ubah jadi string agar mudah di proses lebih lanjut. Dan kalau kata_kata adalah bukan kosong dan atau jikalau panjang(jumlah) kata-kata lebih besar dari nol maka tunjukan pesan pop-up seperti kode berikut.
Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);

Pada waktu suara HP membaca tulisan,  pada waktu hampir bersamaan pula pop-up akan muncul dengan menunjukan tulisan yang sama pula . Ini cukup penting untuk menjaga kemungkinan jangan sampai HP-nya membaca sesuatu yang bukan kata-kata yang kita ketik. Hal itu bisa saja menunjukan ada bug di aplikasi, tapi aplikasi kecil seperti ini hampir tak mungkin ada bug.

Sebelum saya lupa ada baiknya saya pasang dulu penggalan kode di atas kedalam HpBisaNgomong.java dan import semua class-calss yang di butuhkan

package com.vik_sintus.projects.hpNgomong;

import java.util.Locale;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class HpBisaNgomong extends Activity implements OnInitListener {
    
    private int KODE_UNTUK_PRIKSA_TTS = 0;
    private TextToSpeech hpMembaca;
    private EditText kata_kata_yg_mau_di_baca;
    private Button tombol;
 
@Override
public void onCreate(Bundle savedInstanceState) {
    
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
  tombol = (Button) findViewById(R.id.untuk_di_pencet);
tombol.setOnClickListener(new OnClickListener() {            
   @Override
   public void onClick(View v) {
       String kata_kata = kata_kata_yg_mau_di_baca.getText().toString();
       if (kata_kata!=null && kata_kata.length()>0) {
    Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
    hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);
       }
   }
      });
/** kode java selengkapnya akan di tempatkan di sini */
Warning: komputer adalah, buta,tuli dan mati rasa.
Sejauh ini sudah pusing jelasin berbagai langkah agar aplikasi kita bisa berjalan, tapi komputer masih juga mau tanya emangnya tujuan buat aplikasi ini untuk apa? maka untuk itu mari kita jelaskan lagi kepada yang mulia mr komputer.
Oleh karena mr komputer tanya tujuan maka kita perlu jasa class Intent untuk menjelaskan hal itu kepadanya. Kebetulan intent dan tujuan, secara literal adalah sama.
Intent priksa_TTS = new Intent();
      priksa_TTS.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
      startActivityForResult(priksa_TTS, KODE_UNTUK_PRIKSA_TTS);
        
    }
Kode di atas menjelaskan kepada mr komputer bahwa kita ingin dengar_textospeech_di_hp. yaitu mendengar apa yang di lihat oleh TextToSpeech Engine di dalam kotak data(kata-kata_yang_mau_di_baca) tentunya setelah engine check kebenaran dan keberadaan-nya di dalam kotak tsb dengan kode:
dengar_tts_di_hp.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA)

Metode onActivityResult berikut adalah bekerja persis seperti namanya yaitu memeriksa hasil dari activity, jikalau kata-kata yang di ambil dari dalam kotak adalah benar, dan kebenaran-nya telah di cek dengan TextToSpeech.Engine.CHECK_VOICE_DATA_PASS maka buatlah instance untuk mesin TTS. Tapi kalau ada kesalahan dengan berbagai alasan, maka silahkan di_pasang_lagi tujuan(Intent) dari aplikasi ini
@Override
protected void onActivityResult(int ambilKataKata, int hasilDariKataKata, Intent data) {
        if (ambilKataKata == KODE_UNTUK_PRIKSA_TTS) {
            if (hasilDariKataKata == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // kalau kode priksa berhasil, maka buatlah instance tts 
                hpMembaca = new TextToSpeech(this, this);
            } 
            else {
                // kalau datanya hilang dgn berbagai alasan, maka data tts di pasang lagi
                Intent di_pasang_lagi = new Intent();
                di_pasang_lagi.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(di_pasang_lagi);
            }
        }

    }
Kode berikut untuk memasang kondisi2 lain dari aplikasi
Kalau kondisinya sukses maka tinggalkan pesan sukses, kalau tidak maka tinggalkan pesan sebaliknya.
Selain untuk priksa kondisi, metode onInit adalah juga tempat untuk memasang bahasa apa yang ingin di bacakan oleh HP anda. Pada aplikasi ini saya pasang bahasa Inggris UK dengan kode hpMembaca.setLanguage(Locale.UK); Bahasa lain yang di dukung oleh aplikasi ini adalah Prancis, Jerman, Italia, spanyol
@Override
 public void onInit(int kondisi) { 
  hpMembaca.setLanguage(Locale.UK);
     if (kondisi == TextToSpeech.SUCCESS) {
       Toast.makeText(HpBisaNgomong.this, 
         "TextToSpeech engine_nya telah di pasang", Toast.LENGTH_LONG).show();
        }
        else if (kondisi == TextToSpeech.ERROR) {
            Toast.makeText(HpBisaNgomong.this, 
                    "walah ada kesalahan saat pasang TextToSpeech engine", Toast.LENGTH_LONG).show();
        }
    }

Berikut adalah keseluruhan dari kode HpBisaNgomong.java

package com.vik_sintus.projects.hpNgomong;

import java.util.Locale;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/** tak boleh menggunakan kode ini untuk meraup keuntungan, 
 kecuali di bagi dengan saya wakkkkaakk... seriously boleh pakai
 untuk kepentingan sharing ilmu...kalau ada yang protes
  silahkan protes ke vik.sintus@gmail.com */
public class HpBisaNgomong extends Activity implements OnInitListener {
    
    private int KODE_UNTUK_PRIKSA_TTS = 0;
    
    private TextToSpeech hpMembaca;
    
    private EditText kata_kata_yg_mau_di_baca;
    private Button tombol;
    
 @Override
 public void onCreate(Bundle savedInstanceState) {
    
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
  tombol = (Button) findViewById(R.id.untuk_di_pencet);
  // 1 baris berikut agar tombol dapat di klik
  tombol.setOnClickListener(new OnClickListener() {            
   @Override
   // pada waktu tombol di klik
   public void onClick(View v) {
  // suara akan keluar membaca kata-kata yang ada
       String kata_kata = kata_kata_yg_mau_di_baca.getText().toString();
       if (kata_kata!=null && kata_kata.length()>0) {
  // bersamaan dengan keluarnya suara, kata-kata yang di baca juga akan 
  // muncul sejenak menggunakan jasa widget Toast, mirip dengan pop-up
    Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
    hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);
       }
   }
      });
  // priksa dulu apakah sudah ada engine TTS di HP
  Intent priksa_TTS = new Intent();
      priksa_TTS.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
      startActivityForResult(priksa_TTS, KODE_UNTUK_PRIKSA_TTS);
        
    }
@Override
protected void onActivityResult(int ambilKataKata, int hasilDariKataKata, Intent data) {
        if (ambilKataKata == KODE_UNTUK_PRIKSA_TTS) {
            if (hasilDariKataKata == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // kalau kode priksa berhasil, maka buatlah instance tts 
                hpMembaca = new TextToSpeech(this, this);
            } 
            else {
                // kalau belum ada TTS di HP maka minta di pasang
                Intent pasang_TTS = new Intent();
                pasang_TTS.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(pasang_TTS);
            }
        }

    }
// berikut untuk pesan, apakah kondisi pemasangan TTS berhasil atau tidak

    @Override
    public void onInit(int kondisi) { 
     // 1 baris berikut untuk logat inggris
     hpMembaca.setLanguage(Locale.UK);
        if (kondisi == TextToSpeech.SUCCESS) {
            Toast.makeText(HpBisaNgomong.this, 
                    "TextToSpeech engine_nya telah di pasang", Toast.LENGTH_LONG).show();
        }
        else if (kondisi == TextToSpeech.ERROR) {
            Toast.makeText(HpBisaNgomong.this, 
                    "walah ada kesalahan saat pasang TextToSpeech engine", Toast.LENGTH_LONG).show();
        }
    }
    
}

Silahkan install aplikasi ini dari android market

27 comments:

  1. @ Jova Company Administrator
    wadowww... baru belajar juga gan, baru bisa sedikit tapi tak sabar tuk nunjuk,thanks kawan

    ReplyDelete
  2. hallo mas bro, saya tertarik ingin mengembangkan aplikasi nya ke Tugas Akhir saya, kalau boleh tau metode apa yang digunakan dalam aplikasinya ya ?
    ditunggu respone nya, terima kasih

    ReplyDelete
  3. hallo juga mas Hengky,
    tak ada banyak metode mas, cuma di buat pakai eclipse, dan di test menggunakan emulator bawaan android dan setelah jadi lalu di masuk-kan ke HP bahkan saya pasang applikasinya di market agar mudah di download di https://play.google.com/store/apps/details?id=com.vik_sintus.projects.hpNgomong

    semua kodenya berada di halaman ini, tinggal di copy dan di kembangkan menurut keperluan.

    ReplyDelete
  4. hallo mas, saya mau nanya nih, aplikasi yang mas buat kan kamus TTS, nah yang saya tanyakan kalau STT mas udah coba buat belum??soalnya tugas akhir saya gabungan dari STT dan TTS. mohon bantuannya mas.
    terimakasih.

    ReplyDelete
  5. Hai Rez untuk STT nya coba lihat di http://belajar-android-indonesia.blogspot.com.au/2012/03/aplikasi-agar-hp-bisa-mendengar-dan.html

    saya sudah coba dan bekerja dengan baik tapi berbeda dengan TTS yang tak perlu internet untuk berfungsi sedangkan STT harus konek internet baru bisa berfungsi. Hal itu karena engine yang bekerja utk mendengar ucapan kata dari mulut kita harus dengan cepat memilih dan memilah dari jutaan kata yang sering di ucapkan oleh manusia dan jutaan kata2 tsb tinggalnya di servernya google sehingga butuh internet untuk bisa melihatnya.

    ReplyDelete
    Replies
    1. ia mas saya udah lihat STT nya. jadi STT pake google api mas?

      Delete
    2. betul Rez, pakai google API.... apalagi saya masih belum suka develop aplikasi yang harus konek ke internet karena di kampung saya internetnya masih batuk2

      Delete
  6. salam kenal mas, ijin copas source code yg hape bisa ngomong..
    terima kasih ilmunya bermanfaat bgt.
    itu aplikasi yang mas buat kan pake software tts yang installed di android,
    kebetulan saya disuruh dosen bikin yang menggunakan database suara per katanya, jadi saya record suara saya per kata secara manual (beberapa saja sebagai sample) kemudian jadi database suara. kalo misalkan ttsnya diganti database suara itu bisa ngga ya mas? mohon pencerahan untuk scriptnya.
    intinya dosen saya meminta saya untuk menunjukan kekurangan menggunakan database suara.

    terima kasih banyak, mohon bantuanya

    ReplyDelete
    Replies
    1. maaf, terlambat balas

      yang di suruh dosen-nya itu memang sangat susah, buktinya sampai hari ini belum ada engine suara bahasa indonesia yang benar2 bekerja dengan baik.

      Kalau saja pekerjaan yang di berikan dosen-nya itu bukan untuk bahasa indonesia tapi untuk bahasa inggris maka menggunakan STT(speech to text) adalah cara yang cepat dan tepat untuk itu karena engine suaranya ada di google API... tapi itu tadi hanya cocok untuk bahasa inggris dan empat bahasa lain-nya

      Delete
  7. hallo mas,saya mau nanya mas,aplikasi yang mas buat kan kamus TTS, nah yang saya mau tanyakan kalau untuk TTS sendiri sudah ada yang menggunakan bahasa indonesia ? mohon batuannya mas. trimakasi.

    ReplyDelete
    Replies
    1. belum ada engine suara bahasa indonesia yang benar2 berbunyi seperti bahasa indonesia. bunyi yang mendekati bahasa indonesia adalah engine bahasa spanyol, tapi bahasa spanyol tak ada huruf 'J' mereka membaca J = H
      Begitu juga huruf C = K
      Selain kekurangan itu engine bahasa spanyol dapat membaca bahasa indonesia cukup jernih.

      Delete
  8. permisi gan...terima kasih ilmu yg diposting...untuk TTS nya pake engine yg kata2nya di convert jadi phoneme yg nnti diubah menjadi suara ya gan??

    mksih...mohon balasannya

    ReplyDelete
    Replies
    1. kalau utk suaranya, kita tinggal inisialisasi object utk suara yang nama class-nya "TextToSpeech" dan telah ada sejak android 1.6

      Pada kode di atas saya menyebut object-nya(variable) 'hpMembaca'

      Delete
    2. itu berlaku untuk berapa habasa aja gan?
      saya lg dalam tahap pengerjaan project kamus 5 bahasa android...mnurut agan cara yg bgus untuk TTS sy sperti apa?

      Delete
    3. engine suara yang hampir menyerupai suara manusia baru ada 5 bahasa antara lain, spanyol, rusia, german, inggris, prancis, mungkin jepang juga tapi saya belum pernah coba karena sy tak tahu tulis huruf jepang

      utk 5 bahasa, mungkin buatkan 5 view-nya(kotak utk tulis kata) beserta masing2 satu tombol baca

      Delete
  9. Your contents are too simple to read and easy to understand.
    -----------------------------------------------------------------------------
    Android Application Developer India & Android Application Development Company

    ReplyDelete
    Replies
    1. Thanks man... hopefully one day build a successful company like yours

      Delete
  10. hallo gan, ini kan inggris kalau mau dibuat bahasa infonesia bisa gak ya ? apa TTS gak mendukung untuk bahasa indonesia gan ? maksudnya jika diinput bahasa indonesia ngomongnya juga logat indonesia

    ReplyDelete
    Replies
    1. Hello juga Allan Tiarno
      Engine suara bahasa Indonesia belum ada yang jernih, sehingga HP belum bisa membaca bahasa Indonesia dengan jernih dalam dialek Indonesia

      Delete
    2. ini pake algoritma gak ya gan , kalau dilihat dari pengenalan pola suara memakai metode apa ?

      Delete
    3. Hello Lan, kita tak perlu kenal algoritmanya karena di dalam OS android, sejak adroid 1.6 telah ada class yang bernama TexToSpeech.
      kita hanya mengimplementasikan class tsb.
      Perhatikan implementasinya dengan mendeklarasikan class TextToSpeech sbb:
      "private TextToSpeech hpMembaca;"
      telusuri keberadaan variable "hpMembaca;" pada kode di atas, karena dialah yang bertugas untuk membaca.
      Variable tsb hanya menyuruh HP unutk membaca apa yang kita ketik, dan tentunya bagi mereka yang pintar java, bisa saja di kembangkan menjadi aplikasi yang tepat guna

      Delete
  11. Halllo gan, ini kan hp nya yg output suara kpd kita.
    kalau misal kita input suara terus si HP mengerti dan akan melanjutkan ke layout berikutnya kira2 gimana tu ya ?
    mohon pencerahannya gan, terima kasih salam kenal !

    ReplyDelete
  12. halo gan, minta bantuannya klo bisa. saya disuruh buat kamus yg bisa ngomong. aplikasi ini akan digunakan dikampung saya utk anak2.
    biasa minta source code nya gan? klo blh krm lewat email yoyosangeroki@gmail.com
    terima kasih sebelumnya gan.

    ReplyDelete
    Replies
    1. Hallo kak... makasih ilmunya sdh saya coba tetapi kenapa ada eror di class javanya di HPSuaraActivity.java mulai dari sampai ada tanda silangnya kak dan bertuliskan ( Syntax error on tokens, delete these tokens) tolong pencerahannya kak??

      Delete
  13. Halo kak Vintus Q mau nanyak nih... coodingnya udah q coba tapi ada eroronya di :
    setContentView(R.layout.activity_main);
    kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
    tombol = (Button) findViewById(R.id.untuk_di_pencet);

    tolong bantuannya kak??

    ReplyDelete
  14. Haloo kak vintus coodingnya udah q coba. Tapi koq ada erornya di :
    ini karena apa yah kak??
    tolong bantuannya kak

    setContentView(R.layout.activity_main);
    kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
    tombol = (Button) findViewById(R.id.untuk_di_pencet);

    ReplyDelete