Skip to content

Commit c4f76bb

Browse files
committed
Update python README
1 parent e6a1f06 commit c4f76bb

File tree

14 files changed

+150
-168
lines changed

14 files changed

+150
-168
lines changed

.github/workflows/gen_whl_to_pypi.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ name: Push rapid_paraformer to pypi
22

33
on:
44
push:
5-
branches: [ main ]
6-
paths:
7-
- 'python/rapid_paraformer/**'
8-
- 'python/docs/doc_whl.md'
9-
- 'python/setup.py'
10-
- '.github/workflows/gen_whl_to_pypi.yml'
5+
# branches: [ main ]
6+
# paths:
7+
# - 'python/rapid_paraformer/**'
8+
# - 'python/docs/doc_whl.md'
9+
# - 'python/setup.py'
10+
# - '.github/workflows/gen_whl_to_pypi.yml'
11+
tags:
12+
- v*
1113

1214
# env:
1315
# RESOURCES_URL: https://github.com/RapidAI/RapidLatexOCR/releases/download/v0.0.0/models.zip
@@ -59,7 +61,7 @@ jobs:
5961
pip install -r requirements.txt
6062
python -m pip install --upgrade pip
6163
pip install wheel get_pypi_latest_version
62-
python setup.py bdist_wheel ${{ github.event.head_commit.message }}
64+
python setup.py bdist_wheel ${{ github.ref_name }}
6365
6466
# - name: Publish distribution 📦 to Test PyPI
6567
# uses: pypa/gh-action-pypi-publish@v1.5.0

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<a href="https://huggingface.co/spaces/SWHL/RapidASRDemo" target="_blank"><img src="https://img.shields.io/badge/%F0%9F%A4%97-Hugging Face Demo-blue"></a>
44
<a href="https://www.modelscope.cn/studios/liekkas/RapidASRDemo/summary" target="_blank"><img src="https://img.shields.io/badge/ModelScope-Demo-blue"></a>
55
<a href=""><img src="https://img.shields.io/badge/OS-Linux%2C%20Win%2C%20Mac-pink.svg"></a>
6-
<a href=""><img src="https://img.shields.io/badge/Python->=3.6,<3.12-aff.svg"></a>
6+
<a href=""><img src="https://img.shields.io/badge/Python->=3.6,<3.13-aff.svg"></a>
77
<a href=""><img src="https://img.shields.io/badge/C++-aff.svg"></a>
88
</p>
99

python/.gitattributes

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
*.7z filter=lfs diff=lfs merge=lfs -text
2+
*.arrow filter=lfs diff=lfs merge=lfs -text
3+
*.bin filter=lfs diff=lfs merge=lfs -text
4+
*.bz2 filter=lfs diff=lfs merge=lfs -text
5+
*.ckpt filter=lfs diff=lfs merge=lfs -text
6+
*.ftz filter=lfs diff=lfs merge=lfs -text
7+
*.gz filter=lfs diff=lfs merge=lfs -text
8+
*.h5 filter=lfs diff=lfs merge=lfs -text
9+
*.joblib filter=lfs diff=lfs merge=lfs -text
10+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
11+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
12+
*.model filter=lfs diff=lfs merge=lfs -text
13+
*.msgpack filter=lfs diff=lfs merge=lfs -text
14+
*.npy filter=lfs diff=lfs merge=lfs -text
15+
*.npz filter=lfs diff=lfs merge=lfs -text
16+
*.onnx filter=lfs diff=lfs merge=lfs -text
17+
*.ot filter=lfs diff=lfs merge=lfs -text
18+
*.parquet filter=lfs diff=lfs merge=lfs -text
19+
*.pb filter=lfs diff=lfs merge=lfs -text
20+
*.pickle filter=lfs diff=lfs merge=lfs -text
21+
*.pkl filter=lfs diff=lfs merge=lfs -text
22+
*.pt filter=lfs diff=lfs merge=lfs -text
23+
*.pth filter=lfs diff=lfs merge=lfs -text
24+
*.rar filter=lfs diff=lfs merge=lfs -text
25+
*.safetensors filter=lfs diff=lfs merge=lfs -text
26+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27+
*.tar.* filter=lfs diff=lfs merge=lfs -text
28+
*.tar filter=lfs diff=lfs merge=lfs -text
29+
*.tflite filter=lfs diff=lfs merge=lfs -text
30+
*.tgz filter=lfs diff=lfs merge=lfs -text
31+
*.wasm filter=lfs diff=lfs merge=lfs -text
32+
*.xz filter=lfs diff=lfs merge=lfs -text
33+
*.zip filter=lfs diff=lfs merge=lfs -text
34+
*.zst filter=lfs diff=lfs merge=lfs -text
35+
*tfevents* filter=lfs diff=lfs merge=lfs -text

