কম্পিউটার

গুগল এপিআই ছাড়া অ্যান্ড্রয়েডে স্পিচ শনাক্তকারী কীভাবে বিকাশ করবেন?


এই উদাহরণটি দেখায় কিভাবে আমি Google API ছাড়া অ্যান্ড্রয়েডে একটি স্পিচ শনাক্তকারী তৈরি করতে পারি।

ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে সমস্ত প্রয়োজনীয় বিবরণ পূরণ করুন৷

ধাপ 2 − res/layout/activity_main.xml-এ নিম্নলিখিত কোড যোগ করুন।

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="https://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >
   <ImageView
      android:id="@+id/imageView1"
      android:layout_width="200dp"
      android:layout_height="200dp"
      android:layout_centerInParent="true"
      android:src="@drawable/ic_mic" />
   <ProgressBar
      android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true"
      android:layout_below="@+id/toggleButton1"
      android:layout_marginTop="28dp"
      android:paddingLeft="10dp"
      android:paddingRight="10dp" />
   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/progressBar1"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="47dp" />
   <ToggleButton
      android:id="@+id/toggleButton1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="26dp"
      android:text="ToggleButton" />
</RelativeLayout>

ধাপ 3 − src/MainActivity.java

-এ নিম্নলিখিত কোড যোগ করুন
package app.com.sample;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity implements
RecognitionListener {
   private static final int REQUEST_RECORD_PERMISSION = 100;
   private TextView returnedText;
   private ToggleButton toggleButton;
   private ProgressBar progressBar;
   private SpeechRecognizer speech = null;
   private Intent recognizerIntent;
   private String LOG_TAG = "VoiceRecognitionActivity";
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      returnedText = findViewById(R.id.textView1);
      progressBar = findViewById(R.id.progressBar1);
      toggleButton = findViewById(R.id.toggleButton1);
      progressBar.setVisibility(View.INVISIBLE);
      speech = SpeechRecognizer.createSpeechRecognizer(this);
      Log.i(LOG_TAG, "isRecognitionAvailable: " + SpeechRecognizer.isRecognitionAvailable(this));
      speech.setRecognitionListener(this);
      recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
      recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,"US-en");
      recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
      recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
      toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
         @Override
         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
               progressBar.setVisibility(View.VISIBLE);
               progressBar.setIndeterminate(true);
               ActivityCompat.requestPermissions (MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO},
               REQUEST_RECORD_PERMISSION);
            } else {
               progressBar.setIndeterminate(false);
               progressBar.setVisibility(View.INVISIBLE);
               speech.stopListening();
            }
         }
      });
   }
   @Override
   public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
      super.onRequestPermissionsResult(requestCode, permissions, grantResults);
      switch (requestCode) {
         case REQUEST_RECORD_PERMISSION:
         if (grantResults.length > 0 && grantResults[0]== PackageManager.PERMISSION_GRANTED) {
            speech.startListening(recognizerIntent);
         } else {
            Toast.makeText(MainActivity.this, "Permission Denied!", Toast .LENGTH_SHORT).show();
         }
      }
   }
   @Override
   public void onResume() {
      super.onResume();
   }
   @Override
   protected void onPause() {
      super.onPause();
   }
   @Override
   protected void onStop() {
      super.onStop();
      if (speech != null) {
         speech.destroy();
         Log.i(LOG_TAG, "destroy");
      }
   }
   @Override
   public void onBeginningOfSpeech() {
      Log.i(LOG_TAG, "onBeginningOfSpeech");
      progressBar.setIndeterminate(false);
      progressBar.setMax(10);
   }
   @Override
   public void onBufferReceived(byte[] buffer) {
      Log.i(LOG_TAG, "onBufferReceived: " + buffer);
   }
   @Override
   public void onEndOfSpeech() {
      Log.i(LOG_TAG, "onEndOfSpeech");
      progressBar.setIndeterminate(true);
      toggleButton.setChecked(false);
   }
   @Override
   public void onError(int errorCode) {
      String errorMessage = getErrorText(errorCode);
      Log.d(LOG_TAG, "FAILED " + errorMessage);
      returnedText.setText(errorMessage);
      toggleButton.setChecked(false);
   }
   @Override
   public void onEvent(int arg0, Bundle arg1) {
      Log.i(LOG_TAG, "onEvent");
   }
   @Override
   public void onPartialResults(Bundle arg0) {
      Log.i(LOG_TAG, "onPartialResults");
   }
   @Override
   public void onReadyForSpeech(Bundle arg0) {
      Log.i(LOG_TAG, "onReadyForSpeech");
   }
   @Override
   public void onResults(Bundle results) {
      Log.i(LOG_TAG, "onResults");
      ArrayList<String> matches = results .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
      String text = "";
      for (String result : matches)
         text = result + "\n";
      returnedText.setText(text);
   }
   @Override
   public void onRmsChanged(float rmsdB) {
      Log.i(LOG_TAG, "onRmsChanged: " + rmsdB);
      progressBar.setProgress((int) rmsdB);
   }
   public static String getErrorText(int errorCode) {
      String message;
      switch (errorCode) {
         case SpeechRecognizer.ERROR_AUDIO:
            message = "Audio recording error";
            break;
         case SpeechRecognizer.ERROR_CLIENT:
            message = "Client side error";
            break;
         case
            SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:
            message = "Insufficient permissions";
            break;
         case SpeechRecognizer.ERROR_NETWORK:
            message = "Network error";
            break;
         case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
            message = "Network timeout";
            break;
         case SpeechRecognizer.ERROR_NO_MATCH:
            message = "No match";
            break;
         case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
            message = "RecognitionService busy";
            break;
         case SpeechRecognizer.ERROR_SERVER:
            message = "error from server";
            break;
         case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
            message = "No speech input";
            break;
         default:
            message = "Didn't understand, please try
            again.";
            break;
      }
      return message;
   }
}

পদক্ষেপ 4৷ − androidManifest.xml

-এ নিম্নলিখিত কোড যোগ করুন
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
   <uses-permission android:name="android.permission.RECORD_AUDIO"/>
   <uses-permission android:name="android.permission.INTERNET" />
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালাতে, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং টুলবার থেকে রান আইকনে ক্লিক করুন। একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইস নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে -

গুগল এপিআই ছাড়া অ্যান্ড্রয়েডে স্পিচ শনাক্তকারী কীভাবে বিকাশ করবেন?

গুগল এপিআই ছাড়া অ্যান্ড্রয়েডে স্পিচ শনাক্তকারী কীভাবে বিকাশ করবেন?


  1. গুগল প্লে স্টোর ছাড়া অ্যান্ড্রয়েডে অ্যাপস কীভাবে ইনস্টল করবেন

  2. গুগল প্লে সার্ভিস ছাড়া কিভাবে অ্যান্ড্রয়েড ব্যবহার করবেন

  3. How to use Text to Speech Android

  4. অ্যান্ড্রয়েডে Google টেক্সট টু স্পিচ ভয়েস কীভাবে পরিবর্তন করবেন