matramroid
matramroid

Reputation: 133

RecognizerIntent.ACTION_RECOGNIZE_SPEECH not working in new android devices

Following is my code for voice recognition, its saying "Recogniser not present" for latest devices and tablets.Please help me how to fix it.

public void startMyVoice()
{   
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);   
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, sayClose);   
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");

try 
{
    startActivityForResult(intent, RESULT_SPEECH);      
} 
catch (ActivityNotFoundException a) 
{                   
    Toast.makeText(getApplicationContext(), "Recogniser not present", Toast.LENGTH_SHORT).show();      
}

}

Upvotes: 5

Views: 4382

Answers (3)

Faisal Khan
Faisal Khan

Reputation: 652

According to this documentation:

When an app targets Android 11 (API level 30) or higher ... To view other packages, declare your app's need for increased package visibility using the <queries> element.

So if you are using RecognizerIntent.ACTION_RECOGNIZE_SPEECH, then you will need to declare the same intent in AndroidManifest.xml outside <application> tag like this:

<manifest>

    ...

    <queries>
        <intent>
            <action android:name="android.speech.action.RECOGNIZE_SPEECH" />
        </intent>
    </queries>
</manifest>

Otherwise pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); will always return an empty list.

Upvotes: 6

Kishan Mevada
Kishan Mevada

Reputation: 701

Add Below Code In Your AndroidManifest.xml File And It Will Work.

<queries>
   <intent>
     <action
        android:name="android.speech.RecognitionService" />
   </intent>
 </queries>

Upvotes: 1

gaurav5430
gaurav5430

Reputation: 13902

From: Speech To Text Recognizer not found

I am not sure why the recognizer functionality is not available on all devices. Make sure you install and update the latest Google Voice Search for Android. I believe it installs the latest recognizer. See http://www.google.com/mobile/voice-actions/ it may be helpful.

As Dante Jiang said in Converting speech to text, According to this article, Google Voice Search is what you actually need.

The Android SDK makes it easy to integrate speech input directly into your own application—just copy and paste from this sample application to get started. Android is an open platform, so your application can potentially make use of any speech recognition service on the device that's registered to receive a RecognizerIntent. Google's Voice Search application, which is pre-installed on many Android devices, responds to a RecognizerIntent by displaying the "Speak now" dialog and streaming audio to Google's servers—the same servers used when a user taps the microphone button on the search widget or the voice-enabled keyboard. (You can check if Voice Search is installed in Settings ➝ Applications ➝ Manage applications.)

Upvotes: 1

Related Questions