簡體   English   中英

如何在 R 中加載聲音文件和數據以進行生物聲學分析 (MonitoR)?

[英]How to load sound files and data in R for bioacoustic analysis (MonitoR)?

我正在嘗試遵循 R 指南中的這種生物聲學,以幫助我對一些青蛙啁啾進行分析。 我也在看這個MonitoR 指南,因為他們試圖完成同樣的事情(使用模板來運行聲音文件)。

由於我有超過 30,000 個青蛙聲音文件,每個文件大小約為 5 MB,因此我創建了一個“虛擬”文件夾,其中包含 20 個隨機青蛙聲音文件和 5 個模板文件。 我認為這會讓事情變得更快,一旦我的代碼完全工作,我會調整文件夾名稱。

我在 R Studio 工作,聲音文件是 WAV 文件。

我已經使用library(monitoR, warbleR)加載了 MonitoR 和 WarbleR,我認為已經成功加載了它們。

然后我將我的工作目錄設置為包含 20 個青蛙文件和 5 個 chirp 模板文件的“虛擬”文件夾。 我知道當我調用list.files()時它們都出現了。

> list.files()
 [1] "frog1.WAV"          "frog10.WAV"         "frog11.WAV"        
 [4] "frog12.WAV"         "frog13.WAV"         "frog14.WAV"        
 [7] "frog15.WAV"         "frog16.WAV"         "frog17.WAV"        
[10] "frog18.WAV"         "frog19.WAV"         "frog2.WAV"         
[13] "frog20.WAV"         "frog3.WAV"          "frog4.WAV"         
[16] "frog5.WAV"          "frog6.WAV"          "frog7.WAV"         
[19] "frog8.WAV"          "frog9.WAV"          "template_test1.WAV"
[22] "template_test2.WAV" "template_test3.WAV" "template_test4.WAV"
[25] "template_test5.WAV"

這是第一個指南的第二步,無論我如何嘗試和調整它,我都會不斷收到錯誤消息。

第 1 步有這個:

x<-c("warbleR", "monitoR")

我理解為加載包的那一點,雖然我不知道 x 和 c 在那里做什么......

 if(.y %in% installed,packages()[."Package"]) install,packages(y) require(y. character.only = T) })

我不知道那個位是做什么的......但是包括它或排除它對下一步中的錯誤消息沒有影響。

第 2 步是創建模板以及我遇到的問題:

指南說: #加載聲音文件和數據

data(list = c("Phae.long1", "Phae.long2", "Phae.long3", "Phae.long4", "selec.table"))

我不確定代碼的selec.table位是做什么的,但同樣,包括或排除它對錯誤消息沒有影響。

我嘗試的代碼是:

data(list = c("template_test1", "template_test2", "template_test3", "template_test4", "template_test5", "selec.table"))

並引發以下錯誤:

警告消息:1:在 data(list = c("template_test1", "template_test2", "template_test3", : data set 'template_test1' not found 2: In data(list = c("template_test1", "template_test2", " template_test3", : 未找到數據集 'template_test2' 3: 在 data(list = c("template_test1", "template_test2", "template_test3", : 未找到數據集 'template_test3' 4: In data(list = c(" template_test1", "template_test2", "template_test3", : 未找到數據集 'template_test4' 5: In data(list = c("template_test1", "template_test2", "template_test3", : 未找到數據集 'template_test5'

我已經嘗試了兩個指南中建議的步驟(沒有成功)並在網上尋找我哪里出錯了,但恐怕我很難過。 在分析這個數據集之前,我在 R 中還有很的路要走,因此非常感謝任何閱讀本文的人提供的幫助。 謝謝。

我認為這就是想法,盡管在我的筆記本電腦上運行它需要很長時間:

library(monitoR)
library(tuneR)

file1 <- "Phae.long1.wav"
file2 <- "Phae.long2.wav"
file3 <- "Phae.long3.wav"
file4 <- "Phae.long4.wav"

viewSpec(file1)

wct1 <- makeCorTemplate(file1, 
                        t.lim=c(0, 1.0),
                        wl = 300,ovlp=90,
                        frq.lim=c(0.1, 11), dens=1, name="file1")
wct2 <- makeCorTemplate(file2, 
                        t.lim=c(0, 1.0),
                        wl = 300,ovlp=90,
                        frq.lim=c(0.1, 11), dens=1, name="file2")
wct3 <- makeCorTemplate(file3, 
                        t.lim=c(0, 1.0),
                        wl = 300,ovlp=90,
                        frq.lim=c(0.1, 11), dens=1, name="file3")
wct4 <- makeCorTemplate(file4, 
                        t.lim=c(0, 1.0),
                        wl = 300,ovlp=90,
                        frq.lim=c(0.1, 11), dens=1, name="file4")

ctemps <- combineCorTemplates(wct1, wct2, wct3, wct4)

audio <- readWave("mybigfile.wav")
audio <- changeSampRate(wchange = audio, sr.new = 22500)

cscores <- corMatch(survey = audio, templates = ctemps, write.wav = T)
cdetects <- findPeaks(cscores)
getDetections(cdetects)
plot(cdetects)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM