FunASR语音识别详细步骤:自定义词典使用方法

FunASR语音识别详细步骤:自定义词典使用方法

1. 引言

1.1 项目背景与目标

在实际语音识别应用中,通用语言模型往往难以准确识别特定领域术语、人名、地名或行业专有名词。为提升识别准确率,自定义词典(Custom Dictionary)成为关键优化手段。本文将详细介绍如何在基于speech_ngram_lm_zh-cn二次开发的 FunASR 语音识别系统中,集成并使用自定义词典,显著提升专业场景下的识别效果。

本系统由开发者“科哥”基于 Alibaba-DAMO-Academy/FunASR 框架进行 WebUI 二次开发,支持本地部署、实时录音与批量文件识别,具备高可用性与易用性。通过引入 N-gram 语言模型与用户词典融合机制,可有效纠正误识别问题,如“科哥”被识别为“哥哥”,“达摩院”识别为“打魔院”等。

1.2 自定义词典的核心价值

  • 提升专有名词识别准确率
  • 降低领域外词汇干扰
  • 增强上下文语义连贯性
  • 无需重新训练模型即可生效

2. 系统环境准备

2.1 前置依赖确认

确保已成功部署 FunASR WebUI 并能正常访问:

# 启动服务后访问 http://localhost:7860

所需组件: - Python >= 3.8 - FunASR >= 0.9.0 - PyTorch + CUDA(推荐) - gradio(用于 WebUI)

2.2 文件目录结构定位

进入项目根目录,找到语言模型相关路径:

funasr-webui/ ├── models/ │ └── ngram/ │ └── speech_ngram_lm_zh-cn/ │ ├── lm.binary │ ├── words.txt │ └── unigram.arpa └── custom_dict/ └── user_words.txt # 自定义词典文件(需手动创建)

注意:speech_ngram_lm_zh-cn是基于中文文本训练的 N-gram 语言模型,我们将在其基础上叠加用户词典。


3. 自定义词典构建流程

3.1 词典格式规范

FunASR 支持通过FST(Finite State Transducer)方式加载用户词表,输入格式为纯文本.txt文件,每行一条词条,格式如下:

词语 频次 优先级
  • 词语:希望强制识别的词汇(支持多字词)
  • 频次:该词在语料中出现的频率(建议设为 100~1000)
  • 优先级:控制匹配优先级(数值越大越优先,默认 5)
示例:user_words.txt
科哥 500 8 达摩院 800 7 通义千问 1000 9 FunASR 600 7 语音识别 900 6

提示:对于易混淆词(如“科哥 vs 哥哥”),应设置更高优先级以覆盖默认词典。

3.2 创建自定义词典文件

在项目目录下创建专用文件夹和词典文件:

mkdir -p custom_dict cat > custom_dict/user_words.txt << 'EOF' 科哥 500 8 达摩院 800 7 通义千问 1000 9 FunASR 600 7 语音识别 900 6 ASR系统 700 7 NLP技术 650 6 EOF

3.3 编码要求

确保文件保存为UTF-8 编码,避免中文乱码:

file custom_dict/user_words.txt # 输出应包含:UTF-8 Unicode text

若非 UTF-8,可用以下命令转换:

iconv -f gbk -t utf-8 custom_dict/user_words.txt -o custom_dict/user_words_utf8.txt mv custom_dict/user_words_utf8.txt custom_dict/user_words.txt

4. 语言模型融合与编译

4.1 工具准备:kaldi-style FST 构建工具

FunASR 使用 Kaldi 工具链生成 FST 格式的词典补丁。需安装基本工具包(如openfst,kaldi-io)。

安装 OpenFST(Ubuntu 示例)
sudo apt-get install openfst-tools

4.2 生成 FST 用户词典

执行脚本将文本词典转为 FST 可读格式:

