尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
FunASR llama.cpp/GGUF 运行时 vs whisper.cpp:中文语音识别 CPU 基准测试全解(数据、指标口径与内置 FSMN-VAD 实现)
FunASR llama.cpp/GGUF 运行时 vs whisper.cpp中文语音识别 CPU 基准测试全解数据、指标口径与内置 FSMN-VAD 实现【免费下载链接】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 仓库中的 runtime/llama.cpp/BENCHMARKS.md 及其配套脚本 runtime/llama.cpp/benchmarks/README.md、compute_cer.py完整解读 FunASR 的 llama.cpp/GGUF 纯 C 运行时与 whisper.cpp 在中文语音识别上的对比结果184 条真人普通话音频、micro-CER normalize_zh 指标口径、8 线程 CPU 实时率RTF以及内置 ggml FSMN-VAD 分段器的源码级实现细节。读完后你将掌握这套基准测试的完整数据、可复现流程以及理解为什么 FunASR 模型在中文 CPU 场景下同时领先于精度和速度背后的架构原因。基准测试设定数据集、指标与硬件口径对比的核心结论先行在中文 ASR、CPU 场景下FunASR 在每个模型档位上都比 whisper.cpp 准确约 2.7 倍且速度更快。这一结论建立在严格的口径控制之上数据集184 条带人工标注参考文本的真人普通话音频FunASR 标准基准集单条时长约 44–60 秒参考文本与时长记录在testset.json中格式为{id/key, ref, duration}列表精度指标micro-CERΣ 编辑距离 / Σ 参考字符数跨全部文件汇总而非逐文件平均归一化函数为normalize_zhre.sub(r[^\w一-鿿], , text).upper()即去除标点与空白、保留单词字符与 CJK 汉字、转大写SenseVoice 的|...|元信息标签语言/事件/情感在计算前先行剥离。这是 FunASR 的官方口径也是其公开发布的 fp32 参考数字所采用的口径macro-average 或简化归一化会给出不同且非官方的数字本基准不采用速度指标RTF Σ 计算耗时 / Σ 音频时长模型加载时间不计入所有系统统一 8 线程以保证公平whisper.cpp使用 ggml 的base/small/large-v3-turbo三种模型强制中文-l zh启用其内置 30 秒窗口切分内部 windowing不加时间戳输出-ntFunASR 侧使用 llama.cpp 运行时Q8 LLM / f16 编码器fsmn-vad分段max_single_segment_time30000SenseVoice 侧开启use_itnTrue以对齐参考条件。结果总表精度与速度逐档位对比系统CERmicro, normalize_zh越低越好速度越高越好模型体积FunASR Fun-ASR-Nano8.06fp32 参考/8.42Q8 运行时LLM 解码较慢精度第一编码器 Qwen3-0.6B GGUFFunASR SenseVoiceSmall7.81fp32 参考/8.17Q8 运行时约 20× 实时449 MBf16FunASR Paraformer10.18fp32 参考/9.89Q8 运行时约 21× 实时401 MBf16whisper.cpp base31.339.9×142 MBwhisper.cpp small22.124.6×466 MBwhisper.cpp large-v3-turbo23.153.2×1.6 GB每个 FunASR 行给出两个数字fp32 PyTorch 参考值funasr.com 与模型卡上公布的那个数和本次实测的Q8 llama.cpp CPU 运行时值。两者之间约 0.3% 的差距来自 int8 量化 VAD 分段边界的正常损耗而 Q8 正是 CPU/边缘部署的真实配置。无论取哪个口径FunASR 约 8–10% 对 whisper.cpp 22–31% 的 CER约 2.7 倍的精度差距在所有档位上均成立。脚注Fun-ASR-Nano 的解码端是一个自回归 0.6B LLM比编码器单遍的 SenseVoice/Paraformer 慢但它是精度领先者待 CLI 将模型加载时间与计算时间彻底分离后其 RTF 才有干净口径。分段口径与透明度引用数字前必读原文档特别强调在引用这些数字之前先读这段各系统使用各自自然的分段策略FunASR 用fsmn-vad前端分段 → ASR → 拼接whisper.cpp 用内置 30 秒窗口。这是系统级system-level的公平对比。引擎内置 VAD 已实现一个原生 ggml FSMN-VAD 被直接编译进二进制--vad fsmn-vad.gguf。不带任何 Python 前端的裸二进制即可达到参考级端到端水平SenseVoiceSmall8.01%、Paraformer9.85%、Fun-ASR-Nano8.30%micro, normalize_zh, 完整 184 条。内置 C VAD 与 PyTorchfsmn-vad前端对齐分段边界误差在 ~10 ms 以内CER 还略优运行时因此完全自包含。完全不加 VAD整段直解作为对照SenseVoiceSmall 9.99%、Paraformer 12.82%——因为长音频被当作单一语段解码属于分布外out-of-distribution输入而这正是内置 VAD 要修复的问题。为什么 FunASR 在中文上领先原文档给出两条原因均可在仓库中印证训练数据。SenseVoice / Paraformer / Fun-ASR-Nano 主要在大规模普通话数据上训练Whisper 是通用多语言模型中文只是其中一小部分切片。在中文同音字上Whisper 会犯 FunASR 模型不犯的替换错误见下一节实例。架构决定速度。Paraformer 是非自回归的CIF 预测器 单遍解码器SenseVoiceSmall 是编码器 CTC单次前向而 Whisper 是自回归的每个输出 token 走一步。从源码结构看这一点也体现在各工具的实现上DESIGN.md 中明确 Paraformer 的 CIF 预测器在 host C 上运行、SAN-M 解码器单遍并行出结果而 Fun-ASR-Nano 的 Qwen3-0.6B 解码端则是逐步llama_decode。定性示例002 号音频片段一条真实音频上各系统的输出对比直观展示中文同音字差距系统输出节选参考文本我想问我在滨海新区有房…所以我必须拿到抚养权FunASRNano / SenseVoice / Paraformer…我在滨海新区有房…拿到抚养权… ✓whisper base…我在冰海心区有房…我想要扶养权…上学方面… ✗whisper small…我在冰海新区有房…我想要抚养全… ✗whisper large-v3-turbo…滨海新区…上学方面… ✗即使 whisper 最强档位 large-v3-turbo 也能纠正地名但方面/方便之类的同音字错误依然保留——而 FunASR 三个模型在此例上全部正确。内置 FSMN-VAD 的源码级实现BENCHMARKS.md 中引擎内置 VAD 已实现这句话背后的实现就在仓库中值得深入一读单头文件实现runtime/llama.cpp/funasr-common/funasr_vad.h 以单头文件形式暴露funasr_vad_segments()输入 16 kHz 单声道波形输出[start_ms, end_ms]语音段列表。文件头注释说明其前端80-mel fbank LFR m5/n1 CMVN与 FSMN 编码器已与 PyTorch fsmn-vad 做了 bit 级验证host 端状态机复刻了 PyTorch 的E2EVadModelDEFAULT_SILENCE_SCHEDULE、按 chunk 步进在 184 条基准集上分段边界与fsmn-vad.generate误差在 1 帧10 ms以内。前端参数采样率 16000窗长 400 样本 / 帧移 160 样本即 25 ms / 10 ms 帧512 点 FFT80 个三角 mel 滤波20–8000 Hz预加重 0.97LFR 堆叠 m5、n1 得到 400 维特征再施加cmvn.shift/cmvn.scale归一化见 funasr_vad.h#L25-L87。FSMN 编码器4 层 FSMN、lorder20的时域深度卷积以逐 tap 的 f32 移位累加方式在 ggml 图上实现ggml_pad_extggml_view_2d 逐 tap 乘累加输出 248 维帧级后接 softmax见 funasr_vad.h#L96-L109。状态机关键参数与 PyTorch 默认配置一一对应每帧 10 ms滑动窗 200 ms20 帧sil_to_speech与speech_to_sil阈值均为 150 ms15 帧端点回看 100 msspeech_noise_thres0.5判帧(1-sil) sil 0.5记为语音帧结束静音阈值由DEFAULT_SILENCE_SCHEDULE随累计时长阶梯下调10 s 内 2000 ms → 60 s 后 100 ms并按 60 s chunk 边界步进max_seg由max_seg_ms控制单段超长即强制切出见 funasr_vad.h#L113-L159。CLI 接线以 SenseVoice 工具为例--vad指定 GGUF 路径、--vad-maxseg控制单段上限默认 30000 ms正好对应基准方法中的max_single_segment_time30000见 funasr-sensevoice.cpp#L257-L268 与 L343-L360。三个 ASR 工具sensevoice / paraformer / nano CLI均支持该参数。权重导出export_vad_gguf.py 将 fsmn-vad 的 checkpointmodel.ptam.mvn打包为 GGUF写入vad.*架构元信息与 CMVN 张量并对 FSMN 卷积核做(C,1,K,1) → (K,C)的 tap 主序转置以匹配 C 移位累加的实现。完整复现步骤复现材料在 runtime/llama.cpp/benchmarks/ 下核心是 compute_cer.pypython compute_cer.py --refs testset.json --hyp_dir hyps/ [--time_file times.txt]testset.json是{id/key, ref, duration}列表hyps/{key}.txt是各系统对每条音频的转写结果times.txt每行key compute_seconds。脚本内部实现与文档口径完全一致normalize_zh先剥离|...|标签再做re.sub(r[^\w一-鿿], , s).upper()见 compute_cer.py#L16-L18编辑距离用 numpy 动态规划计算micro-CER 汇总为ΣE/ΣN×100RTF 输出为Σ计算时间/Σ音频时长见 compute_cer.py#L50-L60。FunASRllama.cpp 运行时产生假设文本逐条音频执行# SenseVoice / Paraformer先输出 ids再用 detok 转文本 build/bin/llama-funasr-sensevoice -m sensevoice-small.gguf -a $k.wav $k.ids python ../sensevoice/detok.py model/chn_jpn_yue_eng_ko_spectok.bpe.model $k.ids $k.txt build/bin/llama-funasr-paraformer -m paraformer.gguf -a $k.wav $k.ids python ../paraformer/detok_paraformer.py model/tokens.json $k.ids $k.txt # Fun-ASR-Nano直接输出文本 build/bin/llama-funasr-cli --enc funasr-encoder.gguf -m qwen3-0.6b-q8_0.gguf -a $k.wav --chunk 15 $k.txt计算耗时从各工具的 stderr 中读取encode … s/enc … dec … s。whisper.cpp 侧whisper-cli -m models/ggml-size.bin -l zh -nt -t 8 $k.wav $k.txt # stderr 中有 total time/load timeRTF 计算时间 (total − load) ms。注意 benchmarks/README.md 强调所有系统必须使用相同线程数此处-t 8/ 8 线程才能得到公平 RTF。模型获取无需自建 Python ML 环境./download-funasr-model.sh sensevoice或paraformer/nano/fsmn-vad即可下载默认量化变体SenseVoice/Paraformer 为 q8Nano 为 encoder-f16 q8_0及配套的 FSMN-VAD GGUF见 download-funasr-model.sh 与 runtime/llama.cpp/README.md 的下载章节。注意事项与适用边界fair use这是中文基准——FunASR 的主场。Whisper 是通用多语言模型翻译、99 种语言、时间戳在英文或其他语言场景它是更强的通用选择。结论应精确表述为在中文 ASR CPU 部署场景FunASR 是精度与速度的领先方案。三个 FunASR 模型定位不同按用例选择SenseVoiceSmall 额外输出语言 ID / 情感 / 音频事件Paraformer 是普通话特化Fun-ASR-Nano 精度最高LLM 解码端速度代价相应更高。数字口径提示FunASR 侧数字含fsmn-vad分段与 Q8 量化影响引用时应同时说明分段策略与量化档位避免与 whisper.cpp 的内置窗口结果做未对齐的直接外推。延伸阅读runtime/llama.cpp/README.mdGGUF 运行时的模型矩阵、构建方式cmake -B build拉取固定版本 llama.cpp产出build/bin/llama-funasr-*全部工具、SRT 字幕输出、OpenAI 兼容 HTTP 服务端封装以及裸二进制全 184 条 micro-CERSenseVoice 8.01 / Paraformer 9.85 / Fun-ASR-Nano 8.30的汇总。runtime/llama.cpp/DESIGN.md完整系统设计——共享 SAN-M 编码器、ggml 前端kaldi fbank LFR 7/6、GGUF 权重布局与量化策略、逐阶段数值保真验证方法fbank 余弦 1.000000、编码器全层余弦 1.000000、SenseVoice CTC ids 与 PyTorch 完全一致、Paraformer 文本一致、Nano 端到端 CER 差 0.02%。runtime/llama.cpp/benchmarks/compute_cer.py 与 runtime/llama.cpp/benchmarks/README.md指标脚本与复现说明原文。【免费下载链接】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),仅供参考
RELATED

