微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更有效的声音文件二次采样方法?

如何解决更有效的声音文件二次采样方法?

提前道歉(如果已经问过这个问题),以及由于我是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读取数据,并指定fromto作为循环值并将其存储在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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?