# 进入工具目录(假设存在 build_user_dict.sh 脚本) cd tools/ cat > build_user_dict.sh << 'EOF' #!/bin/bash DICT_FILE=../custom_dict/user_words.txt TEMP_DIR=../custom_dict/temp mkdir -p $TEMP_DIR # 提取词汇列表 cut -d' ' -f1 $DICT_FILE > $TEMP_DIR/words.txt # 生成符号表(symtab) echo "<eps> 0" > $TEMP_DIR/words.sym awk '{print $1, NR}' $TEMP_DIR/words.txt >> $TEMP_DIR/words.sym # 生成 L.fst(简单单层网络) sed 's/^/0 0 /; s/$/ 1/' $TEMP_DIR/words.txt | sed 's/ /:/g' > $TEMP_DIR/L.raw fstcompile --isymbols=$TEMP_DIR/words.sym \ --osymbols=$TEMP_DIR/words.sym \ --keep_isymbols=false \ --keep_osymbols=false \ $TEMP_DIR/L.raw \ ../custom_dict/user_dict.fst EOF chmod +x build_user_dict.sh ./build_user_dict.sh

成功后生成user_dict.fst,即二进制 FST 补丁文件。


5. 集成至 FunASR 推理流程

5.1 修改推理配置文件

model_config.json或启动参数中指定用户词典路径:

{ "model": "paraformer", "lm_model": "models/ngram/speech_ngram_lm_zh-cn/lm.binary", "user_dict": "custom_dict/user_dict.fst", "decoding_method": "nbest_rescoring", "beam_size": 10 }

或在 Python 调用时传参:

from funasr import AutoModel model = AutoModel( model="paraformer-zh", model_revision="v2.0.0", ngpu=1, device="cuda", lm_path="models/ngram/speech_ngram_lm_zh-cn/lm.binary", user_dict="custom_dict/user_dict.fst" )

5.2 WebUI 中启用自定义词典(扩展功能)

当前官方 WebUI 未直接暴露词典开关,可通过以下方式激活:

方法一:修改app.py加载逻辑

在模型初始化部分添加user_dict参数:

