news 2026/6/10 17:37:40

零基础搭建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/6/10 11:41:42

中小企业AI转型:Qwen3-1.7B低门槛部署实战指南

中小企业AI转型&#xff1a;Qwen3-1.7B低门槛部署实战指南 在当前人工智能加速落地的背景下&#xff0c;越来越多中小企业开始探索如何将大模型技术融入日常运营。然而&#xff0c;高昂的算力成本、复杂的部署流程和专业人才的缺乏&#xff0c;常常成为阻碍其AI转型的主要瓶颈…

作者头像 李华
网站建设 2026/6/10 13:06:52

AI研发提效新方式:MinerU本地部署一文详解

AI研发提效新方式&#xff1a;MinerU本地部署一文详解 1. 为什么PDF提取需要AI&#xff1f;传统方法的瓶颈在哪 你有没有遇到过这种情况&#xff1a;手头有一份几十页的学术论文或技术报告PDF&#xff0c;想把内容复制到Markdown里整理笔记&#xff0c;结果一粘贴全是乱码、错…

作者头像 李华
网站建设 2026/6/10 11:37:42

百度文库文档免费获取工具:终极清理与打印优化指南

百度文库文档免费获取工具&#xff1a;终极清理与打印优化指南 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 想要免费获取百度文库的完整文档内容吗&#xff1f;这款百度文库文档获取工具通过智…

作者头像 李华
网站建设 2026/6/10 11:37:17

Packmol分子结构构建工具深度解析与实战指南

Packmol分子结构构建工具深度解析与实战指南 【免费下载链接】packmol Packmol - Initial configurations for molecular dynamics simulations 项目地址: https://gitcode.com/gh_mirrors/pa/packmol Packmol作为分子动力学模拟领域的重要前置工具&#xff0c;为复杂分…

作者头像 李华
网站建设 2026/6/10 1:43:01

通义千问3-14B避坑指南:单卡部署常见问题全解

通义千问3-14B避坑指南&#xff1a;单卡部署常见问题全解 你是不是也和我一样&#xff0c;看到“14B体量、30B性能”、“单卡可跑”、“Thinking模式逼近QwQ-32B”这些关键词就心动不已&#xff1f;但一上手却发现&#xff1a;显存爆了、加载失败、响应卡顿、Ollama启动报错……

作者头像 李华
网站建设 2026/6/10 3:08:11

手把手教你部署OCR模型:cv_resnet18_ocr-detection保姆级教程

手把手教你部署OCR模型&#xff1a;cv_resnet18_ocr-detection保姆级教程 你是不是也遇到过这样的问题&#xff1a;一堆扫描件、截图、照片里的文字&#xff0c;手动一个个敲进电脑&#xff0c;费时又容易出错&#xff1f;别急&#xff0c;今天这篇文章就是为你准备的。我会带…

作者头像 李华