如何解决更有效的声音文件二次采样方法?
提前道歉(如果已经问过这个问题),以及由于我是R的新手而对这个问题的措辞。
有什么方法可以使我的代码对声音文件进行二次采样更有效?我有9个站点的148小时录音,每个站点每5分钟对12个1分钟的分段采样。我目前的操作方式可行,但非常耗时。有没有一种方法可以使此代码更高效?
###hour 3###
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson")
hod3a<-readWave("20200820_020000.wav",from = 0,to = 1,units="minutes")
hod3b<-readWave("20200820_020000.wav",from = 5,to = 6,units="minutes")
hod3c<-readWave("20200820_020000.wav",from = 10,to = 11,units="minutes")
hod3d<-readWave("20200820_020000.wav",from = 15,to = 16,units="minutes")
hod3e<-readWave("20200820_020000.wav",from = 20,to = 21,units="minutes")
hod3f<-readWave("20200820_020000.wav",from = 25,to = 26,units="minutes")
hod3g<-readWave("20200820_020000.wav",from = 31,to = 32,units="minutes")
hod3h<-readWave("20200820_020000.wav",from = 35,to = 36,units="minutes")
hod3i<-readWave("20200820_020000.wav",from = 40,to = 41,units="minutes")
hod3j<-readWave("20200820_020000.wav",from = 45,to = 46,units="minutes")
hod3k<-readWave("20200820_020000.wav",from = 50,to = 51,units="minutes")
hod3l<-readWave("20200820_020000.wav",from = 55,to = 56,units="minutes")
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (3)")
writeWave(hod3a,filename="hod3a.wav",extensible=FALSE)
writeWave(hod3b,filename="hod3b.wav",extensible=FALSE)
writeWave(hod3c,filename="hod3c.wav",extensible=FALSE)
writeWave(hod3d,filename="hod3d.wav",extensible=FALSE)
writeWave(hod3e,filename="hod3e.wav",extensible=FALSE)
writeWave(hod3f,filename="hod3f.wav",extensible=FALSE)
writeWave(hod3g,filename="hod3g.wav",extensible=FALSE)
writeWave(hod3h,filename="hod3h.wav",extensible=FALSE)
writeWave(hod3i,filename="hod3i.wav",extensible=FALSE)
writeWave(hod3j,filename="hod3j.wav",extensible=FALSE)
writeWave(hod3k,filename="hod3k.wav",extensible=FALSE)
writeWave(hod3l,filename="hod3l.wav",extensible=FALSE)
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (3)")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (3)",resultfile = "ndsi_resultS2.csv",soundindex = "ndsi",no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (3)",resultfile = "adi_results.csv",soundindex = "acoustic_diversity",resultfile = "aei_results.csv",soundindex = "acoustic_evenness",resultfile = "aci_results.csv",soundindex = "acoustic_complexity",resultfile = "H_results.csv",soundindex = "H",no_cores = "-2")
###hour 4###
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson")
hod4a<-readWave("20200820_030000.wav",units="minutes")
hod4b<-readWave("20200820_030000.wav",units="minutes")
hod4c<-readWave("20200820_030000.wav",units="minutes")
hod4d<-readWave("20200820_030000.wav",units="minutes")
hod4e<-readWave("20200820_030000.wav",units="minutes")
hod4f<-readWave("20200820_030000.wav",units="minutes")
hod4g<-readWave("20200820_030000.wav",units="minutes")
hod4h<-readWave("20200820_030000.wav",units="minutes")
hod4i<-readWave("20200820_030000.wav",units="minutes")
hod4j<-readWave("20200820_030000.wav",units="minutes")
hod4k<-readWave("20200820_030000.wav",units="minutes")
hod4l<-readWave("20200820_030000.wav",units="minutes")
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (4)")
writeWave(hod4a,filename="hod4a.wav",extensible=FALSE)
writeWave(hod4b,filename="hod4b.wav",extensible=FALSE)
writeWave(hod4c,filename="hod4c.wav",extensible=FALSE)
writeWave(hod4d,filename="hod4d.wav",extensible=FALSE)
writeWave(hod4e,filename="hod4e.wav",extensible=FALSE)
writeWave(hod4f,filename="hod4f.wav",extensible=FALSE)
writeWave(hod4g,filename="hod4g.wav",extensible=FALSE)
writeWave(hod4h,filename="hod4h.wav",extensible=FALSE)
writeWave(hod4i,filename="hod4i.wav",extensible=FALSE)
writeWave(hod4j,filename="hod4j.wav",extensible=FALSE)
writeWave(hod4k,filename="hod4k.wav",filename="hod4l.wav",extensible=FALSE)
setwd("C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (4)")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (4)",no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - copy (4)",no_cores = "-2")
我目前必须每小时检查一次代码,并手动更改小时数,这需要大量时间。希望我已正确传达了此信息,对您的帮助非常感谢。
解决方法
我们可以创建两个seq
单位并使用Map
对其进行循环,使用readWave
读取数据,并指定from
,to
作为循环值并将其存储在list
readLst <- Map(function(i,j)
readWave("20200820_020000.wav",from = i,to = j,units = "minutes"),seq(0,55,by = 5),seq(1,56,by = 5))
类似地用于写入文件
lapply(seq_along(readLst),function(i)
writeWave(readLst[[i]],filename= paste0("hod3" letters[i],".wav"),extensible=FALSE))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。