r-用fir选择音频文件的频率范围{seewave}



一个非常非常新的音频R相关内容的用户!

我必须处理一堆文件,提取一定的频率范围,比方说从500到2000赫兹。给定一个特定的工作目录:

myFiles <- list.files() 
for(i in seq_along(myFiles)){
track <- readWave(myFiles[[i]])
track <- fir(track, from=500, to=2000,output="Wave")
track <- normalize(track, unit = as.character(track@bit))
assign(paste0("pista",i),track)
}

我认为seewave中的fir是正确的函数,但我还有两个疑问:

  1. 如何在这里包含一行代码,以在我的工作目录中创建wav文件,而不是R对象?如果有必要,我不介意换成lapply
  2. 我的代码有问题,因为我无法在Raven中打开音频文件(但我可以在Quicktime中打开!(。有什么建议吗

谢谢!

下面是一个使用lapply的示例。

library(seewave)
# Make some files to test with
writeWave(noise(kind='pink'), filename = 'example1.wav')
writeWave(noise(kind='white'), filename = 'example2.wav')
myFiles <- list.files(pattern = 'example') 
myfilterandsave <- function(files, index) {
track <- readWave(files[index])
filtered <- fir(track, from=500, to=2000, output='Wave')
normalized <- normalize(filtered, unit = as.character(filtered@bit))
name <- paste0('filtered',index, files[index])
writeWave(object = normalized, filename = name)
cat(name, 'rn')
}
lapply(seq_along(myFiles), function(i) myfilterandsave(myFiles, i))

最新更新