PsarAI-S2S-ASR-GGUF

The speech recognizer of nphearum/PsarAI-S2S on its own, as GGUF for audio.cpp: Khmer, English, French and mixed Khmer–English / Khmer–French speech in one model, with word timestamps and subtitle-sized segments.

PsarAI-S2S-GGUF holds the same recognizer together with the text-to-speech model in one file. Apps that give each model a single task (Unsloth Studio lists that file as a speech model only) can use this repo for transcription.

File Type Size Mixed held-out CER Use
psarai-s2s-asr-f16.gguf F16 1.93 GB – reference weights
psarai-s2s-asr-q8_0.gguf Q8_0 1.04 GB 2.19% recommended

Each GGUF embeds its config.json, vocab.json (158 tokens: Khmer, Latin with French accents, word delimiter) and the audio.cpp model spec (family mms_asr).

These files need audio.cpp with the mms_asr family. It is not in released audio.cpp yet (proposed upstream). Until it is merged, build audio.cpp with audiocpp/mms_asr.patch from this repository. Stock audio.cpp and the prebuilt shipped with Unsloth Studio cannot load them. These are not llama.cpp GGUFs.

Accuracy

Content CER (letters and marks; spaces, punctuation and case ignored), greedy CTC, no language model:

Test set Clips CER
Mixed held-out: Khmer + English (synthetic voice) 100 2.18%
Mixed held-out: Khmer + French (synthetic voice) 100 2.56%
Mixed held-out: joined Khmer + French clips 100 1.88%
Mixed held-out, all 300 2.19%
FLEURS Khmer test 100 12.44%
FLEURS English test 100 5.08%
FLEURS French test 100 5.01%

The mixed rows were measured with psarai-s2s-asr-q8_0.gguf through audiocpp_server; the transformers model scores the same 2.19% on those 300 clips. The FLEURS rows are the transformers model (fp32). For comparison, PsarAI-ASR-1B (Khmer/English only) scores 14.09% on the mixed held-out set (21.3% on Khmer + French) and 8.20% on FLEURS French.

Timestamps and segments

/v1/audio/transcriptions/details returns, besides text:

  • words: each word with start_sample / end_sample (input sample rate in sample_rate). Words are split at spaces, so for Khmer, written without spaces, a "word" is a phrase. A word ends at its last letter; a trailing , or . (which CTC emits after the pause) does not stretch it over the pause.
  • segments: subtitle-sized lines. A segment ends after . ? ! ។ ៕, after , ; : ៖ or a 0.3 s pause once it is 1.5 s long, after a 0.6 s pause, and never runs past 6 s.

Build audio.cpp with mms_asr

The patch applies to upstream commit 50749561 (audio.cpp v0.9.2):

git clone https://github.com/0xShug0/audio.cpp.git && cd audio.cpp
git checkout 507495611b22dc4590e0e5609e05e8096384e33f
git apply --3way /path/to/mms_asr.patch
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DENGINE_ENABLE_CUDA=ON \
  -DAUDIOCPP_MODEL_SET=custom -DAUDIOCPP_MODELS=mms_asr     # or the full model set
cmake --build build --target audiocpp_cli audiocpp_server -j

With CUDA 12.x, use a host compiler it supports (for example CC=gcc-13 CXX=g++-13 -DCMAKE_CUDA_HOST_COMPILER=g++-13).

Run

./build/bin/audiocpp_cli --task asr --family mms_asr \
  --model psarai-s2s-asr-q8_0.gguf --backend cuda --audio speech.wav

Any sample rate or channel count is accepted (resampled to 16 kHz mono). Audio longer than ~32 s is decoded in 30 s windows with 2 s context. The output is lowercase; numbers may come out as digits.

SHA-256: F16 944a15f6…b483, Q8_0 6c91d71f…1435, audiocpp/mms_asr.patch 78a3a72c…a68a.

License

The model weights are CC-BY-NC-4.0 (non-commercial), following the base model facebook/mms-1b-all; see the PsarAI-S2S model card for data and credits. audiocpp/mms_asr.patch modifies audio.cpp (Apache-2.0, Copyright 2026 ShugoAI LLC) and is provided under the same Apache-2.0 license.

Downloads last month
51
GGUF
Model size
1.0B params
Architecture
audiocpp
Hardware compatibility
Log In to add your hardware

8-bit

16-bit

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

Model tree for nphearum/PsarAI-S2S-ASR-GGUF

Quantized
(2)
this model