73 lines
1.6 KiB
Bash
Executable File
73 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
##########################################################
|
|
#
|
|
# Split wav sounds into 5s wav using ffmpeg
|
|
# Samuel ORTION
|
|
##########################################################
|
|
|
|
function usage {
|
|
printf "./$(basename $0) -h - - shows help \n"
|
|
printf "./$(basename $0) -i input_dir -o output_dir - - split long wav into 5s wav \n"
|
|
}
|
|
|
|
function split {
|
|
for item in `ls $indir/*.WAV`
|
|
do
|
|
audio_dur=`sox --i -D $item`
|
|
# Convert float to int
|
|
audio_dur=${audio_dur%.*}
|
|
echo "$item ($audio_dur)"
|
|
ss=0
|
|
to=5
|
|
for ss in `seq 0 5 $(( $audio_dur - 5 ))`
|
|
do
|
|
to=$(( $ss + 5 ))
|
|
echo "Spliting $item ($ss/$audio_dur)"
|
|
ffmpeg -ss $ss -i $indir/`basename $item` -t $to -c copy $outdir/`basename $item`-$ss.wav
|
|
done
|
|
done
|
|
}
|
|
|
|
optstring=":hi:o:"
|
|
|
|
# Defaults
|
|
indir="raw"
|
|
outdir="split"
|
|
|
|
while getopts ${optstring} arg
|
|
do
|
|
case "${arg}" in
|
|
h)
|
|
printf "$( basename $0 ) usage: \n"
|
|
usage
|
|
exit 0
|
|
;;
|
|
i)
|
|
indir="${OPTARG}"
|
|
echo "indir: $indir"
|
|
;;
|
|
o)
|
|
outdir="${OPTARG}"
|
|
echo "outdir: $outdir"
|
|
;;
|
|
:)
|
|
echo "$( basename $0 ): Must supply an argument to -$OPTARG."
|
|
exit 1
|
|
;;
|
|
?)
|
|
echo "Invalid option: -${arg}."
|
|
echo
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
if [ ! -d $outdir ];
|
|
then
|
|
mkdir $outdir
|
|
fi
|
|
|
|
split
|
|
|