FunASR 离线语音转写:一条命令部署加一条命令转写的本地完整实操指南
2026/9/7 5:56:07 网站建设 项目流程

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/FunASR

客服录音质检、会议纪要、庭审与访谈转写,这类音频往往不能离开内网:合规要求数据不出域,云端 API 按量计费且延迟不可控。FunASR 是达摩院开源的语音识别工具包,一条部署脚本即可把 ASR 识别、VAD 端点检测、标点补全装进一个本地 WebSocket 服务,音频进、文本出,全程不经过任何云端接口。

🧩 FunASR 能力模块与适用边界

模块解决什么问题本文路径
ASR 识别(Paraformer-Large 中文)把音频转成文字,整段离线识别精度最高✅ 核心路径
VAD(FSMN-VAD,语音端点检测,判断哪段有人在说话)切掉长音频里的静音段,分段送识别✅ 服务端内置,随流水线自动执行
标点补全(CT-Transformer)给识别文本加逗号、句号,输出可读段落✅ 服务端内置
流式识别(online / 2pass 模式)边说边出字;2pass 先流式出草稿再离线修正⭕ 客户端开关切换,本文只演示 offline
说话人分离、训练自训模型、热词 NN 模型多人会议分轨、领域微调、强召回❌ 超出本文范围,见文末扩展材料

适用场景:内网闭环、数据合规敏感、文件级批量转写(会议纪要、客服录音、庭审录音)。 不适用:需要 GPU 高吞吐推理、需要实时直播级低延时、需要训练自有领域模型的读者,本文只覆盖 CPU 单机的最短落地路径。

🩺 部署前体检:依赖清单

  • 操作系统:Linux(Ubuntu / CentOS / Debian,脚本读取/etc/os-release自动适配);Windows 走 Docker Desktop 并开启 WSL2 后端
  • Docker:缺失时一行安装(FunASR 官方脚本):
curl -O https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/shell/install_docker.sh && sudo bash install_docker.sh # 验证:docker info 能输出系统信息即安装成功
  • 磁盘:预留 ≥ 10GB(Docker 镜像 + ASR/VAD/标点三个模型 + 样例)
  • 外网:脚本需拉取镜像(阿里云容器镜像仓库)并下载模型,机器必须可出网
  • 端口:10095 空闲,用ss -lntp | grep 10095确认无输出

🚀 一键部署离线转写服务

第 1 步:获取源码

git clone https://gitcode.com/GitHub_Trending/fun/FunASR cd FunASR/runtime/deploy_tools

成功标志:当前目录能看到funasr-runtime-deploy-offline-cpu-zh.sh脚本文件。

第 2 步:安装并启动服务

sudo bash funasr-runtime-deploy-offline-cpu-zh.sh install

脚本按 6 个阶段执行:拉取镜像列表 → 选择 ASR/VAD/标点模型 → 输入端口(默认 10095,直接回车)→ 展示参数确认(输入 Y)→ 自动安装 Docker 并拉镜像 → 启动容器并下载样例。

成功标志:终端输出The service has been started.,同时样例代码已解压到./funasr-runtime-resources/samples/

服务自检:三条命令确认服务活着

# 1. 查看当前全部配置(端口、SSL、线程数) sudo bash funasr-runtime-deploy-offline-cpu-zh.sh show # 2. 确认容器处于 Up 状态 sudo docker ps | grep funasr_repo # 3. 探测 10095 端口(服务端默认开 SSL 自签证书,用 -k 跳过校验) curl -k -s -o /dev/null -w "%{http_code}\n" https://127.0.0.1:10095

正常返回:docker ps中 STATUS 列为Up;curl 打印出任意 HTTP 状态码(如400200)即表示有进程在监听。返回000或提示Connection refused说明服务未起。

🎙️ 最小闭环:完成一次真实转写

输入样例:部署脚本已下载一段示例音频asr_example.wav(中文 16k 录音),路径在仓库根目录下为:

runtime/deploy_tools/funasr-runtime-resources/samples/audio/asr_example.wav

