
FunASR 运行时部署指南服务路径选型、离线/实时转写部署与上线检查清单【免费下载链接】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/FunASRFunASR 的runtime目录聚合了面向生产环境的运行时部署方案从离线文件转写、实时语音听写含 2pass 双遍纠错到 OpenAI 兼容服务、vLLM 加速、llama.cpp GGUF 推理等。本文以仓库中的运行时部署指南为骨架结合 一键部署脚本、服务启动脚本、WebSocket 协议文档与 Python 流式服务源码完整讲解服务路径如何选型、四种转写服务如何部署与验证以及上线前必须完成的检查项。先决策再动手确定模型与协议再选容器或二进制包FunASR 运行时部署的第一原则是先确定模型和协议再选择容器或二进制包。模型决定识别能力与精度边界协议决定接入方式HTTP、WebSocket、gRPC、Triton 等两者共同决定最终选择哪个部署入口。整体选型可参考仓库根目录下的部署矩阵。同时需要特别注意两点固定版本再部署给出固定版本命令、验证硬件和已知限制避免最新即最佳的假设历史记录不构成当前容量承诺旧发布说明保留在历史记录中只作为演进参考不能直接当作当前服务的容量承诺使用。下表完整列出runtime/readme_cn.md给出的服务路径与边界说明需求入口边界Python HTTP 转写OpenAI 兼容服务API 兼容、模型质量和实时能力是不同问题。Fun-ASR-Nano 解码加速vLLM 指南原生 vLLM 与 FunASR split-engine 的权重布局和接口契约不同。本地便携 GGUF 推理llama.cpp使用匹配的平台/后端包和 GGUF 模型构建成功不等于所有设备验证通过。原生 ONNX CPU 推理ONNX Runtime输出字段见 JSONL 与时间戳契约。统一离线转写与说话人分离MOSS-Transcribe-DiarizeOpenMOSS 第三方模型输出匿名说话人标签不是实时或已知人物身份识别。长连接流式 / 双遍会话C WebSocket 协议不能向该端点发送 OpenAI HTTP 请求或其他实现的 WebSocket 消息。集群内私有 HTTP 服务Kubernetes 模板按目标集群配置资源、持久缓存、探针、上传限制和网关策略。各路径的适用场景解读OpenAI 兼容服务面向希望以标准 Chat Completions 风格接入的团队注意API 兼容不等于模型质量等价也不同于实时能力需按实际任务评测vLLM 指南面向 Fun-ASR-Nano 的高吞吐解码加速但原生 vLLM 与 FunASR split-engine 在权重布局和接口契约上并不相同不能混用llama.cpp GGUF主打本地便携推理必须使用匹配的平台/后端包与对应 GGUF 模型ONNX Runtime是纯 CPU 原生推理路径输出字段格式含时间戳契约需以 onnxruntime_binary_output_zh.md 为准C WebSocket 服务是低延迟流式与双遍2pass会话的主入口协议与其他端点互不通用Kubernetes 模板适合集群内私有 HTTP 服务需自行配置资源、持久缓存、探针、上传限制和网关策略。中文离线文件转写服务GPU 版本GPU 版本面向需要更高吞吐的离线文件转写场景。部署时按 GPU 部署开发指南配置原生运行时。需要特别强调的是它不是 Model Zoo 中每个模型的通用安装方法。每个模型可能有不同的权重格式、前后处理或 ONNX 算子支持情况因此文档明确要求用实际镜像、权重和 GPU 复测不能因为某个模型在 CPU 或另一张显卡上验证通过就直接类推。中文实时语音听写服务CPU 版本先跑流式教程再按协议与多客户端验证实时语音听写的正确落地顺序是先运行流式部署教程再按 WebSocket 协议与对应的多客户端示例验证。验证时重点检查以下几项采样率实时路径通常要求 16kHz或按协议指定audio_fs音频分块流式模型按 chunk 推理chunk 划分直接影响延迟结束消息音频发送结束后必须发送{is_speaking: false}结束标志重连断线后的重连行为是否符合业务预期会话状态隔离不同 WebSocket 会话之间的中间状态不得互相污染。双遍服务与 Nano 流式服务是两个实现runtime/readme_cn.md明确提示C 双遍服务与 Fun-ASR-Nano Python 流式服务是不同实现。另一个 Nano 实时压测工具使用 Nano 的START/STOP协议不能用于 C 服务反之亦然。选择压测工具前务必确认目标服务属于哪一套实现。Docker 一键部署与手动启动在线2pass服务的 Docker 一键部署工具为funasr-runtime-deploy-online-cpu-zh.sh流程与离线版一致详见下文离线章节安装命令示例sudo bash funasr-runtime-deploy-online-cpu-zh.sh install --workspace ./funasr-runtime-resources若希望直接从镜像手动启动参考 在线开发指南。容器内通过run_server_2pass.sh启动funasr-wss-server-2pass核心命令如下完整脚本见 run_server_2pass.shcd FunASR/runtime nohup bash run_server_2pass.sh \ --download-model-dir /workspace/models \ --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \ --model-dir damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx \ --online-model-dir damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx \ --punc-dir damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx \ --itn-dir thuduj12/fst_itn_zh \ --hotword /workspace/models/hotwords.txt log.txt 21 与离线版run_server.sh相比2pass 版多出--online-model-dir参数用于指定流式在线识别模型离线模型负责在句尾做高精度纠错。客户端测试与 2pass 参数python3 funasr_wss_client.py --host 127.0.0.1 --port 10096 --mode 2pass --chunk_size 5,10,5其中chunk_size是流式模型的 latency 配置[5,10,5]表示当前音频解码片段为 600ms并回看 300ms、右看 300ms[8,8,4]表示 480ms 片段。mode取值为offline一句话识别非流式online实时语音识别纯流式2pass实时语音识别且在说话句尾用离线模型纠错输出带标点文本。中文离线文件转写服务CPU 版本一键部署工具推荐入门离线 CPU 版提供一键部署脚本 funasr-runtime-deploy-offline-cpu-zh.sh完整教程见 离线部署教程。该脚本过程分为安装 Docker、下载 Docker 镜像、启动服务。当前仅支持 Linux 环境其他环境请参考离线开发指南。sudo bash funasr-runtime-deploy-offline-cpu-zh.sh install --workspace ./funasr-runtime-resources安装过程中按提示输入回车即可完成。从脚本源码第 434-1000 行可以看到完整的 6 步交互流程检查 root 权限与 sudo从镜像列表拉取可选 Docker 镜像列表来源见 docker_offline_cpu_zh_lists依次选择 ASR / VAD / PUNC / LM 模型配置宿主机端口默认 10095、decoder 线程数与 IO 线程数安装 Docker针对 ubuntu/centos/debian/alios/alinux 分发不同安装命令并拉取镜像构造docker run命令并启动服务同时把配置持久化到~/.funasr_offline/config。脚本默认模型组合见 docker_offline_cpu_zh_listsASRdamo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx可选时间戳模型、nn 热词模型VADdamo/speech_fsmn_vad_zh-cn-16k-common-onnxPUNCdamo/punc_ct-transformer_cn-en-common-vocab471067-large-onnxLMdamo/speech_ngram_lm_zh-cn-ai-wesp-fst。模型选择说明在安装部署步骤 2 选择模型时1 为 paraformer-large 模型2 为 paraformer-large 时间戳模型3 为 paraformer-large nn 热词模型。服务端加载热词文件地址为./funasr-runtime-resources/hotwords.txt每行一个热词格式为热词 权重例如阿里巴巴 20。基于 Docker 镜像手动部署与 run_server.sh 参数若已安装 Docker可跳过一键脚本直接拉取并启动镜像sudo docker pull \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.7 mkdir -p ./funasr-runtime-resources/models sudo docker run -p 10095:10095 -it --privilegedtrue \ -v $PWD/funasr-runtime-resources/models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.7容器内启动funasr-wss-server完整脚本见 run_server.shcd FunASR/runtime nohup bash run_server.sh \ --download-model-dir /workspace/models \ --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \ --model-dir damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx \ --punc-dir damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx \ --lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst \ --itn-dir thuduj12/fst_itn_zh \ --hotword /workspace/models/hotwords.txt log.txt 21 run_server.sh中值得关注的是线程资源的自动推导逻辑第 13-16 行decoder_thread_num默认取/proc/cpuinfo中的 CPU 核数获取失败时回退为 32io_thread_num按(decoder_thread_num 15) / 16向上取整推导model_thread_num默认 1。这些参数可通过脚本透传覆盖例如--decoder-thread-num 32。另外脚本还支持--certfile 0关闭 SSL默认证书位于ssl_key/server.crt与ssl_key/server.key。热词与模型变体若使用时间戳模型将--model-dir设为damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx若使用 nn 热词模型设为damo/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404-onnx服务端热词文件为/workspace/models/hotwords.txt宿主机映射自./funasr-runtime-resources/models/hotwords.txt每行热词 权重如阿里巴巴 20。客户端测试与参数详解python3 funasr_wss_client.py --host 127.0.0.1 --port 10095 --mode offline --audio_in ../audio/asr_example.wav支持多种输入音频文件路径.wav/.pcm/.mp3 等、视频文件.mp4需安装 ffmpeg以及 Kaldi 风格的多文件列表wav.scp。客户端参数含义--host服务部署机器 IP默认本机127.0.0.1跨机部署需改为实际 IP--port部署端口号默认10095离线--mode offline离线文件转写模式--audio_in待转写音频支持文件路径或wav.scp列表--thread_num并发发送线程数默认 1--sslSSL 证书校验开关默认 1 开启0 关闭--hotword热词文件每行热词 权重--use_itn是否使用 ITN逆文本正则化默认 1 开启0 关闭。服务端运维命令一键部署后可用同一脚本管理服务生命周期sudo bash funasr-runtime-deploy-offline-cpu-zh.sh start # 启动已部署的服务 sudo bash funasr-runtime-deploy-offline-cpu-zh.sh stop # 关闭服务 sudo bash funasr-runtime-deploy-offline-cpu-zh.sh remove # 释放服务 sudo bash funasr-runtime-deploy-offline-cpu-zh.sh restart # 重启服务替换模型并重启模型须为 ModelScope 上的 ASR/VAD/PUNC 模型或由其 finetune 得到的模型sudo bash funasr-runtime-deploy-offline-cpu-zh.sh update [--asr_model | --vad_model | --punc_model] model_id or local model path # e.g. sudo bash funasr-runtime-deploy-offline-cpu-zh.sh update --asr_model damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch更新端口与线程参数sudo bash funasr-runtime-deploy-offline-cpu-zh.sh update [--host_port | --docker_port] port number sudo bash funasr-runtime-deploy-offline-cpu-zh.sh update [--decode_thread_num | --io_thread_num] the number of threads sudo bash funasr-runtime-deploy-offline-cpu-zh.sh update [--workspace] workspace in local sudo bash funasr-runtime-deploy-offline-cpu-zh.sh update [--ssl] 0: close SSL; 1: open SSL, default:1参考服务器配置官方教程给出的离线服务参考配置实际容量需以真实镜像、权重与硬件复测为准详见 benchmark_onnx_cpp.md4 核 vCPU / 8G 内存单机约 32 路并发16 核 vCPU / 32G 内存单机约 64 路并发64 核 vCPU / 128G 内存单机约 200 路并发。实时2pass服务在同一硬件档次下约为 16 / 32 / 100 路并发。英文离线文件转写服务CPU 版本英文场景参见 英文服务教程与高级配置。部署时的关键提醒是显式选择英文权重不要只凭容器名推断语言覆盖——同一个容器镜像可能内置多语言能力语言能力由实际加载的模型权重决定。WebSocket 协议要点消息格式与关键字段无论离线还是实时服务都遵循 WebSocket 协议配置参数与 meta 信息用 JSON音频数据用 bytes。离线模式首次通信{mode: offline, wav_name: wav_name, wav_format:pcm, is_speaking: True, hotwords:{\阿里巴巴\:20,\通义实验室\:30}, itn:True}字段说明modeoffline表示离线文件转写wav_name待推理音频文件名wav_format音视频文件后缀名可选 pcm、mp3、mp4 等is_speakingFalse 表示断句尾点如 VAD 切割点或一条 wav 结束audio_fs输入为 pcm 数据时需附带采样率hotwords热词数据字符串格式如{阿里巴巴:20,通义实验室:30}热词权重仅在 fst 热词服务下生效itn是否使用 ITN默认 Truesvs_langSenseVoiceSmall 模型语种默认autosvs_itnSenseVoiceSmall 模型是否开启标点与 ITN默认 True。2pass 模式首次通信额外携带chunk_size{mode: 2pass, wav_name: wav_name, is_speaking: True, wav_format:pcm, chunk_size:[5,10,5], hotwords:{\阿里巴巴\:20,\通义实验室\:30}, itn:True}结束标志音频发送结束后必须发送{is_speaking: False}。返回结果中2pass-online表示实时识别结果2pass-offline表示 2 遍修正结果若 AM 为时间戳模型返回timestamp词级毫秒与stamp_sents句级时间戳及标点信息字段。Python WebSocket 快速体验与并发控制若想用纯 Python 快速体验不依赖 C SDK可运行 runtime/python/websocket 下的示例。服务端启动cd runtime/python/websocket python funasr_wss_server.py --port 10095从 funasr_wss_server.py 可以看到Python 版支持按阶段调节并发度默认值为参数默认值作用--concurrent_vad4VAD 阶段最大并发 generate() 调用--concurrent_asr_online4流式 ASR 最大并发--concurrent_asr_offline2离线 ASR 最大并发--concurrent_punc1标点模型最大并发--concurrent_sv1说话人验证最大并发源码中这些参数通过asyncio.Semaphore实现各阶段限流第 298-302 行可用--concurrent_vad / --concurrent_asr_online / --concurrent_asr_offline / --concurrent_punc / --concurrent_sv调节。Python 版本支持多客户端并发非阻塞推理输出文本带标点如需更高吞吐官方仍推荐上文 C 版本服务部署 SDK。客户端测试README 提供了离线、流式、2pass 三种模式示例python funasr_wss_client.py --host 127.0.0.1 --port 10095 --mode 2pass --chunk_size 5,10,5 python funasr_wss_client.py --host 127.0.0.1 --port 10095 --mode offline --audio_in ./data/wav.scp --output_dir ./resultsPython 客户端还支持编程式调用Funasr_websocket_recognizer(host, port, is_ssl, mode)创建识别器feed_chunk(data)逐块送入 PCM 并取回结果close(timeout3)获取最终结果。客户端与平台适配runtime提供了覆盖主流语言与终端的客户端实现Python WebSocket、Python HTTP、Java、Go浏览器客户端、gRPC、TritonAndroid 与 iOS 是独立移植指南。使用边界不同适配器的协议和依赖以各自文档为准示例代码不自动等于所有目标平台的生产支持。尤其是 Android/iOS 文档不代表每个桌面发布包都验证过这些设备。上线检查清单runtime/readme_cn.md给出了可执行的上线检查清单逐条落实可显著降低生产事故率固定版本固定代码 commit / 镜像 digest、模型 revision、配置与目标硬件验证真实转写用已知音频检查真实转写和原始返回值不只检查 health 端点分维度评测分别评测业务音频质量、延迟、并发、内存与失败行为安全配置依据安全指南配置认证、TLS、请求限制和隐私控制可回滚保留上一版模型、产物和配置并实际演练回滚问题上报按排障清单提交未解决问题代码发布不能证明用户报告的硬件问题已经解决。历史发布记录与版本边界完整历史记录保留了早期 Docker 标签、日期和性能评测引用适合追踪演进脉络。但新部署应以当前部署手册和明确的验证边界为准切勿把历史镜像标签或历史评测数字直接当作当前版本的容量承诺。总结FunASR 运行时部署的完整决策链是选模型 → 选协议 → 选入口 → 固定版本 → 复测验证 → 安全加固 → 演练回滚。离线转写走 SDK_tutorial_zh.md 或 Docker 镜像 run_server.sh实时听写走 SDK_tutorial_online_zh.md run_server_2pass.sh其余场景OpenAI 兼容、vLLM、GGUF、ONNX、Triton、Kubernetes按部署矩阵和上表入口逐个展开并在上线前完整走一遍检查清单。【免费下载链接】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),仅供参考