tts/larynx.d/batch_play_wav.sh

37 lines
671 B
Bash

#! /bin/bash
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 "$@"