rust-whisper/snowboy-2022/pyautogui.sh

76 lines
1.2 KiB
Bash

#! /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