#! /bin/bash main() { if [ ! -e /tmp/stt.fifo ]; then mkfifo /tmp/stt.fifo fi cleanup() { killall -9 $(jobs -p) } trap cleanup EXIT echo starting in for ((i=3; i>0; i--)); do echo "...$i..." sleep 1 done local models=($( cat pyautogui.yaml \ | gojq -r -c --yaml-input ' to_entries[] | "model/"+.key+".pmdl/"+.key ' \ | tr '\n' ',' \ | sed 's/,$//' )) echo models=$models ./snowboy -s .5 -r resources.res -ms $models "$@" > /tmp/stt.fifo & python3 -c ' import pyautogui import time keys = set() def press(key): hold(key) time.sleep(0.25) release(key) def hold(key): global keys keys.add(key) pyautogui.keyDown(key) def release(key): pyautogui.keyUp(key) def release_all(): global keys for key in keys: release(key) keys = set() def main(): with open("/tmp/stt.fifo", "r") as q: for line in q: handle(line.strip()) import yaml mapping = yaml.safe_load(open("./pyautogui.yaml", "r")) print(mapping) def handle(cmd): global mapping press(mapping.get(cmd)) main() ' } if [ "$0" == "$BASH_SOURCE" ]; then main "$@" fi