NaijaVox-2.0 / README.md
ememzyvisuals's picture
Update README.md
22b94de verified
|
Raw
History Blame Contribute Delete
17.4 kB
metadata
language:
  - yo
  - ha
  - ig
  - en
  - pcm
license: apache-2.0
tags:
  - whisper
  - speech
  - asr
  - automatic-speech-recognition
  - yoruba
  - hausa
  - igbo
  - nigerian-english
  - nigerian-pidgin
  - nigeria
  - african-languages
  - audio
base_model: openai/whisper-large-v3
thumbnail: https://huggingface.co/Axiveri/NaijaVox-2.0/resolve/main/thumbnail.png
pipeline_tag: automatic-speech-recognition

Language WER vs V1
🇳🇬 Pidgin 14.7% ↓ 2.1pp
🇳🇬 Nigerian English 19.6% ↓ 1.5pp
🇳🇬 Yoruba 22.3% ↓ 6.5pp
🇳🇬 Hausa 25.8% ↓ 5.2pp
🇳🇬 Igbo 30.5% ↓ 11.4pp

Nigeria's Voice in AI. Now Sharper.

NaijaVox-2.0 is the second generation of Axiveri's open-weight automatic speech recognition model for Nigerian languages — Yoruba (with full diacritics), Hausa, Igbo, Nigerian Pidgin, and Nigerian-accented English. Built on OpenAI Whisper-large-v3 with PEFT LoRA fine-tuning, NaijaVox-2.0 delivers significant accuracy gains over V1 through a larger and more diverse training corpus (25,866 samples across 7 datasets), deeper LoRA adaptation (r=64 targeting attention and feed-forward layers), SpecAugment, and realistic noise augmentation for real-world robustness.

"Every Nigerian deserves to be heard and understood by AI — in their own language, with their own voice."

← NaijaVox-V1 — the original model


📈 V1 → V2 Improvement

Evaluated on identical test sets with identical methodology (50 samples/language, strict WER, no normalization):

Language V1 WER V2 WER Absolute Δ Relative Gain
🇳🇬 Yoruba 28.8% 22.3% −6.5pp +22.6%
🇳🇬 Hausa 31.0% 25.8% −5.2pp +16.8%
🇳🇬 Igbo 41.9% 30.5% −11.4pp +27.2%
🇳🇬 Nigerian English 21.1% 19.6% −1.5pp +7.1%
🇳🇬 Nigerian Pidgin 16.8% 14.7% −2.1pp +12.5%
Average 27.9% 22.58% −5.3pp +19.1%

Igbo sees the largest jump (+27.2% relative) — driven by WaxalNLP Igbo TTS data and Nigerian Common Voice Igbo samples, combined with SpecAugment frequency masking.


🗣️ Languages Supported

Language ISO Code Script Token
Yoruba yo Latin + full diacritics (ẹ, ọ, ṣ, à, á, etc.) <|yo|>
Hausa ha Latin + special chars (ƙ, ƴ, ɗ, etc.) <|ha|>
Igbo ig Latin + diacritics <|ig|>
Nigerian Pidgin pcm Latin <|pcm|>
Nigerian English en Latin <|en|>

Note: <\|ig\|> and <\|pcm\|> are custom language tokens added to the Whisper vocabulary. The extended tokenizer is included in this repository.


🚀 Quick Start

from transformers import pipeline

pipe = pipeline(
    "automatic-speech-recognition",
    model="Axiveri/NaijaVox-2.0",
    device=0  # use GPU, or remove for CPU
)

result = pipe("your_audio.wav")
print(result["text"])

Specifying Language

from transformers import (
    WhisperForConditionalGeneration, WhisperFeatureExtractor,
    WhisperProcessor, PreTrainedTokenizerFast,
)
from huggingface_hub import hf_hub_download
import torch

MODEL_ID = "Axiveri/NaijaVox-2.0"

model = WhisperForConditionalGeneration.from_pretrained(MODEL_ID)

# Standard load first; this model's custom <|pcm|> / <|ig|> tokens don't
# always come through cleanly this way, so fall back to manually rebuilding
# the tokenizer from tokenizer.json if they're missing.
try:
    processor = WhisperProcessor.from_pretrained(MODEL_ID)
    vocab = processor.tokenizer.get_vocab()
    assert "<|pcm|>" in vocab and "<|ig|>" in vocab
except Exception:
    fe = WhisperFeatureExtractor.from_pretrained(MODEL_ID)
    tok_file = hf_hub_download(repo_id=MODEL_ID, filename="tokenizer.json")
    tokenizer = PreTrainedTokenizerFast(tokenizer_file=tok_file)
    tokenizer.add_special_tokens({
        "additional_special_tokens": [
            t for t in [
                "<|startoftranscript|>", "<|endoftext|>", "<|transcribe|>",
                "<|notimestamps|>", "<|en|>", "<|yo|>", "<|ha|>", "<|ig|>", "<|pcm|>",
            ]
            if t not in tokenizer.get_vocab()
        ]
    })
    processor = WhisperProcessor(feature_extractor=fe, tokenizer=tokenizer)

vocab = processor.tokenizer.get_vocab()

