Added R and bash scripts
This commit is contained in:
parent
6b4531e4da
commit
833b2835be
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
media/split/*.wav
|
||||
media
|
||||
.vscode
|
||||
media/
|
65
expansion_x10.R
Normal file
65
expansion_x10.R
Normal file
@ -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)<length(mp3_list))
|
||||
{
|
||||
Sys.time()
|
||||
try(mp32wav())
|
||||
Sys.time()
|
||||
wav_list=list.files(indir,pattern=".wav$")
|
||||
mp3_list=list.files(indir,pattern=".mp3$")
|
||||
print(paste(length(wav_list),length(mp3_list),sep="/"))
|
||||
}
|
||||
|
||||
# Split into 5 seconds files and apply X10 time expansion
|
||||
for (j in 1:length(wav_list))
|
||||
{
|
||||
dur=0
|
||||
if (is.null(wav_list[j]) || is.na(file.size(wav_list[j]) || file.size(wav_list[j]) == 0)) {
|
||||
next
|
||||
}
|
||||
else if(file.size(wav_list[j]) > 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))
|
||||
}
|
||||
|
||||
|
33
split_5s.sh
Executable file
33
split_5s.sh
Executable file
@ -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
|
Loading…
Reference in New Issue
Block a user