npc-models

The models a game character needs to hear, understand and answer on the player's own machine, one folder per model. Every folder is shipped whole, with the licence of its weights beside the files as <model>.LICENSE, so a folder copied beside a game carries its terms with it. Fetch all of them into a models/ folder with one command, or one folder with --include:

hf download shuko-tuto/npc-models --local-dir models
hf download shuko-tuto/npc-models --local-dir models --include "qwen3_4b_q4/*"
Folder What it holds Source weights Licence
silero_vad_16k/ Silero VAD v6.2 at 16 kHz as one ncnn graph: silero_vad_16k.ncnn.param and silero_vad_16k.ncnn.bin. 512 samples of 16 kHz mono in, one speech probability out, the recurrent state carried between windows. Converted from the ONNX inside the silero-vad 6.2.1 PyPI wheel and measured against it to 3.6e-7 silero-vad 6.2.1 MIT, silero_vad_16k.LICENSE
whisper_tiny_ncnn/ Whisper tiny (multilingual) lowered with pnnx to six ncnn graphs -- fbank, encoder, embed_token, embed_position, decoder with attention caches, proj_out -- and whisper_vocab.txt, the 50 257 byte-level tokens one per line. The encoder is exported for Whisper's own 30-second window openai/whisper-tiny MIT and Apache-2.0, both texts in whisper_tiny_ncnn.LICENSE
whisper_base_ncnn/ The same lowering of Whisper base openai/whisper-base MIT and Apache-2.0, both texts in whisper_base_ncnn.LICENSE
gigaam_v3_ctc_ncnn/ GigaAM v3 CTC, a Russian-only conformer, lowered with pnnx to one length-agnostic ncnn graph: gigaam_v3_ctc.ncnn.param and gigaam_v3_ctc.ncnn.bin (weights in half precision, 441 MB), with gigaam_v3_ctc_frontend.bin -- the 320-point window and the 64-band mel filterbank the checkpoint carries, as raw float32 -- and gigaam_tokens.txt, the 34 classes one per line, <space> first and <blk> last. Measured against the package's PyTorch forward on the same log-mel to 8.5e-3 in the log-probabilities, same text on every clip; the full-precision graph reaches 5.2e-5 gigaam 0.1.0, checkpoint v3_ctc MIT, gigaam_v3_ctc_ncnn.LICENSE
qwen3_4b_q4/ Qwen3-4B as one GGUF file, Qwen3-4B-Q4_K_M.gguf (2.5 GB), the Q4_K_M quantisation published by the model's own authors, unchanged. A chat model that follows its own template, calls tools and can think before it answers; it runs through llama.cpp on a GPU through Vulkan or on the CPU. Small enough for a player's machine, and terse: asked as a room, it answers with one character Qwen/Qwen3-4B-GGUF Apache-2.0, qwen3_4b_q4.LICENSE
gemma4_12b_q4/ Gemma 4 12B instruction-tuned as one GGUF file, gemma-4-12B-it-qat-UD-Q4_K_XL.gguf (6.7 GB): the quantisation-aware checkpoint, which keeps its quality at four bits, in the UD-Q4_K_XL layout published by unsloth, unchanged. The same chat model shape, and the one that plays a room: asked as a room it answers for every character, each in its own voice, with stage directions. Needs about eight gigabytes of memory on the device it runs on unsloth/gemma-4-12B-it-qat-GGUF, from google/gemma-4-12b-it Apache-2.0, gemma4_12b_q4.LICENSE
qwen3_tts_1_7b_q4/ Qwen3-TTS 1.7B Base as two GGUF files: the backbone Qwen3-TTS-12Hz-1.7B-Base-Q4_K_M.gguf (1.0 GB) and the codec mmproj-Qwen3-TTS-12Hz-1.7B-Base-Q8_0.gguf (446 MB), both as ggml's own conversion publishes them, unchanged. Speaks ten languages including Russian and English, and clones a voice from a reference clip; voices/guard.wav is one such clip, drawn from a text description by the same family's voice-design model rather than recorded from anybody. Runs through llama.cpp; the codec runs on the CUDA backend and on no other, and falls to the processor elsewhere ggml-org/Qwen3-TTS-12Hz-1.7B-Base-GGUF, from Qwen/Qwen3-TTS-12Hz-1.7B-Base Apache-2.0, qwen3_tts_1_7b_q4.LICENSE
piper_uk_ukrainian_tts_ncnn/ A Ukrainian Piper voice, three speakers (lada, mykyta, tetiana), lowered to five ncnn graphs (enc_p, dp, flow, dec, emb_g) with the symbol table and the speaker list. Its front end is the Ukrainian alphabet itself โ€” one letter, one symbol โ€” so it needs no phonemiser. 22 050 Hz, real time many times over on a CPU rhasspy/piper-voices, uk_UA-ukrainian_tts-medium the voice's card says CC0; its provenance is stated with the gap it has in piper_uk_ukrainian_tts_ncnn.LICENSE
ggml_cuda/ Not a model: the CUDA backend of llama.cpp tag b10786, ggml-cuda.dll, with the three CUDA runtime libraries it imports (cudart64_13, cublas64_13, cublasLt64_13), 628 MB, NVIDIA only. A game that puts this folder beside its models runs the language model and the speech codec on CUDA; without it, Vulkan llama.cpp's release archive; NVIDIA's CUDA redistributable MIT for ggml, NVIDIA's runtime terms for the rest, both in ggml_cuda.LICENSE