LANG_TOKENS = {
    "yoruba":           "<|yo|>",
    "hausa":            "<|ha|>",
    "igbo":             "<|ig|>",
    "nigerian_english": "<|en|>",
    "pidgin":           "<|pcm|>",
}

def transcribe(audio_array, sampling_rate, language="yoruba"):
    lang_id = vocab[LANG_TOKENS[language]]
    start   = vocab["<|startoftranscript|>"]
    trans   = vocab["<|transcribe|>"]
    nots    = vocab["<|notimestamps|>"]
    decoder_input_ids = torch.tensor([[start, lang_id, trans, nots]])

    inputs = processor.feature_extractor(
        audio_array, sampling_rate=sampling_rate, return_tensors="pt"
    ).input_features

    with torch.no_grad():
        generated = model.generate(
            input_features=inputs,
            decoder_input_ids=decoder_input_ids,
            max_new_tokens=448
        )
    return processor.tokenizer.decode(generated[0], skip_special_tokens=True).strip()

📊 Benchmark Results

Evaluated on FLEURS test splits (Yoruba, Hausa, Igbo), Nigerian Pidgin ASR test set, and Nigerian Accented English dataset. 50 samples per language, greedy decoding, strict WER via jiwer (no text normalization). Identical methodology to V1 for direct comparison.

Language WER (%) Accuracy (%) Test Set Samples
🇳🇬 Nigerian Pidgin 14.7 85.3 asr-nigerian-pidgin/nigerian-pidgin-1.0 50
🇳🇬 Nigerian English 19.6 80.4 benjaminogbonna/nigerian_accented_english 50
🇳🇬 Yoruba 22.3 77.7 google/fleurs yo_ng 50
🇳🇬 Hausa 25.8 74.2 google/fleurs ha_ng 50
🇳🇬 Igbo 30.5 70.5 google/fleurs ig_ng 50
Average 22.58 77.62 250

Lower WER = better. Human-level transcription ≈ 5–10%.


🛡️ Robustness Improvements over V1

SpecAugment

Frequency masking (up to 27 mel bins) and time masking (up to 100 time steps) applied to mel spectrograms during training. This prevents over-reliance on specific frequency bands or time positions, improving generalization to real-world recordings.

Noise Augmentation

30% of training samples received realistic background noise injection at random SNR levels before mel extraction. This directly trains the model for common Nigerian recording conditions — market noise, phone compression artifacts, outdoor ambient sound, and crowd audio.

Code-Switching Robustness

Trained on Nigerian Pidgin and Nigerian English together with Yoruba, Hausa, and Igbo — all of which contain natural code-switching patterns present in everyday Nigerian speech, media, and social content.


🎙️ Sample Transcriptions

Real audio samples from FLEURS test, Nigerian English, and Pidgin datasets — data the model never saw during training. Transcriptions generated by the published merged model.

Yoruba

Reference Audio NaijaVox-2.0 Output
àwọn èyàn ti mọ̀ nípa àwọn kemika pepe bí wúrà fàdákà àti kọ́pa àtijọ́ torípé a lè rí wọn àwọn èèyàn ti mọ̀ nípa àwọn kẹmíkà pèèpèé bí wúrà fàdákà àti kọpa àtijọ́ torí pé a lè rí wọn
àwọn ara ìrano lo kọ́kọ́ bẹ̀rẹ̀ si ni sin ewure ní bíi ọdún 15,0000 sẹ́yìn ní oke sagrosi àwọn ará ìrà náà ló kọ́kọ́ bẹ̀rẹ̀ sí ní sin ewúrẹ́ ní bí ọdún 1500 sẹ́yìn ní òkè sagrosi

Hausa

Reference Audio NaijaVox-2.0 Output
an kwatanta faretin gine-ginen da ke yin sararin samaniyar hong kong da ginshiƙi mai walƙi an kwatanta feretin gine-ginen da ke yin sararin samaniya hong kong da ginshiki mai walƙiy
aristotle masanin falsafa ne yayi tunanin cewa komai ya kunshi cakuda daya ko fiye daga ab aristotle masanin falsafani ya yi tunanin cewa kome ya kunshi ca kuda daya ko fiye daga ab

Igbo

Reference Audio NaijaVox-2.0 Output
ka akara rossby na-adị obere karịa ka arụmarụ na-adịkwu obere nke kpakpando n'ikwanye ugwu akara rossby na-adị obere karịa ka arụmarụ na-adịkwa obere nke kpakpando n'ịkwà nye monto
ka agha dara mba britenị jiri ndị agha elu mmiri gbochie ndị jamani inweta enyemaka ka agha adara mba briten jiri ndị agha elu mmiri gbochie ndị jamanị inweta enyemaka

Nigerian English

Reference Audio NaijaVox-2.0 Output
Did it change plain? Yes. yes. Ok that means he was correct so this is if he's right that Did it change green? Yes. Ok that means she was correct. So this is if its red then its no
Ebube Nwagbo studied Mass Communication at Nnamdi Azikiwe University. Ebube Nwagbo studied Mass Communication at Nnamdi Azikiwe University.

Nigerian Pidgin