def load_model(): global asr_model asr_model = AutoModel( model="paraformer-large", lm_path="./models/ngram/speech_ngram_lm_zh-cn/lm.binary", user_dict="./custom_dict/user_dict.fst", # ← 新增 device="cuda" if use_gpu else "cpu" )
方法二:运行时环境变量控制
export FUNASR_USER_DICT="./custom_dict/user_dict.fst" python app.main.py --port 7860

然后在代码中读取:

import os user_dict = os.getenv("FUNASR_USER_DICT", None)

6. 效果验证与测试

6.1 测试音频准备

录制一段包含自定义词汇的语音,例如:

“今天我要介绍的是通义千问和FunASR这两个来自达摩院的重要项目,主开发者是科哥。”

6.2 对比实验设计

实验组是否启用词典预期结果
A“通义千问” → “同意千问”,“科哥” → “哥哥”
B所有专有名词正确识别

6.3 实际识别结果对比

组A(无词典)输出:
今天我要介绍的是同意千问和FunASR这两个来自打魔院的重要项目,主开发者是哥哥。
组B(启用词典)输出:
今天我要介绍的是通义千问和FunASR这两个来自达摩院的重要项目,主开发者是科哥。

✅ 所有目标词汇均被准确识别,证明自定义词典有效。


7. 高级技巧与优化建议

7.1 多音字处理策略

某些词汇存在多音现象(如“重”在“重要”中读 zhòng),可在词典中显式标注拼音:

重要 zhong4 yao4 1000 9

但需配合支持拼音输入的语言模型构建流程,适用于深度定制场景。

7.2 动态词典更新机制

实现热更新能力,无需重启服务:

def reload_user_dict(): new_fst = "./custom_dict/user_dict_v2.fst" if os.path.exists(new_fst): asr_model.set_user_dict(new_fst) # 假设接口支持 print("用户词典已更新")

注:目前 FunASR 尚不原生支持动态加载,需结合模型重载实现。

7.3 性能影响评估

  • 内存占用:增加约 5~20MB(取决于词典大小)
  • 延迟影响:< 5% 增幅(小词典可忽略)
  • 推荐上限:不超过 10,000 条高频词

8. 常见问题排查

8.1 词典未生效原因分析

问题现象可能原因解决方案
专有名词仍被错误识别未正确加载user_dict.fst检查路径权限与格式
报错FST not found文件路径错误或未生成使用绝对路径调试
识别变慢明显词典过大或结构复杂精简低频词,控制规模
出现乱码文件编码非 UTF-8转换为 UTF-8 再编译

8.2 日志调试建议

开启详细日志查看加载过程:

import logging logging.basicConfig(level=logging.DEBUG) # 查看是否打印: # INFO: Loading user dictionary from ./custom_dict/user_dict.fst

9. 总结

9. 总结

本文系统阐述了在 FunASR 语音识别系统中集成自定义词典的完整流程,涵盖从词典编写、FST 编译到模型融合的各个环节。通过合理配置user_words.txt并生成对应的user_dict.fst,可显著提升特定领域术语的识别准确率,尤其适用于科技、医疗、金融等专业场景。

核心要点回顾: 1.词典格式必须符合“词 频次 优先级”三列规范2.使用 OpenFST 工具链生成二进制 FST 文件3.在推理时通过user_dict参数注入词典路径4.WebUI 场景需修改源码或使用环境变量传递路径5.测试验证是确保词典生效的关键步骤

未来可进一步探索动态词典加载、拼音辅助匹配、以及与 Whisper 等模型的兼容适配方案。


获取更多AI镜像

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1167694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音直播下载3分钟上手教程:零基础保存高清回放

抖音直播下载3分钟上手教程&#xff1a;零基础保存高清回放 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为错过精彩直播而遗憾吗&#xff1f;这款免费的抖音直播下载工具让你轻松获取高清直播回放&am…

抖音批量下载终极指南:三步搞定高清无水印视频收藏

抖音批量下载终极指南&#xff1a;三步搞定高清无水印视频收藏 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为抖音上精彩的视频内容无法永久保存而烦恼吗&#xff1f;想要建立一个完整的个人视频库吗…

终极AMD硬件调试深度解析:ZenStatesDebugTool核心技术原理与实战应用

终极AMD硬件调试深度解析&#xff1a;ZenStatesDebugTool核心技术原理与实战应用 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地…

抖音下载神器:新手也能轻松掌握的批量下载完整教程

抖音下载神器&#xff1a;新手也能轻松掌握的批量下载完整教程 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为手动保存抖音视频而烦恼吗&#xff1f;想要一次性下载用户主页所有作品却不知从何下手&a…

Chrome全页截图工具深度解析:3步实现完美网页存档

Chrome全页截图工具深度解析&#xff1a;3步实现完美网页存档 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension…

BAAI/bge-m3性能对比:不同硬件平台测试

BAAI/bge-m3性能对比&#xff1a;不同硬件平台测试 1. 背景与技术选型动机 随着检索增强生成&#xff08;RAG&#xff09;架构在大模型应用中的广泛落地&#xff0c;高质量的语义相似度计算已成为知识检索链路中的关键环节。BAAI/bge-m3 作为北京智源人工智能研究院推出的多语…

如何用轻量级工具优化Alienware系统性能:终极替代方案指南

如何用轻量级工具优化Alienware系统性能&#xff1a;终极替代方案指南 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否厌倦了Alienware Command …

bge-large-zh-v1.5性能优化:内存管理与资源调度技巧

bge-large-zh-v1.5性能优化&#xff1a;内存管理与资源调度技巧 1. 引言 随着大模型在语义理解、信息检索和推荐系统等场景中的广泛应用&#xff0c;高效部署和运行嵌入&#xff08;embedding&#xff09;模型成为工程落地的关键挑战。bge-large-zh-v1.5作为一款高性能中文文…

DeepSeek-R1-Distill-Qwen-1.5B实战教程:构建数学解题助手完整指南

DeepSeek-R1-Distill-Qwen-1.5B实战教程&#xff1a;构建数学解题助手完整指南 1. 引言 在边缘计算与本地化AI应用快速发展的今天&#xff0c;如何在资源受限的设备上部署高性能语言模型&#xff0c;成为开发者和研究者关注的核心问题。DeepSeek-R1-Distill-Qwen-1.5B 正是在…

终极PNG转SVG图像矢量化工具:Vectorizer完整使用指南

终极PNG转SVG图像矢量化工具&#xff1a;Vectorizer完整使用指南 【免费下载链接】vectorizer Potrace based multi-colored raster to vector tracer. Inputs PNG/JPG returns SVG 项目地址: https://gitcode.com/gh_mirrors/ve/vectorizer 在当今数字设计领域&#xf…

AI读脸术自动归档功能:按属性分类存储实战案例

AI读脸术自动归档功能&#xff1a;按属性分类存储实战案例 1. 引言 1.1 业务场景描述 在图像管理、用户行为分析和智能安防等实际应用中&#xff0c;常常需要对大量人脸图像进行结构化处理。传统的人工标注方式效率低下、成本高昂&#xff0c;难以满足自动化归档的需求。尤其…

Chrome全页截图终极指南:一键保存完整网页内容

Chrome全页截图终极指南&#xff1a;一键保存完整网页内容 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …

DCT-Net人像卡通化模型实战|适配RTX 40系列显卡的GPU镜像使用指南

DCT-Net人像卡通化模型实战&#xff5c;适配RTX 40系列显卡的GPU镜像使用指南 1. 技术背景与应用场景 随着AI生成内容&#xff08;AIGC&#xff09;技术的快速发展&#xff0c;图像风格迁移已成为计算机视觉领域的重要应用方向。其中&#xff0c;人像卡通化作为连接现实与虚拟…

ARM Cortex-M异常与ISR关系通俗解释

ARM Cortex-M异常与ISR&#xff1a;从硬件触发到代码执行的全链路解析你有没有遇到过这样的情况&#xff1f;明明配置好了GPIO中断&#xff0c;可按键一按下去&#xff0c;ISR就是不进&#xff1b;或者程序突然跑飞&#xff0c;直接进了HardFault——而你翻遍代码也找不到原因。…

如何高效实现中文语音转写?用科哥版FunASR镜像一键落地

如何高效实现中文语音转写&#xff1f;用科哥版FunASR镜像一键落地 1. 背景与需求分析 在当前AI技术快速发展的背景下&#xff0c;语音识别&#xff08;ASR, Automatic Speech Recognition&#xff09;已成为智能客服、会议记录、视频字幕生成等场景中的关键能力。尤其在中文…

Lumafly完全手册:轻松掌握空洞骑士模组管理技巧

Lumafly完全手册&#xff1a;轻松掌握空洞骑士模组管理技巧 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 在《空洞骑士》的模组世界中&#xff0c;Lumafly作为…

HY-MT1.5-1.8B部署教程:显存占用<1GB配置

HY-MT1.5-1.8B部署教程&#xff1a;显存占用<1GB配置 1. 引言 1.1 学习目标 本文旨在为开发者提供一份完整、可落地的 HY-MT1.5-1.8B 轻量级多语翻译模型 的本地化部署指南。通过本教程&#xff0c;您将掌握&#xff1a; 如何在资源受限设备&#xff08;如消费级笔记本或…

焕新老旧电视:5个步骤让您的电视秒变智能直播中心

焕新老旧电视&#xff1a;5个步骤让您的电视秒变智能直播中心 【免费下载链接】mytv-android 使用Android原生开发的电视直播软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android 还在为家里那台只能收看有限频道的"老古董"电视而烦恼吗&#xff…

VMware macOS Unlocker完整指南:在Windows和Linux上运行苹果系统

VMware macOS Unlocker完整指南&#xff1a;在Windows和Linux上运行苹果系统 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/un/unlocker 想要在普通的PC电脑上体验macOS系统吗&#xff1f;VMware macOS Unlocker为您提…

SenseVoice Small实战:智能语音处理系统开发

SenseVoice Small实战&#xff1a;智能语音处理系统开发 1. 引言 随着人工智能技术的不断演进&#xff0c;语音识别已从单纯的“语音转文字”迈向更深层次的理解——情感与事件感知。传统的ASR&#xff08;自动语音识别&#xff09;系统虽然能够高效地将语音内容转化为文本&a…