mrkeyoor.com_
Thu 17 Sept 00:52 UTC
AI Toolsevaluationupdated 26 Aug 2026

FunASR review

FunASR is a Python speech-recognition toolkit for offline transcription, streaming recognition, voice activity detection, punctuation, speaker diarization, emotion tags, training, and model deployment. It offers several checkpoint families instead of one fixed model, plus an OpenAI-compatible server and an MCP server for agent clients. The default README is English, with Simplified Chinese, Japanese, and Korean versions linked at the top.

+91stars / 7d
Verdict

Our FunASR run installed 94 packages and built in 13 seconds, but pytest executed 0 tests because collection ended with a SystemExit: 2 error. Trial it when Chinese or multilingual speech, streaming, diarization, or edge deployment requires more choice than one Whisper model provides. Do not ship until the exact checkpoint source, license, timestamp behavior, driver path, and a representative audio set have all been verified.

We ran it

Lab card: what happened when we ran FunASRScreenshot of FunASR (github.com/modelscope/FunASR)
Install✓ · 44s94 packages · 644 MB
Build✓ · 13s
Tests✗ · 21s0 passed · 0 failed · 1 errors of 1 (pytest)
Known vulns0(pip-audit)
Repo3928 files~440,080 lines of source · 102.8 MB · 7 CI workflows · tests dir

Answers from our run

Does FunASR build from source?

Dependencies installed in 44 seconds (94 packages), and the build succeeded in 13 seconds. We cloned commit 3c58cb5 into a clean Debian container with 3 CPUs and no project-specific setup.

Do FunASR's tests pass?

Yes: 0 of 1 passed when we ran the project's own test command (pytest), with 1 collection error. Some failures need services or credentials a bare container does not have.

Does FunASR have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use FunASR?

Buyers who want one checkpoint with one license and one hardware path: FunASR's model families have separate language coverage, dependencies, and weight licenses.

What are the alternatives to FunASR?

Whisper, whisper.cpp, sherpa-onnx. Our FunASR run installed 94 packages and built in 13 seconds, but pytest executed 0 tests because collection ended with a SystemExit: 2 error.

Setup2/5644 MB install and pytest collection failure complicate the first run
Docs5/5Model selection, deployment, migration, security, and examples are deep
Community5/520,035 stars with same-day pushes, releases, and issue activity
Maturity4/5Broad production paths, with current artifact and GPU reports

Who it’s for

Speech teams choosing among multilingual, streaming, CPU, GPU, and edge recognition paths.
Developers who need VAD, punctuation, timestamps, or speaker labels composed around ASR.
Self-hosters building an OpenAI-compatible transcription API or an MCP speech tool.
Researchers who need training and fine-tuning code rather than inference alone.

Who it’s NOT for

Buyers who want one checkpoint with one license and one hardware path: FunASR's model families have separate language coverage, dependencies, and weight licenses.
Teams requiring a clean test collection on Python 3.12: our pytest run stopped with an argparse SystemExit: 2 before executing any test.
Windows AMD users depending on the prebuilt Vulkan runtime: issue 3479 reports an access-violation crash on two RDNA3 GPUs, with CPU mode working.
Deployments that need Hugging Face and ModelScope Nano artifacts to behave identically: issue 3496 reports 86 missing CTC tensors in one Hugging Face checkpoint, removing timestamps and native diarization.
Commercial distributors who have not reviewed every chosen model card: the MIT license covers toolkit code, while pretrained weights are licensed separately.

Setup reality

Our sandbox installed 94 Python packages in 44 seconds and used 644 MB. The build succeeded in 13 seconds. Tests failed after 21 seconds with exit code 3: pytest ran 0 tests and stopped on 1 collection or setup error. The tail shows argparse raising SystemExit: 2; it does not identify the argument that caused it. Pip-audit found 0 known vulnerabilities.

Python use requires Python 3.8 or newer plus PyTorch and torchaudio selected for the intended CPU or CUDA environment. Models download separately from ModelScope or Hugging Face. Server paths may add vLLM, FastAPI, multipart handling, CUDA, model files, and port 8000; MCP use adds a compatible client.

Hardware varies by checkpoint. The flagship Nano path needs a GPU in the quickstart, SenseVoice can run on CPU, and separate llama.cpp assets cover CPU, Vulkan, or a narrowly targeted Windows CUDA build. Verify weight licenses, hashes, drivers, audio codecs, and actual language coverage before deployment.

Several model families cover different speech jobs

FunASR is a toolkit around multiple speech models rather than one recognizer. Fun-ASR-Nano covers Chinese, English, Japanese, dialect groups, and regional accents. A separate MLT Nano checkpoint covers 31 languages. SenseVoiceSmall combines five-language recognition with emotion and audio-event tags, while Paraformer has a streaming variant. Voice activity detection, punctuation, and CAM++ speaker processing can be composed around the selected recognizer.

That modularity is useful when a product needs timestamps, speaker labels, streaming partials, or training code. It also makes model selection part of engineering. Language coverage is checkpoint-specific, diarization may depend on a separate speaker model, and some output fields require timestamp-capable weights. The README's model-selection and migration guides are worth reading before downloading anything, since a successful transcript alone does not prove the pipeline can deliver subtitles or speaker attribution.

