diff --git a/larynx.d/batch_play_wav.sh b/larynx.d/batch_play_wav.sh index 0a90d1e..7f0d312 100644 --- a/larynx.d/batch_play_wav.sh +++ b/larynx.d/batch_play_wav.sh @@ -1,6 +1,36 @@ #! /bin/bash -for f in ./script.d/*.wav; do - read -p "enter to play <$f>" - afplay "$f" -done +proc_is_running() { + ps aux | grep -v grep | awk '{print $2}' | grep ^"$1"$ &> /dev/null +} + +block_proc() { + local pid="$1" + local limit="${TIMEOUT:-100}" + deadline=$(($(date +%s) + limit)) + while [ $(date +%s) -lt $deadline ] && proc_is_running "$pid"; do + sleep 1 + done + kill -9 "$pid" &> /dev/null +} + +main() { + cleanup() { + kill -9 $(jobs -p) + killall afplay mpv + } + trap cleanup EXIT + + for f in ./script.d/*.wav; do + if [ "$#" != "0" ]; then + eval "$1" + else + read -p "enter to play <$f>" + fi + mpv --no-video "$f" & + export pid=${!} + block_proc $pid + done +} + +main "$@" diff --git a/larynx.d/batch_txt_to_wav.sh b/larynx.d/batch_txt_to_wav.sh index a4f88bb..97d9270 100644 --- a/larynx.d/batch_txt_to_wav.sh +++ b/larynx.d/batch_txt_to_wav.sh @@ -1,10 +1,11 @@ #! /bin/bash -for f in ./script.d/*.txt; do +for f in ${@:-./script.d/*.txt}; do echo $f... curl \ -sS \ -X GET \ - "http://localhost:15002/api/tts?voice=${1:-"en-us/glados-glow_tts"}&text=$(urlencode $(cat $f))" \ + "http://localhost:15002/api/tts?voice=${VOICE:-"en-us/glados-glow_tts"}&text=$(urlencode $(cat $f))" \ > ${f%.*}.wav + echo $? done