FunASR-标点模型初体验

  |   评论   |   浏览

背景

阿里巴巴魔搭上有两个标点模型,通用模型通用实时模型。本文尝试实现将模型封装为服务。

初体验

环境准备

模型

  • 实时模型:Controllable Time-delay Transformer VAD Realtime 模型,damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727 (281MB)
  • 离线模型:punc_ct-transformer_zh-cn-common-vocab272727-pytorch (282MB)

直接推理

实时模型demo

见 [1]

from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks inference_pipeline = pipeline( task=Tasks.punctuation, model='damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727', model_revision=None, ) inputs = "跨境河流是养育沿岸|人民的生命之源长期以来为帮助下游地区防灾减灾中方技术人员|在上游地区极为恶劣的自然条件下克服巨大困难甚至冒着生命危险|向印方提供汛期水文资料处理紧急事件中方重视印方在跨境河流问题上的关切|愿意进一步完善双方联合工作机制|凡是|中方能做的我们|都会去做而且会做得更好我请印度朋友们放心中国在上游的|任何开发利用都会经过科学|规划和论证兼顾上下游的利益" vads = inputs.split("|") rec_result_all="outputs:" param_dict = {"cache": []} for vad in vads: rec_result = inference_pipeline(text_in=vad, param_dict=param_dict) rec_result_all += rec_result['text'] print(rec_result_all)

结果

outputs:跨境河流是养育沿岸人民的生命之源。长期以来,为帮助下游地区防灾减灾,中方技术人员在上游地区极为恶劣的自然条件下,克服巨大困难,甚至冒着生命危险向印方提供汛期水文资料处理紧急事件。中方重视印方在跨境河流问题上的关切,愿意进一步完善双方联合工作机制。凡是中方能做的,我们都会去做,而且会做得更好。我请印度朋友们放心,中国在上游的任何开发利用都会经过科学规划和论证,兼顾上下游的利益

离线模型demo

见 [1]

from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks inference_pipeline = pipeline( task=Tasks.punctuation, model='damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch', model_revision=None, ) inputs = "跨境河流是养育沿岸|人民的生命之源长期以来为帮助下游地区防灾减灾中方技术人员|在上游地区极为恶劣的自然条件下克服巨大困难甚至冒着生命危险|向印方提供汛期水文资料处理紧急事件中方重视印方在跨境河流问题上的关切|愿意进一步完善双方联合工作机制|凡是|中方能做的我们|都会去做而且会做得更好我请印度朋友们放心中国在上游的|任何开发利用都会经过科学|规划和论证兼顾上下游的利益" vads = inputs.split("|") rec_result_all="outputs:" param_dict = {"cache": []} for vad in vads: rec_result = inference_pipeline(text_in=vad, param_dict=param_dict) rec_result_all += rec_result['text'] print(rec_result_all)

onnx推理

模型转成onnx格式

pip install onnx onnxruntime

实时模型转换

python -m funasr.export.export_model --model-name damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727 --export-dir ./export --type onnx --quantize True

结果

output dir: ./export/damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727

离线模型转换

python -m funasr.export.export_model --model-name damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch --export-dir ./export --type onnx --quantize True

结果

output dir: ./export/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch

onnx环境准备

下载 onnx runtime库

wget https://github.com/microsoft/onnxruntime/releases/download/v1.14.0/onnxruntime-linux-x64-1.14.0.tgz

安装 openblas

apt-get install libopenblas-dev

onnx编译

准备cmake

wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.tar.gz

编译runtime

cd funasr/runtime/onnxruntime mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=release .. -DONNXRUNTIME_DIR=/path/to/onnxruntime-linux-x64-1.14.0 make

结果

[ 85%] Built target funasr [ 88%] Built target funasr-onnx-offline [ 91%] Built target funasr-onnx-offline-vad [ 94%] Built target funasr-onnx-online-vad [ 97%] Built target funasr-onnx-offline-punc [100%] Built target funasr-onnx-offline-rtf

onnx运行

准备文本 punc_example.txt

wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_text/punc_example.txt

运行

./funasr-onnx-offline-punc --txt-path ./punc_example.txt --model-dir ~/workspace/export/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/

结果

I20230605 21:16:29.830653 5179 funasr-onnx-offline-punc.cpp:65] Model initialization takes 1.71712 s I20230605 21:16:29.922142 5179 funasr-onnx-offline-punc.cpp:91] Results: 1 跨境河流是养育沿岸人民的生命之源。长期以来,为帮助下游地区防灾减灾,中方技术人员在上游地区极为恶劣的自然条件下克服巨大困难,甚至冒着生命危险,向印方提供汛期水文资料处理紧急事件,中方重视印方在跨境河流问题上的关切,愿意进一步完善双方联合工作机制。凡是中方能做的,我们都会去做,而且会做得更好。我请印度朋友们放心中国在上游的任何开发利用,都会经过科学规划和论证,兼顾上下游的利益。 I20230605 21:16:29.960487 5179 funasr-onnx-offline-punc.cpp:91] Results: 2 从存储上来说,仅仅是全景图片,它就会是图片的四倍的容量。然后全景的视频会是普通视频八倍的这个存储的容要求。而三d的模型会是图片的十倍,这都对我们今天运行在的云计算的平台,存储的平台提出了更高的要求。 I20230605 21:16:29.965622 5179 funasr-onnx-offline-punc.cpp:91] Results: 3 那今天的会就到这里吧,happy new year明年见。 I20230605 21:16:29.965775 5179 funasr-onnx-offline-punc.cpp:94] Model inference takes: 0.132997 s

参考

  1. Controllable Time-delay Transformer VAD Realtime 模型介绍
  2. ONNXRuntime-cpp