From 833b2835bee66e519ba3739237120f86cce494f3 Mon Sep 17 00:00:00 2001 From: Samuel ORTION Date: Sat, 1 May 2021 08:02:59 +0200 Subject: [PATCH] Added R and bash scripts --- .gitignore | 4 +++ expansion_x10.R | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ split_5s.sh | 33 +++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 .gitignore create mode 100644 expansion_x10.R create mode 100755 split_5s.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e261b4f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +media/split/*.wav +media +.vscode +media/ \ No newline at end of file diff --git a/expansion_x10.R b/expansion_x10.R new file mode 100644 index 0000000..d39376a --- /dev/null +++ b/expansion_x10.R @@ -0,0 +1,65 @@ +library(warbleR) +library(tuneR) + +# Set the inputs directory +dir = "/home/ortion/records/" +indir = paste0(dir, 'raw') +outdir = paste0(dir, 'exp') + +# Set name prefix +car = "721035" +year = 2021 +pass = 0 +point = "Z2" +prefix = paste0("Car", car, "-", year, "-", "Pass", pass, "-", point, "-") + +# Create the output directory +dir.create(outdir) + +# Create a list of ".WAV" files +wav_list=list.files(indir,"*.WAV") + +# To handle quite frequent crashes in mp32wav function +wav_list=list.files(indir, pattern=".wav$") +mp3_list=list.files(indir, pattern=".mp3$") +while(length(wav_list) 50000) + { + wav_tmp = readWave(wav_list[j]) + dur = duration(wav_tmp) + if (dur > 0) + { + for(k in 1:ceiling(dur/5)) + { + left_channel_tmp = cutw(channel(wav_tmp,which="left"),from=(k-1)*5,to=min(dur,k*5),output="Wave") + left_channel_tmp = normalize(left_channel_tmp,level=0.3) + suf = formatC(x = k, width = 3, flag = "0") #create a suffix as 001, 000 + savewav(left_channel_tmp,filename=paste0(SplitDir,substr(wav_list[j],1,nchar(wav_list[j])-4),"_",suf,".wav")) + if (length(wav_tmp@right) > 0){ + right_channel_tmp = cutw(channel(wav_tmp,which="right"),from=(k-1)*5,to=min(dur,k*5),output="Wave",normalize= "16") + right_channel_tmp = normalize(right_channel_tmp,level=0.3) + savewav(right_channel_tmp,filename = paste0(SplitDir,substr(wav_list[j],1,nchar(wav_list[j])-4),"_",suf,".wav")) + } + } + } + } + print(paste(j,wav_list[j],dur)) +} + + diff --git a/split_5s.sh b/split_5s.sh new file mode 100755 index 0000000..6097080 --- /dev/null +++ b/split_5s.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +########################################################## +# +# Split wav sounds into 5s wav using ffmpeg +# +########################################################## + +indir="/home/ortion/Documents/projects/time-expanseR/media/raw" +outdir="/home/ortion/Documents/projects/time-expanseR/media/split" + +if [ ! -d $outdir ]; +then + mkdir $outdir +fi + +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 $ss $to + ffmpeg -ss $ss -i "$indir/$item" -t $to -c copy "$outdir/$item-$ss.wav" + done +done