Model Selection Guide

Choose a first model, compare FunASR with Whisper or cloud ASR, and decide which model alias to expose through the OpenAI-compatible API.

Fast default path

If you are unsure, start with SenseVoice-Small. It is the strongest first choice for demos, private APIs, multilingual transcription, speaker-aware meeting transcripts, and agent voice input.

from funasr import AutoModel

model = AutoModel(
    model="iic/SenseVoiceSmall",
    vad_model="fsmn-vad",
    spk_model="cam++",
    device="cuda",  # use "cpu" for a portable smoke test
)
result = model.generate(input="meeting.wav")

Decision table

NeedStart withWhyNext doc
Fast multilingual private transcriptionSenseVoice-SmallStrong default with ASR, emotion tags, audio event tags, and CPU viability.Tutorial
Mandarin production ASRParaformer-LargeMature Chinese ASR path with VAD and punctuation.Tutorial
English-only route in the API exampleparaformer-enCompact English route for OpenAI-style compatibility checks.OpenAI API
LLM-based ASR or 31-language experimentsFun-ASR-NanoLLM-based path; use vLLM when decoder throughput matters.vLLM guide
Live captions or call-center streamsRuntime WebSocket serviceDesigned for long-lived streaming sessions and partial results.Realtime examples
Migration from Whisper/cloud ASRSenseVoice-Small firstGives a strong baseline before deeper model-specific tuning.Migration guide

OpenAI-compatible API aliases

The examples/openai_api server exposes short aliases so application teams do not need to know model repository IDs.

AliasUnderlying pathUse when
sensevoiceiic/SenseVoiceSmallYou want the default private speech API with multilingual ASR, event tags, and good CPU/GPU behavior.
paraformerparaformer-zhYou want a Mandarin-oriented production route with VAD and punctuation.
paraformer-enparaformer-enYou want a compact English route in OpenAI-style clients.
fun-asr-nanoFunAudioLLM/Fun-ASR-Nano-2512You are evaluating LLM-based ASR, 31-language coverage, or vLLM acceleration.
curl http://localhost:8000/v1/models
python examples/openai_api/smoke_test.py --base-url http://localhost:8000 --model sensevoice

Runtime path by workload

WorkloadRuntime pathNotes
Notebook or one-off evaluationPython AutoModelShortest path for install, model download, and output-shape checks.
Internal HTTP serviceOpenAI-compatible APIReuse OpenAI-style clients, Dify, n8n, LangChain, AutoGen, and HTTP nodes.
Repeatable local container demoDocker Compose APICPU-first smoke test; adapt the image before using CUDA.
Internal cluster serviceKubernetes API templatePrivate ClusterIP, persistent model cache, health probes, and port-forward smoke test.
Live audioRuntime WebSocket serviceValidate chunking, VAD, endpointing, reconnects, and client backpressure with real audio.
LLM-based ASR throughputvLLM path for Fun-ASR-NanovLLM accelerates autoregressive decoding; it does not apply to non-autoregressive Paraformer.

See the deployment matrix when you are choosing between these paths.

Benchmark before committing

  • Use 20-50 representative audio files that cover short clips, long meetings, silence, noise, overlapping speakers, domain vocabulary, and target languages.
  • Record model name, model revision, FunASR version, device, CPU/GPU type, CUDA/PyTorch version, runtime path, batch size, and whether warmup/model download time is excluded.
  • Track quality with your normal WER/CER or human review process, not only transcript readability.
  • Track latency, throughput, memory, failures, and upload size limits together.
  • Keep at least one public sample for smoke tests and at least one private realistic sample for deployment validation.

For migration work, use the migration benchmark example and the migration guide.