Extracting accent features in spoken Brazilian Portuguese without sociolinguistic labels

Pedro H. L. Leite (PEE/COPPE, UFRJ) · Pedro Benevenuto Valadares (FEEC, UNICAMP) · Luiz W. P. Biscainho (DEL/Poli & PEE/COPPE, UFRJ)

Companion page for the paper submitted to SBrT 2026 (XLIV Brazilian Symposium on Telecommunications and Signal Processing)

Overview

Regional accent classification in Brazilian Portuguese suffers from unreliable sociolinguistic labels, and large self-supervised (SSL) speech models dilute sociophonetic information across their latent spaces. This work introduces a purely audio-driven pipeline: a phoneme-based forced aligner (ZIPA) localizes specific accent markers (/s/ coda, /r/ coda, and /d/–/t/ palatalization), and low-dimensional features extracted at exactly those instants classify how each speaker realizes them. The resulting localized features are interpretable, computationally lightweight, and competitive with (or better than) large pretrained embeddings on accent-related tasks.

Research Questions & Answers

Can accent markers be detected and classified from audio alone, without sociolinguistic labels?

Yes. ZIPA in forced-alignment mode localizes marker instants, and classifiers over features extracted at those instants match human annotations with high speaker accuracy under balanced stratified cross-validation: 1.00 ± 0.00 for /s/ coda (ZIPA alone), 0.85 ± 0.22 for /r/ coda (Sp.+ZIPA+Allo), and 0.88 ± 0.14 for /d/–/t/ palatalization (Sp.+ZIPA).

Which features capture each marker best?

ZIPA phone-probability logits are the strongest single ingredient: alone they are perfect on /s/ coda, and the winning sets for the other tasks all include them. Optimal analysis windows are feature- and task-specific (e.g., spectral moments use a narrow 40 ms post-onset window for /s/ and /r/ coda, while /d/–/t/ needs the full 160 ms consonant-vowel transition). The complete feature × task ablation is shown in the interactive table below.

Does localization matter, or are whole-utterance embeddings enough?

Localization matters a lot. Mean-pooled whole-utterance embeddings from SoTA SSL models top out at 0.85 / 0.57 / 0.73 speaker accuracy for the three tasks, versus 1.00 / 0.85 / 0.88 for the proposed aligned features, showing the “information dilution” that occurs when accent cues are averaged across the full utterance.

Are these compact features useful for actual accent detection?

Yes. A 7-dimensional vector of marker-class probabilities with logistic regression achieves 82% overall F1 on cross-dataset binary PE vs. SP classification, versus 75% for fine-tuned XLSR-53. On a 4-class task (Northeast / RJ / SP / MG) the proposed features reach macro F1 0.83 ± 0.02, on par with the best SSL embeddings (0.84) at roughly 1/100th the dimensionality, with interpretable coefficients that align with the ALiB linguistic atlas.

Limitation: these three markers do not fully disambiguate all Brazilian accents; broader coverage requires further markers (e.g., /l/ palatalization, vowel openness) and prosodic cues.

The Three Accent Markers

Speakers are classified according to their realization of three phonological variables, which map to distinct regional varieties of Brazilian Portuguese.

MarkerClassIPA realizationTypical regions
/s/ codaChiado[ʃ]Rio de Janeiro, Florianópolis, Belém
Sibilant[s]São Paulo, South
/r/ codaCarioca[x] / [h]Rio de Janeiro, Fluminense
Tap [ɾ]São Paulo (city), Porto Alegre
Caipira[ɻ]Interior São Paulo, Paraná, Goiás
/d/–/t/ + /i/Palatalized [dʒⁱ] / [tʃⁱ]Rio de Janeiro, São Paulo, Minas Gerais
Non-palatalized[dⁱ] / [tⁱ]Northeast

Listen: Marker Realizations

Each clip is a 160 ms window centered on a ZIPA-detected phoneme spike, the exact unit used for feature extraction in the paper. Use the 0.5× button to slow playback for easier perception.

/s/ Coda

What to listen for: chiado produces a “sh”-like sound with energy spread lower and broader in frequency; sibilant concentrates energy higher (>4 kHz), giving a sharper “s”. The spectrograms show this clearly: chiado has a diffuse frication band, sibilant a narrow bright ridge at the top.

Chiado

Spectrogram, Chiado example 1
chiado [ʃ] · #1
Spectrogram, Chiado example 2
chiado [ʃ] · #2
Spectrogram, Chiado example 3
chiado [ʃ] · #3

Sibilant

Spectrogram, Sibilant example 1
sibilant [s] · #1
Spectrogram, Sibilant example 2
sibilant [s] · #2
Spectrogram, Sibilant example 3
sibilant [s] · #3

/r/ Coda

What to listen for: carioca sounds like a breathy velar or glottal fricative (similar to German “ch”); tap is a quick flap similar to the British English “r” in “very”; caipira is the retroflexed “r” of interior São Paulo, colored and retroflex.

Carioca

Spectrogram, Carioca example 1
carioca [x]/[h] · #1
Spectrogram, Carioca example 2
carioca [x]/[h] · #2
Spectrogram, Carioca example 3
carioca [x]/[h] · #3

