Speech Recognition (ASR)
Run the entire FunASR pipeline on a single 24GB card
VAD, recognition, punctuation, speaker diarization, emotion and audio-event detection — under 2GB of weights combined. What costs money isn't VRAM, it's how many hours of audio you push through.
FunASR · self-hosted
FunASR isn't one model, it's an industrial-grade speech toolchain maintained by ModelScope, Alibaba's open-source arm. As of v1.4.3 it chains fsmn-vad endpointing, the ASR model, ct-punc punctuation restoration, cam++ speaker diarization, plus emotion and audio-event detection into a single AutoModel pipeline. The contrast with the Whisper route is concrete: Whisper needs pyannote bolted on for diarization, while FunASR's speaker model is a native component you attach with one spk_model argument.
Anyone searching for FunASR's VRAM requirement gets an answer that feels too small for this era. SenseVoiceSmall is 234M parameters, and the three files in the official GGUF repo weigh exactly 936MB (fp32), 470MB (f16) and 254MB (q8). Its companions are tiny too: fsmn-vad is 0.4M parameters, cam++ is 7.2M, and even the heaviest, ct-punc, is 290M. The whole pipeline totals under 2GB — a Tesla T4 holds it comfortably. The bottleneck was never capacity; it's throughput, concurrent streams, and how you segment long audio.
What genuinely needs a real GPU resident is the new LLM-style ASR line. Fun-ASR-Nano pairs a SenseVoice encoder with a Qwen3 decoder at 800M parameters and hits a claimed 340x realtime under vLLM at 8.20% Chinese CER; Fun-ASR-MLT-Nano is the same size across 31 languages; Qwen3-ASR at 1.7B stretches to 52 languages. Those are the ones worth planning VRAM around. On NexGPU an RTX 3090 24GB starts at $0.193/GPU-hour, metered per second — stop the instance when the transcription job finishes and compute billing stops with it.
01 —
The FunASR v1.4.3 model zoo: which one you actually want
Parameter counts, real on-disk weight sizes and what each variant is for — don't port your Whisper instincts over unchanged
| Version | Parameters | VRAM | Context | Notes |
|---|---|---|---|---|
| Fun-ASR-Nano | 800M | bf16 weights ~1.6GB / ≥ 8GB recommended under vLLM | Long audio fed in via fsmn-vad segments | Hybrid architecture: SenseVoice encoder plus a Qwen3 decoder. Chinese, English, Japanese and dialects. Official benchmark: 8.20% Chinese CER, 340x realtime with vLLM batching. GPU required — there is no supported CPU-only path. |
| Fun-ASR-MLT-Nano | 800M | bf16 weights ~1.6GB / ≥ 8GB recommended under vLLM | Same, VAD-segmented | The multilingual sibling, covering 31 languages. Pick it for cross-border support desks, multilingual subtitling or international meeting notes; for pure Chinese work the original Nano is more accurate. |
| Qwen3-ASR | 1.7B | bf16 weights ~3.4GB / ≥ 12GB recommended in service | 52 languages | The broadest language coverage in the zoo. This is the model for a single 'throw any language at it' endpoint; the trade-off is higher per-request latency than non-autoregressive models like SenseVoice. |
| SenseVoiceSmall | 234M | fp32 936MB / f16 470MB / q8 GGUF 254MB | ≤ 30 s per segment; long audio needs VAD | The value pick. 7.81% Chinese CER — lower than Fun-ASR-Nano — at 170x realtime on GPU and still 17x realtime on CPU. Emits emotion labels and audio events (applause, laughter, coughing, sneezing) alongside text. Trained on 400,000+ hours; roughly 70ms to process 10 seconds of audio. |
| Paraformer-zh / Paraformer-zh-streaming | 220M | fp16 weights ~440MB | Streaming chunk is configurable; ~600ms latency typical | Non-autoregressive: it emits the whole utterance in parallel and carries word-level timestamps natively. 10.18% Chinese CER, 120x realtime on GPU. For live captioning or contact-centre QA where text must appear while someone is still talking, the streaming variant is the only right answer in FunASR. |
| Pipeline components: fsmn-vad / ct-punc / cam++ | 0.4M / 290M / 7.2M | < 1GB combined at fp16 | Resident alongside the main model | Endpoint detection, Chinese/English punctuation restoration and speaker clustering respectively. v1.4.3 adds an optional Silero VAD adapter with configurable thresholds and millisecond-precision segments, and improves diarization clustering when the speaker count is known. |
02 —
GPU selection: don't rent an H100 for an ASR service
Choose by concurrency and total audio volume. NexGPU list rates below, metered per second, no minimum
Offline batch transcription, SenseVoiceSmall full pipeline (VAD + ASR + punctuation + speakers)
RTX 3090 24GB$0.193/GPU-hour
Ampere sm86 has full fp16 tensor cores and is the cheapest card on the fleet that runs FunASR properly — after under 2GB of weights, 24GB leaves plenty of room for batch_size_s=300 long-form batching.
Fun-ASR-Nano 800M behind vLLM, serving an OpenAI-compatible transcription API
RTX 4090 24GB$0.540/GPU-hour
Ada prefill is noticeably faster than the 3090, and setting vLLM's gpu-memory-utilization to 0.85 leaves roughly 19GB of KV cache — enough to absorb dozens of concurrent transcription requests.
Qwen3-ASR 1.7B multilingual service with the post-processing chain resident too
RTX 5090 32GB$0.723/GPU-hour
32GB fits the 1.7B model alongside punctuation and speaker models. Note Blackwell is sm120 while the official Windows prebuilds only target sm86 — on Linux use PyTorch cu128 or newer or you will silently fall back to CPU.
Ten-thousand-hour archive transcription, several models and workers in parallel
A100 PCIE 80GB$0.824/GPU-hour
80GB holds Fun-ASR-Nano, Qwen3-ASR and the whole post-processing chain on one card with batches wide open — one card behaving like a transcription cluster, which makes cost per audio-hour the lowest of the lot.
03 —
Four steps to a running FunASR on NexGPU
From instance to OpenAI-compatible endpoint over SSH or Jupyter — no quota request required
- 01
Launch an instance on a PyTorch or vLLM image and install funasr
At console.nexgpu.net pick an RTX 3090 24GB and choose a PyTorch or vLLM environment from the 2,000+ prebuilt images — CUDA and drivers are already in place. SSH in and one pip finishes the job. The toolkit source is MIT; model weights are licensed separately per model card.
pip install torch torchaudio && pip install -U funasr - 02
Chain VAD, ASR, punctuation and speakers with AutoModel
AutoModel is the core API. Pass vad_model, punc_model and spk_model together and it handles long-audio segmentation, per-segment recognition, punctuation restoration and speaker clustering for you. batch_size_s=300 groups roughly 300 seconds of audio per batch and is the main throughput knob for long-form work.
from funasr import AutoModel model = AutoModel(model="iic/SenseVoiceSmall", vad_model="fsmn-vad", punc_model="ct-punc", spk_model="cam++", device="cuda") print(model.generate(input="audio.wav", batch_size_s=300)) - 03
Serve an OpenAI-compatible transcription endpoint with funasr-server
v1.4.x ships funasr-server, which exposes OpenAI-style speech-to-text HTTP endpoints and can run Fun-ASR-Nano on a vLLM backend. Client code needs no changes — just repoint base_url. For live use cases, switch to the WebSocket service backed by Paraformer-zh-streaming instead.
pip install vllm fastapi uvicorn python-multipart && funasr-server --device cuda - 04
Batch out subtitles, timestamps and speaker labels
The CLI takes globs for batch work: --spk turns on diarization, --timestamps emits word-level timing, and --output-format accepts json or srt. Since v1.4.2 punctuation-aware sentence alignment preserves subtitle segmentation, so the SRT that comes out needs no manual re-breaking.
funasr *.wav --spk --timestamps --output-format srt
Real arithmetic: transcribing 1,000 hours of meeting audio
Say you need 1,000 hours of Chinese meeting recordings turned into punctuated, speaker-labelled text. SenseVoiceSmall is rated at 170x realtime on GPU, but end-to-end throughput drops once VAD, punctuation and speaker clustering are attached — budget conservatively at 100x realtime: 1,000 ÷ 100 = 10 GPU-hours. On an RTX 3090 24GB that is 10 × $0.193 = $1.93 of compute. The real cost is storage. 16kHz 16-bit mono WAV is 32,000 bytes per second, i.e. 115.2MB per hour, so 1,000 hours = 115.2GB. At NexGPU's median $0.414/GB-month, holding that for a full month is 115.2 × 0.414 = $47.69 — but this job only needs three days: 115.2 × 0.414 × 3 ÷ 30 = $4.77. Egress is a rounding error: 1,000 hours of transcript is roughly 30MB of UTF-8, so 0.03 × $0.0081 ≈ $0.0002. Total: $1.93 + $4.77 ≈ $6.70. One billing rule to internalise — compute billing stops the moment the instance stops, but storage keeps billing until the volume is destroyed. Delete the volume when the run finishes, or that $47.69/month keeps accruing, which is twenty times the compute cost of the entire job.
04 —
FAQ
How much VRAM does FunASR actually need? Is an 8GB card enough?
FunASR or Whisper — how big is the difference for Chinese?
SenseVoiceSmall only takes 30-second segments — what about an hour-long recording?
Can Fun-ASR-Nano run on CPU? What if I have no GPU at all?
FunASR errors out or silently falls back to CPU on an RTX 5090. What's going on?
Can I use FunASR commercially? What's the licence?
More in Speech recognition
Start building on NexGPU
Enterprise R&D team or solo developer — either way, your first job can be running in minutes.
Sign up to browse live network pricing. No payment method required.
