library(warbleR) # Create a new folder inside a new tempdir and set it to your working dir wd <- file.path(tempdir(), "xeno-canto_example") dir.create(wd) setwd(wd) ## # Do the queries ## # Query xeno-canto for all Phaethornis recordings (e.g., by genus) Phae <- query_xc(qword = "Phaethornis", download = FALSE) # Check out the structure of resulting the data frame str(Phae) # Query xeno-canto for all Phaethornis longirostris recordings Phae.lon <- query_xc(qword = "Phaethornis longirostris", download = FALSE) # Check out the structure of resulting the data frame str(Phae.lon) ## # filter xeno-canto recordings by quality, signal type and locality ## # How many recordings are available for Phaethornis longirostris? nrow(Phae.lon) # How many signal types exist in the xeno-canto metadata? unique(Phae.lon$Vocalization_type) # How many recordings per signal type? table(Phae.lon$Vocalization_type) ## # Filter the metadata to select the signals we want to retain ## # First by quality Phae.lon <- Phae.lon[Phae.lon$Quality == "A", ] nrow(Phae.lon) # Then by signal type Phae.lon.song <- Phae.lon[grep("song", Phae.lon$Vocalization_type, ignore.case = TRUE), ] nrow(Phae.lon.song) # Finally by locality Phae.lon.LS <- Phae.lon.song[grep("La Selva Biological Station, Sarapiqui, Heredia", Phae.lon.song$Locality, ignore.case = FALSE), ] nrow(Phae.lon.LS) # Check resulting data frame, 3 recordings remain str(Phae.lon.LS) # check the location map_xc(Phae.lon.LS, img = FALSE) ## # Once we're sure the recordings fit, it's time to download the files, also save # the metadata as .csv file ## # Download sound files query_xc(X = Phae.lon.LS) # Save the metadata object as a .csv file write.csv(Phae.lon.LS, "Phae_lon.LS.csv", row.names = FALSE) ## # xeno-canto maintains recordings in mp3 format due to file size restrictions. # However, we require wav format for all downstream analyses ## # here we are downsampling the original sampling rate of 44.1 kHz # to speed up downstream analyses in the vignette series mp32wav(samp.rate = 22.05) # Use checkwavs to see if wav files can be read check_wavs()