Tap

Spectrogram, Tap example 1
tap [ɾ] · #1
Spectrogram, Tap example 2
tap [ɾ] · #2
Spectrogram, Tap example 3
tap [ɾ] · #3

Caipira

Spectrogram, Caipira example 1
caipira [ɻ] · #1
Spectrogram, Caipira example 2
caipira [ɻ] · #2
Spectrogram, Caipira example 3
caipira [ɻ] · #3

/d/–/t/ Palatalization

What to listen for: palatalized speakers produce “djia” / “tchia” for words like dia / tia (affricate followed by vowel); non-palatalized speakers keep a plain “d” / “t” before /i/. The spectrogram shows an extra frication burst after the stop in palatalized examples.

Palatalized

Spectrogram, Palatalized example 1
palatalized [dʒ]/[tʃ] · #1
Spectrogram, Palatalized example 2
palatalized [dʒ]/[tʃ] · #2
Spectrogram, Palatalized example 3
palatalized [dʒ]/[tʃ] · #3

Non-palatalized

Spectrogram, Non-palatalized example 1
non-palatalized [d]/[t] · #1
Spectrogram, Non-palatalized example 2
non-palatalized [d]/[t] · #2
Spectrogram, Non-palatalized example 3
non-palatalized [d]/[t] · #3

Full Ablation Study

Best speaker accuracy per feature set and task (best classifier per cell selected among XGBoost, logistic regression, and linear SVM), under balanced stratified cross-validation with ~5 test speakers per fold and speaker isolation between folds. The mean ± std is computed across folds. This is the full study summarized in the paper (referenced there as companion page footnote 5).

Feature/s/ coda/r/ coda/d/–/t/ palat.
Lightweight features (ZIPA / Spec / MFCC / Allo)
ZIPA1.00 ±0.000.82 ±0.190.75 ±0.06
Spec+ZIPA0.85 ±0.250.82 ±0.230.88 ±0.14
ZIPA+Allo1.00 ±0.000.80 ±0.220.75 ±0.06
Spec+ZIPA+Allo0.89 ±0.170.85 ±0.220.83 ±0.17
MFCC+ZIPA0.81 ±0.150.73 ±0.230.77 ±0.18
MFCC+ZIPA+Allo0.84 ±0.160.75 ±0.170.81 ±0.12
Spec-60.74 ±0.270.63 ±0.260.77 ±0.14
MFCC-390.79 ±0.130.73 ±0.230.75 ±0.06
Spec+Allo0.74 ±0.270.73 ±0.150.67 ±0.20
MFCC+Allo0.79 ±0.130.75 ±0.200.77 ±0.14
Allo0.72 ±0.250.65 ±0.190.58 ±0.14
XLSR-PT
XLSR-PT0.92 ±0.110.77 ±0.210.77 ±0.18
+ZIPA0.95 ±0.090.75 ±0.240.88 ±0.14
+Spec0.86 ±0.110.77 ±0.210.77 ±0.18
+MFCC0.88 ±0.100.73 ±0.230.81 ±0.12
+Allo0.92 ±0.110.75 ±0.150.81 ±0.12
+Spec+ZIPA0.93 ±0.100.77 ±0.210.83 ±0.20
+MFCC+ZIPA0.81 ±0.150.77 ±0.210.83 ±0.17
+Spec+ZIPA+Allo0.93 ±0.100.77 ±0.210.83 ±0.20
+MFCC+ZIPA+Allo0.84 ±0.160.77 ±0.260.88 ±0.14
XLS-R
XLSR0.79 ±0.160.78 ±0.200.83 ±0.17
+ZIPA0.84 ±0.160.77 ±0.210.83 ±0.17
+Spec0.79 ±0.160.73 ±0.190.83 ±0.17
+MFCC0.79 ±0.160.73 ±0.190.81 ±0.12
+Allo0.82 ±0.170.77 ±0.200.83 ±0.17
+Spec+ZIPA0.82 ±0.170.78 ±0.210.81 ±0.12
+MFCC+ZIPA0.79 ±0.160.73 ±0.240.83 ±0.17
+Spec+ZIPA+Allo0.82 ±0.170.77 ±0.210.83 ±0.17
+MFCC+ZIPA+Allo0.79 ±0.160.73 ±0.240.83 ±0.17
Wav2Vec 2.0
Wav2Vec 2.00.86 ±0.170.72 ±0.150.77 ±0.14
+ZIPA0.90 ±0.170.80 ±0.180.92 ±0.14
+Spec0.77 ±0.140.67 ±0.200.71 ±0.18
+MFCC0.86 ±0.170.67 ±0.220.77 ±0.14
+Allo0.84 ±0.160.68 ±0.220.71 ±0.18
+Spec+ZIPA0.90 ±0.170.83 ±0.170.88 ±0.14
+MFCC+ZIPA0.84 ±0.160.73 ±0.230.83 ±0.17
+Spec+ZIPA+Allo0.88 ±0.180.83 ±0.170.83 ±0.17
+MFCC+ZIPA+Allo0.84 ±0.160.73 ±0.250.83 ±0.17
HuBERT
HuBERT0.81 ±0.150.83 ±0.200.77 ±0.18
+ZIPA0.90 ±0.170.85 ±0.230.77 ±0.18
+Spec0.80 ±0.200.85 ±0.190.81 ±0.12
+MFCC0.78 ±0.180.78 ±0.180.81 ±0.12
+Allo0.81 ±0.150.83 ±0.200.77 ±0.18
+Spec+ZIPA0.90 ±0.170.90 ±0.130.88 ±0.14
+MFCC+ZIPA0.81 ±0.150.83 ±0.200.88 ±0.14
+Spec+ZIPA+Allo0.90 ±0.170.87 ±0.160.79 ±0.22
+MFCC+ZIPA+Allo0.81 ±0.150.83 ±0.200.83 ±0.17
ECAPA-TDNN
ECAPA-TDNN0.89 ±0.170.82 ±0.190.67 ±0.10
+ZIPA0.92 ±0.170.85 ±0.190.75 ±0.06
+Spec0.80 ±0.230.80 ±0.220.81 ±0.12
+MFCC0.84 ±0.180.82 ±0.220.81 ±0.12
+Allo0.89 ±0.170.83 ±0.180.71 ±0.12
+Spec+ZIPA0.85 ±0.250.83 ±0.210.85 ±0.09
+MFCC+ZIPA0.84 ±0.180.77 ±0.190.75 ±0.06
+Spec+ZIPA+Allo0.85 ±0.250.85 ±0.170.85 ±0.09
+MFCC+ZIPA+Allo0.84 ±0.180.78 ±0.180.81 ±0.12
Resemblyzer
Resemblyzer0.71 ±0.200.60 ±0.080.50 ±0.12
+ZIPA0.79 ±0.240.73 ±0.260.71 ±0.18
+Spec0.76 ±0.250.60 ±0.130.73 ±0.18
+MFCC0.78 ±0.220.55 ±0.180.71 ±0.04
+Allo0.78 ±0.220.62 ±0.200.56 ±0.16
+Spec+ZIPA0.79 ±0.240.77 ±0.210.77 ±0.18
+MFCC+ZIPA0.78 ±0.220.70 ±0.270.71 ±0.04
+Spec+ZIPA+Allo0.79 ±0.240.78 ±0.220.73 ±0.18
+MFCC+ZIPA+Allo0.78 ±0.220.70 ±0.270.71 ±0.04
Low accuracy
High accuracy

