huper29 commited on
Commit
47fc0f6
·
verified ·
1 Parent(s): 9a99b81

Upload model + model card

Browse files
README.md CHANGED
@@ -1,5 +1,58 @@
1
  ---
2
  license: mit
3
- base_model:
4
- - microsoft/wavlm-large
5
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
+ base_model: microsoft/wavlm-large
4
+ tags:
5
+ - audio
6
+ - speech
7
+ - wavlm
8
+ - ctc
9
+ - phone-recognition
10
+ - arpabet
11
+ ---
12
+
13
+ # HuPER Recognizer (ARPAbet phone recognition)
14
+
15
+ A CTC phone recognizer fine-tuned from **WavLM-Large** that maps **16 kHz** speech audio to an **ARPAbet** phone sequence.
16
+ See the HuPER paper for details: **arXiv:2602.01634**.
17
+
18
+ ## Quickstart
19
+
20
+ ```bash
21
+ pip install -U transformers torchaudio
22
+ ```
23
+
24
+ ```python
25
+ import torch
26
+ import torchaudio
27
+ from transformers import Wav2Vec2Processor, WavLMForCTC
28
+
29
+ repo_id = "huper29/huper_recognizer"
30
+ processor = Wav2Vec2Processor.from_pretrained(repo_id)
31
+ model = WavLMForCTC.from_pretrained(repo_id)
32
+ model.eval()
33
+
34
+ waveform, sr = torchaudio.load("sample.wav")
35
+ if waveform.shape[0] > 1:
36
+ waveform = waveform.mean(dim=0, keepdim=True)
37
+ if sr != 16000:
38
+ waveform = torchaudio.transforms.Resample(sr, 16000)(waveform)
39
+
40
+ inputs = processor(waveform.squeeze().numpy(), sampling_rate=16000, return_tensors="pt")
41
+ with torch.no_grad():
42
+ logits = model(**inputs).logits
43
+
44
+ pred_ids = torch.argmax(logits, dim=-1)[0]
45
+ phone_seq = processor.tokenizer.decode(pred_ids, skip_special_tokens=True)
46
+ print(phone_seq)
47
+ ```
48
+
49
+ ## Citation
50
+
51
+ ```bibtex
52
+ @article{guo2026huper,
53
+ title = {HuPER: A Human-Inspired Framework for Phonetic Perception},
54
+ author = {Guo, Chenxu and Lian, Jiachen and Liu, Yisi and Huang, Baihe and Narayanan, Shriyaa and Cho, Cheol Jun and Anumanchipalli, Gopala},
55
+ journal = {arXiv preprint arXiv:2602.01634},
56
+ year = {2026}
57
+ }
58
+ ```
added_tokens.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "</s>": 45,
3
+ "<s>": 44
4
+ }
config.json ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "activation_dropout": 0.0,
3
+ "adapter_kernel_size": 3,
4
+ "adapter_stride": 2,
5
+ "add_adapter": false,
6
+ "apply_spec_augment": true,
7
+ "architectures": [
8
+ "WavLMForCTC"
9
+ ],
10
+ "attention_dropout": 0.1,
11
+ "bos_token_id": 1,
12
+ "classifier_proj_size": 256,
13
+ "codevector_dim": 768,
14
+ "contrastive_logits_temperature": 0.1,
15
+ "conv_bias": false,
16
+ "conv_dim": [
17
+ 512,
18
+ 512,
19
+ 512,
20
+ 512,
21
+ 512,
22
+ 512,
23
+ 512
24
+ ],
25
+ "conv_kernel": [
26
+ 10,
27
+ 3,
28
+ 3,
29
+ 3,
30
+ 3,
31
+ 2,
32
+ 2
33
+ ],
34
+ "conv_stride": [
35
+ 5,
36
+ 2,
37
+ 2,
38
+ 2,
39
+ 2,
40
+ 2,
41
+ 2
42
+ ],
43
+ "ctc_loss_reduction": "mean",
44
+ "ctc_zero_infinity": false,
45
+ "diversity_loss_weight": 0.1,
46
+ "do_stable_layer_norm": true,
47
+ "dtype": "float32",
48
+ "eos_token_id": 2,
49
+ "feat_extract_activation": "gelu",
50
+ "feat_extract_dropout": 0.0,
51
+ "feat_extract_norm": "layer",
52
+ "feat_proj_dropout": 0.1,
53
+ "feat_quantizer_dropout": 0.0,
54
+ "final_dropout": 0.0,
55
+ "gradient_checkpointing": false,
56
+ "hidden_act": "gelu",
57
+ "hidden_dropout": 0.1,
58
+ "hidden_size": 1024,
59
+ "id2label": {
60
+ "0": "<PAD>",
61
+ "1": "<UNK>",
62
+ "2": "<BOS>",
63
+ "3": "<EOS>",
64
+ "4": "|",
65
+ "5": "AA",
66
+ "6": "AE",
67
+ "7": "AH",
68
+ "8": "AW",
69
+ "9": "AY",
70
+ "10": "B",
71
+ "11": "CH",
72
+ "12": "D",
73
+ "13": "DH",
74
+ "14": "DX",
75
+ "15": "EH",
76
+ "16": "ER",
77
+ "17": "EY",
78
+ "18": "F",
79
+ "19": "G",
80
+ "20": "HH",
81
+ "21": "IH",
82
+ "22": "IY",
83
+ "23": "JH",
84
+ "24": "K",
85
+ "25": "L",
86
+ "26": "M",
87
+ "27": "N",
88
+ "28": "NG",
89
+ "29": "OW",
90
+ "30": "OY",
91
+ "31": "P",
92
+ "32": "R",
93
+ "33": "S",
94
+ "34": "SH",
95
+ "35": "T",
96
+ "36": "TH",
97
+ "37": "UH",
98
+ "38": "UW",
99
+ "39": "V",
100
+ "40": "W",
101
+ "41": "Y",
102
+ "42": "Z",
103
+ "43": "ZH"
104
+ },
105
+ "initializer_range": 0.02,
106
+ "intermediate_size": 4096,
107
+ "label2id": {
108
+ "<BOS>": 2,
109
+ "<EOS>": 3,
110
+ "<PAD>": 0,
111
+ "<UNK>": 1,
112
+ "AA": 5,
113
+ "AE": 6,
114
+ "AH": 7,
115
+ "AW": 8,
116
+ "AY": 9,
117
+ "B": 10,
118
+ "CH": 11,
119
+ "D": 12,
120
+ "DH": 13,
121
+ "DX": 14,
122
+ "EH": 15,
123
+ "ER": 16,
124
+ "EY": 17,
125
+ "F": 18,
126
+ "G": 19,
127
+ "HH": 20,
128
+ "IH": 21,
129
+ "IY": 22,
130
+ "JH": 23,
131
+ "K": 24,
132
+ "L": 25,
133
+ "M": 26,
134
+ "N": 27,
135
+ "NG": 28,
136
+ "OW": 29,
137
+ "OY": 30,
138
+ "P": 31,
139
+ "R": 32,
140
+ "S": 33,
141
+ "SH": 34,
142
+ "T": 35,
143
+ "TH": 36,
144
+ "UH": 37,
145
+ "UW": 38,
146
+ "V": 39,
147
+ "W": 40,
148
+ "Y": 41,
149
+ "Z": 42,
150
+ "ZH": 43,
151
+ "|": 4
152
+ },
153
+ "layer_norm_eps": 1e-05,
154
+ "layerdrop": 0.1,
155
+ "mask_channel_length": 10,
156
+ "mask_channel_min_space": 1,
157
+ "mask_channel_other": 0.0,
158
+ "mask_channel_prob": 0.0,
159
+ "mask_channel_selection": "static",
160
+ "mask_feature_length": 10,
161
+ "mask_feature_min_masks": 0,
162
+ "mask_feature_prob": 0.0,
163
+ "mask_time_length": 10,
164
+ "mask_time_min_masks": 2,
165
+ "mask_time_min_space": 1,
166
+ "mask_time_other": 0.0,
167
+ "mask_time_prob": 0.075,
168
+ "mask_time_selection": "static",
169
+ "max_bucket_distance": 800,
170
+ "model_type": "wavlm",
171
+ "num_adapter_layers": 3,
172
+ "num_attention_heads": 16,
173
+ "num_buckets": 320,
174
+ "num_codevector_groups": 2,
175
+ "num_codevectors_per_group": 320,
176
+ "num_conv_pos_embedding_groups": 16,
177
+ "num_conv_pos_embeddings": 128,
178
+ "num_ctc_classes": 80,
179
+ "num_feat_extract_layers": 7,
180
+ "num_hidden_layers": 24,
181
+ "num_negatives": 100,
182
+ "output_hidden_size": 1024,
183
+ "pad_token_id": 0,
184
+ "proj_codevector_dim": 768,
185
+ "replace_prob": 0.5,
186
+ "tdnn_dilation": [
187
+ 1,
188
+ 2,
189
+ 3,
190
+ 1,
191
+ 1
192
+ ],
193
+ "tdnn_dim": [
194
+ 512,
195
+ 512,
196
+ 512,
197
+ 512,
198
+ 1500
199
+ ],
200
+ "tdnn_kernel": [
201
+ 5,
202
+ 3,
203
+ 3,
204
+ 1,
205
+ 1
206
+ ],
207
+ "tokenizer_class": "Wav2Vec2CTCTokenizer",
208
+ "transformers_version": "4.57.3",
209
+ "use_weighted_layer_sum": false,
210
+ "vocab_size": 46,
211
+ "xvector_output_dim": 512
212
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6117404b02dcdeeabf3602feae10c2f95f4f5dcf73df8af92a942e301f510113
3
+ size 1262060824
preprocessor_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "do_normalize": true,
3
+ "feature_extractor_type": "Wav2Vec2FeatureExtractor",
4
+ "feature_size": 1,
5
+ "padding_side": "right",
6
+ "padding_value": 0.0,
7
+ "processor_class": "Wav2Vec2Processor",
8
+ "return_attention_mask": false,
9
+ "sampling_rate": 16000
10
+ }
special_tokens_map.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "<s>",
3
+ "eos_token": "</s>",
4
+ "pad_token": "<PAD>",
5
+ "unk_token": "<UNK>"
6
+ }
tokenizer_config.json ADDED
@@ -0,0 +1,249 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<PAD>",
5
+ "lstrip": true,
6
+ "normalized": false,
7
+ "rstrip": true,
8
+ "single_word": false,
9
+ "special": false
10
+ },
11
+ "1": {
12
+ "content": "<UNK>",
13
+ "lstrip": true,
14
+ "normalized": false,
15
+ "rstrip": true,
16
+ "single_word": false,
17
+ "special": false
18
+ },
19
+ "2": {
20
+ "content": "<BOS>",
21
+ "lstrip": true,
22
+ "normalized": false,
23
+ "rstrip": true,
24
+ "single_word": false,
25
+ "special": false
26
+ },
27
+ "3": {
28
+ "content": "<EOS>",
29
+ "lstrip": true,
30
+ "normalized": false,
31
+ "rstrip": true,
32
+ "single_word": false,
33
+ "special": false
34
+ },
35
+ "5": {
36
+ "content": "AA",
37
+ "lstrip": true,
38
+ "normalized": false,
39
+ "rstrip": true,
40
+ "single_word": false,
41
+ "special": false
42
+ },
43
+ "6": {
44
+ "content": "AE",
45
+ "lstrip": true,
46
+ "normalized": false,
47
+ "rstrip": true,
48
+ "single_word": false,
49
+ "special": false
50
+ },
51
+ "7": {
52
+ "content": "AH",
53
+ "lstrip": true,
54
+ "normalized": false,
55
+ "rstrip": true,
56
+ "single_word": false,
57
+ "special": false
58
+ },
59
+ "8": {
60
+ "content": "AW",
61
+ "lstrip": true,
62
+ "normalized": false,
63
+ "rstrip": true,
64
+ "single_word": false,
65
+ "special": false
66
+ },
67
+ "9": {
68
+ "content": "AY",
69
+ "lstrip": true,
70
+ "normalized": false,
71
+ "rstrip": true,
72
+ "single_word": false,
73
+ "special": false
74
+ },
75
+ "11": {
76
+ "content": "CH",
77
+ "lstrip": true,
78
+ "normalized": false,
79
+ "rstrip": true,
80
+ "single_word": false,
81
+ "special": false
82
+ },
83
+ "13": {
84
+ "content": "DH",
85
+ "lstrip": true,
86
+ "normalized": false,
87
+ "rstrip": true,
88
+ "single_word": false,
89
+ "special": false
90
+ },
91
+ "14": {
92
+ "content": "DX",
93
+ "lstrip": true,
94
+ "normalized": false,
95
+ "rstrip": true,
96
+ "single_word": false,
97
+ "special": false
98
+ },
99
+ "15": {
100
+ "content": "EH",
101
+ "lstrip": true,
102
+ "normalized": false,
103
+ "rstrip": true,
104
+ "single_word": false,
105
+ "special": false
106
+ },
107
+ "16": {
108
+ "content": "ER",
109
+ "lstrip": true,
110
+ "normalized": false,
111
+ "rstrip": true,
112
+ "single_word": false,
113
+ "special": false
114
+ },
115
+ "17": {
116
+ "content": "EY",
117
+ "lstrip": true,
118
+ "normalized": false,
119
+ "rstrip": true,
120
+ "single_word": false,
121
+ "special": false
122
+ },
123
+ "20": {
124
+ "content": "HH",
125
+ "lstrip": true,
126
+ "normalized": false,
127
+ "rstrip": true,
128
+ "single_word": false,
129
+ "special": false
130
+ },
131
+ "21": {
132
+ "content": "IH",
133
+ "lstrip": true,
134
+ "normalized": false,
135
+ "rstrip": true,
136
+ "single_word": false,
137
+ "special": false
138
+ },
139
+ "22": {
140
+ "content": "IY",
141
+ "lstrip": true,
142
+ "normalized": false,
143
+ "rstrip": true,
144
+ "single_word": false,
145
+ "special": false
146
+ },
147
+ "23": {
148
+ "content": "JH",
149
+ "lstrip": true,
150
+ "normalized": false,
151
+ "rstrip": true,
152
+ "single_word": false,
153
+ "special": false
154
+ },
155
+ "28": {
156
+ "content": "NG",
157
+ "lstrip": true,
158
+ "normalized": false,
159
+ "rstrip": true,
160
+ "single_word": false,
161
+ "special": false
162
+ },
163
+ "29": {
164
+ "content": "OW",
165
+ "lstrip": true,
166
+ "normalized": false,
167
+ "rstrip": true,
168
+ "single_word": false,
169
+ "special": false
170
+ },
171
+ "30": {
172
+ "content": "OY",
173
+ "lstrip": true,
174
+ "normalized": false,
175
+ "rstrip": true,
176
+ "single_word": false,
177
+ "special": false
178
+ },
179
+ "34": {
180
+ "content": "SH",
181
+ "lstrip": true,
182
+ "normalized": false,
183
+ "rstrip": true,
184
+ "single_word": false,
185
+ "special": false
186
+ },
187
+ "36": {
188
+ "content": "TH",
189
+ "lstrip": true,
190
+ "normalized": false,
191
+ "rstrip": true,
192
+ "single_word": false,
193
+ "special": false
194
+ },
195
+ "37": {
196
+ "content": "UH",
197
+ "lstrip": true,
198
+ "normalized": false,
199
+ "rstrip": true,
200
+ "single_word": false,
201
+ "special": false
202
+ },
203
+ "38": {
204
+ "content": "UW",
205
+ "lstrip": true,
206
+ "normalized": false,
207
+ "rstrip": true,
208
+ "single_word": false,
209
+ "special": false
210
+ },
211
+ "43": {
212
+ "content": "ZH",
213
+ "lstrip": true,
214
+ "normalized": false,
215
+ "rstrip": true,
216
+ "single_word": false,
217
+ "special": false
218
+ },
219
+ "44": {
220
+ "content": "<s>",
221
+ "lstrip": false,
222
+ "normalized": false,
223
+ "rstrip": false,
224
+ "single_word": false,
225
+ "special": true
226
+ },
227
+ "45": {
228
+ "content": "</s>",
229
+ "lstrip": false,
230
+ "normalized": false,
231
+ "rstrip": false,
232
+ "single_word": false,
233
+ "special": true
234
+ }
235
+ },
236
+ "bos_token": "<s>",
237
+ "clean_up_tokenization_spaces": false,
238
+ "do_lower_case": false,
239
+ "eos_token": "</s>",
240
+ "extra_special_tokens": {},
241
+ "model_max_length": 1000000000000000019884624838656,
242
+ "pad_token": "<PAD>",
243
+ "processor_class": "Wav2Vec2Processor",
244
+ "replace_word_delimiter_char": " ",
245
+ "target_lang": null,
246
+ "tokenizer_class": "Wav2Vec2CTCTokenizer",
247
+ "unk_token": "<UNK>",
248
+ "word_delimiter_token": "|"
249
+ }
vocab.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "<BOS>": 2,
3
+ "<EOS>": 3,
4
+ "<PAD>": 0,
5
+ "<UNK>": 1,
6
+ "AA": 5,
7
+ "AE": 6,
8
+ "AH": 7,
9
+ "AW": 8,
10
+ "AY": 9,
11
+ "B": 10,
12
+ "CH": 11,
13
+ "D": 12,
14
+ "DH": 13,
15
+ "DX": 14,
16
+ "EH": 15,
17
+ "ER": 16,
18
+ "EY": 17,
19
+ "F": 18,
20
+ "G": 19,
21
+ "HH": 20,
22
+ "IH": 21,
23
+ "IY": 22,
24
+ "JH": 23,
25
+ "K": 24,
26
+ "L": 25,
27
+ "M": 26,
28
+ "N": 27,
29
+ "NG": 28,
30
+ "OW": 29,
31
+ "OY": 30,
32
+ "P": 31,
33
+ "R": 32,
34
+ "S": 33,
35
+ "SH": 34,
36
+ "T": 35,
37
+ "TH": 36,
38
+ "UH": 37,
39
+ "UW": 38,
40
+ "V": 39,
41
+ "W": 40,
42
+ "Y": 41,
43
+ "Z": 42,
44
+ "ZH": 43,
45
+ "|": 4
46
+ }