news 2026/4/18 17:37:52

手把手部署FunASR语音识别WebUI|集成speech_ngram_lm_zh-cn实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手部署FunASR语音识别WebUI|集成speech_ngram_lm_zh-cn实战

手把手部署FunASR语音识别WebUI|集成speech_ngram_lm_zh-cn实战

1. 引言:为什么选择FunASR + WebUI?

在语音识别(ASR)领域,FunASR是由 ModelScope 推出的开源语音基础工具包,支持离线/在线语音识别、端点检测(VAD)、标点恢复、语言模型增强等多种功能。其基于 ONNX 的推理方案具备高性能、低延迟的特点,广泛应用于智能客服、会议转录、字幕生成等场景。

然而,原生 FunASR 主要面向开发者提供 SDK 和服务端接口,缺乏直观的操作界面。为此,社区开发者“科哥”基于speech_ngram_lm_zh-cn模型进行了二次开发,构建了FunASR 语音识别 WebUI,极大降低了使用门槛。

本文将带你从零开始: - 部署 FunASR WebUI 环境 - 集成中文 N-gram 语言模型提升识别准确率 - 实践上传音频与实时录音两种识别方式 - 导出文本、JSON、SRT 字幕文件 - 解决常见问题并优化性能

本文适用于希望快速搭建本地语音识别系统的 AI 工程师、产品经理或科研人员。


2. 环境准备与镜像拉取

2.1 系统要求

组件推荐配置
操作系统Ubuntu 20.04 / 22.04 LTS
CPUIntel i5 及以上
内存≥ 8GB
显卡(可选)NVIDIA GPU(CUDA 支持)用于加速
存储空间≥ 20GB(含模型缓存)
Docker已安装(版本 ≥ 20.10)

2.2 安装 Docker(如未安装)

# 更新包索引 sudo apt-get update # 安装必要依赖 sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common # 添加 Docker 官方 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 添加仓库 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装 Docker CE sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io # 验证安装 sudo docker --version

2.3 创建本地目录并拉取镜像

该 WebUI 基于官方 FunASR 镜像进行二次封装,已预集成speech_ngram_lm_zh-cn中文语言模型。

# 创建模型挂载目录 mkdir -p ./funasr-runtime-resources/models # 拉取镜像(请替换为实际可用镜像地址) sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.6

⚠️ 注意:若使用 GPU 版本,请确保已安装 NVIDIA Container Toolkit,并使用gpu标签的镜像。


3. 启动容器与服务部署

3.1 启动 Docker 容器

sudo docker run -it --privileged=true \ -p 7860:7860 \ -p 10095:10095 \ -v $PWD/funasr-runtime-resources/models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.6 \ /bin/bash

说明: --p 7860:7860:映射 WebUI 端口 --p 10095:10095:映射 ASR 服务 WebSocket 端口 --v ...:挂载本地模型目录,便于持久化和热更新

3.2 进入容器并启动 ASR 服务

进入容器后执行以下命令:

cd /workspace/FunASR/runtime nohup bash run_server.sh \ --download-model-dir /workspace/models \ --model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx \ --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \ --punc-dir damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx \ --lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst \ --itn-dir thuduj12/fst_itn_zh \ --port 10095 \ --certfile 0 \ --hotword /workspace/models/hotwords.txt > asr_server.log 2>&1 &

