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
12
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
(2020)
this model