从 Whisper 或云端 ASR 迁移到 FunASR
当你已经有 Whisper、OpenAI/云端 ASR 或自研语音流水线,并想判断是否值得切到 FunASR 时,可以按这个指南评估。重点是在真实业务音频上比较质量、速度、成本和部署可行性。
什么时候值得评估 FunASR
- 音频需要留在私有环境内,不能上传到外部云服务。
- 会议、归档、媒体、客服录音等长音频需要高吞吐转写。
- 希望一条流水线内完成 VAD、标点、时间戳和说话人分离。
- 需要 OpenAI 兼容音频接口,接入 Agent、Dify、LangChain、AutoGen 或内部应用。
- 需要 WebSocket/runtime 服务支撑流式识别或实时字幕。
- 希望先用 CPU 做可复现 smoke test,再迁移到 GPU 服务。
如果你更需要完全托管服务、厂商 SLA,或你的自有评测显示目标语言/领域还不够好,可以暂时保留现有方案。
快速评估计划
- 选择 20-50 条有代表性的音频,覆盖短音频、长录音、噪声、多说话人、目标语言和方言。
- 按生产方式运行当前 Whisper 或云端 ASR,保存转写结果、延迟、成本和失败样例。
- 用教程跑 FunASR,再根据 部署选型表 选择服务路径。
- 用人工审阅或现有 WER/CER 流程比较结果,不要只看一个干净 demo 音频。
- 运行 迁移评测示例,为自己的音频目录生成 JSONL 和 Markdown 汇总。
- 如果应用已经使用 OpenAI 风格客户端,运行 OpenAI 兼容 API Python 烟测脚本。
- 分开记录 warmup、模型下载、设备、GPU/CPU 型号、batch size、音频时长和稳定吞吐。
功能映射
| 现有流程 | FunASR 路径 | 需要验证什么 |
|---|---|---|
| Whisper 文件转写 | 教程 · 模型选择 | 转写质量、时间戳、速度、模型下载、CPU/GPU 行为。 |
| Whisper + pyannote | VAD、标点和 spk_model="cam++" | 说话人标签、换人位置、重叠说话、长静音。 |
| OpenAI 音频 API 或云端批量 ASR | OpenAI 兼容 API · Kubernetes 模板 · JS/TS 配方 | /v1/audio/transcriptions、响应格式、客户端兼容性、上传限制。 |
| Dify/LangChain/AutoGen Agent 音频 | Agent 与 API 配方 或 MCP 服务 | 工具延迟、文件处理、鉴权边界、错误返回。 |
| 实时字幕或客服流式识别 | 实时示例 | 分块、断句、重连、背压、中间/最终结果行为。 |
| 字幕生成 | 字幕生成器 | 分段可读性、行长、说话人标签、SRT/VTT 兼容性。 |
| 离线归档处理 | 批处理示例 | manifest、重试、进度日志、吞吐、失败文件恢复。 |
最小本地对比
安装 FunASR,并用你基线评测里的同一条音频运行。若要评测整个目录,可以使用 benchmark_funasr.py 生成 results.jsonl 和 summary.md。
pip install funasr
from funasr import AutoModel
model = AutoModel(
model="iic/SenseVoiceSmall",
vad_model="fsmn-vad",
spk_model="cam++",
device="cuda", # 便携 smoke test 可改成 "cpu"
)
result = model.generate(input="sample.wav")
print(result)
若要做可复现的目录级评测:
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
如果要按 API 服务方式对比:
pip install funasr fastapi uvicorn python-multipart
funasr-server --model sensevoice --device cuda
curl http://localhost:8000/v1/audio/transcriptions \
-F file=@sample.wav \
-F model=sensevoice \
-F response_format=verbose_json质量与速度检查清单
- 音频时长、语言、领域、采样率、声道数和说话人数。
- 模型名、模型版本、FunASR 版本、Python/PyTorch/CUDA 版本,以及 Docker 镜像 tag。
- 硬件、设备模式、batch size、流式 chunk size,以及是否排除 warmup/模型下载时间。
- WER/CER 或人工审阅记录:姓名、数字、标点、说话人分离、时间戳、领域词。
- 延迟、吞吐、GPU/CPU 内存、每小时音频成本、失败文件比例。
- 运维要求:鉴权、上传限制、TLS、日志、监控、重试和数据留存规则。
上线检查清单
- 在代表性评测通过前,保留旧流水线作为回退。
- 先做内部 endpoint 或离线批处理,再对外暴露 API。
- 为每个请求记录 request id、音频时长、模型、设备、延迟和错误类型。
- 在 runbook 中固定模型别名和部署命令。
- 测试噪声、静音、多人重叠、长文件、非 UTF-8 文件名和网络中断。
- 遇到阻塞时,通过 Deployment Help issue 提交命令、日志、模型、设备和样本特征。