Open source offline speech recognition for Android using Mozilla's DeepSpeech in Termux and DeepSpeech-Italian-Model
- ~3GB of disk space during installation; afterwards only ~2GB
- Termux
- Termux:API
- Install the following (open source) apps: Termux, Termux:API
- Open Termux and run
pkg i -y git && git clone https://github.com/Fr1z/Termux-DeepSpeech_Italian.git && cd ./Termux-DeepSpeech && ./speech2text
This will take a while beacuse it needs to download a pre-trained DeepSpeech model and a DeepSpeech release. It will probably also ask for microphone permissions (which are required for obvious reasons).
If the installation was successful, you should now be able to use command speech2text
.
speech2text
will listen to your microphone for (by default) 2 seconds and then print the words that were recognized.
You could create bash scripts like this:
#!/data/data/com.termux/files/usr/bin/bash
WORDS="$(speech2text)" # This will listen to the microphone for (by default) 2 seoncds and the write what you said in the variable WORDS
echo "Recognized: $WORDS" # Show what you just said
if [[ "$WORDS" =~ "light" ]]; then # If what you said contained the word "light"
if [[ $WORDS =~ "on" ]]; then # If what you said contained the word "on"
termux-tts-speak "Turning flashlight on" # Let a robot voice say "Turning flashlight on"
termux-torch on # Turn the flashlight on
elif [[ $WORDS =~ "of" ]]; then # If what you said contained the word "of"
termux-tts-speak "Turning flashlight off" # Let a robot voice say "Turning flashlight off"
termux-torch off # Turn the flashlight off
fi
elif [[ "$WORDS" =~ "heating" ]] || [[ "$WORDS" =~ "temperature" ]]; then # If what you said contained the word "heating" or "temerature"
# Do whatever here...
echo "Hello"
else
termux-tts-speak "You said: $WORDS" # Let a robot voice repeat what it thought you said...
fi
If you install the Termux:Widget app and save the above script under "$HOME/.shortcuts/tasks/" and make it executable for example like this: chmod +x "$HOME/.shortcuts/tasks/speech-command"
(speech-command is the name of the script).
You can then then create a widget that triggers the script. Or using the app HomeBot (open source) you can remap long-pressing the home button which usually triggers the Google voice assistent to run your speech-command script.
Models by https://github.com/MozillaItalia/DeepSpeech-Italian-Model
This is a very new script that has barely been tested. You might also have to install a TTS Engine (Flite TTS Engine is a good open source one) because I'm using text-to-speech commands a few times in the Advanced usage
example.