AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

FunASR

mcp-modelscope-funasr · by modelscope

Industrial-grade speech recognition toolkit: 170x realtime, 50+ languages, speaker diarization, emotion detection, streaming, and OpenAI-compatible API.

No reviews yet
0 installs
22 views
0.0% view→install

Install

$ agentstack add mcp-modelscope-funasr

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-modelscope-funasr)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of FunASR? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

([简体中文](./READMEzh.md)|English|[日本語](./READMEja.md)|[한국어](./README_ko.md))

Industrial speech recognition. Up to 340x realtime, 26x faster than Whisper. 50+ languages. Speaker diarization · Emotion detection · Streaming · One API call

Quick Start · Colab · Benchmark · Model selection · Migration guide · Use cases · Deployment matrix · Models · Agent Integration · Docs · Contribute


Quick Start

[](https://colab.research.google.com/github/modelscope/FunASR/blob/main/examples/colab/funasr_quickstart.ipynb)

No local setup? Open the [Colab quickstart](./examples/colab/) to transcribe a public sample or upload your own audio in a browser.

pip install torch torchaudio
pip install funasr

Flagship model — Fun-ASR-Nano (LLM-ASR, 31 languages; the default recommendation, needs a GPU):

from funasr import AutoModel

model = AutoModel(model="FunAudioLLM/Fun-ASR-Nano-2512", device="cuda")
result = model.generate(input="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav")
print(result[0]["text"])
# 欢迎大家来体验达摩院推出的语音识别模型。

On CPU (or for multilingual + emotion in one pass), use SenseVoice — which also returns speaker diarization and timestamps:

from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess

model = AutoModel(model="iic/SenseVoiceSmall", vad_model="fsmn-vad", spk_model="cam++", device="cuda")  # use device="cpu" if you don't have a GPU
result = model.generate(
    input="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav",
    batch_size_s=300,
)

# One call returns VAD segments with speaker id + timestamps — render them however you like:
for seg in result[0]["sentence_info"]:
    print(f"[{seg['start']/1000:.1f}s] Speaker {seg['spk']}: {rich_transcription_postprocess(seg['sentence'])}")

Output — structured text with speaker labels, timestamps, and punctuation:

[0.6s] Speaker 0: 欢迎大家来体验达摩院推出的语音识别模型

That's it. One model, one call — VAD segmentation, speech recognition, punctuation, speaker diarization all happen automatically.

Scale & deploy the flagship

At scale, accelerate Fun-ASR-Nano with vLLM (batch processing):

from funasr.auto.auto_model_vllm import AutoModelVLLM

model = AutoModelVLLM(model="FunAudioLLM/Fun-ASR-Nano-2512", tensor_parallel_size=1)
results = model.generate(["audio1.wav", "audio2.wav"], language="auto")

> Deploy as API server: funasr-server --device cuda → OpenAI-compatible endpoint at localhost:8000 > > Use with AI agents: [MCP Server](examples/mcpserver/) for Claude/Cursor · [OpenAI API](examples/openaiapi/) for LangChain/Dify/AutoGen

Why FunASR?

Whisper is a single model; FunASR is a toolkit — you pick the right model per job: Fun-ASR-Nano (flagship LLM-ASR, GPU, 340x realtime with vLLM, 31 languages), SenseVoice (CPU-friendly, + emotion & audio events), Paraformer (low-latency streaming). The table shows what the toolkit delivers vs one Whisper model — each capability is labelled with the model that provides it:

| | FunASR (toolkit) | Whisper | Cloud APIs | |---|---|---|---| | Top speed | 340x realtime (Fun-ASR-Nano + vLLM) | 13x realtime | ~1x realtime | | Speaker ID | ✅ Built-in | ❌ Needs pyannote | ✅ Extra cost | | Emotion | ✅ via SenseVoice | ❌ | ❌ | | Languages | 50+ (Qwen3-ASR 52, Nano 31) | 57 | Varies | | Streaming | ✅ WebSocket (Paraformer) | ❌ | ✅ | | CPU viable | ✅ 17x realtime (SenseVoice) | ❌ Too slow | N/A | | Self-hosted | ✅ MIT license | ✅ MIT license | ❌ Cloud only | | Cost | Free | Free | $0.006/min+ |

Trying FunASR for the first time? Use the [Colab quickstart](./examples/colab/) before setting up a local environment. Choosing a first model? Start with the [model selection guide](./docs/modelselection.md). Planning a switch from Whisper or a cloud ASR provider? Use the [migration guide](./docs/migrationfrom_whisper.md) and [benchmark example](./examples/migration/) to test representative audio, map features, and roll out safely.


Installation

pip install funasr

From source / Requirements

git clone https://github.com/modelscope/FunASR.git && cd FunASR
pip install -e ./

Requirements: Python ≥ 3.8. Install PyTorch + torchaudio first (pytorch.org), then pip install funasr.


Model Zoo

| Model | Task | Languages | Params | Links | |-------|------|-----------|--------|-------| | Fun-ASR-Nano | ASR + timestamps | 31 languages | 800M | 🤗 | | SenseVoiceSmall | ASR + emotion + events | zh/en/ja/ko/yue | 234M | 🤗 | | Paraformer-zh | ASR + timestamps | zh/en | 220M | 🤗 | | Paraformer-zh-streaming | Streaming ASR | zh/en | 220M | 🤗 | | Qwen3-ASR | ASR, 52 languages | multilingual | 1.7B | [usage](examples/industrialdatapretraining/qwen3asr) | | GLM-ASR-Nano | ASR, 17 languages | multilingual | 1.5B | [usage](examples/industrialdatapretraining/glmasr) | | Whisper-large-v3 | ASR + translation | multilingual | 1550M | [usage](examples/industrialdatapretraining/whisper) | | Whisper-large-v3-turbo | ASR + translation | multilingual | 809M | [usage](examples/industrialdatapretraining/whisper) | | ct-punc | Punctuation | zh/en | 290M | 🤗 | | fsmn-vad | VAD | zh/en | 0.4M | 🤗 | | cam++ | Speaker diarization | — | 7.2M | 🤗 | | emotion2vec+large | Emotion recognition | — | 300M | 🤗 |


Usage

> Full examples with parameter docs: Tutorial →

from funasr import AutoModel

# Chinese production (VAD + ASR + punctuation + speaker)
model = AutoModel(model="paraformer-zh", vad_model="fsmn-vad", punc_model="ct-punc", spk_model="cam++", device="cuda")
result = model.generate(input="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav", hotword="关键词 20")

# Streaming real-time (feed audio chunk by chunk)
import soundfile as sf
model = AutoModel(model="paraformer-zh-streaming", device="cuda")
audio, sr = sf.read("speech.wav", dtype="float32")   # 16 kHz mono
chunk_size = [0, 10, 5]                               # 600 ms chunks
chunk_stride = chunk_size[1] * 960
cache = {}
n_chunks = (len(audio) - 1) // chunk_stride + 1
for i in range(n_chunks):
    chunk = audio[i * chunk_stride : (i + 1) * chunk_stride]
    res = model.generate(input=chunk, cache=cache, is_final=(i == n_chunks - 1),
                         chunk_size=chunk_size, encoder_chunk_look_back=4, decoder_chunk_look_back=1)
    if res[0]["text"]:
        print(res[0]["text"], end="", flush=True)

# Emotion recognition
model = AutoModel(model="emotion2vec_plus_large", device="cuda")
result = model.generate(input="audio.wav", granularity="utterance")

CLI (Agent-Friendly)

# Transcribe audio (simplest)
funasr audio.wav

# JSON output (for AI agents)
funasr audio.wav --output-format json

# SRT subtitles
funasr audio.wav --output-format srt --output-dir ./subs

# Speaker diarization + timestamps
funasr audio.wav --spk --timestamps -f json

# Choose model and language
funasr audio.wav --model paraformer --language zh

# Batch transcribe
funasr *.wav --output-format srt --output-dir ./output

Available models: sensevoice (default), paraformer, paraformer-en, fun-asr-nano


Deploy

# OpenAI-compatible API (recommended)
pip install torch torchaudio
pip install funasr vllm fastapi uvicorn python-multipart
funasr-server --device cuda
# → POST /v1/audio/transcriptions at localhost:8000

Verify it with a public sample:

curl -L https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0764W0121.wav -o sample.wav
curl http://localhost:8000/v1/audio/transcriptions \
  -F file=@sample.wav \
  -F model=sensevoice \
  -F response_format=verbose_json
# Docker streaming service
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12

CPU / Edge — llama.cpp / GGUF (no GPU, no Python)

Run SenseVoice / Paraformer / Fun-ASR-Nano as a single self-contained binary on CPU and edge devices — this is to FunASR what whisper.cpp is to Whisper, but with ~3× lower CER than whisper.cpp on Chinese. Built-in FSMN-VAD, no Python at runtime.

# 1) Grab a prebuilt binary from Releases (Linux / macOS / Windows), then:
bash download-funasr-model.sh sensevoice ./gguf        # or: paraformer | nano
llama-funasr-sensevoice -m ./gguf/SenseVoiceSmall-f16.gguf --vad ./gguf/fsmn-vad.gguf -a audio.wav
# → 欢迎大家来体验达摩院推出的语音识别模型

Prebuilt binaries: [Releases](../../releases) · Download & quickstart: funasr.com/llama-cpp · GGUF models: Hugging Face · Docs & benchmarks: [runtime/llama.cpp/](./runtime/llama.cpp/)

[OpenAI API example →](./examples/openaiapi/) · [Gradio demo →](./examples/openaiapi/GRADIO.md) · [Client recipes →](./examples/openaiapi/CLIENTS.md) · [JavaScript/TypeScript recipes →](./examples/openaiapi/JAVASCRIPT.md) · [Kubernetes template →](./examples/openaiapi/kubernetes/) · [Workflow recipes →](./examples/openaiapi/WORKFLOWS.md) · [Postman collection →](./examples/openaiapi/POSTMAN.md) · [OpenAPI spec →](./examples/openaiapi/OPENAPI.md) · [Security guide →](./examples/openaiapi/SECURITY.md) · [Deployment matrix →](./docs/deploymentmatrix.md) · [Deployment docs →](./runtime/readme.md) · Agent integration →


Benchmark

> 184 long-form audio files (192 min). Full report →

| Model | Chinese CER ↓ | GPU Speed | CPU Speed | vs Whisper-large-v3 | |-------|------|-----------|-----------|-------------------| | Fun-ASR-Nano (vLLM) | 8.20% | 340x realtime | — | 🚀 26x faster | | SenseVoice-Small | 7.81% | 170x realtime | 17x realtime | 🚀 13x faster | | Paraformer-Large | 10.18% | 120x realtime | 15x realtime | 🚀 9x faster | | Whisper-large-v3-turbo | 21.71% | 46x realtime | ❌ | 3.4x faster | | Whisper-large-v3 | 20.02% | 13x realtime | ❌ | baseline |

> Key takeaway: FunASR models run on CPU faster than Whisper runs on GPU.


What's new

  • 2026/06/20: llama.cpp / GGUF runtime — run SenseVoice / Paraformer / Fun-ASR-Nano on CPU & edge as a single self-contained binary (a whisper.cpp-style alternative), built-in FSMN-VAD, no Python at runtime. Prebuilt binaries for Linux / macOS / Windows + q8 quantized models (~half the size, same accuracy). [runtime/llama.cpp/](./runtime/llama.cpp/) · [Releases](../../releases)
  • 2026/06/21: v1.3.12 on PyPI — rolling fixes (qwen3-asr language codes, glmasr, vLLM repetitionpenalty). pip install --upgrade funasr
  • 2026/05/24: vLLM Inference Engine — 2-3x faster LLM decoding for Fun-ASR-Nano. Streaming WebSocket service with VAD + Speaker Diarization. [Guide →](docs/vllm_guide.md)
  • 2026/05/24: Dynamic VAD — adaptive silence threshold (default on). Short sentences stay intact, long segments get auto-split. [Details →](docs/vllm_guide.md#附录dynamicstreamingvad)
  • 2026/05/24: v1.3.3funasr-server CLI, OpenAI-compatible API, MCP Server for AI agents. pip install --upgrade funasr
  • 2026/05/20: Added Qwen3-ASR (0.6B/1.7B) — 52 languages, auto detection. [usage](examples/industrialdatapretraining/qwen3_asr)
  • 2026/05/20: Added GLM-ASR-Nano (1.5B) — 17 languages, dialect support. [usage](examples/industrialdatapretraining/glm_asr)
  • 2026/05/19: Fun-ASR-Nano and SenseVoice now support speaker diarization.
  • 2025/12/15: Fun-ASR-Nano-2512 — 31 languages, tens of millions of hours training.

Older

  • 2024/10/10: Whisper-large-v3-turbo support added.
  • 2024/07/04: SenseVoice — ASR + emotion + audio events.
  • 2024/01/30: FunASR 1.0 released.

Community

| | | |---|---| | 📖 Documentation | 🐛 Issues | | 💬 Discussions | 🤗 HuggingFace | | 🤝 [Contributing](./CONTRIBUTING.md) | 🌐 funasr.com |

Star History

License

[MIT License](./LICENSE)

Citations

@inproceedings{gao2023funasr,
  author={Zhifu Gao and others},
  title={FunASR: A Fundamental End-to-End Speech Recognition Toolkit},
  booktitle={INTERSPEECH},
  year={2023}
}

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.