#!/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