convert_tier_to_silences | R Documentation |
Interval text that matches the silence pattern is replaced with "silent"
.
All others are replaced with "sounding"
.
convert_tier_to_silences
A Praat script
path of the textgrid file to read in
tier to copy
regular expression (regex) used to indentify
silences. Current default is ^$|sil|sp
which treats empty strings (^$
)
or (|
) a string containing sil
or a string containing sp
as
silences.
path of the textgrid file to create
library(tjm.praat) tg <- system.file( "demo-textgrids/merge-duplicate-intervals.TextGrid", package = "tjm.praat" ) tg_out <- tempfile("test", fileext = ".TextGrid") # We have the phonemes and silences in "bird house" tg_data <- readtextgrid::read_textgrid(tg) tg_data[tg_data$tier_num == 2, c("tier_name", "xmin", "xmax", "text")] #> # A tibble: 10 x 4 #> tier_name xmin xmax text #> <chr> <dbl> <dbl> <chr> #> 1 phones 0 0.25 "sil" #> 2 phones 0.25 0.35 "B" #> 3 phones 0.35 0.49 "ER1" #> 4 phones 0.49 0.52 "D" #> 5 phones 0.52 0.55 "sp" #> 6 phones 0.55 0.59 "HH" #> 7 phones 0.59 1.04 "AW1" #> 8 phones 1.04 1.16 "S" #> 9 phones 1.16 1.39 "sp" #> 10 phones 1.39 1.41 "" f_convert_tier_to_silences <- wrap_praat_script( script_code_to_run = convert_tier_to_silences, returning = "last-argument" ) tg_data2 <- tg |> f_convert_tier_to_silences("phones", "^$|sil|sp", tg_out) |> readtextgrid::read_textgrid() tg_data2[tg_data2$tier_num == 2, c("tier_name", "xmin", "xmax", "text")] #> # A tibble: 10 x 4 #> tier_name xmin xmax text #> <chr> <dbl> <dbl> <chr> #> 1 phones 0 0.25 silent #> 2 phones 0.25 0.35 sounding #> 3 phones 0.35 0.49 sounding #> 4 phones 0.49 0.52 sounding #> 5 phones 0.52 0.55 silent #> 6 phones 0.55 0.59 sounding #> 7 phones 0.59 1.04 sounding #> 8 phones 1.04 1.16 sounding #> 9 phones 1.16 1.39 silent #> 10 phones 1.39 1.41 silent
print(f_convert_tier_to_silences, condense = FALSE) function (textgrid_in = NULL, target_tier = "phones", silence_regex = "$|sil|sp", textgrid_out = NULL) # <wrapped_praat_script> # returning: "last-argument" form Convert annotations into "silence" and "sounding" sentence Textgrid_in sentence Target_tier phones sentence Silence_regex ^$|sil|sp sentence Textgrid_out endform Read from file: textgrid_in$ @findNumberForTier: target_tier$ Replace interval texts: ... findNumberForTier.result, 1, 0, ... silence_regex$, "silent", "Regular Expressions" Replace interval texts: ... findNumberForTier.result, 1, 0, ... "^((?!silent).)*$", "sounding", "Regular Expressions" Save as text file: textgrid_out$ # Find the number of the (last) tier with a given name procedure findNumberForTier: .target_tier$ .tiers = Get number of tiers .result = 0 for .tier_i to .tiers .tier_i_name$ = Get tier name: .tier_i if .tier_i_name$ == .target_tier$ .result = .tier_i endif endfor endproc
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.