docs: make Paraformer-en model card directly usable

#2
by langgz - opened
Files changed (1) hide show
  1. README.md +105 -141
README.md CHANGED
@@ -2,190 +2,154 @@
2
  license: other
3
  license_name: model-license
4
  license_link: https://github.com/alibaba-damo-academy/FunASR
 
 
 
 
 
 
 
 
 
 
 
5
  ---
6
 
7
  <div align="center">
8
 
9
- ### ⭐ Powered by [FunASR](https://github.com/modelscope/FunASR) — please give us a GitHub Star!
10
 
11
- This model is part of the **FunASR** ecosystem one industrial-grade open-source toolkit for **ASR · VAD · punctuation · speaker diarization · emotion / event · LLM-ASR**. A Star really helps the project (and keeps you updated):
12
 
13
- [**🌟 FunASR**](https://github.com/modelscope/FunASR) · [**🌟 SenseVoice**](https://github.com/FunAudioLLM/SenseVoice) · [**🌟 Fun-ASR**](https://github.com/FunAudioLLM/Fun-ASR) · [**🌟 FunClip**](https://github.com/modelscope/FunClip)
14
 
15
- </div>
16
-
17
-
18
-
19
-
20
- # FunASR: A Fundamental End-to-End Speech Recognition Toolkit
21
 
 
22
 
23
- [![PyPI](https://img.shields.io/pypi/v/funasr)](https://pypi.org/project/funasr/)
24
 
 
25
 
26
- <strong>FunASR</strong> hopes to build a bridge between academic research and industrial applications on speech recognition. By supporting the training & finetuning of the industrial-grade speech recognition model, researchers and developers can conduct research and production of speech recognition models more conveniently, and promote the development of speech recognition ecology. ASR for Fun!
27
 
28
- [**Highlights**](#highlights)
29
- | [**News**](https://github.com/alibaba-damo-academy/FunASR#whats-new)
30
- | [**Installation**](#installation)
31
- | [**Quick Start**](#quick-start)
32
- | [**Runtime**](./runtime/readme.md)
33
- | [**Model Zoo**](#model-zoo)
34
- | [**Contact**](#contact)
35
 
 
36
 
37
- <a name="highlights"></a>
38
- ## Highlights
39
- - FunASR is a fundamental speech recognition toolkit that offers a variety of features, including speech recognition (ASR), Voice Activity Detection (VAD), Punctuation Restoration, Language Models, Speaker Verification, Speaker Diarization and multi-talker ASR. FunASR provides convenient scripts and tutorials, supporting inference and fine-tuning of pre-trained models.
40
- - We have released a vast collection of academic and industrial pretrained models on the [ModelScope](https://www.modelscope.cn/models?page=1&tasks=auto-speech-recognition) and [huggingface](https://huggingface.co/FunASR), which can be accessed through our [Model Zoo](https://github.com/alibaba-damo-academy/FunASR/blob/main/docs/model_zoo/modelscope_models.md). The representative [Paraformer-large](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary), a non-autoregressive end-to-end speech recognition model, has the advantages of high accuracy, high efficiency, and convenient deployment, supporting the rapid construction of speech recognition services. For more details on service deployment, please refer to the [service deployment document](runtime/readme_cn.md).
41
 
 
 
42
 
43
- <a name="Installation"></a>
44
- ## Installation
 
 
 
45
 
46
- ```shell
47
- pip3 install -U funasr
48
- ```
49
- Or install from source code
50
- ``` sh
51
- git clone https://github.com/alibaba/FunASR.git && cd FunASR
52
- pip3 install -e ./
53
  ```
54
- Install modelscope for the pretrained models (Optional)
55
 
56
- ```shell
57
- pip3 install -U modelscope
58
- ```
59
-
60
- ## Model Zoo
61
- FunASR has open-sourced a large number of pre-trained models on industrial data. You are free to use, copy, modify, and share FunASR models under the [Model License Agreement](./MODEL_LICENSE). Below are some representative models, for more models please refer to the [Model Zoo]().
62
-
63
- (Note: 🤗 represents the Huggingface model zoo link, ⭐ represents the ModelScope model zoo link)
64
-
65
-
66
- | Model Name | Task Details | Training Data | Parameters |
67
- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------:|:--------------------------------:|:----------:|
68
- | paraformer-zh <br> ([⭐](https://www.modelscope.cn/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch/summary) [🤗]() ) | speech recognition, with timestamps, non-streaming | 60000 hours, Mandarin | 220M |
69
- | <nobr>paraformer-zh-streaming <br> ( [⭐](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online/summary) [🤗]() )</nobr> | speech recognition, streaming | 60000 hours, Mandarin | 220M |
70
- | paraformer-en <br> ( [⭐](https://www.modelscope.cn/models/damo/speech_paraformer-large-vad-punc_asr_nat-en-16k-common-vocab10020/summary) [🤗]() ) | speech recognition, with timestamps, non-streaming | 50000 hours, English | 220M |
71
- | conformer-en <br> ( [⭐](https://modelscope.cn/models/damo/speech_conformer_asr-en-16k-vocab4199-pytorch/summary) [🤗]() ) | speech recognition, non-streaming | 50000 hours, English | 220M |
72
- | ct-punc <br> ( [⭐](https://modelscope.cn/models/damo/punc_ct-transformer_cn-en-common-vocab471067-large/summary) [🤗]() ) | punctuation restoration | 100M, Mandarin and English | 1.1G |
73
- | fsmn-vad <br> ( [⭐](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/summary) [🤗]() ) | voice activity detection | 5000 hours, Mandarin and English | 0.4M |
74
- | fa-zh <br> ( [⭐](https://modelscope.cn/models/damo/speech_timestamp_prediction-v1-16k-offline/summary) [🤗]() ) | timestamp prediction | 5000 hours, Mandarin | 38M |
75
- | cam++ <br> ( [⭐](https://modelscope.cn/models/iic/speech_campplus_sv_zh-cn_16k-common/summary) [🤗]() ) | speaker verification/diarization | 5000 hours | 7.2M |
76
 
 
77
 
 
78
 
 
 
79
 
80
- [//]: # ()
81
- [//]: # (FunASR supports pre-trained or further fine-tuned models for deployment as a service. The CPU version of the Chinese offline file conversion service has been released, details can be found in [docs]&#40;funasr/runtime/docs/SDK_tutorial.md&#41;. More detailed information about service deployment can be found in the [deployment roadmap]&#40;funasr/runtime/readme_cn.md&#41;.)
 
 
 
 
 
 
 
 
 
 
 
 
82
 
 
83
 
84
- <a name="quick-start"></a>
85
- ## Quick Start
86
 
87
- Below is a quick start tutorial. Test audio files ([Mandarin](https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/vad_example.wav), [English]()).
88
 
89
- ### Command-line usage
 
 
 
90
 
91
- ```shell
92
- funasr +model=paraformer-zh +vad_model="fsmn-vad" +punc_model="ct-punc" +input=asr_example_zh.wav
 
 
93
  ```
94
 
95
- Notes: Support recognition of single audio file, as well as file list in Kaldi-style wav.scp format: `wav_id wav_pat`
96
 
97
- ### Speech Recognition (Non-streaming)
98
- ```python
99
- from funasr import AutoModel
100
- # paraformer-zh is a multi-functional asr model
101
- # use vad, punc, spk or not as you need
102
- model = AutoModel(model="paraformer-zh", model_revision="v2.0.4",
103
- vad_model="fsmn-vad", vad_model_revision="v2.0.4",
104
- punc_model="ct-punc-c", punc_model_revision="v2.0.4",
105
- # spk_model="cam++", spk_model_revision="v2.0.2",
106
- )
107
- res = model.generate(input=f"{model.model_path}/example/asr_example.wav",
108
- batch_size_s=300,
109
- hotword='魔搭')
110
- print(res)
111
- ```
112
- Note: `model_hub`: represents the model repository, `ms` stands for selecting ModelScope download, `hf` stands for selecting Huggingface download.
113
 
114
- ### Speech Recognition (Streaming)
115
- ```python
116
- from funasr import AutoModel
117
 
118
- chunk_size = [0, 10, 5] #[0, 10, 5] 600ms, [0, 8, 4] 480ms
119
- encoder_chunk_look_back = 4 #number of chunks to lookback for encoder self-attention
120
- decoder_chunk_look_back = 1 #number of encoder chunks to lookback for decoder cross-attention
 
 
 
 
 
 
121
 
122
- model = AutoModel(model="paraformer-zh-streaming", model_revision="v2.0.4")
123
 
124
- import soundfile
125
- import os
126
 
127
- wav_file = os.path.join(model.model_path, "example/asr_example.wav")
128
- speech, sample_rate = soundfile.read(wav_file)
129
- chunk_stride = chunk_size[1] * 960 # 600ms
130
 
131
- cache = {}
132
- total_chunk_num = int(len((speech)-1)/chunk_stride+1)
133
- for i in range(total_chunk_num):
134
- speech_chunk = speech[i*chunk_stride:(i+1)*chunk_stride]
135
- is_final = i == total_chunk_num - 1
136
- res = model.generate(input=speech_chunk, cache=cache, is_final=is_final, chunk_size=chunk_size, encoder_chunk_look_back=encoder_chunk_look_back, decoder_chunk_look_back=decoder_chunk_look_back)
137
- print(res)
138
- ```
139
- Note: `chunk_size` is the configuration for streaming latency.` [0,10,5]` indicates that the real-time display granularity is `10*60=600ms`, and the lookahead information is `5*60=300ms`. Each inference input is `600ms` (sample points are `16000*0.6=960`), and the output is the corresponding text. For the last speech segment input, `is_final=True` needs to be set to force the output of the last word.
140
 
141
- ### Voice Activity Detection (Non-Streaming)
142
- ```python
143
- from funasr import AutoModel
144
 
145
- model = AutoModel(model="fsmn-vad", model_revision="v2.0.4")
146
- wav_file = f"{model.model_path}/example/asr_example.wav"
147
- res = model.generate(input=wav_file)
148
- print(res)
149
- ```
150
- ### Voice Activity Detection (Streaming)
151
- ```python
152
- from funasr import AutoModel
153
 
154
- chunk_size = 200 # ms
155
- model = AutoModel(model="fsmn-vad", model_revision="v2.0.4")
156
 
157
- import soundfile
158
 
159
- wav_file = f"{model.model_path}/example/vad_example.wav"
160
- speech, sample_rate = soundfile.read(wav_file)
161
- chunk_stride = int(chunk_size * sample_rate / 1000)
 
 
 
162
 
163
- cache = {}
164
- total_chunk_num = int(len((speech)-1)/chunk_stride+1)
165
- for i in range(total_chunk_num):
166
- speech_chunk = speech[i*chunk_stride:(i+1)*chunk_stride]
167
- is_final = i == total_chunk_num - 1
168
- res = model.generate(input=speech_chunk, cache=cache, is_final=is_final, chunk_size=chunk_size)
169
- if len(res[0]["value"]):
170
- print(res)
171
- ```
172
- ### Punctuation Restoration
173
- ```python
174
- from funasr import AutoModel
175
 
176
- model = AutoModel(model="ct-punc", model_revision="v2.0.4")
177
- res = model.generate(input="那今天的会就到这里吧 happy new year 明年见")
178
- print(res)
179
- ```
180
- ### Timestamp Prediction
181
- ```python
182
- from funasr import AutoModel
183
 
184
- model = AutoModel(model="fa-zh", model_revision="v2.0.4")
185
- wav_file = f"{model.model_path}/example/asr_example.wav"
186
- text_file = f"{model.model_path}/example/text.txt"
187
- res = model.generate(input=(wav_file, text_file), data_type=("sound", "text"))
188
- print(res)
189
- ```
190
 
191
- More examples ref to [docs](https://github.com/alibaba-damo-academy/FunASR/tree/main/examples/industrial_data_pretraining)
 
 
 
 
 
 
 
 
2
  license: other
3
  license_name: model-license
4
  license_link: https://github.com/alibaba-damo-academy/FunASR
5
+ language:
6
+ - en
7
+ pipeline_tag: automatic-speech-recognition
8
+ tags:
9
+ - FunASR
10
+ - Paraformer
11
+ - ASR
12
+ - automatic-speech-recognition
13
+ - non-autoregressive
14
+ - speech-recognition
15
+ library_name: funasr
16
  ---
17
 
18
  <div align="center">
19
 
20
+ # Paraformer-en
21
 
22
+ **A 220M offline, non-autoregressive English speech recognition model for 16 kHz audio.**
23
 
24
+ Powered by [FunASR](https://github.com/modelscope/FunASR). Follow the project or give it a star to receive new model, runtime, and deployment updates.
25
 
26
+ [FunASR](https://github.com/modelscope/FunASR) · [Fun-ASR](https://github.com/QwenAudio/Fun-ASR) · [SenseVoice](https://github.com/QwenAudio/SenseVoice) · [FunClip](https://github.com/modelscope/FunClip)
 
 
 
 
 
27
 
28
+ </div>
29
 
30
+ Paraformer predicts output tokens in parallel instead of decoding them one by one. This checkpoint is intended for high-throughput English transcription where complete utterances or files are available before decoding.
31
 
32
+ ## Quick start
33
 
34
+ Install PyTorch and FunASR:
35
 
36
+ ```bash
37
+ python -m pip install -U torch torchaudio funasr
38
+ ```
 
 
 
 
39
 
40
+ For CUDA-specific PyTorch wheels, select the command for your platform in the [PyTorch installation guide](https://pytorch.org/get-started/locally/), then install `funasr`.
41
 
42
+ Run the audio example included in this repository:
 
 
 
43
 
44
+ ```python
45
+ from funasr import AutoModel
46
 
47
+ model = AutoModel(
48
+ model="funasr/paraformer-en",
49
+ hub="hf",
50
+ device="cpu", # Change to "cuda:0" for NVIDIA GPU inference.
51
+ )
52
 
53
+ audio = f"{model.model_path}/example/asr_example.wav"
54
+ result = model.generate(input=audio)
55
+ print(result[0]["text"])
 
 
 
 
56
  ```
 
57
 
58
+ Using the full repository ID is recommended. It selects this English checkpoint directly and avoids ambiguity with similarly named Paraformer models.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
+ ## Long audio pipeline
61
 
62
+ Add voice activity detection to split long recordings and punctuation restoration to produce readable text:
63
 
64
+ ```python
65
+ from funasr import AutoModel
66
 
67
+ model = AutoModel(
68
+ model="funasr/paraformer-en",
69
+ hub="hf",
70
+ vad_model="funasr/fsmn-vad",
71
+ punc_model="funasr/ct-punc",
72
+ device="cuda:0",
73
+ )
74
+
75
+ result = model.generate(
76
+ input="meeting.wav",
77
+ batch_size_s=300,
78
+ )
79
+ print(result[0]["text"])
80
+ ```
81
 
82
+ The pipeline accepts common audio file paths and 16 kHz waveform input. Resample other sample rates to 16 kHz for predictable results.
83
 
84
+ ## OpenAI-compatible serving
 
85
 
86
+ Expose the model behind a local `/v1/audio/transcriptions` endpoint:
87
 
88
+ ```bash
89
+ python -m pip install -U torch torchaudio funasr fastapi uvicorn python-multipart
90
+ funasr-server --model-path funasr/paraformer-en --hub hf --device cuda
91
+ ```
92
 
93
+ ```bash
94
+ curl http://localhost:8000/v1/audio/transcriptions \
95
+ -F file=@audio.wav \
96
+ -F model=custom
97
  ```
98
 
99
+ `funasr-server` registers a checkpoint supplied through `--model-path` under the API model name `custom`.
100
 
101
+ See the [OpenAI-compatible API examples](https://github.com/modelscope/FunASR/tree/main/examples/openai_api), [deployment matrix](https://github.com/modelscope/FunASR/blob/main/docs/deployment_matrix.md), and [FunASR deployment hub](https://www.funasr.com/) for clients, containers, security guidance, and production topologies.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
+ ## Model details
 
 
104
 
105
+ | Property | Value |
106
+ | --- | --- |
107
+ | Architecture | Paraformer, non-autoregressive ASR |
108
+ | Parameters | 220M |
109
+ | Language | English |
110
+ | Input | 16 kHz speech audio |
111
+ | Mode | Offline / non-streaming |
112
+ | Framework | PyTorch through FunASR |
113
+ | Vocabulary | 10,020 tokens |
114
 
115
+ ### Artifact provenance
116
 
117
+ This Hugging Face repository mirrors the PyTorch checkpoint published as [`iic/speech_paraformer-large-vad-punc_asr_nat-en-16k-common-vocab10020`](https://www.modelscope.cn/models/iic/speech_paraformer-large-vad-punc_asr_nat-en-16k-common-vocab10020) on ModelScope. It is not a TensorFlow 1.x Paraformer variant.
 
118
 
119
+ For reproducibility, the `model.pt` artifact in revision `d043d60434a65ae49b2b2462a09660049871b8e9` has:
 
 
120
 
121
+ - size: `887,289,223` bytes
122
+ - SHA-256: `e11203abf1f449b4c6515dee494c017ee27a4b716730378473d827ad3c7fe41c`
 
 
 
 
 
 
 
123
 
124
+ ## Intended use and limitations
 
 
125
 
126
+ This model is suitable for offline English transcription, subtitle preparation, call or meeting processing, and batch speech pipelines. It is not a streaming checkpoint; use a streaming Paraformer model when partial low-latency results are required.
 
 
 
 
 
 
 
127
 
128
+ Recognition quality can degrade with heavy noise, overlapping speakers, strong accents, uncommon proper nouns, or domain-specific terminology. Validate accuracy on representative audio before production use, and review transcripts before using them in safety-critical or high-impact decisions.
 
129
 
130
+ ## Related models
131
 
132
+ | Model | Purpose |
133
+ | --- | --- |
134
+ | [funasr/fsmn-vad](https://huggingface.co/funasr/fsmn-vad) | Voice activity detection for long audio |
135
+ | [funasr/ct-punc](https://huggingface.co/funasr/ct-punc) | Chinese and English punctuation restoration |
136
+ | [funasr/paraformer-zh](https://huggingface.co/funasr/paraformer-zh) | Offline Mandarin and English ASR |
137
+ | [funasr/paraformer-zh-streaming](https://huggingface.co/funasr/paraformer-zh-streaming) | Streaming Paraformer ASR |
138
 
139
+ ## Resources
 
 
 
 
 
 
 
 
 
 
 
140
 
141
+ - [FunASR GitHub repository](https://github.com/modelscope/FunASR)
142
+ - [FunASR documentation](https://modelscope.github.io/FunASR/)
143
+ - [Paraformer paper](https://arxiv.org/abs/2206.08317)
144
+ - [Issue tracker](https://github.com/modelscope/FunASR/issues)
 
 
 
145
 
146
+ ## Citation
 
 
 
 
 
147
 
148
+ ```bibtex
149
+ @inproceedings{gao2022paraformer,
150
+ title={Paraformer: Fast and Accurate Parallel Transformer for Non-autoregressive End-to-End Speech Recognition},
151
+ author={Gao, Zhifu and Zhang, Shiliang and McLoughlin, Ian and Yan, Zhijie},
152
+ booktitle={INTERSPEECH},
153
+ year={2022}
154
+ }
155
+ ```