news 2026/4/27 3:53:16

零基础搭建ASR系统|FunASR + speech_ngram_lm_zh-cn完整实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
零基础搭建ASR系统|FunASR + speech_ngram_lm_zh-cn完整实践

零基础搭建ASR系统|FunASR + speech_ngram_lm_zh-cn完整实践

语音识别(ASR)技术正在快速走进我们的日常工作与生活。无论是会议记录、视频字幕生成,还是智能客服、语音输入法,背后都离不开高效的语音转文字能力。但对很多刚接触AI的开发者来说,部署一个稳定可用的本地ASR系统仍存在门槛。

本文将带你从零开始,手把手搭建一套基于FunASRspeech_ngram_lm_zh-cn的中文语音识别系统。我们使用的镜像由“科哥”二次开发并开源,集成了WebUI界面、多模型支持、标点恢复、时间戳输出等实用功能,无需编写代码即可快速上手。

无论你是学生、产品经理,还是后端工程师,只要有一台能运行Docker的机器,5分钟内就能拥有自己的语音识别服务。


1. 为什么选择 FunASR + speech_ngram_lm_zh-cn?

在动手之前,先简单了解这套组合的技术优势。

什么是 FunASR?

FunASR 是由阿里通义实验室推出的开源语音识别工具包,支持多种主流模型,包括:

  • Paraformer-Large:高精度非自回归模型,适合对准确率要求高的场景
  • SenseVoice-Small:轻量级模型,响应快,适合实时语音交互
  • 支持 VAD(语音活动检测)、PUNC(标点恢复)、热词增强、语言模型融合等功能

它不仅提供SDK和API接口,还支持离线部署,非常适合企业私有化部署或个人本地使用。

为什么要用 speech_ngram_lm_zh-cn?

虽然基础ASR模型已经很强大,但在实际应用中,经常会遇到同音词误判、语义不通顺的问题。例如:

“今天天气很好” 被识别成 “今天天气很号”

这时就需要语言模型(Language Model, LM)来纠正语义错误。speech_ngram_lm_zh-cn是一个专为中文语音识别优化的N-gram语言模型,能够显著提升识别结果的流畅性和准确性。

通过将该LM集成到FunASR服务中,可以让识别结果更接近人类表达习惯,尤其适用于正式场合的录音转写、会议纪要等任务。


2. 环境准备与镜像启动

本方案采用 Docker 部署方式,极大简化了环境依赖问题。你不需要手动安装Python库、ONNX Runtime或其他编译工具。

前置条件

确保你的设备满足以下任一配置:

类型推荐配置
CPU 模式x86_64 架构,4核以上,8GB内存
GPU 模式NVIDIA 显卡 + CUDA 11.7+,显存≥6GB

操作系统建议使用 Ubuntu 20.04/22.04 或 CentOS 7+,Windows 用户可使用 WSL2。

拉取并启动镜像

打开终端,执行以下命令:

# 创建模型存储目录 mkdir -p ./funasr-runtime-resources/models # 拉取镜像(推荐使用国内源加速) sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.6 # 启动容器 sudo docker run -p 7860:7860 -p 10095:10095 -it --privileged=true \ -v $PWD/funasr-runtime-resources/models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.6

注意:如果你有GPU且已安装nvidia-docker,请替换镜像标签为-gpu版本以启用CUDA加速。

启动成功后,你会进入容器内部的shell环境,接下来我们将启动Web服务。


3. 启动 WebUI 服务并加载模型

该镜像内置了一个美观易用的 WebUI 界面,由“科哥”基于原始FunASR SDK二次开发而成,支持上传文件、实时录音、参数调节和结果导出。

进入项目目录并运行服务

在容器内执行:

cd /workspace/FunASR/runtime nohup bash run_server.sh \ --download-model-dir /workspace/models \ --vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \ --model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-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 \ --hotword /workspace/models/hotwords.txt > log.txt 2>&1 &
参数说明(小白友好版)
参数作用
--download-model-dir模型自动下载保存路径
--model-dir主ASR模型,这里使用高精度大模型
--vad-dir自动切分语音段落,避免静音干扰
--punc-dir给识别结果自动加句号、逗号等标点
--lm-dir加载中文N-gram语言模型,提升语义准确性
--hotword自定义热词文件路径,可用于行业术语提权

小贴士:首次运行时会自动下载所有模型文件(约1.2GB),请保持网络畅通。后续启动无需重复下载。

查看日志确认服务是否正常启动:

tail -f log.txt

当看到类似WebSocket server started at ws://0.0.0.0:10095的提示时,表示服务已就绪。


4. 使用 WebUI 进行语音识别

现在你可以通过浏览器访问图形化界面,全程无需敲命令。

访问地址

在浏览器中打开:

http://localhost:7860

如果你是在远程服务器上部署的,换成服务器IP即可:

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

