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

标签 r audio subsampling acoustics

如果已经问过这个问题,请事先道歉,我对这个问题的措辞是我刚接触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", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", resultfile = "aei_results.csv", soundindex = "acoustic_evenness", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", resultfile = "aci_results.csv", soundindex = "acoustic_complexity", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (3)", 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", from = 0, to = 1, units="minutes")
hod4b<-readWave("20200820_030000.wav", from = 5, to = 6, units="minutes")
hod4c<-readWave("20200820_030000.wav", from = 10, to = 11, units="minutes")
hod4d<-readWave("20200820_030000.wav", from = 15, to = 16, units="minutes")
hod4e<-readWave("20200820_030000.wav", from = 20, to = 21, units="minutes")
hod4f<-readWave("20200820_030000.wav", from = 25, to = 26, units="minutes")
hod4g<-readWave("20200820_030000.wav", from = 31, to = 32, units="minutes")
hod4h<-readWave("20200820_030000.wav", from = 35, to = 36, units="minutes")
hod4i<-readWave("20200820_030000.wav", from = 40, to = 41, units="minutes")
hod4j<-readWave("20200820_030000.wav", from = 45, to = 46, units="minutes")
hod4k<-readWave("20200820_030000.wav", from = 50, to = 51, units="minutes")
hod4l<-readWave("20200820_030000.wav", from = 55, to = 56, 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",extensible=FALSE)
writeWave(hod4k, 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)", resultfile = "ndsi_resultS2.csv", soundindex = "ndsi", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "adi_results.csv", soundindex = "acoustic_diversity", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "aei_results.csv", soundindex = "acoustic_evenness", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "aci_results.csv", soundindex = "acoustic_complexity", no_cores = "-2")
multiple_sounds(directory = "C:/Users/Cex/Desktop/R Studio/Audiomoth Files/Rural/Hodkinson/hour - Copy (4)", resultfile = "H_results.csv", soundindex = "H", 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))

关于r - 更有效的声音文件二次采样方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64688336/

相关文章:

R - 在列中查找模式并替换它(更有效的解决方案)

audio - HTML 音频播放/停止

image-processing - 与高斯滤波器 sigma 相关的盒式滤波器大小

r - 计算 R 中的绝对频率、相对频率和累积频率

r - 使用 ggplot2 绘制自举样本(多列)

javascript - 如何在asp.net mvc项目中添加.mp3或.wav文件?

java - Activity 背景音频

android - 如何使图钉标记在 Imageview 上可点击

r - 使用 R 将文件保存到 Sharepoint