相关推荐

Ruffle 浏览器扩展 ruffle-extension 深度指南:自动替换网页 Flash 内容、版本协商与 SWF 劫持机制

Ruffle 浏览器扩展 ruffle-extension 深度指南:自动替换网页 Flash 内容、版本协商与 SWF 劫持机制

Ruffle 浏览器扩展 ruffle-extension 深度指南:自动替换网页 Flash 内容、版本协商与 SWF 劫持机制 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle Ruffle 浏览器扩展&#xff…

📅 2026/9/13 7:24:32
Redis分布式锁从SETNX到Redisson看门狗:原理、坑与实战

Redis分布式锁从SETNX到Redisson看门狗:原理、坑与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/13 7:24:32
环境变量与 PATH 完全指南:从命令查找到 API 密钥安全的实战手册

环境变量与 PATH 完全指南:从命令查找到 API 密钥安全的实战手册

环境变量与 PATH 完全指南:从命令查找到 API 密钥安全的实战手册 【免费下载链接】easy-vibe 💻 vibe coding 101|The first course for AI-native product builders. 项目地址: https://gitcode.com/GitHub_Trending/ea/easy-vibe 导读…

📅 2026/9/13 7:19:32
MORE NEWS

更多资讯

📰

像老乡鸡那样做香辣鸡杂:炖菜标准化配方、鸡杂料与分步炖煮流程全解析

