61 lines
2.2 KiB
Nix
61 lines
2.2 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
let
|
|
translateScript = pkgs.writeTextFile {
|
|
name = "transcript-translate";
|
|
executable = true;
|
|
destination = "/bin/transcript-translate";
|
|
text = ''
|
|
#!${pkgs.python3.withPackages (ps: [ ps.translatepy ])}/bin/python3
|
|
import sys
|
|
from translatepy.translators.google import GoogleTranslate
|
|
if len(sys.argv) != 2:
|
|
print("No language provided.")
|
|
exit(1)
|
|
translator = GoogleTranslate()
|
|
while True:
|
|
for line in sys.stdin:
|
|
sys.stdout.write(translator.translate(line,sys.argv[1]).result+"\n")
|
|
'';
|
|
};
|
|
in {
|
|
|
|
config = lib.mkIf (config.syscfg.make.gui) {
|
|
home.packages = [ pkgs.custom.vosk.base ];
|
|
|
|
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" | ${pkgs.wofi}/bin/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" | ${pkgs.wofi}/bin/wofi --dmenu -p "Choose translation:")
|
|
|
|
export VOSK_MODEL=$MODEL
|
|
case $TRANS in
|
|
"None")
|
|
${pkgs.custom.vosk.cli}/bin/voskcli 2>/dev/null | ${pkgs.jq}/bin/jq --unbuffered -r '.alternatives[0].text // empty | select(length > 0)' 2>/dev/null
|
|
;;
|
|
"None-prog")
|
|
${pkgs.custom.vosk.cli}/bin/voskcli 2>/dev/null | ${pkgs.jq}/bin/jq --unbuffered -r '.alternatives[0].text // empty, .partial // empty | select(length > 0)' 2>/dev/null
|
|
;;
|
|
*)
|
|
${pkgs.custom.vosk.cli}/bin/voskcli 2>/dev/null | ${pkgs.jq}/bin/jq --unbuffered -r '.alternatives[0].text // empty | select(length > 0)' | ${translateScript}/bin/transcript-translate "$TRANS"
|
|
;;
|
|
esac
|
|
'';
|
|
};
|
|
}
|