74 lines
1.6 KiB
Bash
Executable File
74 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 wav 5s wav \n"
|
|
}
|
|
|
|
function split {
|
|
cd $indir
|
|
for item in `ls ./*.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/$item" -t $to -c copy "$outdir/$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
|
|
;;
|
|
i)
|
|
indir="${OPTARG}"
|
|
# echo "indir: $indir"
|
|
;;
|
|
o)
|
|
outdir="${OPTARG}"
|
|
# echo "outdir: $outdir"
|
|
;;
|
|
:)
|
|
echo "$0: Must supply an argument to -$OPTARG."
|
|
exit 1
|
|
;;
|
|
?)
|
|
echo "Invalid option: -${OPTARG}."
|
|
echo
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ ! -d $outdir ];
|
|
then
|
|
mkdir $outdir
|
|
fi
|
|
|
|
split
|
|
|