像老乡鸡那样做香辣鸡杂:炖菜标准化配方、鸡杂料与分步炖煮流程全解析 【免费下载链接】CookLikeHOC 🥢像老乡鸡🐔那样做饭。已添加2026年发布的《老乡鸡菜品溯源报告 2.0中新出现的菜品。主要部分于2024年完工,非老乡鸡官方仓库。…

📰

Transformer与MoE架构:大模型演进与核心技术解析

1. 大模型架构演进背景2017年Transformer架构的横空出世,彻底改变了自然语言处理领域的游戏规则。这个基于自注意力机制的模型架构,在机器翻译任务上首次实现了完全基于注意力机制的端到端训练,其并行计算特性使得模型训练效率大幅提升。但当…

📰

Zulip Delighted 集成指南:将客户满意度调查反馈实时同步到团队聊天

Zulip Delighted 集成指南:将客户满意度调查反馈实时同步到团队聊天 【免费下载链接】zulip Zulip server and web application. Open-source team chat that helps teams stay productive and focused. 项目地址: https://gitcode.com/GitHub_Trending/zu/zulip …

📰

GoFr vs Fiber:性能导向的 fasthttp 框架与生产级全栈框架的选型对比

GoFr vs Fiber:性能导向的 fasthttp 框架与生产级全栈框架的选型对比 【免费下载链接】gofr An opinionated GoLang framework for accelerated microservice development. Built in support for databases and observability. 项目地址: https://gitcode.com/Git…

📰

MaaAssistantArknights Issue Bot 使用指南:自动标签、手动触发命令与 issue-checker 配置解析

MaaAssistantArknights Issue Bot 使用指南:自动标签、手动触发命令与 issue-checker 配置解析 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supportin…

📰

Wasp 社交内容技能深度解析:用六步逆向工程框架提取爆款内容模式

Wasp 社交内容技能深度解析:用六步逆向工程框架提取爆款内容模式 【免费下载链接】wasp The batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