Best speaker accuracy per feature set (best classifier selected per cell). Values show mean ± std across balanced stratified cross-validation folds (∼5 test speakers/fold). Heatmap colors match the paper.

Reproducing This Work

The feature extraction, marker alignment and classification code is packaged as pt-br-accent-toolbox, together with download scripts for every corpus used here and the speaker annotations that define the labelled cohort.

Corpora

Every corpus used in this paper has a bundled download script — CETUC/Alcaim, CORAA (including its C-ORAL Brasil and TED subsets), Common Voice, CoLingPB, CML-TTS, Certas Palavras, GneutralSpeech, BRSpeech-DF, TAGARELA and Sotaque Brasileiro — with the sole exception of the Ynoguti corpus, which is distributed only by its authors. Each script fetches the corpus and organizes it into the per-speaker layout the pipeline expects:

git clone https://github.com/pedrohlopes/pt-br-accent-toolbox
cd pt-br-accent-toolbox && pip install -e ".[datasets]"

python tools/download_datasets.py list          # every corpus, with its source and caveats
python tools/download_alcaim.py --sentences balanced50
python tools/download_coraa.py --split train --subsets nurc,coral,ted
python tools/download_common_voice.py

Alcaim / CETUC is streamed and filtered on the fly rather than downloaded whole, and --sentences balanced50 reproduces the phonetically balanced 50-sentence subset used throughout the paper. Corpora that are only available on request from their authors are listed with contact pointers instead of a script.

Speaker annotations

The 115 hand-labelled speakers — nine corpora, three markers (/s/ coda, /r/ coda, /d/–/t/ palatalization) — ship with the package as CSVs under pt_br_accent_toolbox/data/annotations/: the raw per-annotator rows, the per-speaker majority label with agreement counts, and a summary table. Speaker IDs are the directory names the download scripts produce, so the labels join directly against a local copy of each corpus.

Read that folder's README before using the labels. In particular: 22 of the Alcaim speakers carry only an /s/-coda label and were selected because of how they realize it, so that marker is not a random sample of the corpus; and only three speakers were labelled by two annotators, which is too few to report as an inter-annotator agreement figure.

Citation

@misc{leite2026accentfeatures,
  title         = {Extracting accent features in spoken Brazilian Portuguese
                   without sociolinguistic labels},
  author        = {Leite, Pedro H. L. and Valadares, Pedro Benevenuto and
                   Biscainho, Luiz W. P.},
  year          = {2026},
  eprint        = {2605.30457},
  archivePrefix = {arXiv},
  primaryClass  = {eess.AS}
}