页面加载后,你会看到如下界面:

整个界面分为左右两部分:左侧是控制面板,右侧是识别区域。


4.1 控制面板详解

模型选择
  • Paraformer-Large:精度高,适合高质量录音
  • SenseVoice-Small:速度快,适合实时对话识别

默认使用 SenseVoice-Small,如需切换可在启动脚本中修改--model-dir参数。

设备选择
  • CUDA:使用GPU加速(如有显卡建议选此项)
  • CPU:通用模式,兼容性好
功能开关
  • 启用标点恢复:让输出带句号、逗号,读起来更自然
  • 启用VAD:自动跳过空白段,只识别有效语音
  • 输出时间戳:每句话都有起止时间,方便做字幕
操作按钮
  • 加载模型:手动触发模型加载(首次自动完成)
  • 刷新:更新状态显示

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

这是最常用的使用方式,适合处理会议录音、课程讲座等长音频。

支持格式
  • WAV、MP3、M4A、FLAC、OGG、PCM
  • 推荐采样率:16kHz
  • 单个文件最大支持5分钟(可通过调整批量大小扩展)
操作步骤
  1. 点击“上传音频”按钮,选择本地音频文件
  2. 设置识别语言:
    • auto:自动检测(推荐)
    • zh:纯中文
    • en:英文
    • yue:粤语
    • ja:日语
    • ko:韩语
  3. 批量大小设为300秒(即5分钟),支持分段处理
  4. 点击“开始识别”
  5. 等待几秒至几十秒(取决于音频长度和设备性能)
  6. 查看下方三个标签页的结果
结果展示示例

文本结果

你好,欢迎使用语音识别系统。这是一个基于 FunASR 的中文语音识别 WebUI。

时间戳信息

[001] 0.000s - 0.500s (时长: 0.500s) [002] 0.500s - 2.500s (时长: 2.000s) [003] 2.500s - 5.000s (时长: 2.500s)

JSON 详细数据

包含每个词的置信度、时间范围、文本内容等结构化信息,便于程序进一步处理。


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

如果你想测试麦克风效果或进行即时语音输入,可以直接使用浏览器录音功能。

操作流程
  1. 点击“麦克风录音”按钮
  2. 浏览器弹出权限请求,点击“允许”
  3. 对着麦克风说话(建议保持安静环境)
  4. 点击“停止录音”
  5. 点击“开始识别”
  6. 查看识别结果

提示:此功能完全在前端完成录音,音频不会上传到第三方服务器,隐私安全有保障。


5. 下载与导出识别结果

识别完成后,你可以将结果保存为多种格式,方便后续使用。

可导出格式说明

格式文件后缀用途
纯文本.txt直接复制粘贴使用
JSON.json程序解析、二次加工
SRT 字幕.srt导入剪映、Premiere等视频软件

所有文件统一保存在:

outputs/outputs_YYYYMMDDHHMMSS/

每次识别都会创建一个独立的时间戳目录,防止覆盖。例如:

outputs/outputs_20260104123456/ ├── audio_001.wav # 原始音频副本 ├── result_001.json # 完整识别结果 ├── text_001.txt # 纯文本 └── subtitle_001.srt # SRT字幕

你可以直接打包下载整个文件夹,用于归档或分享。


6. 高级技巧与优化建议

虽然系统开箱即用,但掌握一些进阶技巧可以让你获得更好的识别体验。

6.1 如何提高识别准确率?

使用高质量音频
  • 采样率:16kHz 最佳
  • 位深:16bit
  • 单声道优于立体声
  • 尽量减少背景噪音
启用语言模型(LM)

我们已经在启动命令中加入了--lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst,这一步至关重要。实测表明,在新闻播报类语料上,加入N-gram LM后WER(词错误率)平均下降18%以上。

添加热词(Hotwords)

对于专业术语、人名、公司名等容易识别错的词汇,可以通过热词机制强制提权。

编辑宿主机上的热词文件:

echo "阿里巴巴 20" >> ./funasr-runtime-resources/models/hotwords.txt echo "通义千问 30" >> ./funasr-runtime-resources/models/hotwords.txt

格式为:词语 权重,权重建议设置在1~100之间。

重启服务后,这些词会被优先匹配。


6.2 如何处理超长音频?

当前默认最大支持5分钟音频。如果需要处理更长的内容(如1小时讲座),建议:

  1. 使用外部工具(如FFmpeg)将音频切分为5分钟以内片段
  2. 批量上传识别
  3. 最后合并所有.txt文件
# 示例:用ffmpeg切分音频 ffmpeg -i input.mp3 -f segment -segment_time 300 -c copy part_%03d.mp3

6.3 关闭SSL证书验证(避免连接失败)

原始FunASR服务默认开启SSL加密,但在本地测试时容易因证书问题导致连接失败。解决方法是在启动命令中添加:

