Follow the setup instructions given here, i.e. download R and RStudio, create a directory on your computer where you will store files on this course, make a note of the directory path, create an R project that accesses this directory, and install all indicated packages.
For this and subsequent tutorials, access the tidyverse
,magrittr
, emuR
, and wrassp
libraries:
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.4 ✓ dplyr 1.0.7
## ✓ tidyr 1.1.3 ✓ stringr 1.4.0
## ✓ readr 2.0.1 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(magrittr)
##
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
##
## set_names
## The following object is masked from 'package:tidyr':
##
## extract
library(emuR)
##
## Attaching package: 'emuR'
## The following object is masked from 'package:base':
##
## norm
library(wrassp)
= "./testsample"
sourceDir = "./emu_databases" targetDir
= "https://www.phonetik.uni-muenchen.de/~jmh/"
a = "lehre/Rdf/kiel_butter1.zip"
b = paste(a, b, sep="/")
down_path download.file(down_path,
file.path(sourceDir, "kiel_butter1.zip"))
# Create directory in sourceDir called 'butter'
dir.create(file.path(sourceDir, "butter"))
# unzip the file into that directory
unzip(file.path(sourceDir, "kiel_butter1.zip"),
exdir = file.path(sourceDir, "butter"))
= file.path(sourceDir, "butter")
path.butter list.files(path.butter)
## [1] "__MACOSX" "K22BUTT1.TextGrid" "K22BUTT1.wav"
## [4] "K22BUTT2.TextGrid" "K22BUTT2.wav" "K22BUTT3.TextGrid"
## [7] "K22BUTT3.wav" "K23BUTT1.TextGrid" "K23BUTT1.wav"
## [10] "K23BUTT2.TextGrid" "K23BUTT2.wav" "K23BUTT3.TextGrid"
## [13] "K23BUTT3.wav" "K24BUTT1.TextGrid" "K24BUTT1.wav"
## [16] "K24BUTT2.TextGrid" "K24BUTT2.wav" "K24BUTT3.TextGrid"
## [19] "K24BUTT3.wav" "K25BUTT1.TextGrid" "K25BUTT1.wav"
## [22] "K25BUTT2.TextGrid" "K25BUTT2.wav" "K25BUTT3.TextGrid"
## [25] "K25BUTT3.wav" "K26BUTT1.TextGrid" "K26BUTT1.wav"
## [28] "K26BUTT2.TextGrid" "K26BUTT2.wav" "K26BUTT3.TextGrid"
## [31] "K26BUTT3.wav" "K27BUTT1.TextGrid" "K27BUTT1.wav"
## [34] "K27BUTT2.TextGrid" "K27BUTT2.wav" "K27BUTT3.TextGrid"
## [37] "K27BUTT3.wav" "K28BUTT1.TextGrid" "K28BUTT1.wav"
## [40] "K28BUTT2.TextGrid" "K28BUTT2.wav" "K28BUTT3.TextGrid"
## [43] "K28BUTT3.wav" "K29BUTT1.TextGrid" "K29BUTT1.wav"
## [46] "K29BUTT2.TextGrid" "K29BUTT2.wav" "K29BUTT3.TextGrid"
## [49] "K29BUTT3.wav" "K30BUTT1.TextGrid" "K30BUTT1.wav"
## [52] "K30BUTT2.TextGrid" "K30BUTT2.wav" "K30BUTT3.TextGrid"
## [55] "K30BUTT3.wav" "K61BUTT1.TextGrid" "K61BUTT1.wav"
## [58] "K61BUTT2.TextGrid" "K61BUTT2.wav" "K61BUTT3.TextGrid"
## [61] "K61BUTT3.wav" "K62BUTT1.TextGrid" "K62BUTT1.wav"
## [64] "K62BUTT2.TextGrid" "K62BUTT2.wav" "K62BUTT3.TextGrid"
## [67] "K62BUTT3.wav" "K76BUTT1.TextGrid" "K76BUTT1.wav"
## [70] "K76BUTT2.TextGrid" "K76BUTT2.wav" "K76BUTT3.TextGrid"
## [73] "K76BUTT3.wav" "K77BUTT1.TextGrid" "K77BUTT1.wav"
## [76] "K77BUTT2.TextGrid" "K77BUTT2.wav" "K77BUTT3.TextGrid"
## [79] "K77BUTT3.wav" "K78BUTT1.TextGrid" "K78BUTT1.wav"
## [82] "K78BUTT2.TextGrid" "K78BUTT2.wav" "K78BUTT3.TextGrid"
## [85] "K78BUTT3.wav" "K79BUTT1.TextGrid" "K79BUTT1.wav"
## [88] "K79BUTT2.TextGrid" "K79BUTT2.wav" "K79BUTT3.TextGrid"
## [91] "K79BUTT3.wav" "K80BUTT1.TextGrid" "K80BUTT1.wav"
## [94] "K80BUTT2.TextGrid" "K80BUTT2.wav" "K80BUTT3.TextGrid"
## [97] "K80BUTT3.wav"
convert_TextGridCollection(path.butter,
dbName = "butter",
targetDir = targetDir)
## INFO: Loading TextGridCollection containing 48 file pairs...
##
|
| | 0%
|
|= | 2%
|
|=== | 4%
|
|==== | 6%
|
|====== | 8%
|
|======= | 10%
|
|========= | 12%
|
|========== | 15%
|
|============ | 17%
|
|============= | 19%
|
|=============== | 21%
|
|================ | 23%
|
|================== | 25%
|
|=================== | 27%
|
|==================== | 29%
|
|====================== | 31%
|
|======================= | 33%
|
|========================= | 35%
|
|========================== | 38%
|
|============================ | 40%
|
|============================= | 42%
|
|=============================== | 44%
|
|================================ | 46%
|
|================================== | 48%
|
|=================================== | 50%
|
|==================================== | 52%
|
|====================================== | 54%
|
|======================================= | 56%
|
|========================================= | 58%
|
|========================================== | 60%
|
|============================================ | 62%
|
|============================================= | 65%
|
|=============================================== | 67%
|
|================================================ | 69%
|
|================================================== | 71%
|
|=================================================== | 73%
|
|==================================================== | 75%
|
|====================================================== | 77%
|
|======================================================= | 79%
|
|========================================================= | 81%
|
|========================================================== | 83%
|
|============================================================ | 85%
|
|============================================================= | 88%
|
|=============================================================== | 90%
|
|================================================================ | 92%
|
|================================================================== | 94%
|
|=================================================================== | 96%
|
|===================================================================== | 98%
|
|======================================================================| 100%
## INFO: Rewriting 48 _annot.json files to file system...
##
|
| | 0%
|
|= | 2%
|
|=== | 4%
|
|==== | 6%
|
|====== | 8%
|
|======= | 10%
|
|========= | 12%
|
|========== | 15%
|
|============ | 17%
|
|============= | 19%
|
|=============== | 21%
|
|================ | 23%
|
|================== | 25%
|
|=================== | 27%
|
|==================== | 29%
|
|====================== | 31%
|
|======================= | 33%
|
|========================= | 35%
|
|========================== | 38%
|
|============================ | 40%
|
|============================= | 42%
|
|=============================== | 44%
|
|================================ | 46%
|
|================================== | 48%
|
|=================================== | 50%
|
|==================================== | 52%
|
|====================================== | 54%
|
|======================================= | 56%
|
|========================================= | 58%
|
|========================================== | 60%
|
|============================================ | 62%
|
|============================================= | 65%
|
|=============================================== | 67%
|
|================================================ | 69%
|
|================================================== | 71%
|
|=================================================== | 73%
|
|==================================================== | 75%
|
|====================================================== | 77%
|
|======================================================= | 79%
|
|========================================================= | 81%
|
|========================================================== | 83%
|
|============================================================ | 85%
|
|============================================================= | 88%
|
|=============================================================== | 90%
|
|================================================================ | 92%
|
|================================================================== | 94%
|
|=================================================================== | 96%
|
|===================================================================== | 98%
|
|======================================================================| 100%
Create the Emu database
=
butter_DB load_emuDB(file.path(targetDir, "butter_emuDB"))
## INFO: Loading EMU database from ./emu_databases/butter_emuDB... (48 bundles found)
##
|
| | 0%
|
|= | 2%
|
|=== | 4%
|
|==== | 6%
|
|====== | 8%
|
|======= | 10%
|
|========= | 12%
|
|========== | 15%
|
|============ | 17%
|
|============= | 19%
|
|=============== | 21%
|
|================ | 23%
|
|================== | 25%
|
|=================== | 27%
|
|==================== | 29%
|
|====================== | 31%
|
|======================= | 33%
|
|========================= | 35%
|
|========================== | 38%
|
|============================ | 40%
|
|============================= | 42%
|
|=============================== | 44%
|
|================================ | 46%
|
|================================== | 48%
|
|=================================== | 50%
|
|==================================== | 52%
|
|====================================== | 54%
|
|======================================= | 56%
|
|========================================= | 58%
|
|========================================== | 60%
|
|============================================ | 62%
|
|============================================= | 65%
|
|=============================================== | 67%
|
|================================================ | 69%
|
|================================================== | 71%
|
|=================================================== | 73%
|
|==================================================== | 75%
|
|====================================================== | 77%
|
|======================================================= | 79%
|
|========================================================= | 81%
|
|========================================================== | 83%
|
|============================================================ | 85%
|
|============================================================= | 88%
|
|=============================================================== | 90%
|
|================================================================ | 92%
|
|================================================================== | 94%
|
|=================================================================== | 96%
|
|===================================================================== | 98%
|
|======================================================================| 100%
Identify [s, S] segments
= query(butter_DB, "Phonetic = s|S") fric.s
Calculate ZCR on the fly
=
fric.zcr get_trackdata(butter_DB, fric.s,
onTheFlyFunctionName = "zcrana")
##
## INFO: applying zcrana to 999 segments/events
##
|
| | 0%
|
| | 1%
|
|= | 1%
|
|= | 2%
|
|== | 2%
|
|== | 3%
|
|== | 4%
|
|=== | 4%
|
|=== | 5%
|
|==== | 5%
|
|==== | 6%
|
|===== | 7%
|
|===== | 8%
|
|====== | 8%
|
|====== | 9%
|
|======= | 9%
|
|======= | 10%
|
|======= | 11%
|
|======== | 11%
|
|======== | 12%
|
|========= | 12%
|
|========= | 13%
|
|========= | 14%
|
|========== | 14%
|
|========== | 15%
|
|=========== | 15%
|
|=========== | 16%
|
|============ | 17%
|
|============ | 18%
|
|============= | 18%
|
|============= | 19%
|
|============== | 19%
|
|============== | 20%
|
|============== | 21%
|
|=============== | 21%
|
|=============== | 22%
|
|================ | 22%
|
|================ | 23%
|
|================ | 24%
|
|================= | 24%
|
|================= | 25%
|
|================== | 25%
|
|================== | 26%
|
|=================== | 27%
|
|=================== | 28%
|
|==================== | 28%
|
|==================== | 29%
|
|===================== | 29%
|
|===================== | 30%
|
|===================== | 31%
|
|====================== | 31%
|
|====================== | 32%
|
|======================= | 32%
|
|======================= | 33%
|
|======================= | 34%
|
|======================== | 34%
|
|======================== | 35%
|
|========================= | 35%
|
|========================= | 36%
|
|========================== | 36%
|
|========================== | 37%
|
|========================== | 38%
|
|=========================== | 38%
|
|=========================== | 39%
|
|============================ | 39%
|
|============================ | 40%
|
|============================ | 41%
|
|============================= | 41%
|
|============================= | 42%
|
|============================== | 42%
|
|============================== | 43%
|
|============================== | 44%
|
|=============================== | 44%
|
|=============================== | 45%
|
|================================ | 45%
|
|================================ | 46%
|
|================================= | 46%
|
|================================= | 47%
|
|================================= | 48%
|
|================================== | 48%
|
|================================== | 49%
|
|=================================== | 49%
|
|=================================== | 50%
|
|=================================== | 51%
|
|==================================== | 51%
|
|==================================== | 52%
|
|===================================== | 52%
|
|===================================== | 53%
|
|===================================== | 54%
|
|====================================== | 54%
|
|====================================== | 55%
|
|======================================= | 55%
|
|======================================= | 56%
|
|======================================== | 56%
|
|======================================== | 57%
|
|======================================== | 58%
|
|========================================= | 58%
|
|========================================= | 59%
|
|========================================== | 59%
|
|========================================== | 60%
|
|========================================== | 61%
|
|=========================================== | 61%
|
|=========================================== | 62%
|
|============================================ | 62%
|
|============================================ | 63%
|
|============================================ | 64%
|
|============================================= | 64%
|
|============================================= | 65%
|
|============================================== | 65%
|
|============================================== | 66%
|
|=============================================== | 66%
|
|=============================================== | 67%
|
|=============================================== | 68%
|
|================================================ | 68%
|
|================================================ | 69%
|
|================================================= | 69%
|
|================================================= | 70%
|
|================================================= | 71%
|
|================================================== | 71%
|
|================================================== | 72%
|
|=================================================== | 72%
|
|=================================================== | 73%
|
|==================================================== | 74%
|
|==================================================== | 75%
|
|===================================================== | 75%
|
|===================================================== | 76%
|
|====================================================== | 76%
|
|====================================================== | 77%
|
|====================================================== | 78%
|
|======================================================= | 78%
|
|======================================================= | 79%
|
|======================================================== | 79%
|
|======================================================== | 80%
|
|======================================================== | 81%
|
|========================================================= | 81%
|
|========================================================= | 82%
|
|========================================================== | 82%
|
|========================================================== | 83%
|
|=========================================================== | 84%
|
|=========================================================== | 85%
|
|============================================================ | 85%
|
|============================================================ | 86%
|
|============================================================= | 86%
|
|============================================================= | 87%
|
|============================================================= | 88%
|
|============================================================== | 88%
|
|============================================================== | 89%
|
|=============================================================== | 89%
|
|=============================================================== | 90%
|
|=============================================================== | 91%
|
|================================================================ | 91%
|
|================================================================ | 92%
|
|================================================================= | 92%
|
|================================================================= | 93%
|
|================================================================== | 94%
|
|================================================================== | 95%
|
|=================================================================== | 95%
|
|=================================================================== | 96%
|
|==================================================================== | 96%
|
|==================================================================== | 97%
|
|==================================================================== | 98%
|
|===================================================================== | 98%
|
|===================================================================== | 99%
|
|======================================================================| 99%
|
|======================================================================| 100%
First plot
%>%
fric.zcr +
ggplot aes(y = T1, x = times_norm, col=labels, group=sl_rowIdx) +
geom_line()
Normalise length
= normalize_length(fric.zcr, N = 11) fric.zcr.norm
Prepare data for an aggregate plot
=
fric.zcr.norm.m %>%
fric.zcr.norm group_by(times_norm, labels) %>%
summarise(T1 = mean(T1)) %>% ungroup
## `summarise()` has grouped output by 'times_norm'. You can override using the `.groups` argument.
Aggregate normalised time plot
%>%
fric.zcr.norm.m +
ggplot aes(y = T1, x = times_norm, col=labels, group=labels) +
geom_line() +
ylab("Zero-crossing-rate (Hz)")+
xlab("Proportional time")