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