norm_track_nearey {tidynorm} | R Documentation |
Nearey Track Normalization
Description
Nearey Track Normalization
Usage
norm_track_nearey(
.data,
...,
.token_id_col,
.by = NULL,
.by_formant = FALSE,
.time_col = NULL,
.order = 5,
.return_dct = FALSE,
.drop_orig = FALSE,
.names = "{.formant}_lm",
.silent = FALSE
)
Arguments
.data |
A data frame containing vowel formant data |
... |
|
.token_id_col |
|
.by |
|
.by_formant |
Whether or not the normalization method is formant intrinsic. |
.time_col |
|
.order |
The number of DCT parameters to use. |
.return_dct |
Whether or not the normalized DCT coefficients themselves should be returned. |
.drop_orig |
Should the originally targeted columns be dropped. |
.names |
A |
.silent |
Whether or not the informational message should be printed. |
Details
When formant extrinsic:
\hat{F}_{ij} = \log(F_{ij}) - L
L = \frac{1}{MN}\sum_{i=1}^M\sum_{j=1}^N \log(F_{ij})
When formant intrinsic:
\hat{F}_{ij} = \log(F_{ij}) - L_{i}
L_i = \frac{1}{N}\sum_{j=1}^{N}\log(F_{ij})
Where
-
\hat{F}
is the normalized formant -
i
is the formant number -
j
is the token number
Value
A data frame of Nearey normalized formant tracks.
References
Nearey, T. M. (1978). Phonetic Feature Systems for Vowels [Ph.D.]. University of Alberta.
Examples
library(tidynorm)
library(dplyr)
ggplot2_inst <- require(ggplot2)
track_subset <- speaker_tracks |>
filter(
.by = c(speaker, id),
if_all(
F1:F3,
.fns = \(x) mean(is.finite(x)) > 0.9
),
row_number() %% 2 == 1
)
track_norm <- track_subset |>
norm_track_nearey(
F1:F3,
.by = speaker,
.token_id_col = id,
.time_col = t,
.by_formant = TRUE,
.drop_orig = TRUE
)
if (ggplot2_inst) {
track_norm |>
ggplot(
aes(F2_lm, F1_lm, color = speaker)
) +
stat_density_2d(bins = 4) +
scale_x_reverse() +
scale_y_reverse() +
scale_color_brewer(palette = "Dark2") +
coord_fixed()
}
# returning the DCT coefficients
track_norm_dct <- track_subset |>
norm_track_nearey(
F1:F3,
.by = speaker,
.token_id_col = id,
.time_col = t,
.by_formant = FALSE,
.drop_orig = TRUE,
.return_dct = TRUE,
.names = "{.formant}_lm"
)
track_norm_means <- track_norm_dct |>
summarise(
.by = c(speaker, vowel, .param),
across(
ends_with("_lm"),
mean
)
) |>
reframe_with_idct(
ends_with("_lm"),
.by = speaker,
.token_id_col = vowel,
.param_col = .param
)
if (ggplot2_inst) {
track_norm_means |>
ggplot(
aes(F2_lm, F1_lm, color = speaker)
) +
geom_path(
aes(
group = interaction(speaker, vowel)
)
) +
scale_x_reverse() +
scale_y_reverse() +
scale_color_brewer(palette = "Dark2") +
coord_fixed()
}