关键参数解析: ---lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst:启用中文 N-gram 语言模型,显著提升专业术语和长句识别准确率 ---certfile 0:关闭 SSL,避免浏览器访问异常 ---hotword:支持加载热词文件(每行格式:关键词 权重,如人工智能 30

查看日志确认服务启动成功:

tail -f asr_server.log

预期输出包含:

INFO: Started server on port 10095 INFO: Model loaded successfully: paraformer-large

4. 启动 WebUI 并访问界面

4.1 启动 WebUI 应用

在容器内运行 WebUI 主程序:

cd /workspace/webui python app.main.py --host 0.0.0.0 --port 7860 --asr-host localhost --asr-port 10095

若提示缺少依赖,请先安装:

pip install gradio websockets numpy torch onnxruntime-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple

4.2 访问 WebUI 界面

打开浏览器访问:

http://localhost:7860

或远程访问:

http://<你的服务器IP>:7860

成功加载后将看到如下界面: - 标题:FunASR 语音识别 WebUI - 控制面板:模型选择、设备切换、功能开关 - 音频上传区与麦克风按钮 - 结果展示区(文本、JSON、时间戳)


5. 使用流程详解

5.1 方式一:上传音频文件识别

步骤 1:上传音频

点击「上传音频」按钮,支持格式包括: -.wav,.mp3,.m4a,.flac,.ogg,.pcm- 推荐采样率:16kHz - 单文件建议 ≤ 100MB

步骤 2:设置识别参数
参数推荐值说明
模型选择Paraformer-Large高精度模式
设备选择CUDA(如有GPU)提升解码速度
语言autozh自动检测或指定中文
批量大小300秒最大支持5分钟分段处理
启用PUNC✅ 开启自动添加逗号、句号等标点
输出时间戳✅ 开启用于生成字幕
步骤 3:开始识别

点击「开始识别」按钮,等待处理完成。识别进度会在页面显示。

步骤 4:查看结果

结果分为三个标签页: -文本结果:纯净文字内容,可直接复制 -详细信息:JSON 格式,包含每个词的置信度、时间戳 -时间戳:按句子划分的时间区间列表

示例输出:

[001] 0.000s - 1.200s (时长: 1.200s) [002] 1.200s - 3.500s (时长: 2.300s)

5.2 方式二:浏览器实时录音识别

步骤 1:授权麦克风权限

点击「麦克风录音」按钮,浏览器会弹出权限请求,点击「允许」。

步骤 2:录制语音
  • 对着麦克风清晰说话
  • 点击「停止录音」结束录制

录音数据仅在本地浏览器中处理,不上传至第三方服务器,保障隐私安全。

步骤 3:提交识别

点击「开始识别」,系统自动发送音频流至 ASR 服务端进行解码。

步骤 4:获取结果

同上传文件流程,可在下方查看文本、JSON 和时间戳信息。


6. 结果导出与高级功能

6.1 下载识别结果

识别完成后,可通过三个按钮下载不同格式的结果:

按钮文件格式用途
下载文本.txt文档编辑、内容提取
下载 JSON.json程序解析、结构化分析
下载 SRT.srt视频字幕嵌入、剪辑定位

所有输出文件保存路径为:

outputs/outputs_YYYYMMDDHHMMSS/

例如:

outputs/outputs_20260104123456/ ├── audio_001.wav ├── result_001.json ├── text_001.txt └── subtitle_001.srt

6.2 高级功能配置

调整批量大小(Batch Size)
  • 默认:300 秒(5 分钟)
  • 范围:60 ~ 600 秒
  • 作用:控制每次送入模型的音频长度,影响内存占用与响应速度

小技巧:对于长录音(>30分钟),建议手动切片为 5 分钟片段分别处理。

设置语言类型
选项适用场景
auto多语种混合内容
zh纯中文语音
en英文演讲、访谈
yue粤语方言
ja日语播客

选择正确语言可提升识别准确率 10%~20%。

启用时间戳输出

开启后,结果中会返回每个词或短语的时间偏移量,适用于: - 自动生成视频字幕 - 会议纪要定位发言段落 - 教学音频重点标注


7. 性能优化与问题排查

7.1 提高识别准确率的四大策略

方法操作说明效果评估
使用 N-gram LM启用speech_ngram_lm_zh-cn模型+15% 准确率
添加热词hotwords.txt中添加行业术语关键词错误率↓50%
清晰发音保持语速适中、减少背景噪音错别字减少
预处理降噪使用 Audacity 或 FFmpeg 降噪信噪比提升

示例热词文件(hotwords.txt):

大模型 30 Transformer 25 深度学习 20 AI Agent 30

7.2 加快识别速度的方法

场景优化措施
无 GPU 环境切换为SenseVoice-Small模型
长音频处理分段上传,每段 < 5 分钟
多并发需求增加--decoder-thread-num参数
冷启动慢提前下载模型到/workspace/models

切换小模型命令示例:

--model-dir iic/SenseVoiceSmall-onnx

7.3 常见问题与解决方案

问题现象可能原因解决方法
页面无法访问端口未映射或防火墙拦截检查-p 7860:7860是否生效
上传失败文件过大或格式不支持转换为 WAV/MP3,压缩至 <100MB
识别乱码编码错误或语言设置不当设置语言为zh,检查音频编码
麦克风无响应浏览器权限被拒清除站点权限并重新授权
模型加载失败网络不通或磁盘满检查网络连接与存储空间
返回空结果音频静音或信噪比极低重新录制,提高音量

8. 总结

本文完整演示了如何部署FunASR 语音识别 WebUI,并集成speech_ngram_lm_zh-cn中文语言模型实现高精度识别。通过图形化界面,即使是非技术人员也能轻松完成语音转文字任务。

核心要点回顾: 1.环境部署:使用 Docker 快速构建隔离环境,避免依赖冲突 2.模型集成:启用 N-gram 语言模型显著提升中文识别质量 3.双模识别:支持上传文件与实时录音两种输入方式 4.多格式导出:一键生成 TXT、JSON、SRT 文件,满足多样化需求 5.性能调优:结合硬件条件灵活选择模型与参数配置

未来可扩展方向: - 集成 Whisper 模型做对比评测 - 构建 RESTful API 供 SpringBoot 等后端调用 - 增加说话人分离(diarization)功能 - 支持批量任务队列处理

掌握这套部署方案,你就可以在本地快速搭建一个企业级语音识别系统,无需依赖云端 API,兼顾效率与数据安全。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

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

高效智能的鸣潮自动化工具完整使用指南

高效智能的鸣潮自动化工具完整使用指南 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否曾经为重复刷图而疲惫不堪&a…

作者头像 李华
网站建设 2026/4/18 16:55:43

Steam DRM移除完全指南:让游戏真正属于你

Steam DRM移除完全指南&#xff1a;让游戏真正属于你 【免费下载链接】Steamless Steamless is a DRM remover of the SteamStub variants. The goal of Steamless is to make a single solution for unpacking all Steam DRM-packed files. Steamless aims to support as many…

作者头像 李华
网站建设 2026/4/11 8:18:41

5大核心技巧深度解析zotero-style插件的学术生产力革命

5大核心技巧深度解析zotero-style插件的学术生产力革命 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件&#xff0c;提供了一系列功能来增强 Zotero 的用户体验&#xff0c;如阅读进度可视化和标签管理&#xff0c;适合研究人员和学者。 项目地址: https://g…

作者头像 李华
网站建设 2026/4/18 8:23:15

UI-TARS桌面版:重新定义人机交互的AI工作伙伴

UI-TARS桌面版&#xff1a;重新定义人机交互的AI工作伙伴 【免费下载链接】UI-TARS-desktop A GUI Agent application based on UI-TARS(Vision-Lanuage Model) that allows you to control your computer using natural language. 项目地址: https://gitcode.com/GitHub_Tre…

作者头像 李华
网站建设 2026/4/18 11:22:58

Arduino ESP32开发板安装失败:5步快速修复指南 [特殊字符]

Arduino ESP32开发板安装失败&#xff1a;5步快速修复指南 &#x1f680; 【免费下载链接】arduino-esp32 Arduino core for the ESP32 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 遇到Arduino ESP32开发板安装失败的技术问题&#xff1f;别担心&…

作者头像 李华
网站建设 2026/4/17 5:54:49

BERT命名实体识别实战:云端5分钟出结果,2块钱玩转

BERT命名实体识别实战&#xff1a;云端5分钟出结果&#xff0c;2块钱玩转 作为一名在AI大模型和智能硬件领域摸爬滚打了十多年的技术老兵&#xff0c;我太理解记者朋友的困境了。采访任务压头&#xff0c; deadline迫在眉睫&#xff0c;想从海量新闻稿里快速提取关键信息&#…

作者头像 李华