--- license: cc-by-nc-4.0 language: - tw - ee - ha - en tags: - ghana-nlp - ghana-speech - text-generation base_model: Qwen/Qwen3-4B pipeline_tag: text-generation --- # Tɛkyerɛma-1 reply adapter (arm ②) **Author:** Prince Nasamu Alhassan ## Overview The reply adapter for arm ②, trained on target-language text directly so no translator runs at inference. **A warning from how this was built.** The first attempt produced reply adapters for the two arms that were identical to 17 decimal places, because the training script only applied its `TEXT_COL` switch inside the tool branch. Two runs, two repos, one model. If you are comparing these adapters, check they differ before believing any difference you measure. ## Use it A LoRA adapter: load the base, then apply it. Take the tokenizer from the **base**, not from this repo — the adapter's saved tokenizer carries a chat template that silently ignores `enable_thinking`, and without that flag Qwen3 opens a reasoning block and never reaches the JSON. ```python import torch from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer BASE = "Qwen/Qwen3-4B" tok = AutoTokenizer.from_pretrained(BASE) # the BASE, deliberately model = PeftModel.from_pretrained( AutoModelForCausalLM.from_pretrained( BASE, dtype=torch.bfloat16, device_map="auto"), "PrinceAlhassanNasamu/tekyerema-1-native-reply").eval() prompt = tok.apply_chat_template( [{"role": "user", "content": TOOL_PROMPT}], # schema + user command add_generation_prompt=True, tokenize=False, enable_thinking=False) # not optional enc = tok(prompt, return_tensors="pt").to(model.device) out = model.generate(**enc, max_new_tokens=96, do_sample=False) print(tok.decode(out[0][enc["input_ids"].shape[1]:], skip_special_tokens=True)) ``` `TOOL_PROMPT` must carry the full 21-tool schema exactly as training did — see `H200/sessions/s3_train_tekyerema1.py`. Asked without it, the model has no tool names to choose from and scores zero. ## Training data Trained on the [Ghana Speech](https://huggingface.co/datasets/ghananlpcommunity/ghana-speech) dataset and related Ghanaian corpora, licensed CC BY-NC 4.0. ## Intended use & license **Non-commercial use only** (CC BY-NC 4.0). This is inherited from the training data *and* required by the terms under which the compute was granted: models trained in that window are non-commercial by condition of access, not by inference. ## Limitations, stated plainly - **Dagbani had no recogniser of its own for this whole project**, and the reason given for that was wrong. Every card here said "one fine-tuning session on 74 validation rows would not change that". Those 74 rows are the **eng-dag machine-translation** validation split. The Dagbani *speech* data in this same account is `waxal_dag`: **13,228 training rows, 1,750 validation rows, ~71 hours, 1,041 speakers with the largest at 1%** — more data and better speaker diversity than Ewe, which produced a working 42.19 WER recogniser. A number was carried across from a translation table into a speech claim, and then repeated on every model card on the account. It is training now, on 2026-08-31. Until it is scored, the honest statement is that Dagbani's best available recogniser scores 86.6 WER and nobody had tried fine-tuning on the data already in hand. - **Evaluation is on read and machine-translated text.** No recordings of people speaking agent commands in these languages exist. Numbers measured this way are optimistic about phrasing and pessimistic about code-switching, and should not be read as field performance. - Research work from a hackathon entry, not a supported product. ## The rest of the family **Recognisers** - [`whisper-large-v3-turbo-tekyerema-eng-foundation`](https://huggingface.co/PrinceAlhassanNasamu/whisper-large-v3-turbo-tekyerema-eng-foundation) — Ghanaian English ASR — course 1 (foundation) - [`kusaal-whisper-small-lora`](https://huggingface.co/PrinceAlhassanNasamu/kusaal-whisper-small-lora) — Kusaal ASR (Whisper-small LoRA, superseded) - [`kasa42-asr`](https://huggingface.co/PrinceAlhassanNasamu/kasa42-asr) — KASA-42 (Kusaal, third-party export) - [`tekyerema-asr-ctc`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-asr-ctc) — Twi ASR (w2v-BERT CTC) - [`tekyerema-asr-mms-ewe`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-asr-mms-ewe) — Ewe ASR (MMS adapter) - [`tekyerema-asr-mms-dag`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-asr-mms-dag) — Dagbani ASR (MMS adapter) - [`tekyerema-asr-mms-hau`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-asr-mms-hau) — Hausa ASR (MMS adapter) - [`tekyerema-asr-mms-kus`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-asr-mms-kus) — Kusaal ASR (MMS adapter) - [`whisper-large-v3-turbo-tekyerema-eng`](https://huggingface.co/PrinceAlhassanNasamu/whisper-large-v3-turbo-tekyerema-eng) — Ghanaian English ASR (Whisper large-v3-turbo) **Voices** - [`tekyerema-tts-twi`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-tts-twi) — Twi TTS (VITS) - [`tekyerema-tts-kus`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-tts-kus) — Kusaal TTS (VITS) - [`tekyerema-tts-ewe`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-tts-ewe) — Ewe TTS (VITS) - [`tekyerema-tts-hau`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-tts-hau) — Hausa TTS (VITS) - [`tekyerema-tts-eng`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-tts-eng) — Ghanaian English TTS (VITS) **Agent models** - [`tekyerema-1-reply`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-1-reply) — Tɛkyerɛma-1 reply adapter (arm ①) - [`tekyerema-1-native-reply`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-1-native-reply) — Tɛkyerɛma-1 reply adapter (arm ②) - [`tekyerema-1-tool`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-1-tool) — Tɛkyerɛma-1 tool adapter (arm 1) - [`tekyerema-audio-native`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-audio-native) — Tɛkyerɛma-1 audio-native (arm 3) - [`tekyerema-audio-native-4k`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-audio-native-4k) — Tɛkyerɛma-1 audio-native, 4,000 clips (arm 3 v2) - [`tekyerema-1-native-tool`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-1-native-tool) — Tɛkyerɛma-1 tool adapter (arm 2) **Translation** - [`tekyerema-nllb600m-v1`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-nllb600m-v1) — Tɛkyerɛma MT v1 (NLLB-600M) - [`kusaal-nllb-600M`](https://huggingface.co/PrinceAlhassanNasamu/kusaal-nllb-600M) — Kusaal MT specialist (NLLB-600M) **Routing** - [`tekyerema-intent-afroxlmr`](https://huggingface.co/PrinceAlhassanNasamu/tekyerema-intent-afroxlmr) — Intent classifier (AfroXLMR) ## Acknowledgements Compute resources provided by **AI Skills and Compute Africa (AISCA)**. Trained on the Ghana NLP H200 GPU. Please keep derivatives non-commercial and share improvements back with the Ghana NLP community (`ghananlpcommunity`).