devilyouwei commited on
Commit
22ea400
·
verified ·
1 Parent(s): 70405a5

Add Audio8-ASR 0.1B Core ML hybrid package

Browse files
README.md ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-nc-4.0
3
+ library_name: coremltools
4
+ pipeline_tag: automatic-speech-recognition
5
+ base_model: Audio8/Audio8-ASR-0.1B
6
+ language:
7
+ - en
8
+ - zh
9
+ - fr
10
+ - de
11
+ - ja
12
+ - ko
13
+ - yue
14
+ tags:
15
+ - coreml
16
+ - apple-silicon
17
+ - automatic-speech-recognition
18
+ - multilingual
19
+ - macos
20
+ ---
21
+
22
+ # Audio8-ASR 0.1B — Core ML for Apple Silicon
23
+
24
+ A ready-to-use hybrid Core ML conversion of [Audio8-ASR-0.1B](https://huggingface.co/Audio8/Audio8-ASR-0.1B) for fast, private, multilingual speech transcription on Apple Silicon.
25
+
26
+ This model is integrated into [Hugging Mac](https://github.com/devilyouwei/hugging-mac), where you can run it locally and build macOS voice apps, transcription services, plugins, and agents.
27
+
28
+ > **Non-commercial license:** the model is provided under CC-BY-NC-4.0 and may not be used commercially without separate permission from the upstream rights holder.
29
+
30
+ ## Architecture
31
+
32
+ This is an explicitly hybrid runtime rather than a fully Core ML autoregressive model:
33
+
34
+ - The audio encoder and MLP tower run with Core ML on the Apple Neural Engine.
35
+ - The cached Qwen2 decoder runs with PyTorch MPS on the GPU.
36
+ - A multifunction ML Program provides optimized 5, 10, and 30-second audio buckets.
37
+ - Audio-tower weights use INT8 linear quantization with FP16 compute.
38
+
39
+ The package includes the Core ML audio tower, decoder and projector weights, processor configuration, and reproducible conversion metadata. The tokenizer is downloaded from the pinned upstream model by Hugging Mac.
40
+
41
+ ## Model details
42
+
43
+ | Property | Value |
44
+ |---|---|
45
+ | Languages | Chinese, English, French, German, Japanese, Korean, Cantonese |
46
+ | Audio | 16 kHz mono, up to 30 seconds |
47
+ | Parameters | 0.324B end-to-end; 0.104B language model |
48
+ | Core ML target | macOS 15 or later |
49
+ | Package size | 429 MB |
50
+ | Decoding | Greedy autoregressive decoding with KV cache |
51
+
52
+ ## Core ML functions
53
+
54
+ | Function | `audios` input | `attn_mask` input | `hidden` output |
55
+ |---|---|---|---|
56
+ | `tower_5s` | `1 × 128 × 500` FP32 | `1 × 1 × 65 × 65` FP32 | `65 × 1024` FP16 |
57
+ | `tower_10s` | `1 × 128 × 1000` FP32 | `1 × 1 × 130 × 130` FP32 | `130 × 1024` FP16 |
58
+ | `tower_30s` | `1 × 128 × 3000` FP32 | `1 × 1 × 390 × 390` FP32 | `390 × 1024` FP16 |
59
+
60
+ Inputs are 128-bin log-Mel features plus an additive attention mask. The default Core ML function is `tower_30s`; Hugging Mac automatically selects the smallest suitable bucket.
61
+
62
+ ## Use with Hugging Mac
63
+
64
+ Install the ASR dependencies and run the Hugging Mac application:
65
+
66
+ ```bash
67
+ git clone https://github.com/devilyouwei/hugging-mac.git
68
+ cd hugging-mac
69
+ uv sync --all-packages
70
+ uv run hugging-mac-web
71
+ ```
72
+
73
+ Open the Models page, install **Audio8-ASR 0.1B Core ML**, then use Live Transcription or build against the `SpeechTranscription` capability.
74
+
75
+ For the full runtime API and implementation, see the [Audio8-ASR SDK package](https://github.com/devilyouwei/hugging-mac/tree/main/packages/hugging_mac_sdk/src/hugging_mac_sdk/models/audio8_asr).
76
+
77
+ ## Provenance
78
+
79
+ - Upstream model: [Audio8/Audio8-ASR-0.1B](https://huggingface.co/Audio8/Audio8-ASR-0.1B)
80
+ - Upstream revision: `8487da63d581fa4fc9b5c60444cb57c3a523d7aa`
81
+ - Conversion format: `audio8-asr-coreml-hybrid`
82
+ - Conversion metadata: included in `audio8-asr-coreml/conversion.json`
83
+ - No upstream remote Python code is included or executed by Hugging Mac.
84
+
85
+ ## Integrity
86
+
87
+ Directory SHA-256:
88
+
89
+ ```text
90
+ 6721e90590aee02b6091ec79e3ea451ae1997399e18fcf451f079535a44fce48
91
+ ```
92
+
93
+ ## License and attribution
94
+
95
+ The converted model retains the upstream **CC-BY-NC-4.0** license, attribution requirements, and non-commercial restriction. Hugging Mac is an independent open-source project and is not affiliated with or endorsed by Audio8 or AutoArk.
audio8-asr-coreml.tar ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6f38444a41e7406fb69c3a03c65c5edc8d1451c3014b712696be9cb345238842
3
+ size 429392896
audio8-asr-coreml/audio_tower.mlpackage/Data/com.apple.CoreML/model.mlmodel ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f94745a4fe6efd39dc8c64c8a5c55bce9dfe66429e00a9f34a66775f91f89a4
3
+ size 715194
audio8-asr-coreml/audio_tower.mlpackage/Data/com.apple.CoreML/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:130e99fdcb02b4d07896e8471e4b7dd739ad3836f38bee27ffa446a38619865e
3
+ size 220589056
audio8-asr-coreml/audio_tower.mlpackage/Manifest.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fileFormatVersion": "1.0.0",
3
+ "itemInfoEntries": {
4
+ "38964EC0-C564-40C3-A9E1-BAA5B803935C": {
5
+ "author": "com.apple.CoreML",
6
+ "description": "CoreML Model Specification",
7
+ "name": "model.mlmodel",
8
+ "path": "com.apple.CoreML/model.mlmodel"
9
+ },
10
+ "BDC345DC-3D40-4DF7-8F7D-C8A2305F7BDE": {
11
+ "author": "com.apple.CoreML",
12
+ "description": "CoreML Model Weights",
13
+ "name": "weights",
14
+ "path": "com.apple.CoreML/weights"
15
+ }
16
+ },
17
+ "rootModelIdentifier": "38964EC0-C564-40C3-A9E1-BAA5B803935C"
18
+ }
audio8-asr-coreml/config.json ADDED
@@ -0,0 +1,286 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "adapter_type": "qwen3_asr_mlp_tower",
3
+ "architectures": [
4
+ "ArkasrForConditionalGeneration"
5
+ ],
6
+ "attention_dropout": 0.0,
7
+ "audio_token_id": 151646,
8
+ "auto_map": {
9
+ "AutoConfig": "configuration_arkasr.ArkasrConfig",
10
+ "AutoModelForCausalLM": "modeling_arkasr.ArkasrForConditionalGeneration"
11
+ },
12
+ "bos_token_id": 151643,
13
+ "dtype": "bfloat16",
14
+ "eos_token_id": 151645,
15
+ "hidden_act": "silu",
16
+ "hidden_size": 512,
17
+ "initializer_range": 0.02,
18
+ "intermediate_size": 1408,
19
+ "layer_types": [
20
+ "full_attention",
21
+ "full_attention",
22
+ "full_attention",
23
+ "full_attention",
24
+ "full_attention",
25
+ "full_attention",
26
+ "full_attention",
27
+ "full_attention"
28
+ ],
29
+ "max_position_embeddings": 32768,
30
+ "max_whisper_length": 1500,
31
+ "max_window_layers": 28,
32
+ "merge_factor": 4,
33
+ "mlp_adapter_act": "gelu",
34
+ "model_type": "arkasr",
35
+ "num_attention_heads": 8,
36
+ "num_hidden_layers": 8,
37
+ "num_key_value_heads": 8,
38
+ "pad_token_id": 151643,
39
+ "rms_norm_eps": 1e-06,
40
+ "rope_scaling": null,
41
+ "rope_theta": 1000000.0,
42
+ "sliding_window": null,
43
+ "spec_aug": false,
44
+ "tie_word_embeddings": true,
45
+ "transformers_version": "4.57.3",
46
+ "use_cache": true,
47
+ "use_rope": false,
48
+ "use_sliding_window": false,
49
+ "vocab_size": 151936,
50
+ "whisper_config": {
51
+ "_name_or_path": "openai/whisper-small",
52
+ "activation_dropout": 0.0,
53
+ "activation_function": "gelu",
54
+ "apply_spec_augment": false,
55
+ "architectures": [
56
+ "WhisperForConditionalGeneration"
57
+ ],
58
+ "attention_dropout": 0.0,
59
+ "begin_suppress_tokens": [
60
+ 220,
61
+ 50257
62
+ ],
63
+ "bos_token_id": 50257,
64
+ "classifier_proj_size": 256,
65
+ "d_model": 768,
66
+ "decoder_attention_heads": 12,
67
+ "decoder_ffn_dim": 3072,
68
+ "decoder_layerdrop": 0.0,
69
+ "decoder_layers": 12,
70
+ "decoder_start_token_id": 50258,
71
+ "dropout": 0.0,
72
+ "dtype": "float32",
73
+ "encoder_attention_heads": 12,
74
+ "encoder_ffn_dim": 3072,
75
+ "encoder_layerdrop": 0.0,
76
+ "encoder_layers": 12,
77
+ "eos_token_id": 50257,
78
+ "forced_decoder_ids": [
79
+ [
80
+ 1,
81
+ 50259
82
+ ],
83
+ [
84
+ 2,
85
+ 50359
86
+ ],
87
+ [
88
+ 3,
89
+ 50363
90
+ ]
91
+ ],
92
+ "init_std": 0.02,
93
+ "mask_feature_length": 10,
94
+ "mask_feature_min_masks": 0,
95
+ "mask_feature_prob": 0.0,
96
+ "mask_time_length": 10,
97
+ "mask_time_min_masks": 2,
98
+ "mask_time_prob": 0.05,
99
+ "max_length": 448,
100
+ "max_source_positions": 1500,
101
+ "max_target_positions": 448,
102
+ "median_filter_width": 7,
103
+ "model_type": "whisper",
104
+ "num_hidden_layers": 12,
105
+ "num_mel_bins": 80,
106
+ "pad_token_id": 50257,
107
+ "scale_embedding": false,
108
+ "suppress_tokens": [
109
+ 1,
110
+ 2,
111
+ 7,
112
+ 8,
113
+ 9,
114
+ 10,
115
+ 14,
116
+ 25,
117
+ 26,
118
+ 27,
119
+ 28,
120
+ 29,
121
+ 31,
122
+ 58,
123
+ 59,
124
+ 60,
125
+ 61,
126
+ 62,
127
+ 63,
128
+ 90,
129
+ 91,
130
+ 92,
131
+ 93,
132
+ 359,
133
+ 503,
134
+ 522,
135
+ 542,
136
+ 873,
137
+ 893,
138
+ 902,
139
+ 918,
140
+ 922,
141
+ 931,
142
+ 1350,
143
+ 1853,
144
+ 1982,
145
+ 2460,
146
+ 2627,
147
+ 3246,
148
+ 3253,
149
+ 3268,
150
+ 3536,
151
+ 3846,
152
+ 3961,
153
+ 4183,
154
+ 4667,
155
+ 6585,
156
+ 6647,
157
+ 7273,
158
+ 9061,
159
+ 9383,
160
+ 10428,
161
+ 10929,
162
+ 11938,
163
+ 12033,
164
+ 12331,
165
+ 12562,
166
+ 13793,
167
+ 14157,
168
+ 14635,
169
+ 15265,
170
+ 15618,
171
+ 16553,
172
+ 16604,
173
+ 18362,
174
+ 18956,
175
+ 20075,
176
+ 21675,
177
+ 22520,
178
+ 26130,
179
+ 26161,
180
+ 26435,
181
+ 28279,
182
+ 29464,
183
+ 31650,
184
+ 32302,
185
+ 32470,
186
+ 36865,
187
+ 42863,
188
+ 47425,
189
+ 49870,
190
+ 50254,
191
+ 50258,
192
+ 50360,
193
+ 50361,
194
+ 50362
195
+ ],
196
+ "use_cache": true,
197
+ "use_weighted_layer_sum": false,
198
+ "vocab_size": 51865
199
+ },
200
+ "qwen3_asr_audio_config": {
201
+ "_name_or_path": "",
202
+ "activation_dropout": 0,
203
+ "activation_function": "gelu",
204
+ "add_cross_attention": false,
205
+ "architectures": null,
206
+ "attention_dropout": 0,
207
+ "bad_words_ids": null,
208
+ "begin_suppress_tokens": null,
209
+ "bos_token_id": null,
210
+ "chunk_size_feed_forward": 0,
211
+ "conv_chunksize": 500,
212
+ "cross_attention_hidden_size": null,
213
+ "d_model": 896,
214
+ "decoder_start_token_id": null,
215
+ "diversity_penalty": 0.0,
216
+ "do_sample": false,
217
+ "downsample_hidden_size": 480,
218
+ "dropout": 0,
219
+ "dtype": null,
220
+ "early_stopping": false,
221
+ "encoder_attention_heads": 14,
222
+ "encoder_ffn_dim": 3584,
223
+ "encoder_layers": 18,
224
+ "encoder_no_repeat_ngram_size": 0,
225
+ "eos_token_id": null,
226
+ "exponential_decay_length_penalty": null,
227
+ "finetuning_task": null,
228
+ "forced_bos_token_id": null,
229
+ "forced_eos_token_id": null,
230
+ "id2label": {
231
+ "0": "LABEL_0",
232
+ "1": "LABEL_1"
233
+ },
234
+ "initializer_range": 0.02,
235
+ "is_decoder": false,
236
+ "is_encoder_decoder": false,
237
+ "label2id": {
238
+ "LABEL_0": 0,
239
+ "LABEL_1": 1
240
+ },
241
+ "length_penalty": 1.0,
242
+ "max_length": 20,
243
+ "max_source_positions": 1500,
244
+ "min_length": 0,
245
+ "model_type": "qwen3_asr_audio_encoder",
246
+ "n_window": 50,
247
+ "n_window_infer": 800,
248
+ "no_repeat_ngram_size": 0,
249
+ "num_beam_groups": 1,
250
+ "num_beams": 1,
251
+ "num_hidden_layers": 18,
252
+ "num_mel_bins": 128,
253
+ "num_return_sequences": 1,
254
+ "output_attentions": false,
255
+ "output_dim": 1024,
256
+ "output_hidden_states": false,
257
+ "output_scores": false,
258
+ "pad_token_id": null,
259
+ "prefix": null,
260
+ "problem_type": null,
261
+ "pruned_heads": {},
262
+ "remove_invalid_values": false,
263
+ "repetition_penalty": 1.0,
264
+ "return_dict": true,
265
+ "return_dict_in_generate": false,
266
+ "scale_embedding": false,
267
+ "sep_token_id": null,
268
+ "suppress_tokens": null,
269
+ "task_specific_params": null,
270
+ "temperature": 1.0,
271
+ "tf_legacy_loss": false,
272
+ "tie_encoder_decoder": false,
273
+ "tie_word_embeddings": true,
274
+ "tokenizer_class": null,
275
+ "top_k": 50,
276
+ "top_p": 1.0,
277
+ "torchscript": false,
278
+ "typical_p": 1.0,
279
+ "use_bfloat16": false
280
+ },
281
+ "qwen3_asr_mlp_tower_layers": 4,
282
+ "qwen3_asr_mlp_tower_hidden_size": 0,
283
+ "qwen3_asr_mlp_tower_dropout": 0.0,
284
+ "audio_backend": "qwen3_asr_mlp_tower",
285
+ "name_or_path": "audio8-asr-0.1B"
286
+ }
audio8-asr-coreml/conversion.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "audio_tower": "Core ML",
3
+ "decoder": "PyTorch MPS",
4
+ "format": "audio8-asr-coreml-hybrid",
5
+ "functions": [
6
+ "tower_5s",
7
+ "tower_10s",
8
+ "tower_30s"
9
+ ],
10
+ "minimum_deployment_target": "macOS15",
11
+ "quantize_weights": true,
12
+ "schema_version": 1
13
+ }
audio8-asr-coreml/generation_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 151643,
4
+ "eos_token_id": 151645,
5
+ "pad_token_id": 151643,
6
+ "transformers_version": "4.57.3"
7
+ }
audio8-asr-coreml/language_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:01aae1649efb92ff5c9a2412a5a07cdbeae78b1891e109d94ccaca482c35e6b8
3
+ size 207015496
audio8-asr-coreml/preprocessor_config.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "auto_map": {
3
+ "AutoProcessor": "processing_arkasr.ArkasrProcessor"
4
+ },
5
+ "chunk_length": 30,
6
+ "dither": 0.0,
7
+ "feature_extractor_type": "WhisperFeatureExtractor",
8
+ "feature_size": 128,
9
+ "hop_length": 160,
10
+ "n_fft": 400,
11
+ "n_samples": 480000,
12
+ "nb_max_frames": 3000,
13
+ "padding_side": "right",
14
+ "padding_value": 0.0,
15
+ "processor_class": "ArkasrProcessor",
16
+ "return_attention_mask": false,
17
+ "sampling_rate": 16000
18
+ }
audio8-asr-coreml/processor_config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "audio_dtype": "bfloat16",
3
+ "audio_token": "<|audio|>",
4
+ "auto_map": {
5
+ "AutoProcessor": "processing_arkasr.ArkasrProcessor"
6
+ },
7
+ "merge_factor": 4,
8
+ "processor_class": "ArkasrProcessor"
9
+ }
audio8-asr-coreml/projector.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:036bffce0156dc6dfe49d858a753c021f60418c6b2f75c6e140d7d7bf7eef77d
3
+ size 1053984