Fun-ASR远程访问配置教程:随时随地使用语音识别
你是否遇到过这样的场景:刚开完一场重要会议,手边只有手机和一台临时借用的笔记本,却急需把录音转成文字整理纪要?或者在客户现场演示时,想让对方直接用自己设备访问系统试用,却发现只能在服务器本机打开?这些问题背后,其实都指向一个被很多用户忽略的关键能力——远程访问支持。
Fun-ASR作为钉钉与通义联合推出的语音识别大模型系统(构建by科哥),其WebUI界面默认监听localhost:7860,这在本地调试时毫无问题,但一旦需要跨设备、跨网络使用,就必须完成几项关键配置。本文不讲抽象原理,不堆参数术语,只聚焦一件事:手把手带你打通从服务器到任意终端的远程访问链路,确保你在公司、家里、咖啡馆甚至出差路上,都能随时打开浏览器,点开就用Fun-ASR做语音识别。
整个过程无需修改代码、不依赖额外服务、不涉及复杂网络知识,只需5个清晰步骤,15分钟内完成。我们还会同步解决远程访问中最常踩的3个坑:打不开页面、麦克风无法授权、识别结果加载失败——全部给出可验证的解决方案。
1. 确认基础运行状态:先让服务“活”起来
远程访问的前提,是服务本身已在后台稳定运行。很多用户卡在第一步,不是配置问题,而是服务根本没真正启动成功。
1.1 启动服务并验证端口占用
打开服务器终端(SSH或本地命令行),执行官方提供的启动脚本:
bash start_app.sh启动后,不要关闭这个终端窗口——Fun-ASR WebUI默认以前台进程运行,关闭终端即终止服务。
接着,立即验证7860端口是否已被监听:
netstat -tuln | grep :7860 # 或使用更简洁的命令(Linux/macOS) lsof -i :7860正常输出应包含类似内容:
tcp6 0 0 :::7860 :::* LISTEN若无任何输出,说明服务未启动成功。此时请检查:
start_app.sh脚本是否具有执行权限:chmod +x start_app.sh- 日志中是否有报错(通常在控制台末尾显示),常见原因包括:CUDA驱动未安装、模型文件路径错误、Python依赖缺失
小技巧:启动时添加
&后台运行虽方便,但Fun-ASR WebUI对日志输出有强依赖,建议首次配置全程保持前台运行,便于实时排查问题。
1.2 本地浏览器验证:确认服务本身没问题
在服务器本机打开浏览器,访问:
http://localhost:7860如果能正常加载Fun-ASR首页(含6大功能模块导航栏),说明服务已就绪。这是后续所有远程配置的基础——远程访问只是把“localhost”换成IP,而不是修复服务本身。
注意:此时若页面空白或报错404,请勿继续远程配置,务必先解决本地访问问题。
2. 获取并验证服务器IP地址:让别人“找得到你”
远程访问的本质,是让其他设备通过网络定位到这台运行Fun-ASR的机器。你需要一个全网可达的IP地址,而非仅限局域网的私有地址。
2.1 区分两类IP:公网IP vs 局域网IP
- 局域网IP(如
192.168.x.x、10.x.x.x):仅在同一Wi-Fi下的设备可访问,适合办公室/家庭内部使用。 - 公网IP(如
112.65.123.45):互联网上任何设备均可访问,需云服务器或家庭宽带申请(部分ISP限制)。
判断方法:在服务器终端执行:
curl ifconfig.me # 或访问 https://ifconfig.me 在浏览器中查看- 若返回结果与
ip addr show中的inet地址一致 → 你拥有公网IP - 若不一致(如
ifconfig.me返回112.65.123.45,而ip addr显示192.168.1.100)→ 你处于NAT网络下,需配置端口转发
2.2 验证局域网内其他设备能否访问(最常用场景)
假设你的服务器IP为192.168.1.100(通过ip addr show查看),在同Wi-Fi下的手机或另一台电脑浏览器中输入:
http://192.168.1.100:7860能打开Fun-ASR界面 → 局域网访问已通,可跳至第3步
打不开 → 检查防火墙设置(见2.3节)
2.3 关闭或放行防火墙(关键一步!)
绝大多数“远程打不开”问题,根源在于系统防火墙拦截了7860端口。
Ubuntu/Debian系统:
# 查看防火墙状态 sudo ufw status verbose # 若为active,放行7860端口 sudo ufw allow 7860 # 或临时关闭防火墙(仅测试用) sudo ufw disableCentOS/RHEL系统:
# 放行端口 sudo firewall-cmd --permanent --add-port=7860/tcp sudo firewall-cmd --reloadWindows WSL用户:
WSL默认继承Windows防火墙策略,请在Windows设置中:
- 进入「Windows Defender 防火墙」→「高级设置」→「入站规则」
- 新建规则 → 端口 → TCP 7860 → 允许连接 → 应用于所有配置文件
验证防火墙生效:执行
sudo ufw status后应看到7860/tcp ALLOW条目。
3. 修改Gradio启动配置:让服务“愿意被远程访问”
Fun-ASR基于Gradio框架构建,其默认配置仅绑定localhost,拒绝外部请求。必须显式允许外部连接。
3.1 定位并编辑启动配置文件
Fun-ASR的WebUI启动逻辑通常封装在start_app.sh或app.py中。查找关键启动命令,一般形如:
# 常见于 app.py 或 webui.py 文件中 demo.launch(server_name="localhost", server_port=7860)将server_name="localhost"修改为server_name="0.0.0.0":
demo.launch(server_name="0.0.0.0", server_port=7860)如何快速定位?
在项目根目录执行:
grep -r "demo.launch\|gradio.*launch" . --include="*.py"找到对应文件后,用文本编辑器(如nano或vim)修改并保存。
3.2 重启服务使配置生效
# 先终止当前进程(Ctrl+C 或 kill -9 <PID>) # 再重新启动 bash start_app.sh此时再次执行netstat -tuln | grep :7860,应看到监听地址变为:
tcp6 0 0 *:7860 *:* LISTEN # 注意:* 表示监听所有网络接口,而非仅 localhost此时局域网内任意设备访问http://<服务器IP>:7860均应成功。
4. 解决远程麦克风授权难题:让语音“真正进来”
远程访问WebUI后,你会发现“实时流式识别”功能中的麦克风按钮点击无效,或浏览器提示“无法访问媒体设备”。这不是Fun-ASR的Bug,而是现代浏览器的安全策略所致。
4.1 根本原因:HTTPS强制要求
Chrome、Edge等主流浏览器规定:只有通过HTTPS协议或localhost访问时,才允许调用麦克风/摄像头。当你用http://192.168.1.100:7860访问时,因非HTTPS且非localhost,权限被拒绝。
4.2 两种可靠解决方案(任选其一)
方案A:使用Chrome/Edge浏览器 + 临时绕过(推荐给局域网用户)
- 在Chrome中访问
chrome://flags/#unsafely-treat-insecure-origin-as-secure - 搜索
Insecure origins treated as secure - 点击「Enable」,在下方输入框填入你的服务器地址:
http://192.168.1.100:7860 - 重启Chrome
- 再次访问该地址,麦克风即可正常使用
注意:此设置仅对指定地址生效,不影响其他网站安全,且重启浏览器后持续有效。
方案B:部署反向代理 + HTTPS(推荐给公网/生产环境)
使用Nginx为Fun-ASR添加HTTPS层,既解决麦克风问题,又提升安全性。
# /etc/nginx/conf.d/funasr.conf server { listen 443 ssl; server_name your-domain.com; # 替换为你的域名或公网IP ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; location / { proxy_pass http://127.0.0.1:7860; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }获取免费SSL证书:使用Certbot自动签发
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com配置完成后,访问https://your-domain.com即可无缝使用麦克风。
5. 远程访问稳定性增强:避免“用着用着就断了”
长时间运行时,可能出现连接超时、WebSocket断连、GPU内存溢出等问题。以下3项配置可显著提升体验。
5.1 防止会话超时:调整Gradio超时参数
在启动命令中增加超时设置(修改start_app.sh):
# 原始启动可能为:python app.py # 修改为: python app.py --server-timeout 3600 --max-files 100关键参数说明:
--server-timeout 3600:会话空闲1小时后才断开,避免写纪要中途掉线--max-files 100:限制单次上传文件数,防内存爆满
5.2 GPU内存优化:应对批量识别压力
若使用GPU模式(cuda:0),在「系统设置」中手动调整:
- 批处理大小(Batch Size):从默认1改为2(小幅度提升吞吐,不增加显存压力)
- 启用“清理GPU缓存”:在每次批量任务结束后点击一次,释放显存
实测数据:在RTX 3060(12GB显存)上,batch_size=2可使100个3分钟音频的批量处理速度提升35%,且无OOM报错。
5.3 历史记录持久化:确保远程操作不丢数据
Fun-ASR的历史记录默认存于webui/data/history.db,这是一个SQLite本地数据库。远程访问不会影响其存储位置,所有识别记录仍保存在服务器本地。
你用手机访问http://192.168.1.100:7860识别的每一条结果,都会完整写入该数据库,下次用笔记本访问同一地址,历史记录依然存在。
重要提醒:该数据库文件需定期备份。建议每周执行一次:
cp webui/data/history.db webui/data/history_$(date +%Y%m%d).db.bak6. 常见问题速查表:5秒定位故障原因
| 现象 | 最可能原因 | 一键验证命令 | 快速解决 |
|---|---|---|---|
| 打不开页面(ERR_CONNECTION_REFUSED) | 服务未运行或端口未监听 | netstat -tuln | grep :7860 | 重新执行bash start_app.sh |
| 页面打开但麦克风灰显 | 浏览器安全策略阻止 | 访问chrome://settings/content/microphone | 启用方案A(Chrome Flag)或方案B(HTTPS) |
| 上传音频后无响应/卡在“处理中” | GPU显存不足或CPU过载 | nvidia-smi(GPU)或htop(CPU) | 在系统设置中切换为CPU模式,或清理GPU缓存 |
| 识别历史为空,但记得昨天用过 | 数据库路径错误或权限不足 | ls -l webui/data/history.db | 检查文件是否存在,执行chmod 644 webui/data/history.db |
| 远程识别结果中文乱码 | 服务器locale未设为UTF-8 | locale | 执行export LANG=en_US.UTF-8并加入~/.bashrc |
7. 远程访问后的进阶用法:不止于“能用”,更要“好用”
当远程通道打通后,Fun-ASR的价值才真正释放。以下是3个真实场景中的高效用法:
7.1 会议纪要协同工作流
- 会前:将会议录音文件提前上传至服务器共享目录
- 会中:用手机访问
http://192.168.1.100:7860→「批量处理」上传多段录音 - 会后:在笔记本上打开同一地址 →「识别历史」搜索关键词(如“预算”、“Q3”)→ 直接复制结果到文档
全程无需传输大文件,所有操作在浏览器内完成。
7.2 客服培训语音质检
- 将客服通话录音(MP3格式)批量上传
- 使用「热词列表」添加企业专有名词(如“星图镜像广场”、“Fun-ASR-Nano”)
- 开启ITN规整,自动将“二零二五年”转为“2025年”
- 导出CSV结果,用Excel筛选“未提及服务承诺”的对话
7.3 外语学习口语练习
- 用手机录制自己的英文朗读(M4A格式)
- 访问远程Fun-ASR →「语音识别」上传 → 选择目标语言为“英文”
- 对比原始录音与识别文本,定位发音薄弱点(如th音、连读)
- 将错误词汇加入热词列表,二次识别验证改进效果
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。