ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

用 FunASR 迁移评测基准脚本,在本地公平对比 Whisper 与云端 ASR

用 FunASR 迁移评测基准脚本,在本地公平对比 Whisper 与云端 ASR 用 FunASR 迁移评测基准脚本在本地公平对比 Whisper 与云端 ASR【免费下载链接】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 仓库中的迁移评测示例examples/migration/它面向已有 Whisper、OpenAI 音频 API 或云端 ASR 流水线的团队用于在真实业务音频上、切换方案之前完成一次可复现的本地评测。读完本文你将掌握benchmark_funasr.py的全部命令行参数、results.jsonl与summary.md两种输出的字段含义与指标计算方式以及从评测到部署选型的完整迁移方法论。迁移评测要解决什么问题从 Whisper、OpenAI 音频 API 或云端 ASR 迁移到 FunASR最大的风险不是能不能跑通而是换方案之后质量、速度、成本和部署形态是否真的更合适。迁移评测示例的核心设计原则很明确脚本只负责测量 FunASR 这一侧它本身不宣称准确率——你需要用同一批代表性音频分别运行旧方案和 FunASR再用人工审阅或你现有的 WER/CER 流程比较转写质量。这意味着评测结论由你的数据、你的硬件和你的评估流程决定而不是由单个干净 demo 文件决定。该脚本通过两种输出让对比变得可复现、可量化results.jsonl每个音频文件一条 JSON 记录包含文本、耗时、音频时长、实时倍速RTF、模型、设备与错误信息summary.mdMarkdown 汇总包含运行配置、总体速度、逐文件预览和下一步对比建议。快速开始在一批音频上跑 FunASR 评测在仓库根目录下对一批代表性音频执行完整评测含说话人分离模型python examples/migration/benchmark_funasr.py \ --input /path/to/audio_samples \ --recursive \ --model iic/SenseVoiceSmall \ --device cuda \ --spk-model cam \ --output-dir outputs/funasr_migration_eval \ --metadata baselinewhisper-large-v3参数含义一览参数作用--input必填音频文件或音频目录目录下会按扩展名过滤--recursive递归扫描输入目录下的所有子目录--modelFunASR 模型名或 ModelScope/Hugging Face 模型 ID默认iic/SenseVoiceSmall--device推理设备cpu、cuda或mps--spk-model可选说话人模型如cam开启后结果带说话人信息--output-dir输出目录默认outputs/migration_benchmark--metadata自由形式的keyvalue元数据可重复传入会写进 summary例如--metadata baselinewhisper-large-v3--metadata baselinewhisper-large-v3这类参数非常关键它把旧基线是谁直接记录进 summary保证评测报告自洽可追溯。CPU smoke test先跑通再上 GPU迁移评估的第一步往往是低成本验证。脚本默认设备就是cpu配合一个小音频目录即可完成可移植的冒烟测试python examples/migration/benchmark_funasr.py \ --input ./samples \ --model iic/SenseVoiceSmall \ --device cpu \ --output-dir outputs/funasr_cpu_smokeCPU 冒烟测试的价值在于在没有任何 GPU 资源的前提下先验证模型下载、设备选择、输出结构是否符合预期再决定是否投入 GPU 做完整评测。部署选型表 也明确建议先做 CPU 可复现的 smoke test再迁移到 GPU 服务这与评测脚本的设计目标一致。脚本参数详解从源码看每个开关的作用所有参数定义在 examples/migration/benchmark_funasr.py 的parse_args()中下面按源码逐个展开参数默认值源码行为说明--input/-i必填接受单个文件或目录目录不存在时抛出FileNotFoundError并退出--output-dir/-ooutputs/migration_benchmark输出目录会自动mkdir(parentsTrue, exist_okTrue)写入results.jsonl和summary.md--model/-miic/SenseVoiceSmall可以是 FunASR 模型别名也可以是 ModelScope/Hugging Face 完整模型 ID--device/-dcpu支持cpu、cuda、mps默认 CPU 便于先行验证--vad-modelfsmn-vadVAD 模型传none会禁用 VAD源码中vad_model None if args.vad_model.lower() none--spk-model空字符串可选说话人模型如cam仅在非空时才会传入AutoModel--languageauto传给model.generate的语言提示--batch-size1传给model.generate的批量大小--recursive/-r关闭递归时用path.rglob(*)否则用path.iterdir()--extensions见下目录扫描时过滤的音频扩展名列表可传多个值--metadata空可重复传入的keyvalue分割后写入 summary脚本内置的音频扩展名集合源码 examples/migration/benchmark_funasr.py覆盖了常见格式.wav、.mp3、.flac、.m4a、.aac、.ogg、.opus、.wma。扩展名匹配前会统一转小写并自动补.前缀normalize_extensions因此--extensions wav MP3与--extensions .wav .mp3等价。输出一results.jsonl 的字段与语义每条音频生成一个 JSON 对象写入一行ensure_asciiFalse保持中文可读字段包括字段含义input文件在输入目录下的相对路径单文件模式为完整路径path音频文件的绝对路径duration_seconds音频时长秒优先用soundfile读取采样率与帧数WAV 文件失败时回退到标准库wave模块解析model/device/language本次运行的模型、设备与语言提示保证结果可复现elapsed_seconds单文件推理耗时秒用time.perf_counter()计时realtime_factor实时倍速 音频时长 / 推理耗时text识别文本经过富文本后处理剥离情感/事件标签error失败时记录异常repr(exc)成功时该字段不存在注意两个细节其一识别文本经过 funasr/utils/postprocess_utils.py 的rich_transcription_postprocess处理源码中的extract_text它会去掉|EMO|、|Event|等富文本标签让 WER/CER 对比基于干净的表面文本其二单文件推理失败不会中断整个评测——异常被捕获后写入error字段并继续处理后续文件这正好用于评估失败文件率这一运营风险指标。输出二summary.md 的聚合指标summary.md由 markdown_summary() 生成包含四个部分运行配置输入路径、模型、设备、VAD 模型、说话人模型、语言、batch size、模型加载耗时model_load_seconds以及所有--metadata附加项——模型加载时间被单独记录用于把冷启动与稳态吞吐分开聚合结果文件总数、成功数、失败数、已知音频总秒数、推理总秒数、聚合实时倍速总音频时长 / 总推理耗时仅在两者均已知时给出逐文件表格每行一个文件列出音频秒数、推理秒数、RTF、状态ok/error与前 120 字符文本预览表格分隔符|与换行会被转义下一步对比建议在同一批文件上运行 Whisper 或云端基线、用人工审阅或 WER/CER 比较、保持模型下载与预热时间与稳态吞吐分离。聚合 RTF 是最直观的吞吐信号RTF 为 1.0 表示转写速度和音频播放速度相当小于 1.0 意味着处理比实时更快。但脚本不替你下结论正如其 docstring 所述它只测量迁移测试中 FunASR 这一侧。底层调用链脚本如何驱动 AutoModel脚本的核心逻辑在 main()调用链非常简洁解析参数 → 扫描音频文件列表无匹配文件时打印错误并以退出码 2 结束组装模型参数model、vad_modelnone时置空、device有spk_model时追加AutoModel(**model_kwargs)加载模型并记录加载耗时逐文件调用model.generate(input音频路径, language..., batch_size...)记录推理耗时并计算 RTF。AutoModel.generate的调度逻辑见 funasr/auto/auto_model.py配置了vad_model时自动路由到inference_with_vad()长音频 VAD 切分 拼接未配置时走inference()单句直接识别。也就是说默认的--vad-model fsmn-vad让评测自动覆盖长音频分段这一真实生产场景而--vad-model none可以单独考察纯 ASR 模型的单句性能。此外generate支持文件路径、URL、numpy 数组、列表和 bytes 等多种输入language、batch_size、use_itnSenseVoice 的逆文本正则化等运行时参数均可透传。评测对照表新旧方案要记录哪些字段原文档给出的对照表是评测报告的核心骨架完整继承如下字段为什么重要音频时长、语言、领域、采样率、说话人数保证对比的代表性覆盖你的真实负载模型名、版本、设备、CUDA/PyTorch 版本保证结果可复现模型加载时间 vs 推理时间区分冷启动与稳态吞吐WER/CER 或人工审阅记录捕捉速度之外的质量差异失败文件率与错误信息上线前暴露运营风险迁移指南docs/migration_from_whisper.md进一步补充了完整检查清单音频的语言/领域/采样率/声道数/说话人数、模型名与版本、FunASR 与 Python/PyTorch/CUDA 版本、Docker 镜像 tag、设备模式、batch size、流式 chunk size、是否排除 warmup/模型下载时间以及姓名、数字、标点、说话人分离、时间戳、领域词等质量维度还有延迟、吞吐、内存、每小时音频成本和失败文件比例等运营维度。这些字段与--metadata机制配合恰好能写进 summary 形成一份完整迁移报告。从评测到迁移完整的评估与上线路径迁移评测不是孤立的脚本它与整个迁移方法论配套使用。结合 docs/migration_from_whisper.md推荐的评估计划是挑选 20–50 条代表性音频覆盖短音频、长录音、噪声、多说话人、目标语言和方言按生产方式运行当前 Whisper 或云端 ASR保存转写结果、延迟、成本和失败样例用本脚本对同一批音频运行 FunASR生成results.jsonl与summary.md用人工审阅或 WER/CER 流程比较不看单个干净 demo若应用已使用 OpenAI 风格客户端再用 OpenAI 兼容 API 做 smoke test将 warmup、模型下载、设备、GPU/CPU 型号、batch size、音频时长与稳定吞吐分开记录。迁移后的部署路径可参考 部署选型表 选择最小满足需求的方案Python API 适合离线评测与内部作业OpenAI 兼容 APIexamples/openai_api/适合已支持 OpenAI 音频接口的应用Runtime WebSocket 服务适合实时字幕与客服流式识别批量脚本 examples/batch_asr_improved.py 适合归档与批量离线处理。功能映射上Whisper 文件转写对应 SenseVoice/Paraformer/Fun-ASR-Nano 选型见 模型选择指南Whisper pyannote 对应spk_modelcam配合 VAD 与标点OpenAI 音频 API 对应 OpenAI 兼容接口实时字幕对应 Runtime 服务。上线前还需要在代表性评测通过前保留旧流水线作为回退先做内部 endpoint 或离线批处理再对外暴露为每个请求记录 request id、音频时长、模型、设备、延迟和错误类型在 runbook 中固定模型别名与部署命令并测试噪声、静音、多人重叠、长文件、非 UTF-8 文件名和网络中断等边界场景。结论examples/migration/benchmark_funasr.py是一个刻意只测 FunASR 一侧的评测工具它把代表性音频集的转写文本、推理耗时、实时倍速和错误信息沉淀为机器可读的results.jsonl同时用summary.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),仅供参考
返回列表