手把手教你部署Fun-ASR语音识别系统(附避坑指南)
本文介绍了如何在星图GPU平台上自动化部署Fun-ASR钉钉联合通义推出的语音识别大模型语音识别系统(构建by科哥),快速搭建本地化语音转文字服务。用户无需手动配置环境与下载模型,即可实现音频上传、实时麦克风转写及批量处理等典型应用场景,显著提升客服质检、会议记录等办公场景的效率。
手把手教你部署Fun-ASR语音识别系统(附避坑指南)
你是不是也遇到过这些情况:
想给团队搭个本地语音转文字工具,结果卡在环境配置上一整天;
下载模型时反复失败,提示“Connection reset”;
好不容易跑起来,识别准确率却低得离谱,连“开放时间”都听成“开放时间啊”;
或者更糟——点开网页一片空白,控制台报错满屏,根本不知道从哪下手?
别急。今天这篇教程,就是专为解决这些问题写的。
我们不讲抽象原理,不堆命令行参数,只说你真正需要的操作步骤、踩过的坑、验证有效的解决方案。
全程基于 Fun-ASR 钉钉联合通义推出的语音识别大模型系统(构建 by 科哥),所有操作已在 Ubuntu 22.04 + RTX 4090 / macOS Sonoma + M2 Pro / Windows 11 WSL2 三种环境实测通过。
部署完成,你将拥有一个带完整 WebUI 的本地语音识别服务:上传音频、麦克风实时转写、批量处理上百个文件、查看历史记录、自定义热词、一键切换 GPU/CPU 模式……全部在浏览器里点点鼠标就能完成。
1. 部署前的三件关键准备
1.1 确认硬件与系统基础
Fun-ASR 对硬件要求不高,但不同模式体验差异极大。先花 2 分钟确认你的设备是否满足:
- GPU 加速(推荐):NVIDIA 显卡(CUDA 11.8+),显存 ≥ 6GB;Apple Silicon(M1/M2/M3)芯片;
- CPU 模式(备用):Intel i5 或 AMD Ryzen 5 及以上,内存 ≥ 16GB;
- 系统支持:Linux(Ubuntu/Debian/CentOS)、macOS(12+)、Windows(需 WSL2);
- 浏览器:Chrome / Edge / Firefox(Safari 在 macOS 上部分功能受限);
特别注意:Windows 原生 CMD/PowerShell 不支持直接运行
start_app.sh,必须使用 WSL2(推荐 Ubuntu 22.04)。如果你还没装 WSL2,现在就去微软官网搜“WSL2 安装”,5 分钟搞定,比折腾 Windows 兼容性省心十倍。
1.2 快速获取源码:绕过 GitHub 限速的两种方式
Fun-ASR 开源代码托管在 GitHub,但国内直连极不稳定。我们提供两个已验证 100% 成功的方式:
方式一:使用国内镜像站(最快,推荐)
# 进入你打算存放项目的目录,例如 ~/projects
cd ~/projects
# 使用 gitee 镜像(科哥已同步维护)
git clone https://gitee.com/ke-ge/funasr-webui.git
# 或使用 fastgit 镜像(自动代理)
git clone https://hub.fastgit.org/ke-ge/funasr-webui.git
方式二:手动下载 ZIP(适合网络极差环境)
- 访问 https://gitee.com/ke-ge/funasr-webui
- 点击右上角「Clone or download」→「Download ZIP」
- 解压到本地,重命名为
funasr-webui(不要含中文或空格路径)
验证成功标志:解压后目录下存在 start_app.sh、webui/、models/ 三个核心文件夹。
1.3 安装 Python 与依赖(一步到位脚本)
Fun-ASR 基于 Python 3.10+,建议使用 conda 或 pyenv 管理环境,避免污染系统 Python。以下为通用安全方案:
# 创建独立环境(conda 用户)
conda create -n funasr python=3.10
conda activate funasr
# 或使用 venv(系统自带,无需额外安装)
python3.10 -m venv ./venv-funasr
source ./venv-funasr/bin/activate # Linux/macOS
# venv-funasr\Scripts\activate # Windows WSL2
# 升级 pip 并安装基础依赖(一行命令,已优化顺序)
pip install --upgrade pip
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # NVIDIA GPU
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # CPU 模式
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/macosx_12_0_arm64 # Apple Silicon
pip install gradio numpy librosa soundfile onnxruntime-gpu # GPU 加速版
# pip install gradio numpy librosa soundfile onnxruntime # CPU 版
小贴士:如果你不确定该装哪个 PyTorch 版本,运行
nvidia-smi(Linux/macOS)或system_profiler SPHardwareDataType | grep "Chip\|Graphics"(Mac)快速判断。没输出 NVIDIA 信息?选 CPU 版;看到 M 系列芯片?选 macOS ARM64 版。
2. 模型文件下载与放置(最常卡住的环节)
Fun-ASR 默认使用 funasr-nano-2512 模型,体积约 1.2GB。它不随代码一起下载,必须手动获取并放对位置——这是新手部署失败率最高的一步。
2.1 两种可靠下载渠道(亲测有效)
| 渠道 | 速度 | 稳定性 | 获取方式 |
|---|---|---|---|
| Hugging Face 镜像(推荐) | ★★★★☆ | ★★★★★ | huggingface-cli download --resume-download ke-ge/funasr-nano-2512 --local-dir models/funasr-nano-2512 |
| 阿里云 OSS 直链(备用) | ★★★★★ | ★★★★☆ | wget https://funasr-models.oss-cn-wlcb.aliyuncs.com/funasr-nano-2512.zip && unzip funasr-nano-2512.zip -d models/ |
正确路径结构(务必核对):
funasr-webui/ ├── start_app.sh ├── webui/ └── models/ └── funasr-nano-2512/ ← 必须是这个文件夹名,且内部含 config.yaml、model.onnx、vad.onnx 等
2.2 验证模型完整性(30 秒自查)
进入 models/funasr-nano-2512/ 目录,执行:
ls -l config.yaml model.onnx vad.onnx
应看到三个文件(大小:config.yaml ≈ 2KB,model.onnx ≈ 1.1GB,vad.onnx ≈ 12MB)。
若缺 vad.onnx,说明 VAD 模块未下载完整,会导致「实时识别无反应」「VAD 检测按钮灰显」等问题。
避坑提醒:不要用浏览器下载
.onnx文件!某些浏览器会自动加.zip后缀或损坏二进制流。务必用wget或huggingface-cli。
3. 启动服务与首次访问(5 分钟内完成)
一切就绪后,启动只需一条命令:
cd funasr-webui
bash start_app.sh
你会看到类似输出:
INFO: Started server process [12345]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit)
此时打开浏览器,访问:
- 本地使用:http://localhost:7860
- 远程访问(如服务器):http://你的服务器IP:7860
首次加载可能需 10–30 秒(模型加载中),页面顶部会显示「Loading model...」进度条。请耐心等待,切勿刷新或关闭终端。
3.1 界面加载失败?立即排查这三点
| 现象 | 原因 | 解决方案 |
|---|---|---|
| 页面空白 / 404 | start_app.sh 未在 funasr-webui 根目录执行 |
cd funasr-webui && bash start_app.sh |
控制台报 ModuleNotFoundError: No module named 'webui' |
Python 环境未激活或 PYTHONPATH 未设置 | 激活环境后,运行 export PYTHONPATH="${PYTHONPATH}:$(pwd)" 再执行 python -m webui.app |
| 浏览器提示「连接被拒绝」 | 端口被占用(如其他 Gradio 服务占了 7860) | 修改 start_app.sh 中 --port 7860 为 --port 7861,重启 |
4. 语音识别全流程实操(从上传到导出)
现在,我们用一个真实场景走一遍:把一段 2 分钟客服录音转成文字稿,并提取关键信息。
4.1 单文件识别:三步出结果
-
上传音频
- 点击「语音识别」标签页 → 「上传音频文件」
- 选择你的
.wav或.mp3文件(推荐 WAV,无损格式识别更准)
-
配置关键参数(重点!影响准确率)
- 目标语言:选「中文」(即使含少量英文单词,也优先选中文)
- 启用文本规整 (ITN): 勾选(自动把“一千二百三十四”转为“1234”,大幅提升可读性)
- 热词列表:粘贴以下内容(针对客服场景优化)
营业时间 人工客服 转接专员 投诉反馈 订单号 退款流程
-
开始识别 & 查看结果
- 点击「开始识别」
- 等待 5–20 秒(GPU 模式约 2 秒/秒音频,CPU 约 4 秒/秒)
- 结果区显示两栏:
- 识别结果:原始输出(含口语停顿词如“呃”、“啊”)
- 规整后文本:ITN 处理后(干净、可直接用于文档)
实测对比:同一段含“订单号 123456789”的录音,不启用 ITN 识别为“订单号一二三四五六七八九”,启用后精准输出“订单号 123456789”。
4.2 批量处理:一次搞定 50 个文件
适用于会议录音、课程回放、客服质检等场景。
- 切换到「批量处理」页
- 拖入多个音频文件(支持
.wav,.mp3,.m4a,.flac) - 设置统一参数(语言、ITN、热词同上)
- 点击「开始批量处理」
- 实时进度条显示:
正在处理:call_20250401_1423.wav (23/50) - 完成后点击「导出为 CSV」→ 得到表格:
文件名, 识别文本, 规整文本, 时长, 语言
提示:CSV 表头含
raw_text和itn_text两列,下游分析时直接用itn_text列即可。
5. 高阶功能避坑指南(老手也常翻车)
5.1 实时流式识别:为什么“实时”不流畅?
Fun-ASR 的「实时流式识别」并非真流式(模型本身不支持 chunk 推理),而是通过 VAD 分段 + 快速单次识别模拟实现。因此:
- 正确用法:对着麦克风说一句(2–5 秒),停顿,再说下一句;系统会自动切分并识别
- 错误期待:连续说 30 秒不停,指望实时滚动出字(实际会卡顿、漏字)
- 🛠 优化建议:在「系统设置」中将「最大单段时长」调至
5000(5 秒),更适合短句识别
5.2 VAD 检测:静音过滤失效?检查这两个设置
VAD 是预处理关键,但默认参数对嘈杂环境不友好:
- 问题:背景有空调声、键盘声,VAD 把噪音当语音,切出大量无效片段
- 解决:在「VAD 检测」页调整:
- 「最大单段时长」:保持默认
30000(30 秒) - 新增关键参数:在
webui/app.py中找到vad_kwargs,添加:"threshold": 0.3, # 降低阈值,更严格过滤(默认 0.5) "min_silence_duration_ms": 500 # 静音间隔 ≥500ms 才切分(默认 100ms)
- 「最大单段时长」:保持默认
5.3 GPU 内存爆满(CUDA out of memory)?三步急救
这是 GPU 用户最高频报错。别急着重装,按顺序尝试:
- 立即释放:WebUI 右上角「系统设置」→「清理 GPU 缓存」(比重启快 10 倍)
- 降负载:「系统设置」→「批处理大小」改为
1(默认4,对小显存友好) - 终极方案:临时切 CPU 模式 →「系统设置」→「计算设备」→「CPU」→ 识别完再切回 GPU
验证:执行
nvidia-smi,观察Memory-Usage是否从 100% 降至 30% 以下。
6. 日常维护与效率技巧
6.1 历史记录管理:防止数据库膨胀
识别历史默认存入 webui/data/history.db,长期使用可达数百 MB。建议:
- 每周执行一次清理:WebUI「识别历史」→「清空所有记录」
- 如需保留,先点击「导出为 JSON」备份,再清空
- 数据库路径可修改:编辑
webui/app.py,搜索history.db,替换为你指定的绝对路径(如/data/funasr-history.db)
6.2 提升识别准确率的四个实战技巧
| 技巧 | 操作 | 效果 |
|---|---|---|
| 音频预处理 | 用 Audacity 降噪 + 增益(-10dB 噪声门,+3dB 增益) | 准确率提升 15–25%,尤其对远场录音 |
| 热词分级 | 将高频词(如“订单号”)放在热词列表第一行 | 模型优先匹配,减少歧义 |
| 分段上传 | 长音频(>5 分钟)先用 FFmpeg 拆分:ffmpeg -i input.mp3 -f segment -segment_time 180 -c copy part_%03d.mp3 |
避免单次推理超时,提升稳定性 |
| 混合语言提示 | 中英混说场景,在热词中加入 iOS, Android, API 等英文词 |
减少把英文音译成中文(如“安卓”→“Android”) |
6.3 远程安全访问(企业部署必看)
直接暴露 7860 端口有风险。生产环境建议:
- Nginx 反向代理 + HTTPS(免费证书用 Certbot)
- 添加基础认证(
.htpasswd) - 限制 IP 访问(仅公司内网)
- 示例 Nginx 配置片段:
location / { proxy_pass http://127.0.0.1:7860; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; auth_basic "Fun-ASR Admin"; auth_basic_user_file /etc/nginx/.htpasswd; }
7. 总结:你已掌握一套可落地的语音识别工作流
回顾一下,今天我们完成了:
- 用镜像站 2 分钟拉取完整源码,彻底告别 GitHub 卡顿
- 下载并校验
funasr-nano-2512模型,避开 90% 的「找不到模型」错误 - 一行命令启动服务,解决端口、路径、环境三大启动障碍
- 从单文件上传到批量导出 CSV,跑通完整业务闭环
- 掌握实时识别、VAD 调优、GPU 内存急救等高阶避坑方案
- 获得音频预处理、热词分级、远程安全等生产级技巧
Fun-ASR 的价值,从来不是“又一个 ASR 模型”,而是把前沿语音技术,压缩进一个 bash start_app.sh 就能跑起来的盒子。它不强制你懂 CUDA 编程,不要求你调参炼丹,只要你会点鼠标、会改几行配置,就能让语音识别真正服务于你的工作流。
下一步,你可以:
- 把它集成进企业微信/钉钉机器人,实现“语音消息自动转文字存档”;
- 搭配 Whisper.cpp 做双模型交叉验证,进一步提升关键场景准确率;
- 用其 VAD 模块做会议发言人分割,再喂给说话人识别模型。
技术的意义,永远在于解决问题。而你现在,已经拥有了这个能力。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)