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