| --- |
| language: |
| - en |
| license: apache-2.0 |
| tags: |
| - token-classification |
| - prosody |
| - tobi |
| - speech |
| - linguistics |
| - distilbert |
| base_model: distilbert-base-uncased |
| datasets: |
| - LibriTTS |
| - peoples_speech |
| - SBCSAE |
| --- |
| |
| # text2tobi — `libri+peoples+sbc` |
|
|
| ToBI prosodic annotation from text alone. No audio required at inference time. |
|
|
| Given a stream of lowercased words, this model predicts: |
| - **Intonation unit boundaries** — where a prosodic phrase ends |
| - **Intonation direction** at each boundary — rising (H%), falling (L%), or level (!H%) |
| - **Break index strength** at each boundary — intermediate (3) or full (4) |
|
|
| This is the `libri+peoples+sbc` checkpoint: the best-performing configuration from the Text2ToBI experiments, trained on LibriTTS + People's Speech + SBCSAE with boundary loss weight 2.0, no POS injection, punctuation stripped. |
|
|
| --- |
|
|
| ## Usage |
|
|
| The recommended way to use this model is via the [text2tobi CLI](https://github.com/your-handle/text2tobi): |
|
|
| ```bash |
| pip install torch transformers huggingface_hub |
| git clone https://github.com/your-handle/text2tobi |
| cd text2tobi |
| python -m text2tobi download |
| python -m text2tobi "the students filed into the lecture hall" |
| ``` |
|
|
| Example output (default table format): |
|
|
| ``` |
| word boundary intonation break_index |
| the - - - |
| students - - - |
| filed - - - |
| into - - - |
| the - - - |
| lecture - - - |
| hall B L% 4 |
| ``` |
|
|
| Pass `--raw` for inline annotations or `--ssml` for SSML XML output. |
|
|
| ### Loading directly |
|
|
| If you want to load the model without the CLI, include `model.py` from this repo in your working directory: |
|
|
| ```python |
| from model import ProsodyBoundaryModel |
| from transformers import AutoTokenizer |
| |
| model = ProsodyBoundaryModel.from_pretrained("your-handle/text2tobi") |
| tokenizer = AutoTokenizer.from_pretrained("your-handle/text2tobi") |
| model.eval() |
| ``` |
|
|
| The model returns a dict of logits keyed `boundary_logits`, `intonation_logits`, and `break_idx_logits`. |
|
|
| --- |
|
|
| ## Performance |
|
|
| Evaluated on SBC001–005 (held-out test set, never seen during training). This is the only configuration directly comparable to the GPT-Neo text-only baseline from Roll et al. (2023). |
|
|
| | Model | Boundary F1 | Intonation F1 | Break Index F1 | |
| |---|---|---|---| |
| | **text2tobi** `libri+peoples+sbc` BLW=2.0 | **0.8352** | **0.5765** | 0.6018†| |
| | GPT-Neo 1.2B (Roll et al., 2023) | 0.770 | — | — | |
| | Random (distribution-matched) | 0.257 | — | — | |
|
|
| †Break index F1 is evaluated on BU Radio News Corpus gold `.brk` annotations (not the SBC test set, which has no break index labels). Treat as experimental. |
|
|
| text2tobi surpasses the GPT-Neo baseline by 6.5 points while being approximately 18× smaller (~66M vs ~1.2B parameters), and without access to punctuation or capitalization — input is lowercased words only. |
|
|
| --- |
|
|
| ## Training data |
|
|
| | Corpus | Annotation | Role | |
| |---|---|---| |
| | LibriTTS | Silver (PSST + Wav2ToBI consensus) | Boundary + intonation | |
| | People's Speech | Silver (PSST + Wav2ToBI consensus) | Boundary + intonation | |
| | SBCSAE | Gold (Du Bois transcripts) | Boundary + intonation | |
| | BU Radio News | Gold (`.brk` files) | Break index evaluation only | |
|
|
| Silver-standard boundary and intonation labels were generated by cross-validating PSST (`NathanRoll/psst-medium-en`) against Wav2ToBI (`ReginaZ/Wav2ToBI-PB-Fuzzy`). Positions where the two systems disagreed were masked from training. 87.3% of utterance-final words received Wav2ToBI corroboration within ±1 word. |
|
|
| SBCSAE data is included under explicit written permission from corpus director John W. Du Bois (June 2026) for unrestricted public distribution of derived model weights. |
|
|
| --- |
|
|
| ## Known limitations |
|
|
| - **Intonation labels apply to boundary words only.** Non-boundary intonation is not modeled. |
| - **Register coverage** is read speech (LibriTTS, People's Speech) and conversational speech (SBCSAE). Generalization to telephony, noisy environments, or non-native speakers has not been tested. |
| - **Chunking fallback**: for unpunctuated input, the inference pipeline splits at a 100-token word boundary when no sentence boundary is detected. This is not linguistically motivated and may affect predictions near split points. |
|
|
| --- |
|
|
| ## License |
|
|
| Apache 2.0. See [LICENSE](LICENSE). |
|
|