9.9 KiB
오프라인, 스트리밍 및 엣지 배포를 위한 산업용 음성 인식 툴킷.
ASR · VAD · 구두점 · 화자 파이프라인 · 감정 및 오디오 이벤트 모델 · OpenAI 호환 서빙
빠른 시작 · Colab · 모델 선택 · 벤치마크 · Migration guide · Use cases · Deployment matrix · 모델 목록 · Agent 연동 · 문서
빠른 시작
pip install funasr
from funasr import AutoModel
model = AutoModel(model="iic/SenseVoiceSmall", vad_model="fsmn-vad", spk_model="cam++", device="cuda")
result = model.generate(input="meeting.wav")
출력 — 화자 라벨, 타임스탬프, 구두점이 포함된 구조화된 텍스트:
[00:00.4 → 00:03.8] 화자0: Q3 계획에 대해 논의하겠습니다.
[00:04.2 → 00:07.1] 화자1: 좋습니다. 세 가지 포인트가 있습니다.
[00:07.5 → 00:12.3] 화자0: 말씀하세요. 30분 남았습니다.
한 번의 AutoModel 파이프라인 호출이지만, SenseVoiceSmall, FSMN-VAD,
CAM++라는 독립된 모델을 조합합니다. 화자 분리는 SenseVoiceSmall 자체가 아니라
CAM++에서 제공합니다.
처음 사용한다면 Colab 빠른 시작으로 먼저 확인할 수 있습니다. 어떤 모델을 선택할지 고민된다면 모델 선택 가이드를 참고하세요.
API 서버로 배포:
funasr-server --device cuda→ localhost:8000에서 OpenAI 호환 엔드포인트AI Agent 연동: MCP 서버 Claude/Cursor 지원 · OpenAI API LangChain/Dify/AutoGen 지원
왜 FunASR인가?
Whisper는 단일 모델이지만, FunASR는 툴킷입니다. 용도에 맞게 Fun-ASR-Nano(중국어/영어/일본어 및 중국어 방언/지역 억양, GPU), Fun-ASR-MLT-Nano(31개 언어), SenseVoiceSmall(5개 언어 ASR와 감정·오디오 이벤트), Paraformer(저지연 스트리밍)를 선택하세요. 아래 표는 툴킷 전체의 기능과 이를 제공하는 모델 또는 파이프라인을 보여 줍니다:
| FunASR(툴킷) | Whisper | 클라우드 API | |
|---|---|---|---|
| 최고 속도 | 340배 실시간(Fun-ASR-Nano + vLLM) | 13배 실시간 | ~1배 실시간 |
| 화자 인식 | ✅ VAD + CAM++ 파이프라인 | ❌ pyannote 필요 | ✅ 추가 비용 |
| 감정 인식 | ✅ SenseVoice 제공 | ❌ | ❌ |
| 언어 수 | 체크포인트별 상이(예: Qwen3-ASR 52, MLT-Nano 31, Nano 중/영/일) | 57개 | 서비스마다 다름 |
| 스트리밍 | ✅ WebSocket(Paraformer) | ❌ | ✅ |
| CPU 사용 | ✅ 17배 실시간(SenseVoice) | ❌ 너무 느림 | 해당 없음 |
| 자체 호스팅 | ✅ 지원 (툴킷: MIT, 모델별 상이) | ✅ MIT 라이선스 | ❌ 클라우드만 |
| 비용 | 무료 | 무료 | $0.006/분~ |
벤치마크
184개 장시간 오디오(총 192분). 상세 보고서 →
| 모델 | 중국어 CER ↓ | GPU 속도 | CPU 속도 | Whisper-large-v3 대비 |
|---|---|---|---|---|
| Fun-ASR-Nano(vLLM) | 8.20% | 340배 실시간 | — | 🚀 26배 빠름 |
| SenseVoice-Small | 7.81% | 170배 실시간 | 17배 실시간 | 🚀 13배 빠름 |
| Paraformer-Large | 10.18% | 120배 실시간 | 15배 실시간 | 🚀 9배 빠름 |
| Whisper-large-v3-turbo | 21.71% | 46배 실시간 | ❌ | 3.4배 빠름 |
| Whisper-large-v3 | 20.02% | 13배 실시간 | ❌ | 기준선 |
핵심: FunASR의 CPU 속도가 Whisper의 GPU 속도보다 빠릅니다.
최신 소식
- MOSS-Transcribe-Diarize를 FunASR service, Docker, Kubernetes, vLLM/SGLang workflow, FunClip에 통합해 긴 오디오 ASR, timestamp, 익명 speaker label을 한 번에 처리합니다. MOSS 배포 ->
- FunASR 1.4.12는 audio compute가 FP16일 때 Fun-ASR-Nano vLLM 출력을 안정화합니다. Qwen3 decoder는 BF16을 사용하며 BF16 미지원 GPU에서는 FP32를 선택할 수 있습니다.
python -m pip install -U "funasr==1.4.12". Release -> - Production deployment에 더 빠르고 안정적인 realtime serving과 Linux, macOS, Windows 10개 target용 llama.cpp package를 추가했습니다. GPU service -> · CPU / edge package ->
전체 변경 기록과 download asset은 GitHub Releases에서 확인할 수 있습니다.
설치
pip install funasr
요구사항: Python ≥ 3.8, PyTorch ≥ 1.13, torchaudio
모델 목록
| 모델 | 작업 | 언어 | 파라미터 | 링크 |
|---|---|---|---|---|
| Fun-ASR-Nano | 인식 | 중/영/일 + 중국어 방언 | 800M | ⭐ 🤗 GGUF |
| Fun-ASR-MLT-Nano | 인식 | 31개 언어 | 800M | ⭐ 🤗 |
| SenseVoiceSmall | 인식 + 감정 + 이벤트 | 중/영/일/한/광둥어 | 234M | ⭐ 🤗 GGUF |
| Paraformer-zh | 인식 + 타임스탬프 | 중/영 | 220M | ⭐ 🤗 |
| Qwen3-ASR | 인식, 52개 언어 | 다국어 | 1.7B | 사용법 |
| GLM-ASR-Nano | 인식, 17개 언어 | 다국어 | 1.5B | 사용법 |
| Whisper-large-v3-turbo | 인식 + 번역 | 다국어 | 809M | 사용법 |
배포
# OpenAI 호환 API (권장)
pip install funasr fastapi uvicorn python-multipart
funasr-server --device cuda
# 오프라인 장시간 ASR + 익명 speaker label:
funasr-server --model moss-transcribe-diarize --device cuda:0
# Docker 스트리밍 서비스
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12
MOSS service / Docker / Kubernetes / vLLM / SGLang / LocalAI / FunClip guide →
CPU/엣지에서 Python 없이 오프라인 ASR만 필요하다면 llama.cpp / GGUF 런타임을 사용할 수 있습니다: funasr.com/deploy/llama-cpp · Fun-ASR-Nano-GGUF · SenseVoiceSmall-GGUF.
Colab quickstart → · OpenAI API example → · Client recipes → · Workflow recipes → · Postman collection → · OpenAPI spec → · Security guide → · Deployment matrix → · 배포 문서 → · Agent 연동 →
커뮤니티
| 📖 문서 | 🐛 Issues |
| 💬 Discussions | 🤗 HuggingFace |
라이선스
- 이 저장소의 FunASR 툴킷 소스 코드: MIT License.
- 사전 학습된 모델 가중치는 별도로 라이선스됩니다. 각 모델 카드에 표시된 라이선스를 확인하세요. 모델 카드가 이 저장소의 FunASR Model Open Source License Agreement를 가리키는 경우 해당 조건이 적용됩니다.