2 Commits
Author SHA1 Message Date
zhifu gao e615ed0dc0 feat: built-in FSMN-VAD (--vad) for all three runtimes — single-binary segmentation (#2998)
Add a native ggml FSMN-VAD front end so the binaries segment long audio themselves,
with no Python at runtime. New `--vad fsmn-vad.gguf` flag on llama-funasr-cli,
llama-funasr-sensevoice and llama-funasr-paraformer runs FSMN-VAD (fbank + LFR + CMVN +
FSMN encoder + E2EVadModel state machine, in funasr-common/funasr_vad.h) and decodes
each speech segment, then concatenates.

- funasr-common/funasr_vad.h: single-header VAD; segment boundaries within ~10 ms of
  PyTorch fsmn-vad.generate on the 184-clip set (DEFAULT_SILENCE_SCHEDULE replicated,
  chunk-stepped silence schedule + speech_noise_thres 0.5).
- funasr-vad/: standalone VAD tool (wav -> [start_ms,end_ms] segments).
- export_vad_gguf.py: export FSMN-VAD encoder + CMVN to GGUF (1.7 MB, 24 tensors).
- BENCHMARKS.md: bare binary with built-in VAD reaches the reference end-to-end —
  full-184 micro-CER SenseVoice 8.01 / Paraformer 9.85 / Fun-ASR-Nano 8.30.

Additive only: no existing code is modified outside runtime/llama.cpp/.
2026-06-20 13:26:27 +08:00
zhifu gaoandLauraGPT 842e62f875 docs: CPU benchmark vs whisper.cpp (Chinese ASR) (#2992)
* docs: add CPU benchmark vs whisper.cpp (FunASR is more accurate & faster on Chinese)

* docs(benchmark): clarify size column; add reproduction scripts (compute_cer.py + method README)

* docs(benchmark): finalize — canonical micro-CER+normalize_zh, full 184, fp32-ref/Q8-runtime dual values, whisper full set, transparency footnotes

---------

Co-authored-by: LauraGPT <[email protected]>
2026-06-19 22:26:14 +08:00