FunASR INT8 量化部署速查:3 步完成 CPU 语音识别加速
【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR
FunASR 是开源语音识别工具包,覆盖训练、推理、流式 ASR、VAD 和标点等完整链路。本文讲清 FunASR INT8 量化怎么做:模型从 880MB 压到 237MB,字符错误率保持 1.95% 不变,单条推理耗时缩短近四成。所有数据来自仓库中的实测基准文档,可直接对照。
先搞懂:INT8 量化到底改了什么
语音识别模型内部由大量权重数字组成,训练时通常用 32 位浮点数(FP32)保存,每个数字占 4 字节。INT8 量化就是把这些数字"舍入"成 8 位整数,只占 1 字节。
打个比方:FP32 像用天平称到克,INT8 像只称到斤。日常场景够用,且体积立刻缩到约 1/4。模型变小的同时,CPU 的整数乘法指令也比浮点指令快,所以推理一起变快。
量化不是免费的。舍入会引入误差,反映在识别精度上。所以量化后必须做两件事:测体积、测精度、测速度,三项都过才上线。
FunASR 的量化路线:ONNX Runtime 一条主线
FunASR 的部署模块在 runtime/ 目录下,其中 ONNX Runtime 路线是量化部署的主线。ONNX Runtime 是微软开源的模型推理引擎,FunASR 把它作为模型加载和推理的底座,并自带完整的 INT8 量化支持。
这条路线的关键信息:
- 源码与编译脚本在 runtime/onnxruntime/,基于 CMake 构建,产物是可执行的 C++ 推理程序
- 量化后的模型文件以
model_quant.onnx形式提供,配合am.mvn和config.yaml即可加载,参考 runtime/ios/Readme.md 的说明 - 离线和流式两种部署形态都有现成文档:runtime/docs/ 下的 SDK 教程覆盖了离线、在线两种接入方式
- 部署辅助脚本在 runtime/deploy_tools/,包含 CPU 环境的一键部署脚本
3 步跑起 INT8 推理
第一步:准备依赖
下载 ONNX Runtime 和 FFmpeg 两个依赖包并解压,具体下载地址见 runtime/onnxruntime/readme.md。再装两个系统库:
sudo apt-get install libopenblas-dev libssl-dev这一行装的是线性代数库和加密库,编译时链接用。
第二步:编译推理引擎
拿到仓库代码后,在 onnxruntime 目录里编译:
git clone https://gitcode.com/GitHub_Trending/fun/FunASR && cd FunASR/runtime/onnxruntime cmake -DCMAKE_BUILD_TYPE=release .. -DONNXRUNTIME_DIR=/path/to/onnxruntime-linux-x64-1.14.0 -DFFMPEG_DIR=/path/to/ffmpeg-master-latest-linux64-gpl-shared && make -j 4第一条命令克隆仓库并进入编译目录,第二条完成配置和编译。两个-D参数指向刚才解压的依赖目录,路径必须给对。
第三步:加载量化模型做推理
编译产物在build/bin下。把量化模型文件放进程序指定目录,运行即可。推理时引擎会自动使用 INT8 计算路径,无需额外开关。
两个常见坑:
- CMake 参数大小写敏感,
CMAKE_BUILD_TYPE=release写错会按默认调试模式编译,速度慢几倍 - 依赖目录填的是压缩包里的内层目录(含
include和lib的那层),不是外层目录
实测数据:小多少、快多少、精度掉多少
以下数据来自仓库基准文档 runtime/docs/benchmark_onnx.md,测试集为 AISHELL-1,环境为 Intel Xeon Platinum 8369B(支持 avx512_vnni 指令)。
体积:约 1/4,判断:压缩收益显著
- Paraformer-large(220M 参数):880MB 量化后 237MB,约 3.7 倍
- Paraformer(68M 参数):275MB 量化后 81MB,约 3.4 倍
精度:几乎无损,判断:可放心上线
- Paraformer-large:CER 1.95%,量化后仍 1.95%,完全没变
- Paraformer:CER 3.73% 量化后 3.78%,上升 0.05 个百分点,在可接受范围
速度:1.7 到 1.9 倍,判断:并发越高收益越明显
- 单任务:总耗时 2806 秒降到 1611 秒,约 1.74 倍
- 64 并发:158 秒降到 82 秒,约 1.9 倍
- RTF(处理 1 秒音频所需秒数)从 0.0044 降到 0.0023,说明高并发下 INT8 优势稳定
一个重要边界:CPU 没有 INT8 加速指令时,量化提速有限
同一文档中,不支持 avx512_vnni 的 Xeon 8163 上,单任务 INT8 只从 2959 秒降到 2814 秒,几乎无感。结论:INT8 的"快"依赖 CPU 的整数向量指令,选型部署机器时先确认支持,否则只剩"省空间"这一项收益。
适合谁用,又有哪些边界
适合的场景:
- CPU 服务器批量转写:体积缩小让内存和磁盘占用同步下降,高并发 RTF 更低
- 边缘和嵌入式设备:81MB 到 237MB 的量化模型更容易塞进终端
- 本地私有化部署:数据不出内网,识别在本地完成
需要想清楚的点:
- 追求极限精度(如低错误率的严肃转写场景)时,FP32 仍是稳妥选择
- 老 CPU 上量化提速有限,部署前先用
lscpu确认指令集 - 量化模型由项目侧提供或按仓库说明生成,不建议自行随意改量化参数,精度回测一步都不能省
资源入口汇总
- 官方文档:docs/
- 部署总览:runtime/、快速开始 runtime/quick_start.md
- ONNX Runtime 推理与量化:runtime/onnxruntime/
- CPU 实测基准数据:runtime/docs/benchmark_onnx.md
- 部署工具脚本:runtime/deploy_tools/
- 模型库与下载入口:model_zoo/
【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考