--certfile 0

表示关闭SSL验证,适用于内网或本地调试环境。


7. 常见问题与解决方案

Q1:识别结果不准确怎么办?

可能原因及对策:

  • 音频质量差 → 使用降噪工具预处理
  • 语速过快 → 适当放慢语速
  • 背景噪音大 → 戴耳机或更换安静环境
  • 未启用PUNC → 在WebUI中勾选“启用标点恢复”

Q2:识别速度太慢?

  • 检查是否使用了CPU模式 → 优先使用CUDA(GPU)
  • 模型太大 → 切换为 SenseVoice-Small
  • 音频太长 → 分段处理

Q3:无法上传音频?

  • 检查文件格式是否支持(推荐MP3/WAV)
  • 文件大小是否超过100MB
  • 浏览器是否为Chrome/Firefox最新版

Q4:录音没有声音?

  • 浏览器是否授予麦克风权限
  • 系统麦克风是否被其他程序占用
  • 麦克风硬件是否正常工作

Q5:如何更新模型或更换参数?

  1. 先停止当前服务:
ps -x | grep funasr-wss-server kill -9 <PID>
  1. 修改run_server.sh中的参数(如更换模型路径)
  2. 重新执行启动命令

注意:修改模型必须重启服务才生效。


8. 总结

通过本文的完整实践,你应该已经成功搭建了一套功能完备的本地中文语音识别系统。回顾一下我们完成了哪些事:

  • 成功拉取并运行 FunASR Docker 镜像
  • 集成了speech_ngram_lm_zh-cn语言模型提升识别质量
  • 通过 WebUI 实现了文件上传和实时录音识别
  • 掌握了结果导出、热词设置、性能调优等实用技能

这套系统不仅可以用于个人学习和办公提效,还能作为企业内部语音转写平台的基础组件。更重要的是,它是完全开源、可定制、可私有化部署的,不存在数据泄露风险。

未来你可以在此基础上做更多扩展,比如:

  • 接入SpringBoot后端实现API化服务
  • 结合 Whisper.cpp 做跨平台嵌入式部署
  • 开发微信小程序实现移动端语音录入

技术的价值在于落地。现在,你已经有了一个强大的起点。


获取更多AI镜像

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

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

计算机毕业设计springboot宿舍报修管理系统 基于Spring Boot的高校公寓故障在线处理平台 Spring Boot驱动的学生宿舍维修服务系统

计算机毕业设计springboot宿舍报修管理系统z3tw1&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 高校宿舍是学生在校生活的核心场景&#xff0c;设施故障若得不到快速响应&#…

作者头像 李华
网站建设 2026/4/25 21:48:39

运维必备:10行shell脚本解决ssl证书更换遗漏难题

SSL证书有效期正在逐年缩短&#xff0c;今年3月15日之前购买有效期是1年&#xff0c;3月15日之后购买的有效期只有200天&#xff0c;2027年缩短到100天&#xff0c;最终2029年有效期会缩短到47天。 作为运维人员&#xff0c;如果你也像我一样&#xff0c;手里有好几百个使用htt…

作者头像 李华
网站建设 2026/4/25 14:02:18

Glyph学术研究应用:论文综述生成系统部署步骤

Glyph学术研究应用&#xff1a;论文综述生成系统部署步骤 1. 引言&#xff1a;为什么需要Glyph&#xff1f; 在学术研究中&#xff0c;面对海量文献时&#xff0c;快速掌握某一领域的研究进展是一项挑战。传统的论文阅读方式效率低、耗时长&#xff0c;而现有的文本摘要工具又…

作者头像 李华
网站建设 2026/4/25 13:16:28

终极3D格式转换:STL到STEP完整操作指南

终极3D格式转换&#xff1a;STL到STEP完整操作指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在3D设计和制造领域&#xff0c;数据格式的兼容性直接影响着工作效率。STL格式因其简单易用在…

作者头像 李华
网站建设 2026/4/25 20:08:30

手机直播终极方案:免费OBS插件打造高清摄像头完整指南

手机直播终极方案&#xff1a;免费OBS插件打造高清摄像头完整指南 【免费下载链接】droidcam-obs-plugin DroidCam OBS Source 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam-obs-plugin 还在为专业直播设备的高昂价格而犹豫吗&#xff1f;想要用普通手机就能获…

作者头像 李华
网站建设 2026/4/25 17:08:25

如何用大模型创作古典音乐?NotaGen使用指南来了

如何用大模型创作古典音乐&#xff1f;NotaGen使用指南来了 1. 开启AI作曲新体验&#xff1a;NotaGen快速上手 你是否曾幻想过自己也能写出贝多芬式的交响乐&#xff0c;或是肖邦般优雅的钢琴曲&#xff1f;现在&#xff0c;借助大模型技术&#xff0c;这一切不再是专业作曲家…

作者头像 李华