💡 核心定位
FunASR 是阿里达摩院开源的语音识别工具框架,不是单个模型,而是一个包含多个 ASR 模型和配套组件的完整工具箱。
- 🧰 框架:包含 Paraformer、SenseVoice、VAD、标点恢复等多个组件
- 🏠 本地部署:pip install 后即可在自己的服务器上运行,无需调用云端 API
- 💰 零 token 消耗:不产生 API 调用费用,只消耗自有服务器算力
- 🔓 开源协议:MIT License(大部分模型),可商用
FunASR(框架/工具箱)
├── Paraformer-zh → 中文离线语音识别(大文件转写)
├── Paraformer-zh-streaming → 中文实时流式识别(对应云端 paraformer-realtime-v2)
├── SenseVoice-Small → 多语种识别 + 情感/事件检测
├── FSMN-VAD → 语音端点检测(判断何时开始/停止说话)
├── CT-Transformer → 标点恢复(给识别结果加标点)
├── CT-Punc → 标点预测(轻量版)
└── ... 其他组件
关键区分:
| 名词 | 指什么 |
|---|---|
| FunASR | 开源框架(GitHub: modelscope/FunASR) |
| Paraformer | FunASR 中的一个 ASR 模型(非自回归端到端) |
| paraformer-realtime-v2 | 阿里云百炼上 Paraformer 的实时流式版本(商业服务) |
| paraformer-v1 | 阿里云百炼上 Paraformer 的离线文件转写版本(商业服务) |
简单说:Paraformer 是 FunASR 框架里的核心 ASR 模型,阿里云百炼的 paraformer-realtime-v2 就是 Paraformer 的云端商业托管版。
| 维度 | FunASR 开源版 | 阿里云百炼云端版 |
|---|---|---|
| 模型架构 | 相同 | 相同 |
| 模型权重 | 开源发布(同一套训练) | 同源,可能有量化优化 |
| 识别效果 | 基本一致 | 基本一致 |
| 热词支持 | ✅ 支持 | ✅ 支持 |
| 流式识别 | ✅ paraformer-zh-streaming | ✅ paraformer-realtime-v2 |
| VAD | ✅ FSMN-VAD(内置) | 云端内置 |
| 标点恢复 | ✅ CT-Transformer | 云端内置 |
| 部署方式 | 自己服务器 | 无需部署,API 调用 |
| 费用 | 零 API 费(自有算力) | 0.00024 元/秒 |
| 并发能力 | 取决于自己的 GPU | 阿里云弹性伸缩 |
| 维护责任 | 自己维护 | 阿里云运维 |
| 数据隐私 | 数据不出本地 | 数据经过阿里云 |
| 方言支持 | 需自行配置 | 开箱即用 |
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4 核 | 8 核+ |
| 内存 | 8 GB | 16 GB+ |
| GPU | 可选(CPU 也能跑,但慢) | NVIDIA T4/A10/V100 |
| 显存 | ~2 GB(Paraformer-zh) | 4 GB+(含 VAD+标点) |
| 磁盘 | ~3 GB(模型文件) | 10 GB+ |
| Python | 3.8+ | 3.10 |
| OS | Linux(推荐)/ Windows / macOS | Ubuntu 22.04 |
# 安装 FunASR(含 PyTorch)
pip install funasr
# 如果已有 PyTorch,只装 FunASR
pip install funasr --no-deps
# 安装模型scope(用于下载模型)
pip install modelscope
from funasr import AutoModel
# 加载 Paraformer 中文离线模型(自动下载)
model = AutoModel(
model="paraformer-zh",
vad_model="fsmn-vad", # 语音端点检测
punc_model="ct-punc", # 标点恢复
# device="cuda:0", # 指定 GPU(默认自动选择)
)
# 识别音频文件
result = model.generate(input="audio.wav")
print(result[0]["text"])
# 输出:带标点的完整文本
from funasr import AutoModel
# 加载流式模型
model = AutoModel(
model="paraformer-zh-streaming",
vad_model="fsmn-vad",
punc_model="ct-punc",
)
# 流式识别(逐 chunk 送入)
import soundfile
speech, sample_rate = soundfile.read("audio.wav")
# 模拟流式输入(每次送 10 秒)
chunk_size = [0, 10, 5] # [左看秒数, 右看秒数, 步长]
encoder_chunk_look_back = 4
decoder_chunk_look_back = 1
result = model.generate(
input=audio_data,
chunk_size=chunk_size,
encoder_chunk_look_back=encoder_chunk_look_back,
decoder_chunk_look_back=decoder_chunk_look_back,
)
print(result[0]["text"])
from funasr import AutoModel
model = AutoModel(
model="iic/SenseVoiceSmall",
vad_model="fsmn-vad",
punc_model="ct-punc",
# spk_model="cam++", # 可选:说话人分离
)
result = model.generate(input="audio.wav")
# 输出包含:文本 + 情感标签(happy/sad/angry/neutral)+ 事件标记
FunASR 开源版同样支持热词,通过 hotword 参数传入:
from funasr import AutoModel
model = AutoModel(
model="paraformer-zh",
vad_model="fsmn-vad",
punc_model="ct-punc",
hotword="海启星:5 龘思:4 外业通:4 天文潮:3", # 格式:词:权重,空格分隔
)
result = model.generate(input="audio.wav")
# 格式:词语:权重,多个词用空格分隔
hotword="海启星:5 龘思:4 外业通:4 智数通:4 培训通:3"
权重含义与云端版一致(1~5,越大越优先)。
| 维度 | FunASR 开源版 | 阿里云百炼云端版 |
|---|---|---|
| 传递方式 | 每次推理时传 hotword 字符串 | 预编译(传 ID)或即时(传字典) |
| 持久化 | 不持久化(每次调用都传) | 预编译热词持久化在云端 |
| 管理接口 | 无(代码里直接写) | VocabularyService API |
| 效果 | 相同 | 相同 |
| 子系统 | 当前 ASR 方案 | 是否 FunASR |
|---|---|---|
| ping_04 | 阿里云 paraformer-realtime-v2(云端 API) | 是(云端托管版) |
| hqxbot | 阿里云 paraformer-v1(云端 API) | 是(云端托管版) |
| HXXedge 2.1.0 | 阿里云 paraformer-realtime-v2(云端 API) | 是(云端托管版) |
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 当前 ping_04 正常运行 | 保持云端 | 零运维、弹性伸缩、效果一致 |
| 数据隐私要求高(如涉密对话) | 本地部署 | 数据不出服务器 |
| 调用量极大(每月数万元 API 费) | 本地部署 | 自有 GPU 边际成本更低 |
| 需要离线/断网环境 | 本地部署 | 不依赖互联网 |
| 想尝试 SenseVoice 情感检测 | 本地部署 | 云端暂无 SenseVoice 流式版 |
| 小量调用(每月几十元) | 保持云端 | 不值得运维 GPU 服务器 |
假设每天 100 次语音对话,每次 30 秒:
| 方案 | 月费用 | 备注 |
|---|---|---|
| 阿里云 API | ~216 元 | 0.00024 × 30 × 100 × 30 |
| 本地 GPU 服务器 | ~300~800 元/月 | 云 GPU(如 AutoDL A10) |
| 本地自有 GPU(一次性) | ~0 元/月 | 电费 + 折旧,长期最省 |
结论:调用量小时云端划算,调用量大时本地划算。平衡点约在每月 500~1000 元 API 费时。
FunASR 提供了开箱即用的 WebSocket 服务端,可直接替换阿里云的流式 ASR 端点:
# 启动 FunASR WebSocket 服务
python -m funasr.bin.ws_serve_main \
--model paraformer-zh-streaming \
--vad-model fsmn-vad \
--punc-model ct-punc \
--host 0.0.0.0 \
--port 10095 \
--ngpu 1
前端 WebSocket 协议与阿里云 DashScope 类似,迁移时主要改连接地址和鉴权方式。
FunASR 首次加载模型时会自动从 ModelScope 下载到 ~/.cache/modelscope/,约 1~3 GB。如果服务器无法访问外网,需提前离线下载并指定本地路径。
| 硬件 | Paraformer-zh 速度 | 适用场景 |
|---|---|---|
| GPU(T4/A10) | 实时率 < 0.1(比实时快 10 倍) | 生产环境 |
| CPU(8 核) | 实时率 ~0.5(比实时慢 2 倍) | 开发测试、低并发 |
| 维度 | FunASR Paraformer | Whisper large-v3 |
|---|---|---|
| 中文效果 | ⭐⭐⭐⭐⭐(中文优化) | ⭐⭐⭐⭐(多语种通用) |
| 速度 | 快(非自回归) | 慢(自回归) |
| 流式支持 | ✅ 原生支持 | ❌ 需分段模拟 |
| 热词 | ✅ 支持 | ❌ 不支持 |
| 语种数 | 中英日韩+方言 | 99 种 |
| 情感检测 | ❌(SenseVoice 才有) | ❌ |
| 开源协议 | MIT | MIT |
结论:中文场景 FunASR 全面优于 Whisper;多语种/小语种场景 Whisper 覆盖更广。