From 4ee715e70e36cdba7b05fe044fecab9cf4fa16ff Mon Sep 17 00:00:00 2001 From: 游雁 <zhifu.gzf@alibaba-inc.com> Date: 星期一, 03 七月 2023 17:23:02 +0800 Subject: [PATCH] websocket bug --- funasr/runtime/onnxruntime/readme.md | 230 +++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 143 insertions(+), 87 deletions(-) diff --git a/funasr/runtime/onnxruntime/readme.md b/funasr/runtime/onnxruntime/readme.md index fa2f276..4ed184f 100644 --- a/funasr/runtime/onnxruntime/readme.md +++ b/funasr/runtime/onnxruntime/readme.md @@ -1,114 +1,170 @@ +# ONNXRuntime-cpp +## Export the model +### Install [modelscope and funasr](https://github.com/alibaba-damo-academy/FunASR#installation) - -## 蹇�熶娇鐢� - -### Windows - - 瀹夎Vs2022 鎵撳紑cpp_onnx鐩綍涓嬬殑cmake宸ョ▼锛岀洿鎺� build鍗冲彲銆� 鏈粨搴撳凡缁忓噯澶囧ソ鎵�鏈夌浉鍏充緷璧栧簱銆� - - Windows涓嬪凡缁忛缃甪ftw3鍙妎nnxruntime搴� - - -### Linux -See the bottom of this page: Building Guidance - - -### 杩愯绋嬪簭 - -tester /path/to/models/dir /path/to/wave/file - - 渚嬪锛� tester /data/models /data/test.wav - -/data/models 闇�瑕佸寘鎷涓嬩袱涓枃浠讹細 model.onnx 鍜寁ocab.txt - - -## 鏀寔骞冲彴 -- Windows -- Linux/Unix - -## 渚濊禆 -- fftw3 -- openblas -- onnxruntime - -## 瀵煎嚭onnx鏍煎紡妯″瀷鏂囦欢 -瀹夎 modelscope涓嶧unASR锛屼緷璧栵細torch锛宼orchaudio锛屽畨瑁呰繃绋媅璇︾粏鍙傝�冩枃妗(https://github.com/alibaba-damo-academy/FunASR/wiki) ```shell -pip install "modelscope[audio_asr]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html -git clone https://github.com/alibaba/FunASR.git && cd FunASR -pip install --editable ./ -``` -瀵煎嚭onnx妯″瀷锛孾璇﹁](https://github.com/alibaba-damo-academy/FunASR/tree/main/funasr/export)锛屽弬鑰冪ず渚嬶紝浠巑odelscope涓ā鍨嬪鍑猴細 - -``` -python -m funasr.export.export_model 'damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch' "./export" true +# pip3 install torch torchaudio +pip install -U modelscope funasr +# For the users in China, you could install with the command: +# pip install -U modelscope funasr -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html -i https://mirror.sjtu.edu.cn/pypi/web/simple ``` -## Building Guidance for Linux/Unix +### Export [onnx model](https://github.com/alibaba-damo-academy/FunASR/tree/main/funasr/export) +```shell +python -m funasr.export.export_model --model-name damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch --export-dir ./export --type onnx --quantize True ``` -git clone https://github.com/alibaba-damo-academy/FunASR.git && cd funasr/runtime/onnxruntime -mkdir build -cd build + +## Building for Linux/Unix + +### Download onnxruntime +```shell # download an appropriate onnxruntime from https://github.com/microsoft/onnxruntime/releases/tag/v1.14.0 # here we get a copy of onnxruntime for linux 64 wget https://github.com/microsoft/onnxruntime/releases/download/v1.14.0/onnxruntime-linux-x64-1.14.0.tgz tar -zxvf onnxruntime-linux-x64-1.14.0.tgz -# ls -# onnxruntime-linux-x64-1.14.0 onnxruntime-linux-x64-1.14.0.tgz - -#install fftw3-dev -ubuntu: apt install libfftw3-dev -centos: yum install fftw fftw-devel - -#install openblas -bash ./third_party/install_openblas.sh - -# build - cmake -DCMAKE_BUILD_TYPE=release .. -DONNXRUNTIME_DIR=/mnt/c/Users/ma139/RapidASR/cpp_onnx/build/onnxruntime-linux-x64-1.14.0 - make - - # then in the subfolder tester of current direcotry, you will see a program, tester - -```` - -### The structure of a qualified onnxruntime package. -``` -onnxruntime_xxx -鈹溾攢鈹�鈹�include -鈹斺攢鈹�鈹�lib ``` -## 绾跨▼鏁颁笌鎬ц兘鍏崇郴 +### Install openblas +```shell +sudo apt-get install libopenblas-dev #ubuntu +# sudo yum -y install openblas-devel #centos +``` -娴嬭瘯鐜Rocky Linux 8锛屼粎娴嬭瘯cpp鐗堟湰缁撴灉锛堟湭娴媝ython鐗堟湰锛夛紝@acely +### Build runtime +```shell +git clone https://github.com/alibaba-damo-academy/FunASR.git && cd funasr/runtime/onnxruntime +mkdir build && cd build +cmake -DCMAKE_BUILD_TYPE=release .. -DONNXRUNTIME_DIR=/path/to/onnxruntime-linux-x64-1.14.0 +make +``` +## Run the demo -绠�杩帮細 -鍦�3鍙伴厤缃笉鍚岀殑鏈哄櫒涓婂垎鍒紪璇戝苟娴嬭瘯锛屽湪fftw鍜宱nnxruntime鐗堟湰閮界浉鍚岀殑鍓嶆彁涓嬶紝璇嗗埆鍚屼竴涓�30鍒嗛挓鐨勯煶棰戞枃浠讹紝鍒嗗埆娴嬭瘯涓嶅悓onnx绾跨▼鏁伴噺鐨勮〃鐜般�� +### funasr-onnx-offline +```shell +./funasr-onnx-offline --model-dir <string> [--quantize <string>] + [--vad-dir <string>] [--vad-quant <string>] + [--punc-dir <string>] [--punc-quant <string>] + --wav-path <string> [--] [--version] [-h] +Where: + --model-dir <string> + (required) the asr model path, which contains model.onnx, config.yaml, am.mvn + --quantize <string> + false (Default), load the model of model.onnx in model_dir. If set true, load the model of model_quant.onnx in model_dir -![绾跨▼鏁板叧绯籡(images/threadnum.png "Windows ASR") + --vad-dir <string> + the vad model path, which contains model.onnx, vad.yaml, vad.mvn + --vad-quant <string> + false (Default), load the model of model.onnx in vad_dir. If set true, load the model of model_quant.onnx in vad_dir -鐩墠鍙互鎬荤粨鍑哄ぇ鑷磋寰嬶細 + --punc-dir <string> + the punc model path, which contains model.onnx, punc.yaml + --punc-quant <string> + false (Default), load the model of model.onnx in punc_dir. If set true, load the model of model_quant.onnx in punc_dir -骞堕潪onnx绾跨▼鏁拌秺澶氳秺濂� -2绾跨▼姣�1绾跨▼鎻愬崌鏄捐憲锛岀嚎绋嬪啀澶氬垯鎻愬崌杈冨皬 -绾跨▼鏁扮瓑浜嶤PU鐗╃悊鏍稿績鏁版椂鏁堢巼鏈�濂� -瀹炴搷寤鸿锛� + --wav-path <string> + (required) the input could be: + wav_path, e.g.: asr_example.wav; + pcm_path, e.g.: asr_example.pcm; + wav.scp, kaldi style wav list (wav_id \t wav_path) + + Required: --model-dir <string> --wav-path <string> + If use vad, please add: --vad-dir <string> + If use punc, please add: --punc-dir <string> -澶ч儴鍒嗗満鏅敤3-4绾跨▼鎬т环姣旀渶楂� -浣庨厤鏈哄櫒鐢�2绾跨▼鍚堥�� +For example: +./funasr-onnx-offline \ + --model-dir ./asrmodel/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch \ + --quantize true \ + --vad-dir ./asrmodel/speech_fsmn_vad_zh-cn-16k-common-pytorch \ + --punc-dir ./asrmodel/punc_ct-transformer_zh-cn-common-vocab272727-pytorch \ + --wav-path ./vad_example.wav +``` +### funasr-onnx-offline-vad +```shell +./funasr-onnx-offline-vad --model-dir <string> [--quantize <string>] + --wav-path <string> [--] [--version] [-h] +Where: + --model-dir <string> + (required) the vad model path, which contains model.onnx, vad.yaml, vad.mvn + --quantize <string> + false (Default), load the model of model.onnx in model_dir. If set true, load the model of model_quant.onnx in model_dir + --wav-path <string> + (required) the input could be: + wav_path, e.g.: asr_example.wav; + pcm_path, e.g.: asr_example.pcm; + wav.scp, kaldi style wav list (wav_id \t wav_path) + Required: --model-dir <string> --wav-path <string> -## 婕旂ず +For example: +./funasr-onnx-offline-vad \ + --model-dir ./asrmodel/speech_fsmn_vad_zh-cn-16k-common-pytorch \ + --wav-path ./vad_example.wav +``` - +### funasr-onnx-offline-punc +```shell +./funasr-onnx-offline-punc --model-dir <string> [--quantize <string>] + --txt-path <string> [--] [--version] [-h] +Where: + --model-dir <string> + (required) the punc model path, which contains model.onnx, punc.yaml + --quantize <string> + false (Default), load the model of model.onnx in model_dir. If set true, load the model of model_quant.onnx in model_dir + --txt-path <string> + (required) txt file path, one sentence per line -## 娉ㄦ剰 -鏈▼搴忓彧鏀寔 閲囨牱鐜�16000hz, 浣嶆繁16bit鐨� **鍗曞0閬�** 闊抽銆� + Required: --model-dir <string> --txt-path <string> +For example: +./funasr-onnx-offline-punc \ + --model-dir ./asrmodel/punc_ct-transformer_zh-cn-common-vocab272727-pytorch \ + --txt-path ./punc_example.txt +``` +### funasr-onnx-offline-rtf +```shell +./funasr-onnx-offline-rtf --model-dir <string> [--quantize <string>] + [--vad-dir <string>] [--vad-quant <string>] + [--punc-dir <string>] [--punc-quant <string>] + --wav-path <string> --thread-num <int32_t> + [--] [--version] [-h] +Where: + --thread-num <int32_t> + (required) multi-thread num for rtf + --model-dir <string> + (required) the model path, which contains model.onnx, config.yaml, am.mvn + --quantize <string> + false (Default), load the model of model.onnx in model_dir. If set true, load the model of model_quant.onnx in model_dir + + --vad-dir <string> + the vad model path, which contains model.onnx, vad.yaml, vad.mvn + --vad-quant <string> + false (Default), load the model of model.onnx in vad_dir. If set true, load the model of model_quant.onnx in vad_dir + + --punc-dir <string> + the punc model path, which contains model.onnx, punc.yaml + --punc-quant <string> + false (Default), load the model of model.onnx in punc_dir. If set true, load the model of model_quant.onnx in punc_dir + + --wav-path <string> + (required) the input could be: + wav_path, e.g.: asr_example.wav; + pcm_path, e.g.: asr_example.pcm; + wav.scp, kaldi style wav list (wav_id \t wav_path) + +For example: +./funasr-onnx-offline-rtf \ + --model-dir ./asrmodel/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch \ + --quantize true \ + --wav-path ./aishell1_test.scp \ + --thread-num 32 +``` ## Acknowledge -1. We acknowledge [mayong](https://github.com/RapidAI/RapidASR/tree/main/cpp_onnx) for contributing the onnxruntime(cpp api). -2. We borrowed a lot of code from [FastASR](https://github.com/chenkui164/FastASR) for audio frontend and text-postprocess. +1. This project is maintained by [FunASR community](https://github.com/alibaba-damo-academy/FunASR). +2. We acknowledge mayong for contributing the onnxruntime of Paraformer and CT_Transformer, [repo-asr](https://github.com/RapidAI/RapidASR/tree/main/cpp_onnx), [repo-punc](https://github.com/RapidAI/RapidPunc). +3. We acknowledge [ChinaTelecom](https://github.com/zhuzizyf/damo-fsmn-vad-infer-httpserver) for contributing the VAD runtime. +4. We borrowed a lot of code from [FastASR](https://github.com/chenkui164/FastASR) for audio frontend and text-postprocess. -- Gitblit v1.9.1