Python, OpenAI API, MCP, and llama.cpp are separate paths

The Python API uses AutoModel to load an ASR checkpoint and optional VAD, punctuation, or speaker components. A command-line client can emit text, JSON, SRT, or speaker-attributed output. For services, funasr-server exposes an OpenAI-compatible transcription endpoint on localhost port 8000, and the repository includes an MCP server for Claude, Cursor, and other compatible clients. Training examples and vLLM deployment serve larger research and batch workloads.

Edge deployment follows a different runtime. Prebuilt llama.cpp and GGUF packages run SenseVoice, Paraformer, or Nano without a Python ASR runtime. The latest runtime release provides CPU assets plus selected Vulkan and CUDA variants. These choices are alternatives, not interchangeable installation flags. A Python CUDA environment, a self-contained CPU binary, and a Windows Vulkan archive have different model formats, drivers, failure modes, and update procedures.

What happened when we ran it

Our sandbox installed 94 Python packages in 44 seconds and used 644 MB on disk. Building commit 3c58cb5 succeeded in 13 seconds. The checkout contained 3,928 files, roughly 440,080 lines of source, and 102.8 MB before dependencies. The scan found 7 CI workflow files, no Dockerfile, and a tests directory. Pip-audit reported 0 known vulnerabilities in the installed packages.

Pytest failed after 21 seconds with exit code 3. It executed 0 tests and recorded 1 collection or setup error. The log tail passes through Python 3.12's argparse code and ends with SystemExit: 2, followed by 2 warnings and the collection error. The excerpt does not show which command-line argument triggered the parser, so claiming a missing package or incompatible option would exceed the evidence.

We ran this in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets. No model was downloaded, no audio was transcribed, and no GPU, OpenAI-compatible endpoint, or MCP client was exercised. The 13-second build confirms the package build path; it does not validate recognition accuracy, throughput, language coverage, timestamps, or the runtime assets described elsewhere in the repository.

Issue 3496 makes checkpoint source part of the configuration

Open issue 3496 compares the Fun-ASR-Nano checkpoint hosted by Hugging Face with the copy on ModelScope. The reporter found 86 CTC-related tensors absent from the Hugging Face model.pt. Text recognition still worked, but native character timestamps and the CAM++ diarization path did not. Replacing that file with the ModelScope checkpoint reportedly restored timestamps and speaker-attributed segments.

This is an artifact-integrity problem with a practical trap: a smoke test that checks only transcript text can pass while required metadata is missing. Pin the repository, revision, filename, and checksum for every model. Test timestamp arrays and speaker segments directly. If two hubs are offered, do not assume equivalent names mean byte-equivalent weights. Issue 3496 provides hashes and tensor counts that can support a deployment check until the published artifacts converge.

Windows GPU packages need exact hardware testing

Release runtime-llamacpp-v0.2.1 publishes self-contained binaries for SenseVoice, Paraformer, and Nano. Its Windows CUDA asset targets architecture 86, while the README tells other architectures to use CPU or build from source. Vulkan packages rely on a working driver and currently accelerate SenseVoiceSmall. Those constraints should be matched against the actual GPU before choosing an archive.

Issue 3479 reports that the v0.1.9 Windows Vulkan build crashed with access violation 0xc0000005 on an AMD RX 7600M XT and integrated 780M. The reporter tried several Vulkan settings and driver versions; CPU mode worked. A newer release may change that behavior, but the open issue had activity on August 25. Run a full audio file on the exact driver and device, then verify fallback behavior before promising GPU acceleration.

MIT toolkit code does not settle model-weight rights

The repository code uses the MIT license. The README separately says pretrained weights follow the license on each model card, and some cards link to FunASR's own model agreement. Issue 3458 asks maintainers to clarify commercial self-hosting, redistribution, quantization, fine-tuning, attribution, and whether model-card Apache terms govern four pinned checkpoints. The issue's questions are not answers.

Record the license for every fixed model revision and keep the associated notices with deployment artifacts. Redistributing weights in a container is a different act from keeping them on a server and returning transcripts. Legal review belongs before packaging, especially when several checkpoints form one pipeline. GitHub recorded 20,035 stars, 4 combined issues and pull requests, a push on August 26, 2026, and a runtime release the same day, so maintenance is active even though these artifact and licensing questions remain.

Alternatives

ProjectWhat it isPick it when
Whisper gh↗A widely used multilingual speech recognition and translation model with a simple Python interface.pick this instead when one familiar model family is preferable to assembling separate ASR, VAD, punctuation, and speaker components.
whisper.cpp gh↗A C and C++ Whisper runtime aimed at local, CPU, mobile, and edge inference.pick this instead when portable Whisper inference matters more than FunASR's model zoo and training toolkit.
sherpa-onnxAn ONNX speech toolkit for offline and streaming ASR across desktop, mobile, and embedded targets.pick this instead when ONNX deployment and broad device bindings are the main requirements.

Sources

  1. FunASR README
  2. FunASR repository activity
  3. llama.cpp runtime v0.2.1 release
  4. Issue 3496: checkpoint tensor mismatch report
  5. Issue 3479: Windows AMD Vulkan crash report
  6. Issue 3458: model-license clarification request

More ai tools reviews

eve · MemOS · LongCat-Video · Concat · DLSS5-Feeder · Concat · the whole board →