Add several language options and arch check.
This commit is contained in:
		
							parent
							
								
									a6570c439a
								
							
						
					
					
						commit
						3425a1d561
					
				|  | @ -0,0 +1,130 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Install nerd-dictation offline speech2text tool script using VOSK backend/model. | ||||
| # | ||||
| # Follow the installer repo at: | ||||
| # - https://forge.switnet.net/Ark74/simple-nerd-dictation-installer | ||||
| # | ||||
| # Nerd Dictation repo at: | ||||
| # - https://github.com/ideasman42/nerd-dictation | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| if [ "$(id -u)" = 0 ]; then | ||||
|    echo "Please don't use with root privileges, sudo will be used only when necessary!" | ||||
|    exit 0 | ||||
| fi | ||||
| if dpkg-architecture -e amd64 ;then | ||||
|     echo "Supported architecture." | ||||
| else | ||||
|     echo "Warning: Only run this script on amd64 arch." | ||||
|     exit | ||||
| fi | ||||
| 
 | ||||
| ENGLISH_VOSK_MODEL="https://alphacephei.com/vosk/models/vosk-model-en-us-0.22-lgraph.zip" | ||||
| SPANISH_VOSK_MODEL="https://alphacephei.com/vosk/models/vosk-model-small-es-0.42.zip" | ||||
| FRENCH_VOSK_MODEL="https://alphacephei.com/vosk/models/vosk-model-small-fr-0.22.zip" | ||||
| GERMAN_VOSK_MODEL="https://alphacephei.com/vosk/models/vosk-model-small-de-0.15.zip" | ||||
| CHINESE_VOSK_MODEL="https://alphacephei.com/vosk/models/vosk-model-small-cn-0.22.zip" | ||||
| NERD_DIC_GIT_REPO="https://github.com/ideasman42/nerd-dictation.git" | ||||
| OPT_VOSK="/opt/vosk-python" | ||||
| 
 | ||||
| # Select language. | ||||
| printf "\n> Vosk Model Language selection.\n" | ||||
| PS3='Select one of the available language models to use on nerd-dictation: ' | ||||
| options=("English" "Spanish" "French" "German" "Chinese" "Exit") | ||||
| select opt in "${options[@]}" | ||||
| do | ||||
|     case $opt in | ||||
|         "English") | ||||
|             printf "\n  > Selecting English model.\n" | ||||
|             VOSK_MODEL="$ENGLISH_VOSK_MODEL" | ||||
|             break | ||||
|             ;; | ||||
|         "Spanish") | ||||
|             printf "\n  > Selecting Spanish model.\n" | ||||
|             VOSK_MODEL="$SPANISH_VOSK_MODEL" | ||||
|             break | ||||
|             ;; | ||||
|         "French") | ||||
|             printf "\n  > Selecting French model.\n" | ||||
|             VOSK_MODEL="$FRENCH_VOSK_MODEL" | ||||
|             break | ||||
|             ;; | ||||
|         "German") | ||||
|             printf "\n  > Selecting German model.\n" | ||||
|             VOSK_MODEL="$GERMAN_VOSK_MODEL" | ||||
|             break | ||||
|             ;; | ||||
|         "Chinese") | ||||
|             printf "\n  > Selecting Chinese model.\n" | ||||
|             VOSK_MODEL="$CHINESE_VOSK_MODEL" | ||||
|             break | ||||
|             ;; | ||||
|         "Exit") | ||||
|             printf "\n  > Exit installer.\n" | ||||
|             exit 0 | ||||
|             break | ||||
|             ;; | ||||
|         *) echo "Invalid option $REPLY, choose one number of the above.";; | ||||
|     esac | ||||
| done | ||||
| VOSK_FOLDER="$(basename $VOSK_MODEL|sed 's|.zip||')" | ||||
| 
 | ||||
| # Install dependencies | ||||
| sudo apt install -y git ssh python3-setuptools pulseaudio-utils xdotool | ||||
| 
 | ||||
| # Install vosk python3 module. | ||||
| [ -d "$OPT_VOSK" ] && sudo rm -rf "$OPT_VOSK" | ||||
| sudo mkdir "$OPT_VOSK" | ||||
| cat << EOF  | sudo tee "$OPT_VOSK"/setup.py | ||||
| from setuptools import setup | ||||
| 
 | ||||
| setup( | ||||
|     install_requires=['vosk'], | ||||
|     dependency_links=[ | ||||
|         'https://files.pythonhosted.org/packages/fc/ca/83398cfcd557360a3d7b2d732aee1c5f6999f68618d1645f38d53e14c9ff/vosk-0.3.45-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl', | ||||
|     ], | ||||
| ) | ||||
| EOF | ||||
| cd "$OPT_VOSK" | ||||
| sudo python3 "$OPT_VOSK"/setup.py install | ||||
| if [ $? = 0 ]; then | ||||
|     sudo rm "$OPT_VOSK"/setup.py | ||||
| else | ||||
|     echo "something went wrong, please check setup.py file" | ||||
|     exit | ||||
| fi | ||||
| 
 | ||||
| # Cleaning existing local directories and binary link. | ||||
| rm -rf "$HOME"/.local/nerd-dictation | ||||
| rm -f  "$HOME"/.local/bin/nerd-dictation | ||||
| rm -rf "$HOME"/.config/nerd-dictation | ||||
| 
 | ||||
| # Set repo as local package. | ||||
| cd "$HOME"/.local | ||||
| git clone "$NERD_DIC_GIT_REPO" | ||||
| cd nerd-dictation | ||||
| 
 | ||||
| # Setup language model | ||||
| wget "$VOSK_MODEL" | ||||
| unzip "$(basename $VOSK_MODEL)" | ||||
| if [ $? = 0 ]; then | ||||
|     rm "$(basename $VOSK_MODEL)" | ||||
| else | ||||
|     echo "something went wrong, please check $(basename $VOSK_MODEL) file" | ||||
|     exit | ||||
| fi | ||||
| mv "$VOSK_FOLDER" model | ||||
| mkdir "$HOME"/.config/nerd-dictation | ||||
| mv model "$HOME"/.config/nerd-dictation/ | ||||
| 
 | ||||
| # Setup local bin for nerd-dictation | ||||
| [ ! -d "$HOME"/.local/bin ] && mkdir "$HOME"/.local/bin | ||||
| ln -s "$HOME"/.local/nerd-dictation/nerd-dictation "$HOME"/.local/bin | ||||
| 
 | ||||
| if [ $? = 0 ]; then | ||||
|     echo "Completed script!\nPlease exit and login for nerd-dictation to be used on the terminal." | ||||
| else | ||||
|     echo "Something went wrong please check." | ||||
| fi | ||||
		Loading…
	
		Reference in New Issue