Skip to content

Latest commit

 

History

History
181 lines (135 loc) · 19.8 KB

File metadata and controls

181 lines (135 loc) · 19.8 KB

(English|简体中文|日本語|한국어)

FunASR

오프라인, 스트리밍 및 엣지 배포를 위한 산업용 음성 인식 툴킷.
ASR · VAD · 구두점 · 화자 파이프라인 · 감정 및 오디오 이벤트 모델 · OpenAI 호환 서빙

PyPI Stars Downloads Docs

modelscope%2FFunASR | Trendshift

빠른 시작 · 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 속도보다 빠릅니다.


최신 소식

  • 2026/08/29: llama.cpp runtime v0.2.4 — F16 GGUF model에서 transcript가 간헐적으로 비는 문제를 수정했습니다. Query embedding은 F16 storage를 F32로 읽지 않고 GGML F16/F32 type에 맞게 decode됩니다. 정확한 v0.2.3 AVX2 asset은 완료된 298회 실행 중 22회의 빈 출력을 재현했지만, 수정 후에는 100/100회 동일한 비어 있지 않은 결과를 냈고 Q8 model과 byte 단위로 일치했습니다. Release workflow가 동일한 exact commit에서 9개 platform archive를 빌드합니다. 수정 → · Release →
  • 2026/08/29: v1.4.6 PyPI 공개 — realtime WebSocket server는 20초 간격 ping을 유지하면서 decode queue 때문에 pong 처리가 늦어진 정상 session을 기본적으로 종료하지 않습니다. 운영 환경의 queue 및 decode latency를 측정한 뒤 양수 timeout을 명시적으로 설정할 수도 있습니다. 빈 영어 timestamp segment에서 발생하는 IndexError를 방지하고 인접 subtitle word를 읽기 쉬운 cue로 묶습니다. 업데이트: python -m pip install -U "funasr==1.4.6". GitHub Release에는 검증된 llama.cpp v0.2.3 9개 platform runtime archive도 포함됩니다. Release →
  • 2026/08/29: llama.cpp runtime v0.2.3 — backend 초기화 이후 model load, audio/VAD, graph build와 allocation, compute 단계마다 즉시 flush되는 경계 로그를 추가했습니다. vulkan backend ready 이후 발생하는 Windows AMD Vulkan 0xC0000005의 위치를 좁히기 위한 진단이며, hardware별 crash가 수정됐다고 주장하지 않습니다. 동일한 exact commit에서 Linux, macOS, Windows용 archive 9개를 공개합니다. 문제 해결 경계 → · Release →
  • 2026/08/28: v1.4.5 PyPI 공개torchaudio는 더 이상 inference의 필수 dependency가 아닙니다. Feature extraction은 사용할 수 있으면 torchaudio.compliance.kaldi를 사용하고, 그렇지 않으면 선택형 kaldi-native-fbank backend를 사용할 수 있습니다. 여전히 torchaudio가 필요한 작업은 해결 방법이 포함된 dependency 메시지를 반환합니다. 이 fallback은 Ascend 910B에서 end-to-end로 검증됐으며 70.47초 오디오를 1.15초(RTF 0.016)에 처리했습니다. 업데이트: python -m pip install -U "funasr==1.4.5". torchaudio가 없는 환경: python -m pip install -U "funasr[knf]==1.4.5". GitHub Release에는 검증된 llama.cpp v0.2.1 9개 platform runtime archive도 함께 제공됩니다. Release →
  • 2026/08/27: llama.cpp runtime v0.2.1 — Vulkan device 선택이 일치하는 integrated GPU를 허용하며, 일치하는 discrete GPU가 함께 있으면 이를 우선하고 없으면 iGPU로 fallback합니다. SHA-256을 공개한 Linux, macOS, Windows용 archive 9개를 다시 빌드하고 검증했습니다. Radeon 780M은 제보자의 실제 하드웨어 확인이 필요하며, 별도 RX 9070 XT 0xC0000005 초기화 crash는 수정됐다고 주장하지 않습니다. 다운로드 목록 및 quickstart → · Release →
  • 2026/08/26: v1.4.4 PyPI 공개 — realtime WebSocket decode가 모든 connection을 하나의 process-wide lock으로 직렬화하지 않고 호환되는 session을 batch 처리합니다. H100 regression workload에서 12-client STOP p95는 19.8초에서 0.4초로 줄었고, 16-client aggregate throughput은 8.6x에서 13.2x로 향상됐으며 client error는 0건이었습니다. 이 hotfix는 torch.amp가 없는 PyTorch release와의 호환성도 복원하고 runtime binding에서 실제 예외를 발생시킵니다. 업데이트: python -m pip install -U "funasr==1.4.4". Release →
  • 2026/08/21: v1.4.3 PyPI 공개AutoModel(vad_model="silero-vad")에서 선택형 Silero VAD adapter를 사용할 수 있으며, 밀리초 단위 구간, threshold, 8/16 kHz 입력, ONNX mode, 최대 구간 길이를 지원합니다. 업데이트: python -m pip install -U "funasr==1.4.3". Adapter 활성화: python -m pip install -U "funasr[silero]==1.4.3". 화자 수를 알고 있는 speaker diarization은 대규모 embedding을 메모리 사용량이 큰 dense spectral clustering 대신 fixed-K clustering으로 처리합니다. Release →
  • 2026/08/14: v1.4.2 PyPI 공개 — 문장부호 모델의 token 경계가 타임스탬프가 있는 ASR 단어 내부에 놓여도 문장 정렬이 올바른 자막 분할을 유지합니다. 분산 학습은 각 gradient accumulation window의 마지막 microbatch에서 DDP/FSDP gradient를 동기화하고, 해석된 설정에서 DeepSpeed/FSDP mode를 초기화합니다. 해당 GitHub 소스 tag에는 llama.cpp SRT 출력과 v0.2.0 AMD Vulkan submission 업데이트도 포함됩니다. 설치: python -m pip install -U "funasr==1.4.2". Release →
  • 2026/08/11: llama.cpp runtime v0.2.0 — upstream llama.cpp를 803b7fca로 고정하고, 하나의 검증된 workflow에서 SHA-256 값이 제공되는 Linux, macOS, Windows용 archive 9개를 공개했습니다. Fun-ASR-Nano, SenseVoice 및 Paraformer CLI는 SRT 자막을 출력할 수 있으며, Vulkan 시작 시 AMD 진단 정보와 CPU fallback을 안내합니다. AMD Windows Vulkan crash 수정은 제보자의 실제 하드웨어 확인을 기다리고 있습니다. 다운로드 목록 및 quickstart → · Release →
  • 2026/08/04: v1.4.1 PyPI 공개 — Hugging Face의 paraformer-en 별칭이 중국어 모델을 잘못 내려받지 않고 공식 영어 checkpoint를 가리키도록 수정했습니다. 이 패치에는 Fun-ASR-Nano LoRA 미세 조정과 더 안전한 checkpoint 처리도 포함됩니다. 해당 GitHub 소스 tag에는 JSONL 타임스탬프 출력, SenseVoice TensorRT 배포, OpenClaw 실시간 전사 연동도 포함됩니다. 설치: python -m pip install -U "funasr==1.4.1". Release →
  • 2026/07/31: v1.4.0 PyPI 공개AutoModel은 모델 다운로드 전에 흔한 vda_model 오타를 거부하고 올바른 vad_model 인수를 안내합니다. 따라서 VAD 기반 분할, 화자 처리 및 sentence_info가 조용히 비활성화되지 않습니다. GitHub 소스 릴리스에서는 legacy WebSocket 파일 런타임도 개선되어, 클라이언트가 명시적인 입력 종료 응답을 기다리고 서버가 대기 중인 offline, online 및 2pass 오디오를 처리한 뒤 완료 또는 오류를 반환합니다. Python 패키지 설치: python -m pip install -U "funasr==1.4.0". Release →
  • 2026/07/27: v1.3.30 PyPI 공개 — WAV, MP3, FLAC, OGG, MP4/M4A, WebM 컨테이너 형식의 오디오 바이트를 raw PCM으로 잘못 해석하지 않고 해당 코덱으로 디코딩합니다. OpenAI 호환 응답은 화자 라벨을 보존하고, 구두점이 일치하지 않아도 VAD 문장 시간을 유지합니다. 신뢰할 수 있는 브라우저 클라이언트용 CORS와 vLLM의 30초 VAD 구간 제한도 지원합니다. GitHub Release에는 데스크톱 및 서버용 9개 대상의 최신 llama.cpp 빌드도 함께 제공합니다. 설치: python -m pip install -U "funasr==1.3.30". Release →
  • 2026/07/24: v1.3.29 hotfix PyPI 공개 — SenseVoice 장시간 오디오 추론에서 word timestamp와 구두점 모델이 없을 때도 각 VAD 음성 구간을 sentence_info로 반환합니다. 자막 클라이언트는 길이가 0이거나 미디어 전체를 덮는 단일 cue 대신 인식 텍스트와 실제 밀리초 단위 시작·종료 시간을 받을 수 있습니다. 설치: python -m pip install -U "funasr==1.3.29". Release →
  • 2026/07/24: v1.3.28 hotfix PyPI 공개 — VAD로 확정된 realtime WebSocket 최종 결과가 짧은 접두사, 반복 hallucination 또는 decode 예외로 퇴화하면 현재 음성 구간을 연속해서 완전히 덮는 clean partial을 보존합니다. 짧은 STOP tail, VAD finalize, 화자 완료 처리도 동일한 안정적인 경로로 통합했습니다. SenseVoice 자막은 rich tag, 구두점, word/BPE timestamp를 올바르게 정렬해 중국어가 하나의 cue로 합쳐지거나 영어 원문이 손상되지 않습니다. 설치: python -m pip install -U "funasr==1.3.28". Release →
  • 2026/07/24: v1.3.27 PyPI 공개 — OpenAI 호환 서버가 verbose_json에 SenseVoice 감지 언어를 반환하고, vLLM fallback 후에는 캐시된 Fun-ASR-Nano AutoModel을 재사용합니다. vLLM/VAD 초기화와 fallback이 모두 실패하면 반쯤 초기화된 상태를 남기지 않아 이후 요청에서 다시 시도할 수 있습니다. 설치: python -m pip install -U "funasr==1.3.27". Release →
  • 2026/07/23: v1.3.26 PyPI 공개funasr-server --model fun-asr-nano --hub ms가 vLLM 경로와 AutoModel fallback 모두에서 ModelScope hub 선택을 존중합니다. 설치: python -m pip install -U "funasr==1.3.26". Release →
  • 2026/07/23: llama.cpp runtime v0.1.9 — Windows Vulkan용 funasr-llamacpp-windows-x64-vulkan.zip을 추가했습니다. 최신 AMD, Intel 또는 NVIDIA Vulkan 드라이버에서 SenseVoiceSmall을 독립 실행할 수 있습니다. Linux Vulkan, Windows CUDA, CPU/AVX2, Linux arm64, macOS arm64 패키지도 계속 제공합니다. Release →
  • 2026/07/22: llama.cpp runtime v0.1.8 — Linux Vulkan tarball과 Windows CUDA zip을 포함한 CPU/엣지용 GGUF 런타임입니다. 현재 다운로드와 빠른 시작: funasr.com/deploy/llama-cpp · Release →
  • 2026/05/24: v1.3.3funasr-server CLI, OpenAI 호환 API, MCP 서버. pip install --upgrade funasr
  • 2026/05/20: Qwen3-ASR (0.6B/1.7B) 추가 — 52개 언어 지원.
  • 2026/05/20: GLM-ASR-Nano (1.5B) 추가 — 17개 언어, 방언 지원.
  • 2026/05/19: Fun-ASR-Nano 및 SenseVoice는 VAD 및 CAM++와 결합하여 화자 분리 파이프라인을 구성할 수 있습니다.
  • 2025/12/15: Fun-ASR-Nano-2512 — 중국어, 영어, 일본어 및 중국어 방언 지원.

설치

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

# Docker 스트리밍 서비스
docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12

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 → · 安全 guide → · Deployment matrix → · 배포 문서 → · Agent 연동 →


커뮤니티

📖 문서 🐛 问题
💬 讨论 🤗 HuggingFace

라이선스

  • 이 저장소의 FunASR 툴킷 소스 코드: MIT License.
  • 사전 학습된 모델 가중치는 별도로 라이선스됩니다. 각 모델 카드에 표시된 라이선스를 확인하세요. 모델 카드가 이 저장소의 FunASR Model Open Source License Agreement를 가리키는 경우 해당 조건이 적용됩니다.