|
| 1 | +# FunASR 实测:比 Whisper 快 30 倍的开源语音识别,还自带说话人分离 |
| 2 | + |
| 3 | +> 本文适合正在使用 OpenAI Whisper 做语音转写、但遇到速度慢或中文效果差问题的开发者。 |
| 4 | +
|
| 5 | +## 背景 |
| 6 | + |
| 7 | +OpenAI Whisper 是目前最流行的开源 ASR 模型,但在生产环境中经常遇到几个痛点: |
| 8 | + |
| 9 | +1. **速度慢** — Whisper-large-v3 在 A100 上只有 13x 实时,处理 1 小时音频需要 ~5 分钟 |
| 10 | +2. **中文方言差** — 对粤语、四川话、上海话等方言识别率很低 |
| 11 | +3. **缺少说话人分离** — 需要额外集成 pyannote,增加复杂度 |
| 12 | +4. **没有流式能力** — 无法做实时字幕 |
| 13 | + |
| 14 | +这些正是 [FunASR](https://github.com/modelscope/FunASR) 解决的问题。 |
| 15 | + |
| 16 | +## 性能对比 |
| 17 | + |
| 18 | +测试条件:184 个中文会议录音,总计 192 分钟,NVIDIA A100。 |
| 19 | + |
| 20 | +| 模型 | GPU 速度 | CPU 速度 | 说话人 | 流式 | |
| 21 | +|------|---------|---------|--------|------| |
| 22 | +| **FunASR SenseVoice-Small** | **170x** 实时 | **17x** 实时 | ✅ | ❌ | |
| 23 | +| **FunASR Fun-ASR-Nano (vLLM)** | **340x** 实时 | — | ✅ | ✅ | |
| 24 | +| Whisper-large-v3-turbo | 46x 实时 | ❌ | ❌ | ❌ | |
| 25 | +| Whisper-large-v3 | 13x 实时 | ❌ | ❌ | ❌ | |
| 26 | + |
| 27 | +**关键发现:FunASR 在 CPU 上比 Whisper 在 GPU 上还快。** |
| 28 | + |
| 29 | +## 最大区别:一站式 vs 拼装 |
| 30 | + |
| 31 | +用 Whisper 搭建一个完整的转写系统,你需要: |
| 32 | + |
| 33 | +``` |
| 34 | +Whisper (ASR) + pyannote (说话人) + silero-vad (VAD) + |
| 35 | +deepmultilingualpunctuation (标点) + 自己写逻辑拼接 |
| 36 | +``` |
| 37 | + |
| 38 | +用 FunASR,**一次调用搞定**: |
| 39 | + |
| 40 | +```python |
| 41 | +from funasr import AutoModel |
| 42 | + |
| 43 | +model = AutoModel( |
| 44 | + model="paraformer-zh", |
| 45 | + vad_model="fsmn-vad", |
| 46 | + punc_model="ct-punc", |
| 47 | + spk_model="cam++", |
| 48 | +) |
| 49 | +result = model.generate(input="meeting.wav") |
| 50 | +# 输出:带说话人、时间戳、标点的结构化结果 |
| 51 | +``` |
| 52 | + |
| 53 | +## OpenAI 兼容 API:零改动迁移 |
| 54 | + |
| 55 | +如果你已经在用 OpenAI 的 Whisper API,迁移到 FunASR 不需要改一行客户端代码: |
| 56 | + |
| 57 | +```bash |
| 58 | +# 一行启动本地 ASR 服务 |
| 59 | +pip install torch torchaudio |
| 60 | +pip install funasr vllm fastapi uvicorn python-multipart |
| 61 | +funasr-server --device cuda |
| 62 | +``` |
| 63 | + |
| 64 | +```python |
| 65 | +# 客户端代码完全不变 |
| 66 | +from openai import OpenAI |
| 67 | +client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused") |
| 68 | +result = client.audio.transcriptions.create( |
| 69 | + model="fun-asr-nano", |
| 70 | + file=open("meeting.wav", "rb") |
| 71 | +) |
| 72 | +``` |
| 73 | + |
| 74 | +## 中文方言支持 |
| 75 | + |
| 76 | +这是 Whisper 生态完全没有的: |
| 77 | + |
| 78 | +- **7 大方言**:吴语、粤语、闽语、客家话、赣语、湘语、晋语 |
| 79 | +- **26 种地域口音**:河南、四川、广东、湖北、云南等 |
| 80 | +- **歌词识别**:音乐背景下的人声转写 |
| 81 | + |
| 82 | +## 什么时候选 FunASR? |
| 83 | + |
| 84 | +| 场景 | 推荐 | |
| 85 | +|------|------| |
| 86 | +| 中文会议转写 | FunASR(方言+说话人) | |
| 87 | +| 实时字幕/直播 | FunASR(流式 WebSocket) | |
| 88 | +| 批量文件处理 | FunASR(vLLM 340x 加速) | |
| 89 | +| 私有化部署 | FunASR(MIT 开源,无费用) | |
| 90 | +| 纯英文、少量使用 | Whisper 也可以 | |
| 91 | + |
| 92 | +## 开始使用 |
| 93 | + |
| 94 | +```bash |
| 95 | +pip install torch torchaudio |
| 96 | +pip install funasr |
| 97 | +``` |
| 98 | + |
| 99 | +```python |
| 100 | +from funasr import AutoModel |
| 101 | +model = AutoModel(model="iic/SenseVoiceSmall", device="cuda") |
| 102 | +result = model.generate(input="audio.wav") |
| 103 | +print(result[0]["text"]) |
| 104 | +``` |
| 105 | + |
| 106 | +更多信息: |
| 107 | +- GitHub:https://github.com/modelscope/FunASR(16K+ stars) |
| 108 | +- 官网:https://www.funasr.com |
| 109 | +- 完整评测:https://modelscope.github.io/FunASR/benchmark.html |
| 110 | +- 从 Whisper 迁移指南:https://github.com/modelscope/FunASR/blob/main/docs/migration_from_whisper.md |
0 commit comments