Skip to contents

Launch the app

Run the bundled Shiny UI locally — same interface as the hosted version, no upload limits, recordings stay on your machine.

run_app()
Launch the Shinytone app locally

Normalisation

By-speaker semitone or z-score f0 normalisation, plus landmark-based time normalisation for multisyllabic words and auto-detection of time columns that are already on a [0, 1] scale.

normalise_f0()
Normalise f0 by speaker
normalise_time_landmarks()
Landmark-normalised time columns
normalise_time_token()
Whole-token 0-1 time normalisation
resolve_time_norm()
Per-token normalised time, honouring an already-normalised column
time_already_normalised()
Does a time column look already normalised to [0, 1]?

TextGrid landmarks

Read interval tiers from Praat TextGrids and attach per-frame segment labels and boundaries (e.g. syllables) to long-format f0 data, and keep only the frames inside chosen intervals (vowel, rhyme, or named labels).

tg_interval_tiers()
Interval-tier names across a set of TextGrids
assign_tier_landmarks()
Assign each time to its interval in a TextGrid interval tier
attach_landmarks()
Attach TextGrid landmark columns to a long-format f0 data frame
filter_interval_rows()
Keep only f0 frames that fall inside chosen TextGrid intervals
ipa_vowel_label()
Does an interval label denote a vowel (IPA)?

Voiced-region trimming and resampling

Trim each token to its voiced span, flag contours with gaps inside the measured region, measure how long each contour lasts (per token or per landmark segment), and resample every contour to N equidistant points for export or cross-token comparison.

trim_to_voiced()
Trim each token to its voiced region
flag_f0_gaps()
Flag tokens whose f0 has gaps inside the measured region
contour_duration()
Duration of each f0 contour
resample_f0_equal()
Resample each token's f0 contour to N equidistant points

Outlier and artefact inspection

Token-level outlier detection by speaker z-score and by speaker x tone level, plus sample-level pitch-tracking artefacts and a low-intensity check (Sundberg 1973, Steffman & Cole 2022).

inspect_f0()
Inspect f0 data for token-level outliers and sample-level jumps
flag_outliers()
Flag per-token f0 outliers using by-speaker z-scores
flag_level_outliers()
Flag tokens whose overall f0 level is unusual for their speaker and tone
flag_low_intensity()
Flag low-intensity f0 samples within tokens
flag_pitch_jumps()
Flag sample-to-sample f0 jumps within tokens

Contour clustering

Unsupervised grouping of tokens by f0-contour shape to discover candidate tone categories when the number of tones is unknown (Kaland 2023), with feature extraction and a choice of how many groups.

cluster_f0()
Cluster f0 contours into candidate tone categories
cluster_features()
Build per-token feature vectors for f0-contour clustering
choose_k_f0()
Diagnostics for choosing the number of clusters (candidate tones)
cluster_mdl()
Recompute MDL information cost for stored clusterings at a given bending
cluster_agreement()
Agreement between clusters and known tone labels

Sonification

Render an f0 contour as an audible waveform (pure tone, complex tone, or a source-filter synthesised vowel) so prototypical tones can be heard, not only seen.

sonify_f0()
Sonify an f0 contour

Curate tone labels

Re-label tone-category variants or exclude tokens, without overwriting the original labels.

apply_relabels()
Apply tone re-labels and exclusions to a long-format f0 table

Contour modelling

Token-level polynomial fits, mixed-effects growth-curve analysis, and GAMMs over tone contours, with AR1 correction and model-checking diagnostics.

fit_polynomial()
Fit Legendre polynomials to f0 contours, token by token
fit_gca()
Fit a Growth Curve Analysis (GCA) model to f0 contours
predict_gca()
Predict population-level f0 contours from a GCA fit
fit_gamm()
Fit a Generalised Additive Mixed Model (GAMM) to f0 contours
predict_gamm()
Predict population-level f0 smooth curves from a GAMM fit
diagnose_gamm()
Diagnose a fitted GAMM

Chao tone numerals

Convert mean or predicted contours into Chao tone numerals (reference-line, interval-based, robust FOR methods).

compute_mean_contour()
Compute the per-tone mean f0 contour from long-format data
contour_to_chao()
Convert per-tone contours to Chao tone numerals
classify_contour()
Classify a Chao tone numeral string as a shape

Bundled data

A small citation-tone corpus that ships with the package for examples, vignettes, and the Shiny app’s “Try with our sample data” button.

sample_f0
Sample f0 contour dataset

Package overview

shinytone shinytone-package
shinytone: A Citation Tone Research Hub