news 2026/9/7 19:36:45

FunASR 本地部署指南:在自己机器上完成全离线语音转写

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FunASR 本地部署指南:在自己机器上完成全离线语音转写

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

FunASR 是达摩院开源的语音识别工具包,解决的核心问题是"音频不能出内网"。读完这篇,你会在自己的机器上部署好一个语音转写服务,并把一条客服录音转成带标点的文本,全程不碰任何云端接口。

适不适合你

  • 如果你的录音涉及会议、客服、庭审,绝不能上传任何云端服务,选它。
  • 如果你只想转几条文件、不想养一个常驻服务,就不用本文这套部署方式,examples/ 目录里的纯 Python 脚本直接跑就行。
  • 如果你需要给非技术同事演示,这个服务自带浏览器页面(后文会讲),部署一次就能反复用。

📋 动手前的准备清单

  • 系统:Windows 用 Docker Desktop 并开启 WSL2 后端;Linux 服务器装原生 Docker 即可
  • Python:3.8 以上,只在客户端机器上需要
  • 磁盘:至少预留 10GB,要装一个镜像加三个模型
  • 网络:安装期间机器要能访问外网,镜像和模型由脚本自行下载
  • 耗时:视下载速度约 10~30 分钟

从 0 到服务可用的最短路径

整条路径分三个里程碑:拿源码、装起来、验证连通。

里程碑一,拿到源码。打开终端执行:

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

里程碑二,安装并启动。执行这一行:

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

拉镜像、下载 ASR(声学识别)、VAD(判断哪段在说话)、标点三个模型、起容器,全部由脚本代办,终端全程有进度条。看到下面这行就装好了:

The service has been started.

此时服务对外开放的端口是 10095。

里程碑三,验证连通。在客户端机器执行:

curl -k https://127.0.0.1:10095

能拿到HTTP/1.1 200或 WebSocket 握手响应,说明端口通了。

容器内部,端点检测、识别、标点预测已经串好。你丢进去的是音频,拿回来的就是文本,中间过程不用管。

🎙 三种用法,挑一种开始

先做选择:

  • 只有一个文件:命令行客户端,最省事的试手方式
  • 有一堆文件排队:wav.scp 批量,一行一个路径,客户端按顺序逐个处理
  • 不想碰终端:浏览器页面,上传即转

客户端在runtime/python/websocket目录,先执行pip install -r requirements_client.txt装依赖。最常用的转写命令:

python funasr_wss_client.py --host 127.0.0.1 --port 10095 \ --mode offline --audio_in ./meeting.wav --output_dir ./out

--mode的取值对应三种策略:offline整段识别,online流式,2pass流式先出一遍草稿再由整段识别修正,原理见下图。

选批量时,把--audio_in指向一个 wav.scp 文件,每行写成标签 路径的格式。选网页端时,把runtime/html5/static/index.html拷到浏览器能打开的位置,填上服务地址和端口,就能上传音频或按麦克风转写。

🛠 踩坑与排查

  • 证书告警:服务默认开着 SSL 且用自签证书,浏览器或 curl 报证书警告属正常现象,curl 加-k跳过校验即可。内网环境想关加密,安装脚本带--ssl 0参数。
  • 客户端连了没反应:先跑安装脚本的--show子命令核对当前配置,确认端口和客户端--port一致;容器停了就用start拉起,stoprestart用于日常管理。
  • mp3、m4a 转不了:客户端自身不解码非 wav 格式,需要自备 FFmpeg,Windows 执行winget install ffmpeg,Linux 用对应包管理器。
  • 吞吐量不够:先stop,再用update子命令改--decode_thread_num--io_thread_num,然后restart。16 核机器从 8/4 起步压测调整;配置改动只对重启后的容器生效。
  • 专业词总写错:维护一份 hotwords.txt,每行一个词加权重,客户端用--hotword传入。
  • 数字全是汉字:默认开着数字归一化("一百二十三"→"123"),要保留原样就在客户端加--use_itn 0

接下来去哪

  • 换模型:用安装脚本update --asr_model指向其他模型 ID 或本地路径,候选清单在 model_zoo/modelscope_models.md
  • 查参数:从 runtime/quick_start.md 入手,SDK 细节继续读 docs/
  • 想训自己的模型:FunASR 的训练侧也在同一仓库,examples/ 里的脚本可直接照跑

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 19:32:26

Buzz:本地离线音频转录工具,一次导出 3 种字幕格式

Buzz:本地离线音频转录工具,一次导出 3 种字幕格式 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 会…

作者头像 李华
网站建设 2026/9/7 19:32:10

一个注解搞定接口限速:自定义注解+Spring拦截器+Redis实践

1. 先聊清楚:这个“限速注解”到底解决了什么问题做后端接口开发的时候,限速是个绕不开的话题。尤其是面向公网的业务接口,一旦遇到突发流量、爬虫脚本、或者某个调用方写了个有问题的重试循环,服务端的压力瞬间就能被打满。轻则接…

作者头像 李华
网站建设 2026/9/7 19:31:18

头歌实践教学平台:Java入门-循环结构基础(一~二)

第1关:Java循环结构之while循环任务描述 本小节需要你完成一个做俯卧撑的小程序,效果如下:相关知识 Java中常用的循环有三种:while,do...while,for。 本小节我们先来看看while循环。while循环的特点 循环顾…

作者头像 李华