使用conda进行funasr本地部署:从环境配置到避坑指南
一、为什么要在本地折腾 FunASR?
第一次接到“把 FunASR 跑在笔记本上”的任务时,我的内心是拒绝的:
“不是有现成的 SaaS 吗?”
甲方一句话把我怼回来:“数据不能出内网,还得离线改模型。”
FunASR 是阿里达摩院开源的语音识别工具包,支持中文、方言、甚至带点口头禅的语音,转文字效果比通用 API 好一截。可它依赖的 PyTorch、CUDA、kaldi 三方库版本互相掐架,本地部署最常出现的画面就是:
- pip 装完 torch,import 报错
libcublas.so.x找不到 - conda 装完 cudatoolkit,运行却提示
CUDA capability sm_86 is not supported - 好不容易跑起来,一推理就 OOM,GPU 显存比钱包还干净
这篇文章把我踩过的坑一次性铺平,给只想“让它先跑起来”的新手一条活路。
二、为什么选 conda,而不是 venv / docker / pipx?
| 工具 | 优点 | 缺点 | 结论 |
|---|---|---|---|
| venv | Python 自带,轻量 | 无法管理二进制依赖(如 CUDA) | 不适合 |
| pipx | 无 | 需要手动编译,镜像大 | 新手劝退 |
| conda | 一条命令搞定 Python+CUDA+cuDNN | 体积大、源慢 | 最稳 |
| poetry | 依赖解析漂亮 | 对系统库无能为力 | 后续可迁 |
一句话:先 conda 让环境“能跑”,再考虑迁移到 poetry 或容器。
三、全流程实战:从 0 到第一次成功识别
1. 安装 Miniconda(已装请跳过)
去官网选Miniconda,别装臃肿的 Anaconda。
Windows 记得勾选 “Add Anaconda to my PATH”,否则后面conda命令找不到。
2. 创建隔离环境
# 新建一个专门给 FunASR 的 3.9 环境,名字随便取 conda create -n funasr python=3.9 -y conda activate funasrTips
- Python≥3.8 即可,但 3.9 目前兼容性最好。
- 环境名别用中文,Linux 下容易乱码。
3. 一次性装好 GPU 全家桶
# 以 CUDA 11.8 为例,30/40 系显卡通用 conda install pytorch==2.0.1 torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia验证是否成功
python - <<'PY' import torch, torchaudio print(torch.__version__, torchaudio.__version__) print("CUDA available:", torch.cuda.is_available()) PY看到True再继续,否则后面全是泪。
4. 装 FunASR 主包 + 模型仓库
# 官方源 pip install funasr -i https://pypi.org/simple # 国内镜像加速(清华) pip install funasr -i https://pypi.tuna.tsinghua.edu.cn/simple装完顺手把常用模型拖下来,省得推理时再下载:
from funasr import AutoModel # 这句会缓存到 ~/.cache/modelscope model = AutoModel(model="paraformer-zh", vad_model="fsmn-vad", punc_model="ct-punc") print("模型下载完成,大小约 1.2 G")5. 写个最小可运行脚本
# test_funasr.py from funasr import AutoModel model = AutoModel( model="paraformer-zh", # 中文通用 vad_model="fsmn-vad", # 语音活动检测 punc_model="ct-punc", # 加标点 device="cuda:0" ) wav_path = "demo_16k.wav" # 16kHz 单声道 result = model.generate(input=wav_path) print("识别结果:", result[0]["text"])把随便一段 16k 的 wav 扔进去,能出汉字就说明环境 OK。
四、conda 环境配置文件(可复现)
把下面内容保存成funasr-gpu.yaml,一键重建:
name: funasr channels: - pytorch - nvidia - conda-forge dependencies: - python=3.9 - pytorch=2.0.1 - torchvision - torchaudio - pytorch-cuda=11.8 - pip - pip: - funasr - modelscope # 模型管理使用:
conda env create -f funasr-gpu.yaml conda activate funasr五、避坑 FAQ(持续更新)
显卡驱动太老
报错CUDA driver version is insufficient
→ 升级驱动 ≥ 525,或干脆用 CPU 推理device="cpu"。CUDA 11.8 与系统 12.x 冲突
→ conda 环境里pytorch-cuda自带运行库,不影响系统目录,放心装。ffmpeg 缺失
报错ffprobe not found
→conda install ffmpeg -c conda-forge,别用 apt 版,容易版本错位。推理爆显存
→ 长音频先切分,加batch_size_s=300(单位秒),或者干脆用vad_model自动切段。Windows 下路径空格
→ 把模型缓存目录改到没空格的盘:set MODELSCOPE_CACHE=D:\models
六、性能调优小贴士
- 纯 CPU 机子:装
onnxruntime版模型,推理速度 ×2pip install funasr[onnx] - 显存 6 G 以下:加
--chunk_size 16流式识别,牺牲一点精度换稳定 - 显存 24 G 以上:把
batch_size_s拉到 600,并发跑多个文件,GPU 利用率 90%+ - 笔记本散热差:
export CUDA_LAUNCH_BLOCKING=1可降温度,但速度略慢
七、小结与下一步
跟着上面六步,你应该已经能在本地把一段 wav 扔给 FunASR,然后看到整整齐齐的中文。
conda 的好处就是“装得全、回滚快”,先把环境跑通,再去折腾微调、热词、流式接口。
如果你卡在了其他奇怪的错误,欢迎留言贴 traceback,一起把坑填平。
跑通后不妨试试点播一段方言音频,看看 FunASR 能不能把你家那边的“儿化音”也抠出来——有惊喜。