Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Speech Recognition - get all languages supported - Android

I'm having a hard time getting this to work. I'm just trying to find out all the available languages supported by speech recognition, and also the code to use it.

There is

RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES

Which should report back all available languages on G's speech recog servers as an array. Unfortunately I can't even get it to spit out one. I'm mainly just having problems with the BroadcastReceiver I think.

package com.thatll.ddo;

import java.util.ArrayList;
import java.util.logging.Logger;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.util.Log;
import android.widget.Toast;

public class RecogtestActivity extends Activity {
    private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;



/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Log.i("Log", "startVoiceRecognitionActivity");
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "speech recognition demo");

    startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {

     Intent intent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
     LangBroadcastReceiver myBroadcastReceiver = new LangBroadcastReceiver(this, data.getStringArrayListExtra(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES));
     sendOrderedBroadcast(intent, null, myBroadcastReceiver, null, Activity.RESULT_OK, null, null);

  } else {
     Toast.makeText(getApplicationContext(), "Voice recognition failed.", Toast.LENGTH_LONG).show();
  }
  super.onActivityResult(requestCode, resultCode, data);
}



/**
 * After a voice recognition is performed, need to sent a broadcast to
 * request the language used. This BroadcastReceiver gets the response and
 * then processes the original recognisedText from the
 * ACTION_RECOGNIZE_SPEECH Intent.
 * 
 */
public class LangBroadcastReceiver extends BroadcastReceiver {
  ArrayList<String> recognisedText;
  Activity parentActivity;

  /**
   * Store these for later use...
   * @param activity
   * @param arrayList
   */
  LangBroadcastReceiver(Activity activity, ArrayList<String> arrayList) {
     recognisedText = arrayList;
     parentActivity = activity;
  }

  @Override
  public void onReceive(Context context, Intent intent) {
     Bundle results = getResultExtras(true);
     String lang = results.getString(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
     Log.d("log", "MyBroadcastReceiver: Got 'EXTRA_LANGUAGE_PREFERENCE' = " + lang);
     // now handle the recognisedText with the known language.

     ArrayList<CharSequence> hints = getResultExtras(true)
             .getCharSequenceArrayList(
                     RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);

     Log.d("log", "MyBroadcastReceiver: Got 'EXTRA_LANGUAGE_PREFERENCE' =   " + hints);

  }

}}

I'd like to know why this isn't working but at this point I'd be just as happy if I got the full list of currently supported languages. Tried various different methods and it's starting to annoy me now.

Thanks for any help

like image 781
CitizenSmif Avatar asked Mar 05 '26 10:03

CitizenSmif


1 Answers

Please see my answer here, I describe how to execute RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS properly:

How to set the language in speech recognition on android?

like image 182
gregm Avatar answered Mar 07 '26 00:03

gregm



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!