Reference Audio NaijaVox-2.0 Output
on top di injury her uncle no even carry her go hospital for treatment on top di injury and her uncle no even carry her go hospital for treatment
she tell don jazzy for december 2016 say as she be she tell don jazzy for december 2016 say i should be

🏗️ Model Architecture

Input Audio (16kHz)
        │
        ▼
Whisper-large-v3 Encoder  (frozen during fine-tuning)
        │  1500 × 1280 features
        ▼
Whisper Decoder + LoRA    (r=64, alpha=128, fine-tuned)
  target modules: q_proj, k_proj, v_proj, out_proj, fc1, fc2
  V1: attention only (q/k/v/out) — V2: adds feed-forward (fc1/fc2)
        │
        ▼
Extended Tokenizer         (vocab: 51,868 tokens)
  + <|ig|> Igbo token
  + <|pcm|> Nigerian Pidgin token
        │
        ▼
Transcript

V2 publishes a fully merged standalone model — no PEFT dependency required. Load directly with transformers.


📦 Training Details

Parameter V1 V2
Base model openai/whisper-large-v3 openai/whisper-large-v3
Fine-tuning method LoRA (PEFT) LoRA (PEFT)
LoRA rank 32 64
LoRA alpha 64 128
Target modules q/k/v/out_proj q/k/v/out_proj + fc1/fc2
LoRA dropout 0.05 0.05
Training precision fp16 fp16
Effective batch size 16 32
Learning rate 1e-3 5e-4
Warmup steps 50 200
Epochs (best) 2 3 of 5
SpecAugment
Noise augmentation ✅ (30% of samples)
Total training samples 13,866 25,866
GPU Tesla T4 × 2 (Kaggle) Tesla T4 × 2 (Kaggle)
Total training time ~20 hours ~40 hours

Training Datasets

Dataset Language(s) Samples New in V2
google/fleurs (yo_ng, ha_ng, ig_ng) Yoruba, Hausa, Igbo 8,437
benjaminogbonna/nigerian_accented_english_dataset Nigerian English 2,721
asr-nigerian-pidgin/nigerian-pidgin-1.0 Nigerian Pidgin 2,708
Tundragoon/IroyinSpeech Yoruba 2,500
google/WaxalNLP (ha/ig/yo/pcm) Hausa, Igbo, Yoruba, Pidgin 6,000
benjaminogbonna/nigerian_common_voice_dataset en/ha/ig/yo 2,000
vpetukhov/bible_tts_hausa Hausa 1,500
Total 5 languages 25,866

✅ Intended Use

  • 🏦 Fintech & banking — voice transactions and customer service in Nigerian languages
  • 📱 Mobile apps — voice input for Yoruba, Hausa, Igbo, and Pidgin speakers
  • 🎙️ Media & journalism — transcribing interviews and broadcasts
  • 🏥 Healthcare — patient intake and medical documentation
  • 📚 Education — language learning tools and accessibility
  • 🔬 Research — low-resource ASR study for West African languages
  • Accessibility — assistive technology for Nigerians with disabilities

🚫 Prohibited Use

  • Non-consensual surveillance — transcribing calls without consent of all parties
  • Fraud facilitation — forging spoken statements or supporting advance-fee fraud
  • Deepfake pipelines — combining with TTS to fake audio attributed to real people
  • Discriminatory systems — denying services based on language or accent identification
  • Political disinformation — generating or verifying false transcripts of political speech

👤 Creator

Emmanuel Ariyo (Ememzyvisuals) — Founder, Axiveri

NaijaVox is conceived, built, and trained by Emmanuel Ariyo — combining ML engineering with a Nigerian cultural design identity to bring open-weight speech recognition to Nigerian language speakers.


👥 About Axiveri

Axiveri is building Africa's AI infrastructure — open models, open data, and open tools for African languages and developers.


📄 Citation

@misc{naijavox2026,
  title        = {NaijaVox-2.0: Open-Weight Speech Recognition for Nigerian Languages},
  author       = {Ariyo, Emmanuel (Ememzyvisuals)},
  year         = {2026},
  publisher    = {HuggingFace},
  howpublished = {\url{https://huggingface.co/Axiveri/NaijaVox-2.0}}
}

📜 License

The model weights in this repository are released under the Apache License 2.0.

Training Data Notice

NaijaVox-2.0 was fine-tuned using multiple publicly available datasets obtained from their respective publishers and repositories. Each dataset remains subject to its own original license, attribution requirements, and terms of use.

This repository does not claim ownership of the underlying training datasets and does not modify or supersede the licenses governing those datasets. Users are responsible for reviewing and complying with the applicable terms of any datasets used during training.

If any dataset attribution or licensing information requires correction or clarification, please open an issue or contact the maintainers.

Responsible Use

NaijaVox-2.0 is intended for lawful and ethical automatic speech recognition applications. Users are expected to comply with all applicable laws, regulations, and the licenses governing both this repository and any underlying datasets.

Built in Nigeria 🇳🇬 — for Nigeria and the world.
Created by Emmanuel Ariyo (Ememzyvisuals)
Second model in the NaijaVox series by Axiveri