SenseVoice-Small ONNX语音识别教程:自定义词典提升专业术语识别率
1. 项目简介
SenseVoice-Small ONNX是一个基于FunASR开源框架的轻量化语音识别工具,专门针对普通硬件设备进行了深度优化。这个工具解决了传统语音识别系统常见的几个痛点:资源占用高、部署复杂、专业术语识别不准,以及缺少标点符号影响可读性等问题。
核心优势:
- 轻量化设计:采用Int8量化技术,相比标准版本减少75%的内存和显存占用
- 即开即用:无需复杂配置,上传音频即可获得带标点的识别结果
- 隐私安全:所有处理都在本地完成,音频数据不会上传到任何服务器
- 专业优化:支持自定义词典,显著提升专业术语识别准确率
无论是做会议记录、访谈整理,还是处理专业领域的音频资料,这个工具都能帮你快速获得准确的文字稿。
2. 环境准备与快速部署
2.1 系统要求
在开始之前,请确保你的设备满足以下基本要求:
- 操作系统:Windows 10/11, macOS 10.15+, 或 Ubuntu 18.04+
- Python版本:Python 3.8 - 3.11
- 内存:至少4GB RAM(处理长音频建议8GB以上)
- 存储空间:2GB可用空间(用于模型文件)
2.2 一键安装
打开终端或命令提示符,执行以下命令完成环境搭建:
# 创建项目目录 mkdir voice-recognition-tool cd voice-recognition-tool # 创建虚拟环境(推荐) python -m venv venv source venv/bin/activate # Linux/macOS # 或者 venv\Scripts\activate # Windows # 安装核心依赖 pip install torch onnxruntime streamlit pip install modelscope funasr -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html2.3 启动语音识别工具
安装完成后,创建一个名为app.py的文件,然后运行:
streamlit run app.py启动成功后,终端会显示一个本地访问地址(通常是http://localhost:8501),用浏览器打开这个地址就能看到操作界面了。
3. 基础语音识别操作
3.1 首次运行设置
第一次启动时,系统会自动下载必要的模型文件:
- 主识别模型:SenseVoice-Small量化版,约300MB
- 标点模型:CT-Transformer,约50MB
下载过程可能需要几分钟,取决于你的网络速度。所有模型文件都会保存在本地,后续使用无需重新下载。
3.2 快速识别体验
让我们用一个简单的例子来快速体验语音识别的整个过程:
- 准备音频:找一段1-2分钟的普通话音频(访谈录音、会议片段等)
- 上传文件:在界面中点击"上传音频文件",选择你的音频
- 开始识别:点击"开始识别"按钮
- 查看结果:等待几秒到几分钟(取决于音频长度),就能看到带标点的完整文字稿
小技巧:首次使用建议先用短音频测试,熟悉流程后再处理长音频。
4. 自定义词典功能详解
4.1 为什么需要自定义词典?
在实际使用中,你可能会遇到这样的情况:
- 专业术语被识别成普通词汇("神经网络"被识别成"神精网络")
- 英文缩写识别不准("GPT"被识别成"鸡皮提")
- 特定人名、地名、产品名识别错误
自定义词典功能就是专门解决这些问题的。通过添加专业词汇,可以大幅提升特定领域的识别准确率。
4.2 创建自定义词典
创建一个名为custom_dict.txt的文本文件,格式如下:
# 专业术语 神经网络 深度学习 机器学习 卷积神经网络 Transformer # 英文缩写 GPT AI API CPU GPU # 特定名词 张小明(人名) 北京科技有限公司(公司名) TensorFlow(框架名)格式说明:
- 每行一个词条
- 井号(#)开头的行是注释,会被忽略
- 词条不要带标点符号
- 一个词条最多不超过10个汉字或20个英文字符
4.3 加载自定义词典
在Python代码中添加词典加载功能:
import os from funasr import AutoModel def load_custom_dictionary(dict_path="custom_dict.txt"): custom_dict = [] if os.path.exists(dict_path): with open(dict_path, 'r', encoding='utf-8') as f: for line in f: line = line.strip() if line and not line.startswith('#'): custom_dict.append(line) print(f"已加载 {len(custom_dict)} 个自定义词条") return custom_dict # 在识别前加载词典 custom_words = load_custom_dictionary() # 初始化模型时传入自定义词典 model = AutoModel( model="SenseVoiceSmall", model_revision="v2.0.6", vad_model="fsmn-vad", vad_model_revision="v2.0.6", punc_model="ct-punc", punc_model_revision="v2.0.6", spk_model="cam++", spk_model_revision="v2.0.6", # 传入自定义词典 custom_dict=custom_words )5. 实战:提升专业术语识别率
5.1 技术文档识别案例
假设你有一段技术讲座的录音,包含大量专业术语。没有自定义词典时,识别结果可能是这样的:
"今天我们讲解神精网络和身度学习的基本原理,特别是转机神经网罗在土像识别中的应用..."
添加专业词典后,识别结果显著改善:
"今天我们讲解神经网络和深度学习的基本原理,特别是卷积神经网络在图像识别中的应用..."
5.2 医学领域识别优化
医学音频的识别尤其需要自定义词典。比如一段医学讲座:
没有词典:
"患者出现心机更塞症状,需要立即进行融栓治疗..."
添加医学词典后:
"患者出现心肌梗塞症状,需要立即进行溶栓治疗..."
医学词典示例:
心肌梗塞 溶栓治疗 冠状动脉 高血压 糖尿病 CT扫描 MRI检查5.3 法律文档识别
法律文档中有大量专业术语和固定表达:
法律词典示例:
最高人民法院 人民检察院 犯罪嫌疑人 刑事诉讼法 民事诉讼 行政诉讼 司法解释 合同纠纷 知识产权6. 高级使用技巧
6.1 批量处理多个音频
如果你需要处理多个音频文件,可以稍微修改代码实现批量处理:
import glob def batch_process_audio(audio_folder, output_folder): audio_files = glob.glob(os.path.join(audio_folder, "*.mp3")) + \ glob.glob(os.path.join(audio_folder, "*.wav")) for audio_file in audio_files: print(f"处理文件: {os.path.basename(audio_file)}") result = model.generate(input=audio_file) # 保存结果 output_file = os.path.join(output_folder, os.path.basename(audio_file) + ".txt") with open(output_file, 'w', encoding='utf-8') as f: f.write(result[0]['text'])6.2 优化识别性能
对于长音频文件,可以使用以下技巧优化性能:
# 分段处理长音频 model = AutoModel( model="SenseVoiceSmall", # 启用分段处理 vad_kwargs={"max_single_segment_time": 60000}, # 每段最长60秒 # 其他参数... )6.3 处理特殊音频情况
如果遇到识别效果不理想的音频,可以尝试:
- 降噪处理:使用音频编辑软件先进行降噪
- 音量标准化:确保音频音量适中,不要过小或爆音
- 分段处理:特别长的音频分成小段处理
- 采样率检查:确保音频采样率在16kHz-44.1kHz之间
7. 常见问题解答
7.1 词典为什么不生效?
如果自定义词典没有效果,检查以下几点:
- 词典文件必须是UTF-8编码
- 词条不要包含空格或标点
- 确认词典路径正确
- 重新启动应用使词典生效
7.2 识别速度太慢怎么办?
提升识别速度的方法:
- 使用更短的音频片段
- 关闭不需要的功能(如说话人分离)
- 确保有足够的内存可用
- 使用性能更好的CPU
7.3 专业术语还是识别不准
如果某些术语仍然识别不准,尝试:
- 在词典中添加术语的常见错误识别变体
- 检查术语的发音是否清晰
- 考虑添加拼音注音版本
8. 总结
通过这篇教程,你应该已经掌握了如何使用SenseVoice-Small ONNX语音识别工具,特别是通过自定义词典大幅提升专业术语识别率的技巧。
关键收获:
- 轻量化部署:学会了如何快速部署这个低资源占用的语音识别工具
- 基础操作:掌握了上传音频、识别、获取结果的基本流程
- 词典优化:理解了自定义词典的重要性,并学会了创建和使用专业词典
- 实战应用:通过具体案例看到了词典优化前后的显著差异
- 高级技巧:了解了批量处理、性能优化等进阶使用方法
下一步建议:
- 从你熟悉的领域开始,创建第一个专业词典
- 先用短音频测试效果,逐步处理更复杂的音频
- 定期更新和维护你的专业词典,添加新出现的术语
- 尝试组合使用多个专业词典(如技术+英文缩写词典)
记住,一个好的自定义词典需要不断维护和优化。随着使用时间的积累,你的语音识别准确率会越来越高,真正成为工作和学习中的得力助手。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。