python/README.md

Lines changed: 68 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,71 @@
1-
## rapid_paraformer
2-
3-
<p align="left">
4-
<a href=""><img src="https://img.shields.io/badge/OS-Linux%2C%20Win%2C%20Mac-pink.svg"></a>
5-
<a href=""><img src="https://img.shields.io/badge/Python->=3.6,<3.12-aff.svg"></a>
6-
<a href="https://pepy.tech/project/rapid_paraformer"><img src="https://static.pepy.tech/personalized-badge/rapid_paraformer?period=total&units=abbreviation&left_color=grey&right_color=blue&left_text=Downloads"></a>
7-
<a href="https://pypi.org/project/rapid_paraformer/"><img alt="PyPI" src="https://img.shields.io/pypi/v/rapid_paraformer"></a>
8-
<a href="https://semver.org/"><img alt="SemVer2.0" src="https://img.shields.io/badge/SemVer-2.0-brightgreen"></a>
9-
<a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
10-
</p>
11-
12-
- 模型出自阿里达摩院[Paraformer语音识别-中文-通用-16k-离线-large-pytorch](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary)
13-
- 🎉该项目核心代码已经并入[FunASR](https://github.com/alibaba-damo-academy/FunASR)
14-
- 本仓库仅对模型做了转换,只采用ONNXRuntime推理引擎
15-
16-
#### TODO
1+
<div align="center">
2+
<div align="center">
3+
<h1><b>Rapid Paraformer</b></h1>
4+
</div>
5+
6+
<a href=""><img src="https://img.shields.io/badge/OS-Linux%2C%20Win%2C%20Mac-pink.svg"></a>
7+
<a href=""><img src="https://img.shields.io/badge/Python->=3.6,<3.13-aff.svg"></a>
8+
<a href="https://pepy.tech/project/rapid_paraformer"><img src="https://static.pepy.tech/personalized-badge/rapid_paraformer?period=total&units=abbreviation&left_color=grey&right_color=blue&left_text=Downloads"></a>
9+
<a href="https://pypi.org/project/rapid_paraformer/"><img alt="PyPI" src="https://img.shields.io/pypi/v/rapid_paraformer"></a>
10+
<a href="https://semver.org/"><img alt="SemVer2.0" src="https://img.shields.io/badge/SemVer-2.0-brightgreen"></a>
11+
<a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
12+
</div>
13+
14+
## 简介
15+
rapid_paraformer是一个基于阿里达摩院[Paraformer语音识别-中文-通用-16k-离线-large-pytorch](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary)的语音识别工具。
16+
17+
🎉该项目核心代码已经并入[FunASR](https://github.com/alibaba-damo-academy/FunASR)
18+
19+
本仓库仅对模型做了转换,只采用ONNXRuntime推理引擎
20+
21+
## TODO
1722
- [ ] 整合vad + asr + pun三个模型,打造可部署使用的方案
1823

19-
#### 使用步骤
20-
1. Install
21-
1. 安装`rapid_paraformer`
22-
```bash
23-
pip install rapid_paraformer
24-
```
25-
2. 下载**resources.zip** ([Google Drive](https://drive.google.com/drive/folders/1RVQtMe0eB_k6G5TJlmXwPELx4VtF2oCw?usp=sharing) | [百度网盘](https://pan.baidu.com/s/1zf8Ta6QxFHY3Z75fHNYKrQ?pwd=6ekq))
26-
```bash
27-
resources
28-
├── [ 700] config.yaml
29-
└── [4.0K] models
30-
├── [ 11K] am.mvn
31-
├── [824M] asr_paraformerv2.onnx
32-
└── [ 50K] token_list.pkl
33-
```
34-
3. **asr_paraformerv2.onnx**文件可基于modescope下的notebook环境自助转换:
35-
1. 打开[快速体验](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary)
36-
2. 打开notebook → Cell中输入以下命令, 执行即可。
37-
```python
38-
!python -m funasr.export.export_model --model-name 'damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch' --export-dir "./export"
39-
```
40-
41-
2. 使用
42-
```python
43-
from rapid_paraformer import RapidParaformer
44-
45-
config_path = "resources/config.yaml"
46-
47-
paraformer = RapidParaformer(config_path)
48-
49-
wav_path = [
50-
"test_wavs/0478_00017.wav",
51-
"test_wavs/asr_example_zh.wav",
52-
]
53-
54-
result = paraformer(wav_path)
55-
print(result)
56-
```
57-
3. 查看结果
58-
```text
59-
['y', '欢迎大家来体验达摩院推出的语音识别模型']
24+
## 安装
25+
```bash
26+
pip install rapid_paraformer
27+
```
28+
29+
## 模型下载
30+
方法一:从Hugging Face上下载([link](https://huggingface.co/SWHL/RapidParaformer)
31+
```python
32+
from rapid_paraformer import download_hf_model
33+
34+
download_hf_model(repo_id="SWHL/RapidParaformer", save_dir=".")
35+
```
36+
37+
方法二:([Google Drive](https://drive.google.com/drive/folders/1RVQtMe0eB_k6G5TJlmXwPELx4VtF2oCw?usp=sharing) | [百度网盘](https://pan.baidu.com/s/1zf8Ta6QxFHY3Z75fHNYKrQ?pwd=6ekq))
38+
```bash
39+
resources
40+
├── [ 700] config.yaml
41+
└── [4.0K] models
42+
├── [ 11K] am.mvn
43+
├── [824M] asr_paraformerv2.onnx
44+
└── [ 50K] token_list.pkl
45+
```
46+
47+
## 模型转换
48+
基于modescope下的notebook环境自助转换:
49+
1. 打开[快速体验](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary)
50+
2. 打开notebook → Cell中输入以下命令, 执行即可。
51+
```bash
52+
!python -m funasr.export.export_model --model-name 'damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch' --export-dir "./export"
6053
```
54+
55+
## 使用
56+
```python
57+
from rapid_paraformer import RapidParaformer
58+
59+
config_path = "resources/config.yaml"
60+
61+
paraformer = RapidParaformer(config_path)
62+
63+
wav_path = [
64+
"test_wavs/0478_00017.wav",
65+
"test_wavs/asr_example_zh.wav",
66+
]
67+
68+
result = paraformer(wav_path)
69+
print(result)
70+
# ['y', '欢迎大家来体验达摩院推出的语音识别模型']
71+
```

python/demo.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# -*- encoding: utf-8 -*-
22
# @Author: SWHL
33
# @Contact: liekkaskono@163.com
4-
from rapid_paraformer import RapidParaformer
4+
from rapid_paraformer import RapidParaformer, download_hf_model
5+
6+
download_hf_model(repo_id="SWHL/RapidParaformer", save_dir=".")
57

68
config_path = "resources/config.yaml"
79

python/docs/doc_whl.md

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1 @@
1-
## rapid_paraformer
2-
3-
<p align="left">
4-
<a href=""><img src="https://img.shields.io/badge/OS-Linux%2C%20Win%2C%20Mac-pink.svg"></a>
5-
<a href=""><img src="https://img.shields.io/badge/Python->=3.6,<3.12-aff.svg"></a>
6-
<a href="https://pepy.tech/project/rapid_paraformer"><img src="https://static.pepy.tech/personalized-badge/rapid_paraformer?period=total&units=abbreviation&left_color=grey&right_color=blue&left_text=Downloads"></a>
7-
<a href="https://pypi.org/project/rapid_paraformer/"><img alt="PyPI" src="https://img.shields.io/pypi/v/rapid_paraformer"></a>
8-
<a href="https://semver.org/"><img alt="SemVer2.0" src="https://img.shields.io/badge/SemVer-2.0-brightgreen"></a>
9-
<a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
10-
</p>
11-
12-
13-
### Use
14-
1. Install
15-
1. Install the `rapid_paraformer`
16-
```bash
17-
pip install rapid_paraformer
18-
```
19-
2. Download the **resources.zip** ([Google Drive](https://drive.google.com/drive/folders/1RVQtMe0eB_k6G5TJlmXwPELx4VtF2oCw?usp=sharing) | [Baidu NetDisk](https://pan.baidu.com/s/1zf8Ta6QxFHY3Z75fHNYKrQ?pwd=6ekq))
20-
```bash
21-
resources
22-
├── [ 700] config.yaml
23-
└── [4.0K] models
24-
├── [ 11K] am.mvn
25-
├── [824M] asr_paraformerv2.onnx
26-
└── [ 50K] token_list.pkl
27-
```
28-
2. Use
29-
```python
30-
from rapid_paraformer import RapidParaformer
31-
32-
config_path = "resources/config.yaml"
33-
34-
paraformer = RapidParaformer(config_path)
35-
36-
wav_path = [
37-
"test_wavs/0478_00017.wav",
38-
"test_wavs/asr_example_zh.wav",
39-
]
40-
41-
result = paraformer(wav_path)
42-
print(result)
43-
```
44-
45-
### See details for [RapidASR](https://github.com/RapidAI/RapidASR).
1+
See [link](https://github.com/RapidAI/RapidASR/tree/main/python) for details.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# -*- encoding: utf-8 -*-
22
# @Author: SWHL
33
# @Contact: liekkaskono@163.com
4-
from .rapid_paraformer import RapidParaformer
4+
from .main import RapidParaformer
5+
from .utils import download_hf_model
File renamed without changes.

python/rapid_paraformer/utils.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import numpy as np
1212
import yaml
13+
from huggingface_hub import snapshot_download
1314
from onnxruntime import (
1415
GraphOptimizationLevel,
1516
InferenceSession,
@@ -221,8 +222,8 @@ def apply_cmvn(self, inputs: np.ndarray) -> np.ndarray:
221222
"""
222223
frame, dim = inputs.shape
223224
means = np.tile(self.cmvn[0:1, :dim], (frame, 1))
224-
vars = np.tile(self.cmvn[1:2, :dim], (frame, 1))
225-
inputs = (inputs + means) * vars
225+
vars_np = np.tile(self.cmvn[1:2, :dim], (frame, 1))
226+
inputs = (inputs + means) * vars_np
226227
return inputs
227228

228229
def load_cmvn(
@@ -249,8 +250,8 @@ def load_cmvn(
249250
continue
250251

251252
means = np.array(means_list).astype(np.float64)
252-
vars = np.array(vars_list).astype(np.float64)
253-
cmvn = np.array([means, vars])
253+
vars_np = np.array(vars_list).astype(np.float64)
254+
cmvn = np.array([means, vars_np])
254255
return cmvn
255256

256257

@@ -275,10 +276,6 @@ class TokenIDConverterError(Exception):
275276
pass
276277

277278

278-
class ONNXRuntimeError(Exception):
279-
pass
280-
281-
282279
class OrtInferSession:
283280
def __init__(self, config):
284281
sess_opt = SessionOptions()
@@ -351,6 +348,10 @@ def _verify_model(model_path):
351348
raise FileExistsError(f"{model_path} is not a file.")
352349

353350

351+
class ONNXRuntimeError(Exception):
352+
pass
353+
354+
354355
def read_yaml(yaml_path: Union[str, Path]) -> Dict:
355356
if not Path(yaml_path).exists():
356357
raise FileExistsError(f"The {yaml_path} does not exist.")
@@ -390,3 +391,19 @@ def get_logger(name="rapdi_paraformer"):
390391
logger_initialized[name] = True
391392
logger.propagate = False
392393
return logger
394+
395+
396+
def download_hf_model(
397+
repo_id: str, save_dir: Union[str, Path], resume_download: bool = True
398+
) -> str:
399+
model_dir = snapshot_download(
400+
repo_id=repo_id,
401+
local_dir=str(save_dir),
402+
local_dir_use_symlinks=False,
403+
local_files_only=False,
404+
resume_download=resume_download,
405+
ignore_patterns=[
406+
"*.md",
407+
],
408+
)
409+
return model_dir

python/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
librosa
22
numpy
33
onnxruntime
4-
scipy
54
typeguard==2.13.3
5+
huggingface_hub

0 commit comments

Comments
 (0)