docs: make Paraformer-en model card directly usable
#2
by langgz - opened
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 |
-
#
|
| 10 |
|
| 11 |
-
|
| 12 |
|
| 13 |
-
|
| 14 |
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
# FunASR: A Fundamental End-to-End Speech Recognition Toolkit
|
| 21 |
|
|
|
|
| 22 |
|
| 23 |
-
|
| 24 |
|
|
|
|
| 25 |
|
| 26 |
-
|
| 27 |
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
| [**Quick Start**](#quick-start)
|
| 32 |
-
| [**Runtime**](./runtime/readme.md)
|
| 33 |
-
| [**Model Zoo**](#model-zoo)
|
| 34 |
-
| [**Contact**](#contact)
|
| 35 |
|
|
|
|
| 36 |
|
| 37 |
-
|
| 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 |
-
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
-
|
| 47 |
-
|
| 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 |
-
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
|
|
|
|
| 83 |
|
| 84 |
-
|
| 85 |
-
## Quick Start
|
| 86 |
|
| 87 |
-
|
| 88 |
|
| 89 |
-
|
|
|
|
|
|
|
|
|
|
| 90 |
|
| 91 |
-
```
|
| 92 |
-
|
|
|
|
|
|
|
| 93 |
```
|
| 94 |
|
| 95 |
-
|
| 96 |
|
| 97 |
-
|
| 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 |
-
##
|
| 115 |
-
```python
|
| 116 |
-
from funasr import AutoModel
|
| 117 |
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
|
| 122 |
-
|
| 123 |
|
| 124 |
-
|
| 125 |
-
import os
|
| 126 |
|
| 127 |
-
|
| 128 |
-
speech, sample_rate = soundfile.read(wav_file)
|
| 129 |
-
chunk_stride = chunk_size[1] * 960 # 600ms
|
| 130 |
|
| 131 |
-
|
| 132 |
-
|
| 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 |
-
##
|
| 142 |
-
```python
|
| 143 |
-
from funasr import AutoModel
|
| 144 |
|
| 145 |
-
model
|
| 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 |
-
|
| 155 |
-
model = AutoModel(model="fsmn-vad", model_revision="v2.0.4")
|
| 156 |
|
| 157 |
-
|
| 158 |
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
|
|
|
|
|
|
|
|
|
| 162 |
|
| 163 |
-
|
| 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 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
### Timestamp Prediction
|
| 181 |
-
```python
|
| 182 |
-
from funasr import AutoModel
|
| 183 |
|
| 184 |
-
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
```
|