Kamis, 15 Juni 2017

Membuat Aplikasi Speech To Text Voice

Assalamualaiqum
Kali ini masih saya akan memposting materi Android yaitu Speech To Text Voice Recognition Android.
C:\Users\ACER\Pictures\New folder\a.png
Ok langsung saja berikut langkah – langkahnya:
  1. Pertama buat Project Android. Kemudian pada MainActivity kita tuliskan kode program ini :
package com.amijaya.speechtotextinggris;

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, "en-US");

   try {
    startActivityForResult(intent, 1);
    
    EditText editText1 = (EditText)findViewById(R.id.editText1);
    editText1.setText("");
   } catch (ActivityNotFoundException a) {
    Toast t = Toast.makeText(getApplicationContext(),
      "Device Not Supported",
      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);
   }

 */
   
}

  1. Kemudian buat layout di file 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 English" />

   <Button
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Speak" />

   <EditText
       android:id="@+id/editText1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:ems="10" >

       <requestFocus />
   </EditText>

</LinearLayout>

  1. Dan terakhir file AndroidManifest.xml tidak perlu kita rubah :
<manifest android:versioncode="1" android:versionname="1.0" package="com.amijaya.speechtotextinggris" xmlns:android="http://schemas.android.com/apk/res/android">

   <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:label="@string/app_name" android:name="com.amijaya.speechtotextinggris.MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN">

               <category android:name="android.intent.category.LAUNCHER">
           </category></action></intent-filter>
       </activity>
   </application>

</uses-sdk></manifest>


Hasilnya, Setelah kita klik Tombol akan muncul dialog Speak Now :
C:\Users\ACER\Pictures\New folder\b.png

Kemudian akan diproses :
C:\Users\ACER\Pictures\New folder\c.png

Kemudian setelah suara dikenali akan muncul tulisannya di EditText :
C:\Users\ACER\Pictures\New folder\d.png

Agar pengenalan Speech To Text bekerja maksimal dalam mengenali kata dalam Bahasa Inggris (English) silakan ubah di Setting dengan Language English (United States) :
C:\Users\ACER\Pictures\New folder\e.png


Semoga Bermanfaat

Tidak ada komentar:

Posting Komentar