You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

Tigre Phoneme Recognition (WavLM-large, frozen features)

CTC phoneme-recognition model for Tigre (ISO 639-3 tig), a Semitic language of Eritrea/Sudan. Input: raw audio. Output: a sequence of phonemes — not words or Tigre script.

⚠️ Read before using: phoneme targets remain heuristic, though grounded in real Tigre linguistics

Training/eval targets come from a rule-based G2P grounded in Idris, Saleh Mahmud (2015), A Comparative Study of the Tigre Dialects (PhD dissertation, Freie Universität Berlin, supervisor Prof. Rainer Voigt) — a dedicated linguistic study of Tigre itself, not a related language. This confirmed two real corrections to an earlier version derived from a closely related Ge'ez-script language: Tigre's 6th Ge'ez vowel order is mid-central /ə/ (not high-central /ɨ/, and merges with order 1), and ጸ/ፀ is an ejective fricative /sʼ/, not an affricate. Everywhere the dissertation doesn't give a clear Tigre-specific value, the G2P falls back to espeak-ng's real dictionary data for closely related Ge'ez-script languages already supported by espeak-ng (ejectives, pharyngeals, and glottal consonants correctly distinguished either way).

Still genuinely unresolved, confirmed by the dissertation itself: gemination is phonemic in Tigre but never marked in Ge'ez orthography, for any language using the script — no rules file can recover it from spelling alone. And this is a dissertation specifically about cross-dialect variation — most strikingly, /sʼ/ and /z/ aren't phonemes at all in several major dialects (Beni-ʿĀmər, ʾAlgaden, and others), merging with /tʼ/ and /d/ there. This G2P encodes one reasonable default, not a single pronunciation valid for every Tigre speaker.

If you need reliable Tigre transcription rather than phoneme-level research output, use BeitTigreAI/tigre-asr-Wav2Vec2Bert instead — a character/grapheme-level Wav2Vec2-BERT CTC model trained on Common Voice Tigre, reporting 8.8% WER. It sidesteps this model's core limitation entirely by never using phonemes as a target in the first place. This model exists to answer a different, narrower research question (how self-supervised phoneme recognition transfers to Tigre, per the base paper's methodology) — it isn't a substitute for a general-purpose Tigre ASR system.

tig_rules — a real espeak-ng dictionary, included in this repo

Alongside the model, this repo includes tig_rules: an espeak-ng-format phoneme rules file for Tigre, built from the same dissertation and tested for real — compiled with an actually-built espeak-ng (tested against multiple existing phoneme tables for closely related Ge'ez-script languages already in espeak-ng, including a from-source build with a newer, not-yet-released one), and run on real Tigre sentences. It compiles with 0 errors and produces sensible output (e.g. "tigre language" → t@g'@r@ kwan'@kwa d@g'@m@). One documented compromise: Tigre's ejective fricative /sʼ/ is kept as the affricate symbol ts used for this same sound in the closely related languages above, because a true ejective-fricative phoneme isn't defined in any current espeak-ng phoneme table for this language family — adding one needs real acoustic/formant modeling, not just a rules-file entry. Full provenance, corrections, and known limitations (same as above) are documented in the file's own header. Meant to be reusable in other projects, the way espeak-ng support for other, closely related Ge'ez-script languages started — not a finished, community-vetted resource.

Results

Model Setup Val PER Test PER Test Loss
WavLM-large Frozen encoder, linear CTC head 0.242 0.280 1.165
HuBERT-large Full fine-tune, all 315M params trainable 0.259 1.495

For context, PER (test) for the frozen-WavLM-large method on other low-resource languages (source paper): Italian 18.8%, Dutch 27.2%, Tigre 28.0%, Turkish 30.1%, Russian 32.3%, Swedish 33.1%. Tigre has no linguistic relation to English (the pretraining language), unlike every other language in that comparison.

Full fine-tuning ends up ahead by 2.1 points (25.9% vs. 28.0%) — but only after real instability along the way, worth reporting honestly rather than smoothing over: at the paper's own reported learning rate range, full fine-tuning repeatedly failed outright (val/per pinned at 1.0, i.e. the model collapsed to predicting nothing) before a learning rate in between worked. The frozen-feature setup needed no such search and converged cleanly on the first attempt. Full fine-tuning has higher ceiling capacity here, but is far more sensitive to hyperparameters with this little data — both results are single runs, no multiple seeds.

Training data

Common Voice Scripted Speech 23.0 — Tigre, ~12 validated hours, 150 speakers. Distributed via Mozilla Data Collective, not the Hugging Face Hub. 1,671 train / 1,311 validation / 1,623 test examples after length filtering.

Method & attribution

Base model: microsoft/wavlm-large, encoder frozen, linear CTC head trained from scratch. Phoneme vocabulary (65 tokens) from PHOIBLE. Tigre phonological data from Idris (2015), cited above. Training code adapted from ASR-project/Multilingual-PR (Apavou, Belkada, Tronchon, Zucker) — that repository has no LICENSE file; this is a good-faith derivative with attribution, not a formally licensed reuse.

Usage

import torch
import soundfile as sf
from transformers import WavLMForCTC, Wav2Vec2Processor

model = WavLMForCTC.from_pretrained("BeitTigreAI/tigre-wavlm-phoneme")
processor = Wav2Vec2Processor.from_pretrained("BeitTigreAI/tigre-wavlm-phoneme")

audio, sr = sf.read("https://huggingface.co/BeitTigreAI/tigre-hubert-phoneme/blob/main/sample.wav")  # mono, 16kHz
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")

with torch.no_grad():
    logits = model(inputs.input_values).logits

predicted_ids = torch.argmax(logits, dim=-1)
phonemes = processor.batch_decode(predicted_ids)
print(phonemes)

Limitations

  • Heuristic G2P (see above) — the biggest caveat, applies to both training targets and any phoneme-string output you decode. Now grounded in a real Tigre-specific dissertation rather than a related-language guess, but still not a validated pronunciation lexicon.
  • Small dataset, single train/val/test split, no cross-validation.
  • No prior Tigre phoneme-recognition baseline exists for comparison.
  • Not intended for production use (captions, transcription products, etc.) — a research/exploratory artifact for a language with very little prior speech-tech work.
Downloads last month
-
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support