StillScript Afrikaans Summary (Qwen3-8B, LoRA-merged, Q4_K_M)

An Afrikaans meeting/conversation summarizer for on-device, offline use. It is Qwen3-8B with a small LoRA adapter merged in, then quantized to GGUF Q4_K_M so it runs in-process on CPU via llama.cpp / llama-cpp-python.

It was built for StillScript, an Afrikaans transcription tool, so that summarization can happen without sending transcript text to any API. That is the entire point of it: the existing cloud-summary path sends text off-device every run, and for confidentiality-sensitive users that is the one remaining gap.

File qwen3-8b-rsg91-Q4_K_M.gguf
Size 5,027,783,552 bytes (4.68 GiB), 4.90 BPW
SHA-256 d5694a2fd7d9b3d17c6597fce126626a1359ef644963de0ade871a80b740e18a
Base Qwen/Qwen3-8B (Apache 2.0)
Quantization Q4_K_M via llama.cpp

Training data and provenance

The LoRA was trained on 91 transcript→summary pairs derived from publicly-broadcast Afrikaans radio content from RSG (Radio Sonder Grense), the SABC's Afrikaans-language radio service. The source recordings are published podcast episodes. Seven distinct episodes contributed pairs.

  • Transcripts were produced by StillScript's own Whisper-based pipeline.
  • Reference summaries ("teacher" targets) were generated by Anthropic's Claude, then used as fine-tuning targets. This is a distillation of summarization style and Afrikaans correctness, not of any proprietary knowledge.
  • No private or confidential recordings were used. An earlier internal 117-pair version additionally included 26 pairs from a separate test recording; those were removed and the adapter retrained from scratch on RSG-derived material only, so that this model could be published without ambiguity about its training sources.

What it fixes

Base Qwen3-8B writes serviceable Afrikaans but makes recurring, checkable errors when asked for minutes. Measured on a held-out 5,411-word transcript, 12 sampled generations per condition:

Error class Base Qwen3-8B This model
Dutch drift (Aktieitems for Aksie-items) 10/12 0/12
Wrong heading (Deelname: for Deelnemers) 8/12 0/12
Untranslated Speaker N labels left in 7/12 0/12
Speler for Spreker 0/12 0/12
Fabricated participants 0/12 0/12
Unterminated double negation (geen … with no closing nie) 0 0

It also attempts noticeably more Afrikaans negation constructions than the base model (2.42 vs 1.33 bracketed-negation clauses per summary) while getting all of them right — i.e. it writes more natural Afrikaans rather than avoiding the hard construction.

Evaluation used two further recordings that contributed no training pairs, as genuinely held-out material; the model was clean on all five classes on both.

Intended use and limits

Intended for summarizing Afrikaans meetings, interviews and conversations into minutes-style output (main points / decisions / action items / participants).

Honest limitations:

  • Context. A 14,000-word transcript (22,600 tokens) will not summarize in one pass on a 14 GB-class machine — it needs a chunked / map-reduce approach. StillScript does this automatically; if you use the model directly, plan for it.
  • Speed. On a 6-core CPU, a full-length summary takes roughly 1,000 s cold and ~170 s once the weights are in page cache. It is not interactive.
  • Language. Tuned for Afrikaans. It was not evaluated on other languages.
  • Domain. Training material was radio broadcast talk. Highly technical, legal or clinical Afrikaans is outside what was measured.
  • It is a summarizer, not a source of truth. Always keep the transcript.

Usage

from llama_cpp import Llama

llm = Llama(model_path="qwen3-8b-rsg91-Q4_K_M.gguf",
            n_ctx=12288, n_threads=6, n_gpu_layers=0)

prompt = f"""You are a professional minutes writer. The following is a transcription of a meeting or conversation.

Please provide a concise summary that includes:
1. Main points discussed
2. Decisions made (if any)
3. Action items (if any)
4. Participants (if names are available)

Transcription:
{transcript}

Skryf die volledige opsomming in Afrikaans. Gebruik natuurlike, korrekte Afrikaans — nie Nederlands nie, en moenie na Engels oorskakel nie.

/no_think"""

out = llm.create_chat_completion(
    messages=[{"role": "user", "content": prompt}],
    max_tokens=1600, temperature=0.3, top_p=0.9)
print(out["choices"][0]["message"]["content"])

Training configuration

LoRA on q_proj, k_proj, v_proj, o_proj; r=16, alpha=32, dropout 0.05; lr 2e-4; 3 epochs; batch size 1 with gradient accumulation 4; max_length 3072. 63 optimizer steps, final train_loss 1.95. Trained in bf16 on a single RTX 3090, merged into the base weights, converted with convert_hf_to_gguf.py and quantized with llama-quantize.

License and attribution

Apache 2.0, inherited from Qwen3-8B (© Alibaba Cloud). The merged weights are distributed under the same terms.

Reference summaries used as fine-tuning targets were generated with Anthropic's Claude. Source audio is publicly-broadcast RSG (SABC) Afrikaans radio programming; RSG and the SABC are not affiliated with this model and do not endorse it.

Downloads last month
-
GGUF
Model size
8B params
Architecture
qwen3
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for DanieClar/stillscript-afrikaans-summary

Finetuned
Qwen/Qwen3-8B
Adapter
(1996)
this model