File size: 5,516 Bytes
61306bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
---
license: apache-2.0
base_model: FireRedTeam/FireRedPunc
pipeline_tag: automatic-speech-recognition
library_name: openasr
tags:
  - openasr
  - oasr
  - firered-punc
---

<div align="center">

# FireRedPunc Β· OpenASR

**Chinese punctuation restoration for OpenASR -- a BERT token classifier that adds full-width marks to unpunctuated transcripts, fully on-device**

[![License](https://img.shields.io/badge/license-Apache--2.0-2563eb.svg)](https://huggingface.co/FireRedTeam/FireRedPunc)
[![Format](https://img.shields.io/badge/format-.oasr-7c3aed.svg)](https://github.com/QuintinShaw/openasr)
[![Runtime](https://img.shields.io/badge/runtime-OpenASR-111827.svg)](https://openasr.org)
[![Base model](https://img.shields.io/badge/base-FireRedPunc-f59e0b.svg)](https://huggingface.co/FireRedTeam/FireRedPunc)

A capability-pack support model for the **[OpenASR](https://github.com/QuintinShaw/openasr)**
runtime β€” pure-Rust inference, **no Python at inference time**. Not a standalone
transcription model: it augments another OpenASR ASR model's own decode path.

</div>

---

## ✨ Highlights

- 🈢 **Chinese punctuation restoration** -- restores full-width `οΌŒγ€‚οΌŸοΌ` on an unpunctuated ASR transcript (e.g. Dolphin, FireRedASR2-AED) in a finalize-only post-processing pass
- 🧠 **BERT token classifier** -- a 12-layer `chinese-lert-base` encoder with a 5-class head predicting which of none/οΌŒγ€‚οΌŸοΌ follows each subword
- πŸ‡¨πŸ‡³ **Chinese-only by construction** -- the released label set has no English half-width marks, so only Chinese text is punctuated
- πŸ”Œ **Opt-in and auto-gated** -- runs only when the ASR model is unpunctuated and this pack is installed, so punctuating families are never double-punctuated
- πŸ¦€ **Native in OpenASR** β€” `.oasr` packs run with no Python at inference, engineered for peak performance on CPU & GPU

## πŸš€ Quickstart

```bash
# 1. Install the OpenASR CLI  Β·  https://openasr.org
# 2. Pull the pack
openasr pull firered-punc:fp16

# 3. Use it as an opt-in refinement for another model's transcribe call
openasr transcribe meeting.wav --model <asr-model> --word-timestamps=aligned
```

## πŸ“¦ Pack

| Quant | File (`.oasr`) | Size |
|:------|:---------------|-----:|
| fp16 | `firered-punc-fp16.oasr` | 204 MB |

## 🧠 About FireRedPunc

FireRedPunc is a **punctuation-prediction** model from **FireRedTeam**, part of the
FireRedASR2S all-in-one ASR system. It adopts a BERT-style encoder initialized from
`chinese-lert-base` (a 12-layer, 768-hidden, 12-head BERT) with a token-classification head
that predicts, for each subword, which of five classes follows it: none, or one of the four
Chinese full-width marks `,`, `。`, `?`, `!`. It is a text-in / labels-out post-processor,
not an ASR model -- no audio frontend, no autoregressive decode.

In OpenASR it is packaged as an optional **punctuation capability pack**: an unpunctuated
family's finished transcript (e.g. Dolphin or FireRedASR2-AED) is passed through the classifier
once, and the predicted marks are re-inserted into the original characters. The stage is
auto-gated on the ASR model's catalog `emits_punctuation == false` and only runs when this pack
is installed, so punctuating families are never double-punctuated. Because the released label
set is Chinese-only, the integration is Chinese-only by construction (the architecture cannot
emit English half-width marks).

This OpenASR repo repackages the upstream weights as `.oasr` packs that run natively in the
OpenASR runtime -- no Python at inference, all decoding local. It ships in **fp16**.

**Not a standalone transcription model.** This pack cannot transcribe audio by itself; it is an
opt-in post-process applied to an unpunctuated ASR model's output.

**Verification status:** this is a brand-new catalog entry (no prior public listing). Local
verification covers exact per-token label parity against the upstream PyTorch forward across a
set of Chinese golden sentences (all four punctuation classes plus the no-mark class). This
pack is staged in a private repo, not yet publicly listed.

## βš™οΈ How this pack was made

Converted from [FireRedTeam/FireRedPunc](https://huggingface.co/FireRedTeam/FireRedPunc) with the OpenASR local-source
converter (`convert_local_qwen_forced_aligner_source_to_runtime_pack`, not yet wired
to a public `openasr model-pack import` subcommand -- the pack format and tensor
mapping are stable, but CLI/family-registry wiring is a separate stage).

The `.oasr` container is GGUF-backed; packs use zero-copy mmap weight binding.

## βš–οΈ License

This pack **inherits the upstream model's license: Apache-2.0**
([source](https://huggingface.co/FireRedTeam/FireRedPunc)). OpenASR packaging retains the upstream copyright;
the only modifications are format conversion and quantization.

## πŸ™ Acknowledgements

This pack is a redistribution of **FireRedPunc**, created and open-sourced by **FireRedTeam**
([FireRedTeam/FireRedPunc](https://huggingface.co/FireRedTeam/FireRedPunc)). All credit for the
original architecture, training, and weights belongs to the authors; the license is inherited
from and identical to the upstream model (Apache-2.0). OpenASR only performs format conversion,
runtime verification, and local-inference adaptation.

## πŸ”— Links

- πŸ¦€ **OpenASR** β€” <https://github.com/QuintinShaw/openasr>
- 🌐 **Website** β€” <https://openasr.org>
- πŸ€— **Upstream model** β€” [FireRedTeam/FireRedPunc](https://huggingface.co/FireRedTeam/FireRedPunc)