NPC Voice Model — v5 SFT

Fine-tuned Qwen3-0.6B for NPC dialogue generation in games. The model takes a plain factual sentence and rewrites it in a character's voice, conditioned on 6 persona parameters.

Task

INPUT:  TONE:grumpy STYLE:blunt HUMOR:none RELATION:stranger ROLE:blacksmith
        FACT: Iron swords cost 15 gold.
OUTPUT: Fifteen gold. Don't haggle.

Parameters

Param Values
TONE grumpy, cheerful, neutral, fearful, proud, bitter, nervous, wise, cunning, melancholic, playful
STYLE short, verbose, blunt, rambling, poetic
HUMOR none, dry, sarcastic, warm, dark
RELATION stranger, friend, enemy, ally, rival, mentor, debtor, heretic, worshipper, + 20 more
ROLE blacksmith, innkeeper, guard, merchant, peasant, scholar, noble, priest

Only RELATION changes at runtime based on game state. The other 4 are fixed per NPC at config time.

Inference

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    "walter-bd/npc-voice-v5-sft",
    max_seq_length=256,
)
FastLanguageModel.for_inference(model)

prompt = "TONE:grumpy STYLE:blunt HUMOR:none RELATION:stranger ROLE:blacksmith\nFACT: Iron swords cost 15 gold.\nOUT:"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
out = model.generate(**inputs, max_new_tokens=80, temperature=0.7, do_sample=True)
print(tokenizer.decode(out[0], skip_special_tokens=True).split("OUT:")[-1].strip())

Eval Results

Metric Score
Pass rate 60.0% (3,000 samples)
Hallucination fail 29.6%
Fact preservation 1.39/2.0
EN pass rate 68%
ES pass rate 44%

Evaluated by qwen3.5:9b judge on stratified val set (tone × role × language).

Training

  • Base model: Qwen3-0.6B
  • Method: LoRA (r=16, α=32) + Unsloth
  • Dataset: ~35k rows, bilingual EN/ES, 30 relation types including Tier B synthetic
  • Sources: VGDC game scripts, NPC-Dialogue_v2, Multi-Character Dialogue, synthetic generation (llama3.1:8b, dolphin-llama3:8b, gemma3-uncensored)
  • Training time: ~55 min on RTX 3060 12GB

GGUF (Ollama)

A Q5_K_M GGUF is included for use with Ollama or llama.cpp.

ollama create npc-voice-v5 -f Modelfile
Downloads last month
18
Safetensors
Model size
0.6B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for walter-bd/npc-voice-v5-sft

Finetuned
Qwen/Qwen3-0.6B
Adapter
(442)
this model