手把手教你部署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.shwebui/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 后缀或损坏二进制流。务必用 wgethuggingface-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)

此时打开浏览器,访问:

首次加载可能需 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 单文件识别:三步出结果

  1. 上传音频

    • 点击「语音识别」标签页 → 「上传音频文件」
    • 选择你的 .wav.mp3 文件(推荐 WAV,无损格式识别更准)
  2. 配置关键参数(重点!影响准确率)

    • 目标语言:选「中文」(即使含少量英文单词,也优先选中文)
    • 启用文本规整 (ITN): 勾选(自动把“一千二百三十四”转为“1234”,大幅提升可读性)
    • 热词列表:粘贴以下内容(针对客服场景优化)
      营业时间
      人工客服
      转接专员
      投诉反馈
      订单号
      退款流程
      
  3. 开始识别 & 查看结果

    • 点击「开始识别」
    • 等待 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_textitn_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 用户最高频报错。别急着重装,按顺序尝试:

  1. 立即释放:WebUI 右上角「系统设置」→「清理 GPU 缓存」(比重启快 10 倍)
  2. 降负载:「系统设置」→「批处理大小」改为 1(默认 4,对小显存友好)
  3. 终极方案:临时切 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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