Fun-ASR本地部署教程,无需公网也能用
在语音识别技术日益普及的今天,越来越多企业与开发者希望构建私有化、低延迟、高安全性的本地语音处理系统。Fun-ASR 是由钉钉联合通义实验室推出的高性能语音识别大模型系统,支持离线部署、多语言识别和流式转写能力。本文将详细介绍如何在本地环境中完整部署Fun-ASR WebUI版本(构建者:科哥),实现无需公网连接即可使用的语音识别服务。
1. 部署准备
1.1 环境要求
Fun-ASR 支持多种硬件平台运行,推荐配置如下:
| 项目 | 推荐配置 |
|---|---|
| 操作系统 | Ubuntu 20.04 / 22.04, Windows 10/11, macOS (Apple Silicon) |
| CPU | Intel i5 或以上,建议 8 核以上 |
| 内存 | ≥16GB RAM |
| 显卡 | NVIDIA GPU(CUDA 支持)或 Apple M系列芯片(MPS) |
| 显存 | ≥6GB(用于GPU加速推理) |
| 存储空间 | ≥20GB 可用空间(含模型文件) |
注意:若无独立显卡,可使用 CPU 模式运行,但识别速度约为 GPU 的 0.5x。
1.2 软件依赖
确保已安装以下基础软件:
- Python 3.9+
- PyTorch 2.0+(支持 CUDA 11.8 或 MPS)
- Git
- FFmpeg(音频格式转换)
# 安装 FFmpeg 示例(Ubuntu) sudo apt update && sudo apt install ffmpeg -y2. 下载与启动
2.1 获取镜像包
该版本为“Fun-ASR钉钉联合通义推出的语音识别大模型语音识别系统 构建by科哥”定制镜像,可通过官方渠道获取压缩包或Git仓库地址。
假设你已获得项目目录funasr-webui,结构如下:
funasr-webui/ ├── start_app.sh ├── config.yaml ├── models/ │ └── funasr-nano-2512/ ├── webui/ │ ├── app.py │ └── static/ └── requirements.txt2.2 安装依赖
进入项目根目录,安装所需Python库:
pip install -r requirements.txt常见依赖包括:
funasr>=1.0gradio>=3.50torchnumpysqlalchemy(历史记录存储)
2.3 启动应用
执行启动脚本:
bash start_app.sh脚本内容通常包含:
#!/bin/bash python webui/app.py --host 0.0.0.0 --port 7860 --device cuda:0成功启动后输出类似信息:
Running on local URL: http://localhost:7860 Running on public URL: http://<your-ip>:78603. 访问与功能概览
3.1 访问方式
- 本地访问:打开浏览器,输入
http://localhost:7860 - 远程访问:通过局域网 IP 地址访问,如
http://192.168.1.100:7860
⚠️ 若无法访问,请检查防火墙设置并确认端口 7860 已开放。
3.2 功能模块总览
Fun-ASR WebUI 提供六大核心功能模块,满足不同场景需求:
| 功能 | 说明 | 是否支持离线 |
|---|---|---|
| 语音识别 | 单文件上传识别 | ✅ |
| 实时流式识别 | 麦克风实时转文字 | ✅(模拟流式) |
| 批量处理 | 多文件批量识别 | ✅ |
| 识别历史 | 历史记录管理 | ✅ |
| VAD 检测 | 语音活动检测 | ✅ |
| 系统设置 | 模型与设备配置 | ✅ |
所有功能均基于本地模型运行,完全不依赖公网通信,保障数据隐私与安全性。
4. 核心功能使用指南
4.1 语音识别
使用流程
- 进入主界面,点击【语音识别】标签页。
- 上传音频文件(支持 WAV、MP3、M4A、FLAC 等格式)或使用麦克风录音。
- (可选)配置参数:
- 目标语言:中文 / 英文 / 日文
- 热词列表:每行一个关键词,提升专业术语识别率
- 启用文本规整(ITN):将“二零二五年”转为“2025年”
- 点击“开始识别”,等待结果返回。
输出结果
- 原始识别文本:直接输出 ASR 结果
- 规整后文本:经 ITN 处理后的标准化表达
💡 提示:高质量录音 + 合理热词 = 更高准确率
4.2 实时流式识别
功能原理
由于 Fun-ASR 原生模型不支持真正的流式推理,此功能通过VAD 分段 + 快速识别实现近似实时效果。
操作步骤
- 允许浏览器访问麦克风权限。
- 点击“麦克风”图标开始录音。
- 设置语言与热词。
- 点击“开始实时识别”。
系统会自动切分语音片段并逐段识别,结果显示在下方文本框中。
注意事项
- 此为实验性功能,延迟约 1~3 秒
- 不适用于长段连续讲话场景
- 推荐用于短句指令识别或会议摘要采集
4.3 批量处理
批量优势
适合处理大量音频文件(如客服录音、培训课程等),显著提升整体效率。
操作流程
- 切换至【批量处理】页面。
- 拖拽或选择多个音频文件上传。
- 统一设置:
- 目标语言
- 是否启用 ITN
- 热词列表
- 点击“开始批量处理”。
进度监控
- 实时显示当前处理进度
- 展示已完成 / 总数
- 自动跳转至结果页
结果导出
支持导出为:
- CSV 文件(含文件名、识别结果、时间戳)
- JSON 格式(便于程序解析)
📌 建议每批不超过 50 个文件,避免内存溢出
4.4 识别历史
数据持久化
所有识别记录默认保存在本地 SQLite 数据库中:
webui/data/history.db功能操作
- 查看最近 100 条记录
- 搜索关键词(文件名或内容)
- 输入 ID 查看详情
- 删除单条或多条记录
- 清空全部历史(⚠️ 不可恢复)
应用价值
- 审计追踪:回溯某次识别过程
- 数据复用:提取历史文本进行分析
- 定期备份:防止误删重要结果
4.5 VAD 检测
什么是 VAD?
Voice Activity Detection(语音活动检测)用于定位音频中的有效语音区间,过滤静音或背景噪音部分。
典型用途
- 预处理长录音(如会议、讲座)
- 提升后续识别效率
- 分析说话人活跃时段
参数说明
- 最大单段时长:限制每个语音片段的最大持续时间(默认 30000ms = 30秒)
- 超过该值将被强制分割
输出信息
- 片段数量
- 每段起止时间(毫秒)
- 片段时长
- 可选:同步识别文本
✅ 推荐先做 VAD 分段,再送入 ASR 模块,避免资源浪费
4.6 系统设置
设备选择
在【系统设置】中可切换计算设备:
| 选项 | 适用平台 |
|---|---|
| 自动检测 | 所有平台 |
| CUDA (GPU) | NVIDIA 显卡用户 |
| CPU | 无GPU设备 |
| MPS | Apple Silicon Mac |
⚠️ 初次加载模型可能需要 1~2 分钟,请耐心等待
模型状态
- 显示当前模型路径(如
models/funasr-nano-2512) - 指示模型是否已成功加载
性能调优项
- 批处理大小(batch_size):影响并发处理能力
- 最大长度(max_length):控制输入序列上限(默认 512)
调整建议见下文优化章节。
缓存管理
提供两个实用按钮:
- 清理 GPU 缓存:释放显存占用
- 卸载模型:关闭当前模型以节省资源
5. 性能优化与调参策略
5.1 批处理大小(Batch Size)调优
batch_size控制一次并行处理的音频数量。合理设置可大幅提升 GPU 利用率。
| batch_size | GPU 利用率 | 适用场景 |
|---|---|---|
| 1 | ~35% | 默认保守模式 |
| 4~8 | 70%~85% | 中小文件批量处理 |
| >16 | 易 OOM | 需谨慎测试 |
🔍 实测案例:50段10秒录音,
batch=1耗时12分钟;batch=8仅需3分钟,效率提升4倍。
调优方法
- 从
batch_size=2开始逐步增加 - 观察 GPU 显存使用情况(
nvidia-smi) - 当出现轻微抖动或接近满载时,回退一级并保留20%余量
例如:测得极限为batch=10,则生产环境设为batch=8
5.2 最大长度(Max Length)控制
max_length决定模型接收的最大帧数,默认 512 对应约 30 秒音频。
⚠️ Transformer 类模型自注意力复杂度为 $O(n^2)$,即长度翻倍,计算量增长四倍!
风险提示
- 一段60秒音频所需资源 ≈ 30秒音频的3~4倍
- 直接处理小时级录音极易导致 CUDA Out of Memory
解决方案:VAD + 分段 + 批量
from funasr import AutoModel vad_model = AutoModel(model="fsmn-vad", device="cuda:0") def split_long_audio(audio_file, max_time_ms=30000): """ 使用 VAD 将长音频切分为合规片段 Args: audio_file: 音频路径 max_time_ms: 单段最大允许时长(ms) Returns: chunk_paths: 切分后的音频片段路径列表 """ vad_res = vad_model.generate(input=audio_file, max_single_dur=max_time_ms) chunk_paths = [] for i, seg in enumerate(vad_res["text"]): start, end = seg["start"], seg["end"] if (end - start) > max_time_ms: sub_chunks = split_by_duration(start, end, max_time_ms) chunk_paths.extend(sub_chunks) else: chunk_paths.append(extract_segment(audio_file, start, end)) return chunk_paths预处理后再批量提交,既能保证语义完整,又能维持系统稳定。
5.3 混合场景处理策略
当输入文件长短不一、语言混杂时,建议采用“分而治之”策略:
| 场景类型 | 推荐 batch_size | 推荐 max_length | 关键措施 |
|---|---|---|---|
| 短语音(<15s) | 8~16 | 512 | 关闭 VAD,直接批量 |
| 中等长度(15~30s) | 4~8 | 512 | 开启 ITN 提高可读性 |
| 长音频(>30s) | 1~4 | 512 | 必须启用 VAD 分段 |
| 低显存设备(<6GB) | 1~2 | 256~512 | 可降级至 CPU 模式 |
| 高吞吐需求 | 动态调整 | 固定 | 结合监控自动调参 |
❗ 特别提醒:同一批次内应保持语言一致,目前不支持跨语言混合识别
6. 常见问题与解决方案
6.1 识别速度慢
原因排查:
- 是否启用 GPU?检查
nvidia-smi是否有进程占用 - 显存是否充足?尝试降低
batch_size - 音频是否过大?建议压缩至 16kHz 采样率
解决建议:
- 在系统设置中选择
CUDA (GPU) - 减少同时处理文件数
- 使用 SSD 存储模型和音频
6.2 出现 CUDA out of memory
应对措施:
- 点击【清理 GPU 缓存】
- 重启应用释放内存
- 临时切换至 CPU 模式
- 减小
batch_size或max_length
6.3 麦克风无法使用
检查项:
- 浏览器是否授权麦克风权限
- 是否使用 Chrome / Edge 浏览器
- 麦克风物理连接是否正常
- 尝试刷新页面(Ctrl+F5)
6.4 页面显示异常
修复方式:
- 强制刷新缓存(Ctrl+Shift+R)
- 清除浏览器缓存
- 更换浏览器(推荐 Chrome)
- 调整窗口大小触发响应式布局
7. 总结
Fun-ASR 作为一款由钉钉与通义实验室联合推出的轻量级语音识别系统,在本地部署方面表现出色。通过本文介绍的完整部署流程,你可以轻松在私有环境中搭建一套无需公网连接、数据不出内网、支持多语言识别的语音转写平台。
关键要点回顾:
- 环境准备充分:确保 GPU/CPU、内存、存储满足要求
- 一键启动便捷:
bash start_app.sh即可运行 WebUI - 六大功能齐全:覆盖单文件、批量、实时、VAD 等主流场景
- 参数调优增效:合理设置
batch_size和max_length可提升性能数倍 - 安全可靠离线:所有数据本地处理,杜绝泄露风险
无论是用于智能客服质检、会议纪要生成,还是教育内容转录,Fun-ASR 都能成为你构建私有语音系统的理想选择。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。