frontierai commited on
Commit
66e7802
·
verified ·
1 Parent(s): d5a156b

Initial model release

Browse files
.gitattributes CHANGED
@@ -1,35 +1,5 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
1
+ *.gguf filter=lfs diff=lfs merge=lfs -text
2
+ model-00001-of-00003.safetensors filter=lfs diff=lfs merge=lfs -text
3
+ model-00002-of-00003.safetensors filter=lfs diff=lfs merge=lfs -text
4
+ model-00003-of-00003.safetensors filter=lfs diff=lfs merge=lfs -text
5
+ report_overview.png filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.md ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ - zh
5
+ - fr
6
+ - it
7
+ - ko
8
+ - pt
9
+ - vi
10
+ license: mit
11
+ pipeline_tag: automatic-speech-recognition
12
+ tags:
13
+ - ASR
14
+ - quantization
15
+ - cpu-inference
16
+ - gguf
17
+ - bitnet
18
+ - multilingual
19
+ library_name: ggml
20
+ ---
21
+
22
+ ## VibeVoice-ASR-BitNet
23
+
24
+ [![GitHub](https://img.shields.io/badge/GitHub-Repo-black?logo=github)](https://github.com/microsoft/VibeASR.cpp)
25
+ [![Technical Report](https://img.shields.io/badge/arXiv-2607.21075-b31b1b?logo=arxiv)](https://arxiv.org/abs/2607.21075)
26
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
27
+
28
+ **VibeVoice-ASR-BitNet** is a compressed variant of [VibeVoice-ASR](https://huggingface.co/microsoft/VibeVoice-ASR) optimized for **real-time inference on edge CPUs** — no GPU required. Through heterogeneous quantization, the model is compressed from 4.62 GB to **1.58 GB** while achieving **1.6–2.3× faster** inference than Whisper.cpp with real-time capability (RTF < 1) on as few as 3 CPU threads.
29
+
30
+ ➡️ **Code:** [microsoft/VibeASR.cpp](https://github.com/microsoft/VibeASR.cpp)<br>
31
+ ➡️ **Report:** [VibeVoice-ASR-BitNet Technical Report](https://arxiv.org/abs/2607.21075)<br>
32
+ ➡️ **Base Model:** [microsoft/VibeVoice-ASR](https://huggingface.co/microsoft/VibeVoice-ASR)<br>
33
+
34
+ <p align="center">
35
+ <img src="figures/report_overview.png" width="90%"/>
36
+ </p>
37
+
38
+ ---
39
+
40
+ ## 🔥 Key Features
41
+
42
+ - **⚡ Real-time on CPU** — RTF < 1 with 3+ threads on commodity x86 (AVX2) and ARM (NEON) hardware
43
+ - **📦 Compact** — 1.58 GB total (2.9× compression from FP16), fits in edge device memory
44
+ - **🌍 Multilingual** — English, Chinese, French, Italian, Korean, Portuguese, Vietnamese, and more
45
+ - **🔧 Custom SIMD Kernels** — Fused operators within the ggml framework for both ARM and x86 platforms
46
+
47
+ ---
48
+
49
+ ## Quantization Strategy
50
+
51
+ <div align="center">
52
+
53
+ | Component | FP16 | Quantized | Method | Compression |
54
+ |:-:|:-:|:-:|:-:|:-:|
55
+ | VAE Tokenizer | 1.31 GB | 0.65 GB | I8\_S | 2.0× |
56
+ | LM Decoder | 3.32 GB | 0.92 GB | I2\_S + Q6\_K | 3.6× |
57
+ | **Total** | **4.62 GB** | **1.58 GB** | — | **2.9×** |
58
+
59
+ </div>
60
+
61
+ ---
62
+
63
+ ## Evaluation
64
+
65
+ ### Inference Speed
66
+
67
+ <div align="center">
68
+
69
+ | Threads | 1 | 2 | 3 | 4 | 6 | 8 |
70
+ |:-:|:-:|:-:|:-:|:-:|:-:|:-:|
71
+ | RTF | 1.98 | 1.08 | **0.77** | **0.63** | **0.49** | **0.42** |
72
+ | vs. Whisper.cpp | 2.28× | 2.12× | 1.86× | 1.86× | 1.71× | 1.55× |
73
+
74
+ </div>
75
+
76
+ > Benchmarked on AMD EPYC 7V13 (AVX2+FMA) with 20s audio. **Bold** = RTF < 1 (real-time).
77
+
78
+ ### Accuracy (WER%)
79
+
80
+ <div align="center">
81
+
82
+ | Benchmark | VibeVoice-ASR-7B | VibeVoice-ASR-BitNet | Parakeet | Whisper | SenseVoice | FunASR |
83
+ |:-:|:-:|:-:|:-:|:-:|:-:|:-:|
84
+ | MLC-EN | 7.82 | **8.25** | 8.40 | 13.57 | 12.39 | 11.36 |
85
+ | MLC-FR | 16.03 | 17.41 | — | — | — | — |
86
+ | MLC-IT | 15.67 | 17.23 | — | — | — | — |
87
+ | MLC-KO | 9.83 | 11.15 | — | — | — | — |
88
+ | MLC-PT | 22.41 | 24.87 | — | — | — | — |
89
+ | MLC-VI | 20.15 | 22.38 | — | — | — | — |
90
+ | AISHELL4 | 19.83 | 27.45 | — | — | 22.52 | **20.41** |
91
+ | AMI-ihm | 17.42 | **21.36** | 21.92 | 27.07 | 30.81 | 32.07 |
92
+ | AMI-sdm | 24.18 | **25.87** | 26.33 | 36.92 | 48.11 | 40.17 |
93
+ | AliMeeting | 36.21 | 40.58 | — | — | **38.75** | 39.27 |
94
+ | Fleurs-en | 4.73 | 5.21 | 4.09 | **3.99** | 6.84 | 4.93 |
95
+ | Fleurs-zh | 7.92 | 8.35 | — | — | **5.56** | 7.00 |
96
+ | Libri-clean | 2.17 | 2.41 | **1.49** | 1.98 | 2.78 | 1.58 |
97
+ | Libri-other | 5.84 | 6.27 | **3.13** | 3.60 | 6.81 | 4.01 |
98
+ | VoxPopuli | 4.92 | **5.18** | 5.26 | 7.19 | 8.63 | 6.46 |
99
+
100
+ </div>
101
+
102
+ ---
103
+
104
+ ## Model Files
105
+
106
+ <div align="center">
107
+
108
+ | File | Size | Description |
109
+ |:-:|:-:|:-:|
110
+ | `vibeasr-vae-encoder-i8_s.gguf` | 0.65 GB | VAE tokenizer, I8\_S quantized (ready to use) |
111
+ | `vibeasr-lm-i2_s-embed-q6_k.gguf` | 0.92 GB | LM decoder, I2\_S quantized (ready to use) |
112
+ | `model-*.safetensors` | 10.7 GB | Original SafeTensors (for conversion) |
113
+
114
+ </div>
115
+
116
+ ---
117
+
118
+ ## License
119
+
120
+ This project is licensed under the MIT License.
121
+
122
+ ## Contact
123
+
124
+ This project was conducted by members of Microsoft Research. If you have suggestions, questions, or observe unexpected behavior, please contact us at VibeVoice@microsoft.com.
config.json ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_attn_implementation_autoset": false,
3
+ "acoustic_tokenizer_config": {
4
+ "causal": true,
5
+ "channels": 1,
6
+ "conv_bias": true,
7
+ "conv_norm": "none",
8
+ "corpus_normalize": 0.0,
9
+ "decoder_depths": null,
10
+ "decoder_n_filters": 32,
11
+ "decoder_ratios": [
12
+ 8,
13
+ 5,
14
+ 5,
15
+ 4,
16
+ 2,
17
+ 2
18
+ ],
19
+ "disable_last_norm": true,
20
+ "dtype": "bfloat16",
21
+ "encoder_depths": "3-3-3-3-3-3-8",
22
+ "encoder_n_filters": 32,
23
+ "encoder_ratios": [
24
+ 8,
25
+ 5,
26
+ 5,
27
+ 4,
28
+ 2,
29
+ 2
30
+ ],
31
+ "fix_std": 0.5,
32
+ "layer_scale_init_value": 1e-06,
33
+ "layernorm": "RMSNorm",
34
+ "layernorm_elementwise_affine": true,
35
+ "layernorm_eps": 1e-05,
36
+ "mixer_layer": "depthwise_conv",
37
+ "model_type": "vibevoice_acoustic_tokenizer",
38
+ "pad_mode": "constant",
39
+ "std_dist_type": "gaussian",
40
+ "vae_dim": 64,
41
+ "weight_init_value": 0.01
42
+ },
43
+ "acoustic_vae_dim": 64,
44
+ "architectures": [
45
+ "VibeVoiceForASRTraining"
46
+ ],
47
+ "decoder_config": {
48
+ "attention_dropout": 0.0,
49
+ "dtype": "bfloat16",
50
+ "hidden_act": "silu",
51
+ "hidden_size": 1536,
52
+ "initializer_range": 0.02,
53
+ "intermediate_size": 8960,
54
+ "layer_types": [
55
+ "full_attention",
56
+ "full_attention",
57
+ "full_attention",
58
+ "full_attention",
59
+ "full_attention",
60
+ "full_attention",
61
+ "full_attention",
62
+ "full_attention",
63
+ "full_attention",
64
+ "full_attention",
65
+ "full_attention",
66
+ "full_attention",
67
+ "full_attention",
68
+ "full_attention",
69
+ "full_attention",
70
+ "full_attention",
71
+ "full_attention",
72
+ "full_attention",
73
+ "full_attention",
74
+ "full_attention",
75
+ "full_attention",
76
+ "full_attention",
77
+ "full_attention",
78
+ "full_attention",
79
+ "full_attention",
80
+ "full_attention",
81
+ "full_attention",
82
+ "full_attention"
83
+ ],
84
+ "max_position_embeddings": 65536,
85
+ "max_window_layers": 28,
86
+ "model_type": "qwen2",
87
+ "num_attention_heads": 12,
88
+ "num_hidden_layers": 28,
89
+ "num_key_value_heads": 2,
90
+ "rms_norm_eps": 1e-06,
91
+ "rope_scaling": null,
92
+ "rope_theta": 1000000.0,
93
+ "sliding_window": null,
94
+ "tie_word_embeddings": true,
95
+ "use_cache": true,
96
+ "use_sliding_window": false,
97
+ "vocab_size": 151936
98
+ },
99
+ "diffusion_head_config": {
100
+ "ddpm_batch_mul": 4,
101
+ "ddpm_beta_schedule": "cosine",
102
+ "ddpm_num_inference_steps": 20,
103
+ "ddpm_num_steps": 1000,
104
+ "diffusion_type": "ddpm",
105
+ "head_ffn_ratio": 3.0,
106
+ "head_layers": 4,
107
+ "hidden_size": 1536,
108
+ "latent_size": 64,
109
+ "model_type": "vibepod_diffusion_head",
110
+ "prediction_type": "v_prediction",
111
+ "rms_norm_eps": 1e-05,
112
+ "speech_vae_dim": 64
113
+ },
114
+ "dtype": "float32",
115
+ "model_type": "vibevoice",
116
+ "semantic_tokenizer_config": {
117
+ "causal": true,
118
+ "channels": 1,
119
+ "conv_bias": true,
120
+ "conv_norm": "none",
121
+ "corpus_normalize": 0.0,
122
+ "disable_last_norm": true,
123
+ "dtype": "bfloat16",
124
+ "encoder_depths": "3-3-3-3-3-3-8",
125
+ "encoder_n_filters": 32,
126
+ "encoder_ratios": [
127
+ 8,
128
+ 5,
129
+ 5,
130
+ 4,
131
+ 2,
132
+ 2
133
+ ],
134
+ "fix_std": 0,
135
+ "layer_scale_init_value": 1e-06,
136
+ "layernorm": "RMSNorm",
137
+ "layernorm_elementwise_affine": true,
138
+ "layernorm_eps": 1e-05,
139
+ "mixer_layer": "depthwise_conv",
140
+ "model_type": "vibevoice_semantic_tokenizer",
141
+ "pad_mode": "constant",
142
+ "std_dist_type": "none",
143
+ "vae_dim": 128,
144
+ "weight_init_value": 0.01
145
+ },
146
+ "semantic_vae_dim": 128,
147
+ "transformers_version": "4.57.6"
148
+ }
figures/report_overview.png ADDED

Git LFS Details

  • SHA256: 25ff476ff353744e5b52d26021cf50a12dd150d1513402f2b0b127355d0e384e
  • Pointer size: 131 Bytes
  • Size of remote file: 223 kB
generation_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 151643,
3
+ "do_sample": false,
4
+ "eos_token_id": 151643,
5
+ "max_new_tokens": 2048,
6
+ "transformers_version": "4.37.0"
7
+ }
model-00001-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:58cb328634bb4b7e5afcc4f14c43261a0c636c9031b0b085bd3ef53c131aaf19
3
+ size 4996674400
model-00002-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:410349401256a9a995424408f8f77a21cad5e53183e07207820d7b25e84682df
3
+ size 4963184724
model-00003-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:49c2d7591f9dcbbd6fb37baa58379211f21df30dbd3c6ff39cb8c81473660cdb
3
+ size 1296761656
model.safetensors.index.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "added_tokens_decoder": {
4
+ "151643": {
5
+ "content": "<|endoftext|>",
6
+ "lstrip": false,
7
+ "normalized": false,
8
+ "rstrip": false,
9
+ "single_word": false,
10
+ "special": true
11
+ },
12
+ "151644": {
13
+ "content": "<|im_start|>",
14
+ "lstrip": false,
15
+ "normalized": false,
16
+ "rstrip": false,
17
+ "single_word": false,
18
+ "special": true
19
+ },
20
+ "151645": {
21
+ "content": "<|im_end|>",
22
+ "lstrip": false,
23
+ "normalized": false,
24
+ "rstrip": false,
25
+ "single_word": false,
26
+ "special": true
27
+ }
28
+ },
29
+ "additional_special_tokens": ["<|im_start|>", "<|im_end|>"],
30
+ "bos_token": null,
31
+ "chat_template": "{% for message in messages %}{% if loop.first and messages[0]['role'] != 'system' %}{{ '<|im_start|>system\nYou are a helpful assistant<|im_end|>\n' }}{% endif %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}",
32
+ "clean_up_tokenization_spaces": false,
33
+ "eos_token": "<|endoftext|>",
34
+ "errors": "replace",
35
+ "model_max_length": 32768,
36
+ "pad_token": "<|endoftext|>",
37
+ "split_special_tokens": false,
38
+ "tokenizer_class": "Qwen2Tokenizer",
39
+ "unk_token": null
40
+ }
vibeasr-lm-i2_s-embed-q6_k.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fbe273d8dc2f2433bb25f849e19d77ea65aaa2188d12c20cee987ab6f321e002
3
+ size 992877600
vibeasr-vae-encoder-i8_s.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4941c82608c253ec066b5cc74d3dd11a5c8fef96cccbc5b87359ef0fe4338df6
3
+ size 703080064
vocab.json ADDED
The diff for this file is too large to render. See raw diff