bobboyms/phoneme-ctc-english-60h-balanced
Phoneme CTC — English 60h (Balanced & Normalized) A cleaned, normalized and phoneme-balanced version of bobboyms/phoneme-ctc-english-60h-noisy, for training phoneme recognition models (CTC) — e.g. as the native acoustic model behind pronunciation-feedback systems. What's different from the source dataset Label noise removed Roman numerals dropped — eSpeak reads ii/iv/… as "Roman two/four", producing labels that don't match the audio. Non-English phonemes dropped… See the full description on the dataset page: https://huggingface.co/datasets/bobboyms/phoneme-ctc-english-60h-balanced.
Phoneme CTC — English 60h (Balanced & Normalized)
A cleaned, normalized and phoneme-balanced version of `bobboyms/phoneme-ctc-english-60h-noisy`, for training phoneme recognition models (CTC) — e.g. as the native acoustic model behind pronunciation-feedback systems.
What's different from the source dataset
- Label noise removed
- Roman numerals dropped — eSpeak reads
ii/iv/… as "Roman two/four", producing labels that don't match the audio. - Non-English phonemes dropped — Whisper-hallucinated foreign words made eSpeak emit
x/r/ɑ̃. - eSpeak word-separator artifact
|normalized to the word boundary/. - Stress folded to 2 levels — secondary stress merged into primary (
ˌ → ˈ). Each vowel token is now stressed (`ˈ`) or unstressed. Keeps stress in the token (single CTC head) while removing rare, barely-trainable secondary-stress classes. The artifactˈɚ→ˈɜː. - Rare phonemes balanced with TTS — 1,068 synthetic clips (ElevenLabs, native American voices, ≤7 s, 16 kHz) added to train to lift the rarest phonemes:
- Accent-robustness augmentation — 3,985 synthetic clips (ElevenLabs, Italian + Brazilian-Portuguese voices, ≤7 s, 16 kHz) added to train. These read correct English (canonical labels) with an accent, so the model becomes robust to accent timbre (fewer false alarms on accented speech). They are a deliberate minority — about 5% by phoneme (~11% by utterance); native speech remains dominant. This is not L2 error data: it does not contain mispronunciations and is not a substitute for annotated learner corpora.
Dataset structure
Example phoneme: ʃ ˈʊɹ / m ˈeɪ b iː / ɪ f / h ˈɑː m ə z / h ˈæ d
The inventory is ~57 base phonemes (en-US, eSpeak), each vowel additionally carrying a binary stress mark.
How it was built
audio → Whisper (mlx whisper-tiny.en, 4-bit) → text → eSpeak-NG (en-us, with_stress) → phonemes, followed by the normalization above. Synthetic clips are word lists labeled with the same eSpeak G2P (2-level stress); rare-phoneme clips use native American voices, accent clips use Italian/Brazilian voices.
Intended use & limitations
- Intended use: training a phoneme/CTC acoustic model on native English (with light accent robustness). A good building block for GOP-style pronunciation scoring.
- Labels are canonical, derived from text (citation form, word-by-word) — not from the actual acoustic realization. Stress is lexical, not prosody.
- No L2 / mispronunciation data: the accent clips are accented correct speech. For mispronunciation detection on learners, fine-tune on annotated L2 corpora (e.g. speechocean762, L2-ARCTIC).
- Synthetic minority: TTS clips are ~13% of train by count, ~9% by phoneme; native real speech dominates.
- Label quality is ultimately bounded by
whisper-tiny.en(the smallest model).
Source & license
Derived from bobboyms/phoneme-ctc-english-60h-noisy. Refer to the source dataset for licensing of the underlying audio and set the appropriate license.
