57
votes

I want to develop an Speech recognizer in android, which should work in offline. As the android's built-in speech recognizer uses google server which needs internet, i want an alternative which works in the absence of internet.

Please suggest me some way to achieve the above feature.

5
Please use SO as per the regulations. This is a very clean place, please help to keep it that way. - Faiz
Has Google made this easy using SpeechRecognizer? androidpolice.com/2013/02/15/… - rmooney

5 Answers

51
votes

We used to recommend pocketsphinx, but now more advanced technology based on Kaldi toolkit is available.

The demo is here: Vosk API, you can simply load it in Android Studio and run. Full disclosure: I am the primary author of Vosk.

It supports speech recognition in 7 major languages - English, Chinese, Spanish, Portuguese, German, French and Russian.

0
votes

If the speech recognizer has limited vocabulary (as in a simple voice user interface) and is limited few samples - it maybe possible. Applications such as Transcription is not a likely task to be performed on Android (in offline mode). Also DSP is required for Voice Recognition ... A limited vocabulary and limited to very few samples might be your best bet.

0
votes

If you really want to invest time and manpower for your goal, look at the Java-Project Java Speech API 2.0 (JSR 113).

It is used on "normal" mobile phones for voice commands and works offline. Unfortunately, the project is discontinued.

0
votes

You can download Google voices for later use. From you mobile -> Setting -> “Language and Input” -> "Voice Search" -> "Download offline speech recognition" -> Choose the language pack .

Or you can use other programs, such as Dragon Mobile Assistant https://play.google.com/store/apps/details?id=com.nuance.balerion&hl=en

-3
votes

You're not going to be happy with this workaround but here goes: Record the speech & store it for later. When an internet connection is available, connect to the internet, playback the recorded speech and convert it to text.

Hey, it's the easiest way I can think of and might work for some applications, like dictation and memos.