一条命令转写(在仓库根目录执行):

# 先装客户端依赖(仅需一次) pip install -r runtime/python/websocket/requirements_client.txt # 发起一次 offline 整段识别,结果写入 ./out python runtime/python/websocket/funasr_wss_client.py \ --host 127.0.0.1 --port 10095 \ --mode offline \ --audio_in runtime/deploy_tools/funasr-runtime-resources/samples/audio/asr_example.wav \ --output_dir ./out

终端实时输出样例(识别文本随音频长度变化,此处为示意):

connect to wss://127.0.0.1:10095 pid0_0: asr_example.wav: 你好,这是一段用于测试离线语音识别的示例音频。 [MEETING 0_0] connection closed normally end

看到pid0_0:开头的行即转写成功。

产物文件位置

路径内容
./out/text.0_0每行一条结果:音频名 \t 文本 \t 时间戳(带时间戳的 tab 分隔文本)
./asr_logs/events.jsonl(服务端每条消息)与meta.json(本次运行参数),便于复现与验收

不想敲命令的话,用浏览器打开runtime/html5/static/index.html,填入服务地址与端口 10095,直接上传音频或点麦克风转写。

🎛️ 常用开关速查

参数 / 开关作用何时用
--audio_in <wav.scp>批量:scp 文件每行标签 路径,逐条转写一次转多个录音
--mode online/--mode 2pass流式边说边出 / 先流式草稿再离线修正会议实时字幕、需要低延时出字
非 wav 输入(mp3、m4a)客户端需 FFmpeg 解码apt-get install -y ffmpeg(Windows 用winget install ffmpeg
--hotword <file.txt>热词文件,每行词 权重,如达摩院 20专有名词、术语、产品名易错时提升召回
--use_itn 0关闭数字归一化(ITN 会把"一百二十三"转成"123")希望保留原始读法时
--ssl 0客户端走 ws:// 明文连接服务端已执行update --ssl 0
--thread_num 4客户端多线程并行发送多个文件大批量时单线程吞吐不够
update --asr_model <模型ID或本地路径>服务端换 ASR 模型(改完自动重启)换行业领域模型
update --decode_thread_num 8/--io_thread_num 2调服务端解码/IO 线程数压测发现并发不足
update --host_port 10096换监听端口(自动重启容器)10095 被占用

🧯 排坑清单

  • 症状:curl 返回000Connection refused原因:容器未启动,或端口与--show显示的不一致解法sudo bash funasr-runtime-deploy-offline-cpu-zh.sh start,再--show核对实际端口

  • 症状install卡在模型下载进度条不动原因:机器无法访问模型源或镜像仓库(网络策略拦截)解法:确认出网;模型落盘在funasr-runtime-resources/models/,可手动放好后重跑start

  • 症状:转写 mp3/m4a 报错、解码失败原因:客户端缺 FFmpeg,无法解压缩格式解法apt-get install -y ffmpeg(Windows 用winget install ffmpeg)后重跑

  • 症状:提示 10095 端口被占用,容器起不来原因:本机已有服务占用默认端口解法update --host_port 10096(脚本自动重启),客户端--port 10096同步改

  • 症状:客户端报 SSL 证书相关错误原因:服务端默认使用自签证书解法:示例客户端默认--ssl 1且跳过证书校验;需明文时服务端update --ssl 0,客户端加--ssl 0

边界与延伸材料

本文覆盖的是 CPU 单机、文件级离线转写的最短路径:16k 中文录音、VAD 切分、离线识别、标点补全,适合对数据出网敏感的内网业务闭环。若需要实时听写、说话人分离、时间戳精细对齐或训练领域模型,请延伸阅读:

  • 官方快速开始(Python 版 WebSocket 服务端/客户端更多示例):runtime/quick_start_zh.md
  • 离线服务部署进阶指南(换模型、ITN、热词服务端配置):runtime/docs/SDK_advanced_guide_offline_zh.md
  • 客户端完整参数与用法:runtime/python/websocket/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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询