2

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();      
}

}
matramroid
  • 103
  • 2
  • 9

3 Answers3

2

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.

Faisal Khan
  • 548
  • 3
  • 16
1

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.)

Community
  • 1
  • 1
gaurav5430
  • 12,934
  • 6
  • 54
  • 111
  • This `Settings ➝ Applications ➝ Manage applications` path does not exist on Pixel4a running Android 11. The closest I have been able to find is `Apps & notifications > Apps info` and in there, despite recognizer working perfectly, there is no "Google Voice Search application". The closest I have been able to find is `Speech Services by Google`. Is that the direct replacement for `com.google.android.voicesearch`? – WebViewer Dec 24 '22 at 17:56
0

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

<queries>
   <intent>
     <action
        android:name="android.speech.RecognitionService" />
   </intent>
 </queries>
Kishan Mevada
  • 662
  • 1
  • 6
  • 17
  • 2
    it's "android.speech.action.RECOGNIZE_SPEECH". https://developer.android.com/reference/android/speech/RecognizerIntent#ACTION_RECOGNIZE_SPEECH – Faisal Khan Jan 19 '22 at 18:26
  • The answer by @FaisalKhan is the correct one, works on Android 11, and explains the **why**. – WebViewer Dec 24 '22 at 17:57