{ lib, config, pkgs, ... }: { config = lib.mkIf (config.homecfg.make.gui) { home.packages = with pkgs; [ custom.vosk.base jq (python3.withPackages (ps: with ps; [ translatepy ])) ]; xdg.configFile."script/transcript-translate.py".text = '' #!/bin/python import sys; from translatepy.translators.google import GoogleTranslate; if len(sys.argv) != 2: print("No language provided.") exit translator = GoogleTranslate() while True: for line in sys.stdin: sys.stdout.write(translator.translate(line,sys.argv[1]).result+"\n") ''; xdg.configFile."script/transcript.sh".text = '' #!/bin/sh MODELS=( "English:${pkgs.custom.vosk.lang.en-us}/usr/share/vosk-models/en-us" "German:${pkgs.custom.vosk.lang.de}/usr/share/vosk-models/de" "Russian:${pkgs.custom.vosk.lang.ru}/usr/share/vosk-models/ru" "Japanese:${pkgs.custom.vosk.lang.ja}/usr/share/vosk-models/ja" ) MODEL_OPTS="" for pair in "''${MODELS[@]}"; do MODEL_OPTS+="$pair\n" done MODEL_OPT=$(echo -e "$MODEL_OPTS" | wofi --dmenu -p "Choose model:") MODEL=$(echo "$MODEL_OPT" | awk -F ':' '{print $2}') TRANSS="None\nNone-prog\nEnglish\nGerman\nRussian\nJapanese" TRANS=$(echo -e "$TRANSS" | wofi --dmenu -p "Choose translation:") export VOSK_MODEL=$MODEL case $TRANS in "None") ${pkgs.custom.vosk.cli}/bin/voskcli 2>/dev/null | jq --unbuffered -r '.alternatives[0].text // empty | select(length > 0)' 2>/dev/null ;; "None-prog") ${pkgs.custom.vosk.cli}/bin/voskcli 2>/dev/null | jq --unbuffered -r '.alternatives[0].text // empty, .partial // empty | select(length > 0)' 2>/dev/null ;; *) ${pkgs.custom.vosk.cli}/bin/voskcli 2>/dev/null | jq --unbuffered -r '.alternatives[0].text // empty | select(length > 0)' | python ~/.config/script/transcript-translate.py $TRANS ;; esac ''; }; }