How the Whisper graphs were made

The published checkpoints are loaded through the transformers library and lowered with pnnx, one graph per part of the model. The decoder is patched after the lowering: every attention layer gets a key and a value cache in and out, the mask is two-dimensional, and the position embedding is added outside the graph, so a decode loop can feed one token at a time and hand the caches straight back. The vocabulary is written from the checkpoint's tokenizer; the special tokens above it are not in the file and are counted from its length.

How the GigaAM graph was made

The v3_ctc checkpoint is loaded through the gigaam package and the encoder with its CTC head traced as one module, with the attention re-expressed batch first: the package keeps the batch in the second dimension while the rotary embedding is applied, and pnnx lowers that layout to ncnn's rotary layer with the sequence and the heads swapped, silently -- the graph runs and drops the short words. The rotary cos and sin tables are inputs to the graph rather than buffers in it (in1 and in2, base 5000, 48 wide, one row per encoder position), and pnnx is run with a second input shape, so every reshape is dynamic and one graph takes any clip length. Feed it in0 as the log-mel (64 bands, one column per 160-sample frame of a 320-sample window, no centre padding, natural log over a clamp to [1e-9, 1e9], no normalisation) and read out0 as one row of 34 log-probabilities per position, then decode greedily: argmax per row, repeats collapsed, class 33 dropped.

The language models

qwen3_4b_q4/ and gemma4_12b_q4/ are mirrors, not exports: each file is byte for byte the one its publisher serves, kept here so that a folder fetched from this repository has the same shape as every other -- one folder, one model, one licence beside it -- and so that a name written into a game keeps pointing at the same bytes when the upstream repository is reorganised. A folder holds exactly one .gguf file, which is how a loader picks it without being told a file name.

Licences

The Whisper weights are published under two licences that do not agree: the repository that trained them carries MIT, and the model cards of the same checkpoints on this hub are tagged Apache-2.0. Both texts travel in whisper_<size>_ncnn.LICENSE, so a folder handed on carries whichever of the two its reader holds the weights under. The Silero VAD weights are MIT, the text copied out of the wheel they were read from as silero_vad_16k.LICENSE. The GigaAM weights and the package that publishes them are MIT, the text copied out of the package as gigaam_v3_ctc_ncnn.LICENSE. The Qwen3 weights are Apache-2.0, the text copied out of their repository as qwen3_4b_q4.LICENSE. The Gemma 4 weights are tagged Apache-2.0 on both the publisher's card and the quantiser's; neither repository carries the text, so gemma4_12b_q4.LICENSE opens with a note naming both and follows with the licence itself.

Downloads last month
18
GGUF
Model size
12B params
Architecture
gemma4
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