tts/larynx.d/batch_play_wav.sh

40 lines
731 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
export f=$f
if [ "$#" != "0" ]; then
echo "> $1"
bash -c "true; $1"
else
read -p "enter to play <$f>"
fi
mpv --no-video "$f" &
export pid=${!}
block_proc $pid
break
done
}
main "$@"