Skip to content

paraformer(chinense asr) online onnx runtime for python

Notifications You must be signed in to change notification settings

lovemefan/paraformer-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Paraformer online python


versions

English readme

Paraformer是达摩院语音团队提出的一种高效的非自回归端到端语音识别框架,多个公开数据集上取得SOTA效果,缺点是该模型没有标点符号。 该项目为Paraformer中文通用语音识别模型,采用工业级数万小时的标注音频进行模型训练,保证了模型的通用识别效果。 模型可以被应用于语音输入法、语音导航、智能会议纪要等场景。

本项目为Paraformer封装,基于onnxruntime的推理包,代码主要来自Funasr官方

另外praformer的接口服务在另一个项目Paraformer-webserver

由于github的lfs限制,单个文件最大不能超过100MB,因此将onnx切分成了多个文件上传,但每个模块实际导出只有一个onnx, 读取的模型文件列表会合并二进制文件然后加载onnx模型

目前的进度

  • [2023年10月18日]
    • vad模型流式和非流式onnx推理
    • 标点模型onnx推理
    • 流式asr onnx推理
    • 非流式asr onnx推理
    • 说话人识别 onnx推理
    • 热词功能 (神经网络热词)
    • 时间戳功能 (粗粒度,由vad给出的句子级别的时间戳)
    • 语言模型
    • 支持多进程和多线程,同一线程共享模型参数(单例模式实现)。每个进程初始化需约3G内存(标点、vad、asr、spk加起来)
    • itn逆文本正则化规则
    • 纠错模型 (可能有必要)
    • 说话人日志

CER 对比

测试时间:2023.8.29 数据来源:https://github.com/SpeechColab/Leaderboard

测试集 领域 paraformer paraformer热词版(不加热词) bilibili 思必驰 阿里 百度 讯飞 微软 腾讯 依图
直播带货 李佳琪薇娅 (770条, 0.9H) 电商、美妆 6.28⬇️ 6.3 6.45⬆️ 10.04⬆️ 4.33⬇️ 16.69⬇️ 9.10⬇️ 5.29⬇️ 6.56⬆️ 7.33
新闻联播 (5069条, 9H) 时政 0.6⬆️ 0.62 0.57⬇️ 0.98⬇️ 0.32⬇️ 1.56 0.81⬇️ 0.25⬇️ 1.02⬇️ 0.76
访谈 鲁豫有约 (2993条, 3H) 工作、说话 3.57⬇️ 3.51 2.81⬇️ 3.3⬆️ 2.29⬇️ 5.86 3.39⬇️ 2.74⬇️ 3.51⬆️ 2.94
场馆演讲罗振宇跨年 (1311条, 2.7H) 社会、人文、商业 1.98 1.83 1.57⬇️ 1.72⬇️ 1.17⬇️ 3.23 2.18⬆️ 1.16⬆️ 1.75⬆️ 1.49
在线教育 李永乐 (3148条, 4.4H) 科普 2.61 2.50 1.44⬇️ 2.2⬆️ 1.0⬇️ 6.90 2.03⬇️ 1.31⬇️ 1.78⬇️ 1.81
播客 创业内幕 (2251条, 4.2H) 创业、产品、投资 4.72 3.98 3.22⬇️ 4.24⬇️ 2.43⬇️ 7.28⬇️ 3.82⬇️ 3.61⬇️ 3.78⬇️ 3.7
线下培训 老罗语录 (884条,1.3H) 段子、做人 4.64 4.60 3.81⬆️ 6.46⬆️ 3.30⬇️ 14.13⬇️ 5.66⬇️ 3.98⬇️ 5.50⬇️ 4.76
直播 王者荣耀 (1561条, 1.6H) 游戏 6.69⬇️ 7.35 5.69⬇️ 8.14⬆️ 4.01⬇️ 10.32⬇️ 8.31⬆️ 5.48⬇️ 6.14⬆️ 6.92
电视节目 天下足球 (1683条, 2.7H) 足球 1.29⬆️ 1.29 0.91⬇️ 1.54⬇️ 0.61⬇️ 5.38 1.64⬇️ 0.88⬇️ 2.68⬇️ 0.83
播客故事FM (3466条, 4.5H) 人生故事、见闻 3.50 3.59 3.22⬇️ 3.82⬆️ 2.22⬇️ 5.62⬇️ 3.72⬇️ 3.28⬇️ 3.65⬇️ 3.67
罗翔 法考(1053条, 4H) 法律 法考 2.02 1.78 1.81⬇️ 2.86⬇️ 0.94⬇️ 5.55 2.90⬇️ 1.19⬇️ 2.02⬇️ 1.65
张雪峰 在线教育考研(1170条, 3.5H) 考研 高校报考 3.43 3.30 2.05⬇️ 3.2⬇️ 1.38⬇️ 9.34 3.15⬇️ 2.01⬇️ 2.71⬆️ 2.61
谷阿莫 短视频 影剪(1321条, 2.5H) 美食、烹饪 3.92⬆️ 3.79 3.01⬇️ 4.02⬇️ 1.94⬇️ 7.65 3.95⬇️ 4.22⬇️ 2.94⬇️ 2.81
琼斯爱生活 美食&烹饪(856条, 2H) 美食、烹饪 4.71⬆️ 4.63 3.61⬇️ 6.29⬇️ 2.53⬇️ 13.17 4.85⬇️ 3.07⬇️ 4.56⬇️ 3.99
单田芳 评书白眉大侠(1168条, 2.5H) 江湖、武侠 5.1⬇️ 4.80 4.64⬇️ 9.22⬇️ 2.5⬇️ 15.42 9.51⬇️ 5.47⬇️ 5.89⬆️ 5.45

