Does the Google speech recognizer on Android need internet?

10,928

In jellybean the user needs to download the offline speech recognition package.

This article sais:

Previously, when you pressed the voice icon and spoke a command or query, Android had to digitize your voice, upload it to the cloud, process the waveform, turn it into text, and send the text back down to your phone. Now the phones are powerful enough that this can be built into the device, with no extra network I/O needed. As you can imagine this results in much faster voice recognition than previous versions.

The app user will have to do this:

  1. Go to “Language and Input” in the Setting
  2. Tap on "Download offline speech recognition" under the "Voice Search"
  3. Choose the language pack you want your Android device to recognize
  4. Download the pack and enjoy the offline voice typing

Another helper link:

Google have restricted certain Jelly Bean devices from using the offline recognition due to hardware constraints.

Share:
10,928
user13267
Author by

user13267

SOreadytohelp Please join the Korean language StackExchange at: http://korean.stackexchange.com/

Updated on June 05, 2022

Comments

  • user13267
    user13267 almost 2 years

    I use the following code to invoke the voice recognizer by google:

    // This is a demonstration of Android's built in speech recognizer
    
    package com.example.voiceinputbuiltintest;
    
    import java.util.ArrayList;
    import java.util.Locale;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.speech.RecognizerIntent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private static final int VOICE_RECOGNITION = 1;
        Button speakButton ;
        TextView spokenWords; 
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            speakButton = (Button) findViewById(R.id.button1);  
            spokenWords = (TextView)findViewById(R.id.textView1);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        protected void onActivityResult(int requestCode,
                int resultCode,
                Intent data) {
            if (requestCode == VOICE_RECOGNITION && resultCode == RESULT_OK) {
                ArrayList<String> results;
                results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                // TODO Do something with the recognized voice strings
    
                Toast.makeText(this, results.get(0), Toast.LENGTH_SHORT).show();
                spokenWords.setText(results.get(0));
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    
        public void btnSpeak(View view){
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            // Specify free form input
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"Please start speaking");
            intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.ENGLISH);
            startActivityForResult(intent, VOICE_RECOGNITION);
        }
    
    
    }  
    

    This works without network connection in my test machine which is Nexus 7 with Android 4.3. I thought it would work the same on any android device. However, when I try it on Samsung Galaxy S2 with Android version gingerbread.el21, the voice recogniser activity shows up, but says it needs network connection and refuses to work. Why does it work in Nexus 7 and not in Galaxy S2? Does it work offline or does it need network connection? It works in the Nexus 7 even when I stop the wifi.

  • user13267
    user13267 over 10 years
    Thanks for the fast reply. So this feature does work offline, and it works in Nexus 7 because I have updated the Android version?
  • user13267
    user13267 over 10 years
    By the way, I never explicitly downloaded the offline speech recognition files, but I did update the OS to the latest version of Android. I think the offline speech recognition also gets downloaded automatically when this is done
  • Dyna
    Dyna over 10 years
    yes, the new versions work offline but I'm pretty sure your galaxy s2 only have jelly bean and doesn't allow you to do this offline.
  • user13267
    user13267 over 10 years
    the Galaxy S2 is Gingerbread, so I guess it does not have this feature
  • user13267
    user13267 over 10 years
    Incidentally, I found this: stackoverflow.com/questions/17616994/… This explains why I haven't been able to find much information on this feature. I guess I was lucky that the Nexus 7 happened have enough hardware specifications to be able to run this feature offline
  • Dyna
    Dyna over 10 years
    Great link, I'll add it to my answer so that we could help other developers.