Nah kita mulai membuat Pengenalan Suara Bahsa Indonesia atau Bahasa Indonesian Speech Recognition, pada project Android buat kode program di MainActivity.java seperti ini :
package com.amijaya.speechtotextindonesia;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.speech.RecognizerIntent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
// http://cariprogram.blogspot.com
// nuramijaya@gmail.com
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "id-ID");
try {
startActivityForResult(intent, 1);
EditText editText1 = (EditText)findViewById(R.id.editText1);
editText1.setText("");
} catch (ActivityNotFoundException a) {
Toast t = Toast.makeText(getApplicationContext(),
"Perangkat Tidak Mendukung",
Toast.LENGTH_SHORT);
t.show();
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> text = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
EditText editText1 = (EditText)findViewById(R.id.editText1);
editText1.setText(text.get(0));
}
break;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
/*
// CARA MENGECEK APAKAH TTS DISUPPORT DAN MEMANGGIL INSTALLER TTS GOOGLE PLAY
//find out whether speech recognition is supported
PackageManager packManager = getPackageManager();
List<ResolveInfo> intActivities = packManager.queryIntentActivities
(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (intActivities.size() != 0) {
//speech recognition is supported - detect user button clicks
speechBtn.setOnClickListener(this);
//prepare the TTS to repeat chosen words
Intent checkTTSIntent = new Intent();
//check TTS data
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
//start the checking Intent - will retrieve result in onActivityResult
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
}
else
{
//speech recognition not supported, disable button and output message
speechBtn.setEnabled(false);
Toast.makeText(this, "Oops - Speech recognition not supported!", Toast.LENGTH_LONG).show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//check speech recognition result
if (requestCode == VR_REQUEST && resultCode == RESULT_OK)
{
//store the returned word list as an ArrayList
ArrayList<String> suggestedWords = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
//set the retrieved list to display in the ListView using an ArrayAdapter
wordList.setAdapter(new ArrayAdapter<String> (this, R.layout.word, suggestedWords));
}
//returned from TTS data check
if (requestCode == MY_DATA_CHECK_CODE)
{
//we have the data - create a TTS instance
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS)
repeatTTS = new TextToSpeech(this, this);
//data not installed, prompt the user to install it
else
{
//intent will take user to TTS download page in Google Play
Intent installTTSIntent = new Intent();
installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installTTSIntent);
}
}
//call superclass method
super.onActivityResult(requestCode, resultCode, data);
}
*/
}
Kemudian layout activity_main.xml seperti ini :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Speech To Text Indonesia" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bicara" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
</LinearLayout>
AndroidManifest tidak perlu kita ubah :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amijaya.speechtotextindonesia"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.amijaya.speechtotextindonesia.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Hasilnya, Setelah diklik Tombol Bicara kemudian akan muncul Dialog Bicara :
Kemudian suara akan diproses :
Dan dituliskan hasil pengenalan suaranya pada EditText :
Sekali lagi agar aplikasi ini bekerja mengenali Bahasa Indonesia jangan lupa terlebih dahulu buka Setting dan Ubah Bahasa menjadi Bahasa Indonesia.
Project selengkapnya silakan didownload. Jika tidak bisa mungkin bisa membaca caranya ini.
Cobalah dengan bahasa Indonesia yang Baik dan Benar ^_^
Bagaimana jika dibuat offline?
BalasHapussy ingin buat game matematika & inputan suara hanya berupa angka saja..
bisa gak speech to text nya "listen to anything"??? bisa mengkonversi apa saja yang kita ucapkan, jadi ga berdasarkan bahasa
BalasHapusini speech to textnya pake database apa ngga?
BalasHapusgan saya dah coba ikutin tutor tp masih ada yg error di "getMenuInflater().inflate(R.menu.activity_main, menu);" , trus pas saya klik tombol bicaranya perangkat tidak mendukung, itu gmna solusinya gan ?
BalasHapusterimakasih.
Mantap! :D
BalasHapushttp://alienkomputer.com/blog/yes-akhirnya-android-studio-1-0-stable-rilis/
coding untuk transfer kata yg udah bntuk txt ke modul bluethood yg mn ya?
BalasHapuskalok koding untuk membuat voice recognition di web ada gan ?
BalasHapusseperti google translate
"perangkat tidak mendukung" bagaimana mengatasinya min?
BalasHapus