diff --git a/server.sh b/server.sh new file mode 100644 index 0000000..c048ba2 --- /dev/null +++ b/server.sh @@ -0,0 +1,132 @@ +# /bin/bash + +main() { + set -eo pipefail + tty && read -p "git refresh? [yN] " a && test "$a" == "y" && ( + git config --global credential.helper store + git submodule init + git pull --recurse-submodules --jobs=10 + git submodule foreach git pull origin master + ) + _tts + _stt + _mayhem_party + _discord + _dolphin + while read; do + pkill -SIGUSR1 -f mayhem-party + done +} + +cleanup() { + pkill -f larynx + pkill -f hotwords.py + pkill -f rust-whisper + pkill -f mayhem-party + pkill -f server-vm +} +trap cleanup EXIT + +log() { + echo "$(date) > $*" >&2 +} + +_discord() { + read -p "pls start discord" +} + +_dolphin() { + read -p "pls start dolphin" +} + +_mayhem_party() { + log mayhem-party + pushd ./git.d/mayhem-party.d + go build + popd + log launching mayhem-party + ( + source ./config.d/mayhem-party.d/env.env + while true; do + ./git.d/mayhem-party.d/mayhem-party + sleep 5 + done + ) &> /tmp/mayhem-party.mayhem-party.log & +} + +_tts() { + log tts + ( + cd ./git.d/tts.d/larynx.d/ + bash ./run.sh + ) &> /tmp/mayhem-party.mayhem-party.log & +} + +_stt() { + log stt + pushd ./git.d/stt.d/rust-whisper.d/ + pip3 install ./requirements.txt + popd + return 1 + if ! python3 -m pip show PyAudio; then + sudo apt -y install \ + portaudio19-dev \ + python3-pyaudio \ + python3-pip \ + git \ + pulseaudio + sudo python3 -m pip install --no-cache-dir \ + git+https://github.com/openai/whisper.git \ + soundfile \ + PyAudio \ + SpeechRecognition \ + PyYAML + fi + log launching stt + ( + export HOME="$PWD/mnt.d/stt.d" + mkdir -p "$HOME" + cd "$HOME" + local device=$( + pactl list \ + | grep Monitor.Source \ + | grep -v hdmi \ + | awk "{print \$NF}" \ + | head -n 1 + ) + ( + echo "pcm.pulse_monitor {" + echo " type pulse" + echo " device $device" + echo "}" + echo "ctl.pulse_monitor {" + echo " type pulse" + echo " device $device" + echo "}" + ) | sudo tee /etc/asound.conf + cd ../../git.d/stt.d/whisper-2023 + export HOTWORDS=../../config.d/mayhem-party.d/v01.yaml@.users[].state.gm.alias + export MIC_TIMEOUT=2 + export URL=http://localhost:17071/gm/rpc/broadcastSomeoneSaidAlias?message={{hotword}} + export HEADERS=say="Eye herd {{hotword}}" + export MIC_NAME=pulse_monitor + export MODEL=tiny.en + export DEBUG=true + while true; do + python3 ./hotwords.py + sleep 5 + done + ) &> /tmp/mayhem-party.stt.log & +} + +_snap() { + if ! which snap; then + sudo apt -y install snap + fi + snap "$@" +} + +if [ "$0" == "$BASH_SOURCE" ]; then + main "$@" +fi +