测试

结论: Transformer语言模型会拖慢整个链路的实时率,性能提升有限,性价比不高。 神经网络热词模型在实时率影响较小的情况下,在某一领域的优化效果性价比高。

测试环境

CPU: Intel(R) Xeon(R) CPU E5-2670
内存: 128G

onnxruntime 使用4线程解码,python使用单线程解码,
实时率每次测试略有不同,没办法保证机器空载运行,会有一定的误差,仅供参考
测试集 \ (CER/RTF) 领域 paraformer paraformer热词版(不加热词) paraformer+Transformer语言模型
直播带货 李佳琪薇娅 (770条, 0.9H) 电商、美妆 6.28 6.3/0.044 6.0/0.37
新闻联播 (5069条, 9H) 时政 0.6 0.62/0.041 0.60/0.32
访谈 鲁豫有约 (2993条, 3H) 工作、说话 3.57 3.51/0.047 3.4/0.33
场馆演讲罗振宇跨年 (1311条, 2.7H) 社会、人文、商业 1.98 1.83/0.041 1.7/0.34
在线教育 李永乐 (3148条, 4.4H) 科普 2.61 2.50/0.043 2.2/0.35
播客 创业内幕 (2251条, 4.2H) 创业、产品、投资 4.72 3.98/0.042 3.6/0.34
线下培训 老罗语录 (884条,1.3H) 段子、做人 4.64 4.60/0.043 4.5/0.34
直播 王者荣耀 (1561条, 1.6H) 游戏 6.69 7.35/0.045 7.1/0.36
电视节目 天下足球 (1683条, 2.7H) 足球 1.29 1.29/0.042 1.30/0.37

结论: 语言模型在某些数据集上效果不明显,不如针对某一数据集加入热词。

特定数据集热词优化

数据集选择字错率最高的 直播带货李佳琪薇娅

数据集分析

  • 数据集中其实有少量标注错误,有些语气词错误,但是影响不大,例如 (诶,哎)(哟,哦)(咯,喽),(哇哦,wow)

  • 数据集但也有漏标,模凌两可的情况,例如 (这个,这),部分儿化音

  • paraformer会将 哇哦识别成wow

模式 热词列表 CER RTF
Paraformer-large-quant - 6.0
Paraformer-large-contextual + 不加热词 - 6.3 0.044
Paraformer-large-contextual + 加热词 诶 浆果 一支 两支 三支 天呐 美宝莲眼唇卸 诗香气质 半唇 口红 当妮留香珠 玫紫 珂莱欧 薇娅 李佳琦 6.0 0.05
Praformer-large-contextual + 语言模型 - 6.0 0.37
Praformer-large-contextual +加热词+ 语言模型 诶 浆果 一支 两支 三支 天呐 美宝莲眼唇卸 诗香气质 半唇 口红 当妮留香珠 玫紫 珂莱欧 薇娅 李佳琦 6.06 0.36

语言模型Beam size测试

语言模型的权重为0.15

测试集: 直播带货李佳琪薇娅

策略 CER RTF
greedy search 6.28 0.048
lm + beam serach (beam size=1) 6.33 0.12
lm + beam search (beam size=2) 6.32 0.18
lm + beam search (beam size=3) 6.32 0.24
lm + beam search (beam size=4) 6.33 0.30
lm + beam search (beam size=5) 6.32 0.37
lm + beam search (beam size=10) 6.32 0.65

快速使用

请参考test文件下的测试脚本,脚本运结果可以参考这个github action

测试脚本 功能
test_asr_all_in_one 整合online、offline、标点和说话人识别的功能,时间戳,目前依赖vad切割,会出现一句话多个说话人的情况
test_paraformer_offline.py 一句话识别,支持热词,有标点
test_paraformer_online.py 流失识别,无标点
test_speaker_verification.py 说话人识别,自动注册,返回说话人id
test_vad_offline.py vad 离线版
test_vad_online.py vad 在线版
test_punctuator.py 流式标点和非流式标点, 标点模型在v0.0.3中更换了一个将近1G的模型,加载速度有影响,推理速度有少许影响,需要原版模型可以下载之前版本,或者使用funasr转换
git clone https://github.com/lovemefan/paraformer-online-python.git
cd paraformer-online-python && pip install .
python test/test_asr_all_in_one.py

About

paraformer(chinense asr) online onnx runtime for python

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages