modelscope/FunASR

Open-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.

FunASR — Industrial Speech Recognition Toolkit

FunASR is a comprehensive, open-source toolkit for building speech recognition systems. It's designed for real-world, production use — supporting offline (batch) transcription, real-time streaming, and deployment on edge devices. It goes beyond plain speech-to-text by also handling voice activity detection (VAD), punctuation, speaker identification, emotion recognition, and audio event detection.

What it does

At its core, FunASR lets you transcribe audio into text. But it's modular: you can combine different components (models) to build a pipeline that fits your needs. For example, you can add a VAD model to detect speech segments, a speaker embedding model to tell who is speaking, and a punctuation model to make the output readable.

Key capabilities

  • Multiple speech tasks: ASR (speech-to-text), VAD (speech detection), punctuation, speaker diarization (who spoke when), emotion recognition, and audio event tagging.
  • Streaming support: Process audio in real-time chunks, useful for live captioning or voice assistants.
  • Edge deployment: Run models on CPU or GPU, including a lightweight llama.cpp/GGUF path that works without Python — just a single binary.
  • OpenAI-compatible server: Expose a REST API that works with tools like LangChain, Dify, or AutoGen.
  • CLI tool: Simple command-line interface for quick transcription, subtitles, and batch processing.

Models included

FunASR provides a model zoo with several pre-trained checkpoints:

  • Fun-ASR-Nano (800M params): Fast, accurate ASR for Chinese, English, Japanese, and Chinese dialects.
  • Fun-ASR-MLT-Nano (800M): Multilingual version covering 31 languages.
  • SenseVoiceSmall (234M): ASR plus emotion and audio-event tags for Chinese, English, Japanese, Korean, and Cantonese.
  • Paraformer-zh: ASR with timestamps, plus a streaming variant.
  • Qwen3-ASR and GLM-ASR-Nano: Larger multilingual models.
  • Whisper models: For comparison or migration.
  • Supporting components: ct-punc (punctuation), fsmn-vad (voice activity detection), cam++ (speaker embeddings), emotion2vec (emotion recognition).

How to use it

You can use FunASR in three main ways:

  1. Python API — Load models with AutoModel and generate transcriptions in a few lines of code.
  2. Command-line — Run funasr audio.wav to get text, or use flags for JSON, SRT, speaker diarization, etc.
  3. Server — Start a local HTTP service with funasr-server and send audio via curl or any HTTP client.

Deployment options

  • GPU: Use CUDA for faster inference.
  • CPU: Works fine for many use cases.
  • Edge: Prebuilt binaries using llama.cpp/GGUF run on Linux, Windows, and macOS without Python — ideal for embedded devices.
  • Docker: Ready-made containers for streaming services.

Why it matters

FunASR is a practical, production-grade toolkit that gives developers flexibility: choose the right model for your language and hardware, combine components as needed, and deploy anywhere from cloud servers to edge devices. It's a strong alternative to cloud ASR services, especially for Chinese-language applications, and it's actively maintained by Alibaba's ModelScope team.

Getting started

pip install funasr

Then try the quickstart notebook or the CLI. The README includes detailed examples for transcription, streaming, speaker diarization, and server deployment.

Note: Model licenses are separate from the toolkit's MIT license — check each model's page before commercial use.

Related

  • Project
  • Project
  • Project
  • Project
  • Project