--replace-all commited on
Commit
9624512
·
1 Parent(s): 44f32e0

update moss-audio-tokenizer-v2

Browse files
.gitattributes CHANGED
@@ -1,35 +1,47 @@
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
  *.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
+ *.bin.* filter=lfs diff=lfs merge=lfs -text
5
  *.bz2 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
  *.model filter=lfs diff=lfs merge=lfs -text
12
  *.msgpack filter=lfs diff=lfs merge=lfs -text
 
 
13
  *.onnx filter=lfs diff=lfs merge=lfs -text
14
  *.ot filter=lfs diff=lfs merge=lfs -text
15
  *.parquet filter=lfs diff=lfs merge=lfs -text
16
  *.pb filter=lfs diff=lfs merge=lfs -text
 
 
17
  *.pt filter=lfs diff=lfs merge=lfs -text
18
  *.pth filter=lfs diff=lfs merge=lfs -text
19
  *.rar filter=lfs diff=lfs merge=lfs -text
 
20
  saved_model/**/* filter=lfs diff=lfs merge=lfs -text
21
  *.tar.* filter=lfs diff=lfs merge=lfs -text
 
22
  *.tflite filter=lfs diff=lfs merge=lfs -text
23
  *.tgz filter=lfs diff=lfs merge=lfs -text
 
24
  *.xz filter=lfs diff=lfs merge=lfs -text
25
  *.zip filter=lfs diff=lfs merge=lfs -text
26
+ *.zstandard filter=lfs diff=lfs merge=lfs -text
27
+ *.tfevents* filter=lfs diff=lfs merge=lfs -text
28
+ *.db* filter=lfs diff=lfs merge=lfs -text
29
+ *.ark* filter=lfs diff=lfs merge=lfs -text
30
+ **/*ckpt*data* filter=lfs diff=lfs merge=lfs -text
31
+ **/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text
32
+ **/*ckpt*.index filter=lfs diff=lfs merge=lfs -text
33
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
34
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
35
+ *.gguf* filter=lfs diff=lfs merge=lfs -text
36
+ *.ggml filter=lfs diff=lfs merge=lfs -text
37
+ *.llamafile* filter=lfs diff=lfs merge=lfs -text
38
+ *.pt2 filter=lfs diff=lfs merge=lfs -text
39
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
40
+ *.npy filter=lfs diff=lfs merge=lfs -text
41
+ *.npz filter=lfs diff=lfs merge=lfs -text
42
+ *.pickle filter=lfs diff=lfs merge=lfs -text
43
+ *.pkl filter=lfs diff=lfs merge=lfs -text
44
+ *.tar filter=lfs diff=lfs merge=lfs -text
45
+ *.wasm filter=lfs diff=lfs merge=lfs -text
46
  *.zst filter=lfs diff=lfs merge=lfs -text
47
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,3 +1,125 @@
1
  ---
2
  license: apache-2.0
 
 
 
 
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: apache-2.0
3
+ library_name: transformers
4
+ tags:
5
+ - audio
6
+ - audio-tokenizer
7
+ - neural-codec
8
+ - moss-tts-family
9
+ - MOSS Audio Tokenizer
10
+ - speech-tokenizer
11
+ - trust-remote-code
12
  ---
13
+
14
+ # MossAudioTokenizer
15
+
16
+ This is the code for MOSS-Audio-Tokenizer presented in [MOSS-Audio-Tokenizer: Scaling Audio Tokenizers for Future Audio Foundation Models](https://arxiv.org/abs/2602.10934).
17
+
18
+ **MOSSAudioTokenizer** is a unified discrete audio tokenizer based on the **Cat** (**C**ausal **A**udio **T**okenizer with **T**ransformer) architecture. Scaling to 1.6 billion parameters, it functions as a unified discrete interface, delivering both lossless-quality reconstruction and high-level semantic alignment.
19
+
20
+ **Key Features:**
21
+
22
+ * **Extreme Compression & Variable Bitrate**: It compresses 48kHz stereo audio into a remarkably low frame rate of 12.5Hz. Utilizing a 32-layer Residual LFQ quantizer stack, it supports high-fidelity reconstruction across a wide range of bitrates.
23
+ * **Pure Transformer Architecture**: The model features a "CNN-free" homogeneous architecture built entirely from Causal Transformer blocks. With 1.6B combined parameters (Encoder + Decoder), it ensures exceptional scalability and supports low-latency streaming inference.
24
+ * **Large-Scale General Audio Training**: Trained on 3 million hours of diverse audio data, the model excels at encoding and reconstructing all audio domains, including speech, sound effects, and music.
25
+ * **Unified Semantic-Acoustic Representation**: While achieving state-of-the-art reconstruction quality, Cat produces discrete tokens that are "semantic-rich," making them ideal for downstream tasks like speech understanding (ASR) and generation (TTS).
26
+ * **Fully Trained From Scratch**: Cat does not rely on any pretrained encoders (such as HuBERT or Whisper) or distillation from teacher models. All representations are learned autonomously from raw data.
27
+ * **End-to-End Joint Optimization**: All components—including the encoder, quantizer, decoder, discriminator, and a decoder-only LLM for semantic alignment—are optimized jointly in a single unified training pipeline.
28
+
29
+ **Summary:**
30
+ By combining a simple, scalable architecture with massive-scale data, the Cat architecture overcomes the bottlenecks of traditional audio tokenizers. It provides a robust, high-fidelity, and semantically grounded interface for the next generation of native audio foundation models.
31
+
32
+ This repository contains a lightweight remote-code implementation that mirrors the current 🤗 Transformers
33
+ `transformers.models.moss_audio_tokenizer` module. It is intended to be uploaded to a Hugging Face Hub model repository
34
+ and loaded with `trust_remote_code=True` when needed.
35
+
36
+ ## Usage
37
+
38
+ ### Quickstart
39
+
40
+ ```python
41
+ import torch
42
+ from transformers import AutoModel
43
+ import torchaudio
44
+
45
+ repo_id = "OpenMOSS-Team/MOSS-Audio-Tokenizer"
46
+ model = AutoModel.from_pretrained(repo_id, trust_remote_code=True).eval()
47
+
48
+ wav, sr = torchaudio.load('demo/demo_gt.wav')
49
+ if sr != model.sampling_rate:
50
+ wav = torchaudio.functional.resample(wav, sr, model.sampling_rate)
51
+ if wav.shape[0] == 1:
52
+ wav = wav.repeat(model.config.number_channels, 1)
53
+ else:
54
+ wav = wav[: model.config.number_channels]
55
+ wav = wav.unsqueeze(0)
56
+ enc = model.encode(wav, return_dict=True)
57
+ print(f"enc.audio_codes.shape: {enc.audio_codes.shape}")
58
+ dec = model.decode(enc.audio_codes, return_dict=True)
59
+ print(f"dec.audio.shape: {dec.audio.shape}")
60
+ wav = dec.audio.squeeze(0)
61
+ torchaudio.save("demo/demo_rec.wav", wav, sample_rate=model.sampling_rate)
62
+
63
+ # Decode using only the first 8 layers of the RVQ
64
+ dec_rvq8 = model.decode(enc.audio_codes[:8], return_dict=True)
65
+ wav_rvq8 = dec_rvq8.audio.squeeze(0)
66
+ torchaudio.save("demo/demo_rec_rvq8.wav", wav_rvq8, sample_rate=model.sampling_rate)
67
+ ```
68
+
69
+ ### Attention Backend And Compute Dtype
70
+
71
+ `config.attention_implementation` controls whether transformer layers prefer `sdpa` or `flash_attention_2`.
72
+ `config.compute_dtype` controls the non-quantizer autocast dtype and supports `fp32`, `bf16`, and `fp16`.
73
+
74
+ ```python
75
+ model.set_attention_implementation("flash_attention_2")
76
+ model.set_compute_dtype("fp16")
77
+ ```
78
+
79
+ The quantizer always runs in fp32.
80
+
81
+ ### Streaming
82
+
83
+ `MossAudioTokenizerModel.encode`, `decode`, `batch_encode`, and `batch_decode` all support streaming through a
84
+ `chunk_duration` argument.
85
+
86
+ - `chunk_duration` is expressed in seconds.
87
+ - `chunk_duration * MossAudioTokenizerConfig.sampling_rate` must be divisible by `MossAudioTokenizerConfig.downsample_rate`.
88
+ - Streaming batch inference is supported.
89
+ - The public waveform interface expects stereo inputs shaped `(2, T)` or batched stereo inputs shaped `(B, 2, T)`.
90
+
91
+ ```python
92
+ import torch
93
+ from transformers import AutoModel
94
+
95
+ repo_id = "OpenMOSS-Team/MOSS-Audio-Tokenizer"
96
+ model = AutoModel.from_pretrained(repo_id, trust_remote_code=True).eval()
97
+ audio = torch.randn(2, 48000 * 6) # dummy stereo waveform
98
+
99
+ # 6.0s @ 48kHz = 288000 samples, divisible by downsample_rate=3840
100
+ enc = model.encode(audio.unsqueeze(0), return_dict=True, chunk_duration=0.08)
101
+ dec = model.decode(enc.audio_codes, return_dict=True, chunk_duration=0.08)
102
+
103
+ batch_enc = model.batch_encode([audio, audio[:, : 48000 * 3]], chunk_duration=0.08)
104
+ codes_list = [
105
+ batch_enc.audio_codes[:, i, : batch_enc.audio_codes_lengths[i]]
106
+ for i in range(batch_enc.audio_codes.shape[1])
107
+ ]
108
+ batch_dec = model.batch_decode(codes_list, chunk_duration=0.08)
109
+ ```
110
+
111
+ ## Repository layout
112
+
113
+ - `configuration_moss_audio_tokenizer.py`
114
+ - `modeling_moss_audio_tokenizer.py`
115
+ - `__init__.py`
116
+ - `config.json`
117
+ - model weights
118
+
119
+
120
+
121
+ ## Citation
122
+ If you use this code or result in your paper, please cite our work as:
123
+ ```tex
124
+
125
+ ```
__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ """Remote code package for Moss audio tokenizer."""
config.json ADDED
@@ -0,0 +1,415 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "MossAudioTokenizerModel"
4
+ ],
5
+ "auto_map": {
6
+ "AutoConfig": "configuration_moss_audio_tokenizer.MossAudioTokenizerConfig",
7
+ "AutoModel": "modeling_moss_audio_tokenizer.MossAudioTokenizerModel"
8
+ },
9
+ "model_type": "moss-audio-tokenizer",
10
+ "sample_rate": 48000,
11
+ "sampling_rate": 48000,
12
+ "downsample_rate": 3840,
13
+ "causal_transformer_context_duration": 10.0,
14
+ "number_channels": 2,
15
+ "enable_channel_interleave": true,
16
+ "attention_implementation": "sdpa",
17
+ "compute_dtype": "fp32",
18
+ "dtype": "float32",
19
+ "code_dim": 768,
20
+ "encoder_kwargs": [
21
+ {
22
+ "module_type": "PatchedPretransform",
23
+ "patch_size": 240
24
+ },
25
+ {
26
+ "module_type": "Transformer",
27
+ "input_dimension": 240,
28
+ "output_dimension": 384,
29
+ "d_model": 768,
30
+ "num_heads": 12,
31
+ "num_layers": 12,
32
+ "dim_feedforward": 3072,
33
+ "causal": true,
34
+ "norm": "layer_norm",
35
+ "positional_embedding": "rope",
36
+ "max_period": 10000,
37
+ "gating": "none",
38
+ "layer_scale": 0.01,
39
+ "conv_layout": true,
40
+ "context_duration": 1.0
41
+ },
42
+ {
43
+ "module_type": "PatchedPretransform",
44
+ "patch_size": 2
45
+ },
46
+ {
47
+ "module_type": "Transformer",
48
+ "input_dimension": 768,
49
+ "output_dimension": 384,
50
+ "d_model": 768,
51
+ "num_heads": 12,
52
+ "num_layers": 12,
53
+ "dim_feedforward": 3072,
54
+ "causal": true,
55
+ "norm": "layer_norm",
56
+ "positional_embedding": "rope",
57
+ "max_period": 10000,
58
+ "gating": "none",
59
+ "layer_scale": 0.01,
60
+ "conv_layout": true,
61
+ "context_duration": 2.0
62
+ },
63
+ {
64
+ "module_type": "PatchedPretransform",
65
+ "patch_size": 2
66
+ },
67
+ {
68
+ "module_type": "Transformer",
69
+ "input_dimension": 768,
70
+ "output_dimension": 384,
71
+ "d_model": 768,
72
+ "num_heads": 12,
73
+ "num_layers": 12,
74
+ "dim_feedforward": 3072,
75
+ "causal": true,
76
+ "norm": "layer_norm",
77
+ "positional_embedding": "rope",
78
+ "max_period": 10000,
79
+ "gating": "none",
80
+ "layer_scale": 0.01,
81
+ "conv_layout": true,
82
+ "context_duration": 4.0
83
+ },
84
+ {
85
+ "module_type": "PatchedPretransform",
86
+ "patch_size": 2
87
+ },
88
+ {
89
+ "module_type": "Transformer",
90
+ "input_dimension": 768,
91
+ "output_dimension": 384,
92
+ "d_model": 768,
93
+ "num_heads": 12,
94
+ "num_layers": 12,
95
+ "dim_feedforward": 3072,
96
+ "causal": true,
97
+ "norm": "layer_norm",
98
+ "positional_embedding": "rope",
99
+ "max_period": 10000,
100
+ "gating": "none",
101
+ "layer_scale": 0.01,
102
+ "conv_layout": true,
103
+ "context_duration": 8.0
104
+ },
105
+ {
106
+ "module_type": "PatchedPretransform",
107
+ "patch_size": 2
108
+ },
109
+ {
110
+ "module_type": "Transformer",
111
+ "input_dimension": 768,
112
+ "output_dimension": 640,
113
+ "d_model": 768,
114
+ "num_heads": 12,
115
+ "num_layers": 12,
116
+ "dim_feedforward": 3072,
117
+ "causal": true,
118
+ "norm": "layer_norm",
119
+ "positional_embedding": "rope",
120
+ "max_period": 10000,
121
+ "gating": "none",
122
+ "layer_scale": 0.01,
123
+ "conv_layout": true,
124
+ "context_duration": 10.0
125
+ },
126
+ {
127
+ "module_type": "PatchedPretransform",
128
+ "patch_size": 2
129
+ },
130
+ {
131
+ "module_type": "Transformer",
132
+ "input_dimension": 1280,
133
+ "output_dimension": 768,
134
+ "d_model": 1280,
135
+ "num_heads": 20,
136
+ "num_layers": 32,
137
+ "dim_feedforward": 5120,
138
+ "causal": true,
139
+ "norm": "layer_norm",
140
+ "positional_embedding": "rope",
141
+ "max_period": 10000,
142
+ "gating": "none",
143
+ "layer_scale": 0.01,
144
+ "conv_layout": true,
145
+ "context_duration": 10.0
146
+ }
147
+ ],
148
+ "decoder_kwargs": [
149
+ {
150
+ "module_type": "Transformer",
151
+ "input_dimension": 768,
152
+ "output_dimension": 1280,
153
+ "d_model": 1280,
154
+ "num_heads": 20,
155
+ "num_layers": 32,
156
+ "dim_feedforward": 5120,
157
+ "causal": true,
158
+ "norm": "layer_norm",
159
+ "positional_embedding": "rope",
160
+ "max_period": 10000,
161
+ "gating": "none",
162
+ "layer_scale": 0.01,
163
+ "conv_layout": true,
164
+ "context_duration": 10.0
165
+ },
166
+ {
167
+ "module_type": "PatchedPretransform",
168
+ "patch_size": 2
169
+ },
170
+ {
171
+ "module_type": "Transformer",
172
+ "input_dimension": 640,
173
+ "output_dimension": 768,
174
+ "d_model": 768,
175
+ "num_heads": 12,
176
+ "num_layers": 12,
177
+ "dim_feedforward": 3072,
178
+ "causal": true,
179
+ "norm": "layer_norm",
180
+ "positional_embedding": "rope",
181
+ "max_period": 10000,
182
+ "gating": "none",
183
+ "layer_scale": 0.01,
184
+ "conv_layout": true,
185
+ "context_duration": 10.0
186
+ },
187
+ {
188
+ "module_type": "PatchedPretransform",
189
+ "patch_size": 2
190
+ },
191
+ {
192
+ "module_type": "Transformer",
193
+ "input_dimension": 384,
194
+ "output_dimension": 768,
195
+ "d_model": 768,
196
+ "num_heads": 12,
197
+ "num_layers": 12,
198
+ "dim_feedforward": 3072,
199
+ "causal": true,
200
+ "norm": "layer_norm",
201
+ "positional_embedding": "rope",
202
+ "max_period": 10000,
203
+ "gating": "none",
204
+ "layer_scale": 0.01,
205
+ "conv_layout": true,
206
+ "context_duration": 8.0
207
+ },
208
+ {
209
+ "module_type": "PatchedPretransform",
210
+ "patch_size": 2
211
+ },
212
+ {
213
+ "module_type": "Transformer",
214
+ "input_dimension": 384,
215
+ "output_dimension": 768,
216
+ "d_model": 768,
217
+ "num_heads": 12,
218
+ "num_layers": 12,
219
+ "dim_feedforward": 3072,
220
+ "causal": true,
221
+ "norm": "layer_norm",
222
+ "positional_embedding": "rope",
223
+ "max_period": 10000,
224
+ "gating": "none",
225
+ "layer_scale": 0.01,
226
+ "conv_layout": true,
227
+ "context_duration": 4.0
228
+ },
229
+ {
230
+ "module_type": "PatchedPretransform",
231
+ "patch_size": 2
232
+ },
233
+ {
234
+ "module_type": "Transformer",
235
+ "input_dimension": 384,
236
+ "output_dimension": 768,
237
+ "d_model": 768,
238
+ "num_heads": 12,
239
+ "num_layers": 12,
240
+ "dim_feedforward": 3072,
241
+ "causal": true,
242
+ "norm": "layer_norm",
243
+ "positional_embedding": "rope",
244
+ "max_period": 10000,
245
+ "gating": "none",
246
+ "layer_scale": 0.01,
247
+ "conv_layout": true,
248
+ "context_duration": 2.0
249
+ },
250
+ {
251
+ "module_type": "PatchedPretransform",
252
+ "patch_size": 2
253
+ },
254
+ {
255
+ "module_type": "Transformer",
256
+ "input_dimension": 384,
257
+ "output_dimension": 240,
258
+ "d_model": 768,
259
+ "num_heads": 12,
260
+ "num_layers": 12,
261
+ "dim_feedforward": 3072,
262
+ "causal": true,
263
+ "norm": "layer_norm",
264
+ "positional_embedding": "rope",
265
+ "max_period": 10000,
266
+ "gating": "none",
267
+ "layer_scale": 0.01,
268
+ "conv_layout": true,
269
+ "context_duration": 1.0
270
+ },
271
+ {
272
+ "module_type": "PatchedPretransform",
273
+ "patch_size": 240
274
+ }
275
+ ],
276
+ "reversed_decoder_kwargs": [
277
+ {
278
+ "module_type": "PatchedPretransform",
279
+ "patch_size": 240
280
+ },
281
+ {
282
+ "module_type": "Transformer",
283
+ "input_dimension": 240,
284
+ "output_dimension": 384,
285
+ "d_model": 768,
286
+ "num_heads": 12,
287
+ "num_layers": 12,
288
+ "dim_feedforward": 3072,
289
+ "causal": true,
290
+ "norm": "layer_norm",
291
+ "positional_embedding": "rope",
292
+ "max_period": 10000,
293
+ "gating": "none",
294
+ "layer_scale": 0.01,
295
+ "conv_layout": true,
296
+ "context_duration": 1.0
297
+ },
298
+ {
299
+ "module_type": "PatchedPretransform",
300
+ "patch_size": 2
301
+ },
302
+ {
303
+ "module_type": "Transformer",
304
+ "input_dimension": 768,
305
+ "output_dimension": 384,
306
+ "d_model": 768,
307
+ "num_heads": 12,
308
+ "num_layers": 12,
309
+ "dim_feedforward": 3072,
310
+ "causal": true,
311
+ "norm": "layer_norm",
312
+ "positional_embedding": "rope",
313
+ "max_period": 10000,
314
+ "gating": "none",
315
+ "layer_scale": 0.01,
316
+ "conv_layout": true,
317
+ "context_duration": 2.0
318
+ },
319
+ {
320
+ "module_type": "PatchedPretransform",
321
+ "patch_size": 2
322
+ },
323
+ {
324
+ "module_type": "Transformer",
325
+ "input_dimension": 768,
326
+ "output_dimension": 384,
327
+ "d_model": 768,
328
+ "num_heads": 12,
329
+ "num_layers": 12,
330
+ "dim_feedforward": 3072,
331
+ "causal": true,
332
+ "norm": "layer_norm",
333
+ "positional_embedding": "rope",
334
+ "max_period": 10000,
335
+ "gating": "none",
336
+ "layer_scale": 0.01,
337
+ "conv_layout": true,
338
+ "context_duration": 4.0
339
+ },
340
+ {
341
+ "module_type": "PatchedPretransform",
342
+ "patch_size": 2
343
+ },
344
+ {
345
+ "module_type": "Transformer",
346
+ "input_dimension": 768,
347
+ "output_dimension": 384,
348
+ "d_model": 768,
349
+ "num_heads": 12,
350
+ "num_layers": 12,
351
+ "dim_feedforward": 3072,
352
+ "causal": true,
353
+ "norm": "layer_norm",
354
+ "positional_embedding": "rope",
355
+ "max_period": 10000,
356
+ "gating": "none",
357
+ "layer_scale": 0.01,
358
+ "conv_layout": true,
359
+ "context_duration": 8.0
360
+ },
361
+ {
362
+ "module_type": "PatchedPretransform",
363
+ "patch_size": 2
364
+ },
365
+ {
366
+ "module_type": "Transformer",
367
+ "input_dimension": 768,
368
+ "output_dimension": 640,
369
+ "d_model": 768,
370
+ "num_heads": 12,
371
+ "num_layers": 12,
372
+ "dim_feedforward": 3072,
373
+ "causal": true,
374
+ "norm": "layer_norm",
375
+ "positional_embedding": "rope",
376
+ "max_period": 10000,
377
+ "gating": "none",
378
+ "layer_scale": 0.01,
379
+ "conv_layout": true,
380
+ "context_duration": 10.0
381
+ },
382
+ {
383
+ "module_type": "PatchedPretransform",
384
+ "patch_size": 2
385
+ },
386
+ {
387
+ "module_type": "Transformer",
388
+ "input_dimension": 1280,
389
+ "output_dimension": 768,
390
+ "d_model": 1280,
391
+ "num_heads": 20,
392
+ "num_layers": 32,
393
+ "dim_feedforward": 5120,
394
+ "causal": true,
395
+ "norm": "layer_norm",
396
+ "positional_embedding": "rope",
397
+ "max_period": 10000,
398
+ "gating": "none",
399
+ "layer_scale": 0.01,
400
+ "conv_layout": true,
401
+ "context_duration": 10.0
402
+ }
403
+ ],
404
+ "quantizer_type": "rlfq",
405
+ "quantizer_kwargs": {
406
+ "input_dim": 768,
407
+ "rvq_dim": 512,
408
+ "output_dim": 768,
409
+ "num_quantizers": 32,
410
+ "codebook_size": 1024,
411
+ "codebook_dim": 8,
412
+ "quantizer_type": "rlfq"
413
+ },
414
+ "transformers_version": "4.56.0.dev0"
415
+ }
configuration_moss_audio_tokenizer.py ADDED
@@ -0,0 +1,467 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # coding=utf-8
2
+ # Copyright 2026 OpenMOSS and the HuggingFace Inc. team. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ """MossAudioTokenizer model configuration."""
16
+
17
+ from typing import Any
18
+
19
+ try:
20
+ from transformers.configuration_utils import PreTrainedConfig
21
+ except ImportError:
22
+ from transformers.configuration_utils import PretrainedConfig as PreTrainedConfig
23
+ from transformers.utils import logging
24
+
25
+
26
+ logger = logging.get_logger(__name__)
27
+
28
+
29
+ class MossAudioTokenizerConfig(PreTrainedConfig):
30
+ r"""
31
+ This is the configuration class to store the configuration of a [`MossAudioTokenizerModel`]. It is used to instantiate a
32
+ MossAudioTokenizer model according to the specified arguments, defining the model architecture.
33
+
34
+ Instantiating a configuration with the defaults will yield a similar configuration to that of the
35
+ [VoiceAgentGroup/moss_audio_tokenizer](https://huggingface.co/VoiceAgentGroup/moss_audio_tokenizer) architecture.
36
+
37
+ Configuration objects inherit from [`PreTrainedConfig`] and can be used to control the model outputs. Read the
38
+ documentation from [`PreTrainedConfig`] for more information.
39
+
40
+ Args:
41
+ sampling_rate (`int`, *optional*, defaults to 48000):
42
+ The sampling rate at which the audio waveform should be digitalized expressed in hertz (Hz).
43
+ downsample_rate (`int`, *optional*, defaults to 3840):
44
+ Total downsampling rate from waveform to tokens.
45
+ causal_transformer_context_duration (`float`, *optional*, defaults to 10.0):
46
+ Legacy global fallback context duration in seconds for causal transformer. If an individual transformer
47
+ entry in `encoder_kwargs` or `decoder_kwargs` provides `context_duration`, that per-module value takes
48
+ precedence.
49
+ encoder_kwargs (`list[dict]`, *optional*):
50
+ List of encoder module configurations. Each dict specifies a module type and its parameters.
51
+ decoder_kwargs (`list[dict]`, *optional*):
52
+ List of decoder module configurations in execution order.
53
+ number_channels (`int`, *optional*, defaults to 2):
54
+ Number of audio channels exposed by the public waveform interface.
55
+ enable_channel_interleave (`bool`, *optional*, defaults to `True`):
56
+ Whether to flatten multi-channel waveforms into a single internal stream before codec inference.
57
+ attention_implementation (`str`, *optional*, defaults to `"sdpa"`):
58
+ Attention implementation to prefer for transformer layers. Supported values are `"sdpa"` and
59
+ `"flash_attention_2"`.
60
+ compute_dtype (`str`, *optional*, defaults to `"fp32"`):
61
+ Inference compute dtype for non-quantizer modules. Supported values are `"fp32"`, `"bf16"`, and `"fp16"`.
62
+ quantizer_type (`str`, *optional*, defaults to `"rlfq"`):
63
+ Quantizer type. Options include `"rvq"`, `"spec_rvq"`, `"rlfq"`, `"random_prefix_rlfq"`.
64
+ quantizer_kwargs (`dict`, *optional*):
65
+ Configuration for the quantizer including `input_dim`, `rvq_dim`, `output_dim`, `num_quantizers`,
66
+ `codebook_size`, and `codebook_dim`.
67
+
68
+ Example:
69
+
70
+ ```python
71
+ >>> from transformers import MossAudioTokenizerModel, MossAudioTokenizerConfig
72
+
73
+ >>> # Initializing a MossAudioTokenizer style configuration
74
+ >>> configuration = MossAudioTokenizerConfig()
75
+
76
+ >>> # Initializing a model (with random weights) from the configuration
77
+ >>> model = MossAudioTokenizerModel(configuration)
78
+
79
+ >>> # Accessing the model configuration
80
+ >>> configuration = model.config
81
+ ```
82
+ """
83
+
84
+ model_type = "moss-audio-tokenizer"
85
+
86
+ # Backward-compatible alias used by some checkpoints.
87
+ attribute_map = {"sample_rate": "sampling_rate"}
88
+
89
+ sampling_rate: int
90
+ downsample_rate: int
91
+ causal_transformer_context_duration: float
92
+ encoder_kwargs: list[dict[str, Any]]
93
+ decoder_kwargs: list[dict[str, Any]]
94
+ number_channels: int
95
+ enable_channel_interleave: bool
96
+ attention_implementation: str
97
+ compute_dtype: str
98
+ quantizer_type: str
99
+ quantizer_kwargs: dict[str, Any]
100
+
101
+ def __init__(
102
+ self,
103
+ version: str | None = None,
104
+ sampling_rate: int = 48000,
105
+ downsample_rate: int = 3840,
106
+ causal_transformer_context_duration: float = 10.0,
107
+ encoder_kwargs: list[dict[str, Any]] | None = None,
108
+ decoder_kwargs: list[dict[str, Any]] | None = None,
109
+ number_channels: int = 2,
110
+ enable_channel_interleave: bool = True,
111
+ attention_implementation: str = "sdpa",
112
+ compute_dtype: str = "fp32",
113
+ quantizer_type: str = "rlfq",
114
+ quantizer_kwargs: dict[str, Any] | None = None,
115
+ **kwargs,
116
+ ):
117
+ # Some checkpoints might include an incorrect/legacy `model_type` (e.g. "speech_tokenizer").
118
+ # We drop it to avoid overriding the class-level `model_type`.
119
+ kwargs.pop("model_type", None)
120
+ if "channels_numbers" in kwargs:
121
+ number_channels = kwargs.pop("channels_numbers")
122
+ if "enable_channel_interleave" in kwargs:
123
+ enable_channel_interleave = kwargs.pop("enable_channel_interleave")
124
+ if "attention_backend" in kwargs and attention_implementation == "sdpa":
125
+ attention_implementation = kwargs.pop("attention_backend")
126
+ if "codec_compute_dtype" in kwargs and compute_dtype == "fp32":
127
+ compute_dtype = kwargs.pop("codec_compute_dtype")
128
+ reversed_decoder_kwargs = kwargs.pop("reversed_decoder_kwargs", None)
129
+
130
+ # `version` is accepted for compatibility but not used in modeling.
131
+ self.version = version
132
+ self.sampling_rate = sampling_rate
133
+ self.downsample_rate = downsample_rate
134
+ self.causal_transformer_context_duration = causal_transformer_context_duration
135
+ self.number_channels = number_channels
136
+ self.enable_channel_interleave = enable_channel_interleave
137
+ self.attention_implementation = attention_implementation
138
+ self.compute_dtype = compute_dtype
139
+ # Default encoder configuration
140
+ if encoder_kwargs is None:
141
+ encoder_kwargs = [
142
+ {
143
+ "module_type": "PatchedPretransform",
144
+ "patch_size": 240,
145
+ },
146
+ {
147
+ "module_type": "Transformer",
148
+ "input_dimension": 240,
149
+ "output_dimension": 384,
150
+ "d_model": 768,
151
+ "num_heads": 12,
152
+ "num_layers": 12,
153
+ "dim_feedforward": 3072,
154
+ "causal": True,
155
+ "norm": "layer_norm",
156
+ "positional_embedding": "rope",
157
+ "max_period": 10000,
158
+ "gating": "none",
159
+ "layer_scale": 0.01,
160
+ "conv_layout": True,
161
+ "context_duration": 1.0,
162
+ },
163
+ {
164
+ "module_type": "PatchedPretransform",
165
+ "patch_size": 2,
166
+ },
167
+ {
168
+ "module_type": "Transformer",
169
+ "input_dimension": 768,
170
+ "output_dimension": 384,
171
+ "d_model": 768,
172
+ "num_heads": 12,
173
+ "num_layers": 12,
174
+ "dim_feedforward": 3072,
175
+ "causal": True,
176
+ "norm": "layer_norm",
177
+ "positional_embedding": "rope",
178
+ "max_period": 10000,
179
+ "gating": "none",
180
+ "layer_scale": 0.01,
181
+ "conv_layout": True,
182
+ "context_duration": 2.0,
183
+ },
184
+ {
185
+ "module_type": "PatchedPretransform",
186
+ "patch_size": 2,
187
+ },
188
+ {
189
+ "module_type": "Transformer",
190
+ "input_dimension": 768,
191
+ "output_dimension": 384,
192
+ "d_model": 768,
193
+ "num_heads": 12,
194
+ "num_layers": 12,
195
+ "dim_feedforward": 3072,
196
+ "causal": True,
197
+ "norm": "layer_norm",
198
+ "positional_embedding": "rope",
199
+ "max_period": 10000,
200
+ "gating": "none",
201
+ "layer_scale": 0.01,
202
+ "conv_layout": True,
203
+ "context_duration": 4.0,
204
+ },
205
+ {
206
+ "module_type": "PatchedPretransform",
207
+ "patch_size": 2,
208
+ },
209
+ {
210
+ "module_type": "Transformer",
211
+ "input_dimension": 768,
212
+ "output_dimension": 384,
213
+ "d_model": 768,
214
+ "num_heads": 12,
215
+ "num_layers": 12,
216
+ "dim_feedforward": 3072,
217
+ "causal": True,
218
+ "norm": "layer_norm",
219
+ "positional_embedding": "rope",
220
+ "max_period": 10000,
221
+ "gating": "none",
222
+ "layer_scale": 0.01,
223
+ "conv_layout": True,
224
+ "context_duration": 8.0,
225
+ },
226
+ {
227
+ "module_type": "PatchedPretransform",
228
+ "patch_size": 2,
229
+ },
230
+ {
231
+ "module_type": "Transformer",
232
+ "input_dimension": 768,
233
+ "output_dimension": 640,
234
+ "d_model": 768,
235
+ "num_heads": 12,
236
+ "num_layers": 12,
237
+ "dim_feedforward": 3072,
238
+ "causal": True,
239
+ "norm": "layer_norm",
240
+ "positional_embedding": "rope",
241
+ "max_period": 10000,
242
+ "gating": "none",
243
+ "layer_scale": 0.01,
244
+ "conv_layout": True,
245
+ "context_duration": 10.0,
246
+ },
247
+ {
248
+ "module_type": "PatchedPretransform",
249
+ "patch_size": 2,
250
+ },
251
+ {
252
+ "module_type": "Transformer",
253
+ "input_dimension": 1280,
254
+ "output_dimension": 768,
255
+ "d_model": 1280,
256
+ "num_heads": 20,
257
+ "num_layers": 32,
258
+ "dim_feedforward": 5120,
259
+ "causal": True,
260
+ "norm": "layer_norm",
261
+ "positional_embedding": "rope",
262
+ "max_period": 10000,
263
+ "gating": "none",
264
+ "layer_scale": 0.01,
265
+ "conv_layout": True,
266
+ "context_duration": 10.0,
267
+ },
268
+ ]
269
+ else:
270
+ encoder_kwargs = [dict(module_kwargs) for module_kwargs in encoder_kwargs]
271
+ for module_kwargs in encoder_kwargs:
272
+ if module_kwargs.get("module_type") == "Transformer":
273
+ module_kwargs.setdefault("context_duration", causal_transformer_context_duration)
274
+ self.encoder_kwargs = encoder_kwargs
275
+
276
+ # Default decoder configuration (execution order)
277
+ if decoder_kwargs is None and reversed_decoder_kwargs is not None:
278
+ reversed_decoder_kwargs = [dict(module_kwargs) for module_kwargs in reversed_decoder_kwargs]
279
+ decoder_kwargs = []
280
+ for module_kwargs in reversed_decoder_kwargs[::-1]:
281
+ if module_kwargs.get("module_type") != "Transformer":
282
+ decoder_kwargs.append(module_kwargs)
283
+ continue
284
+ module_kwargs = dict(module_kwargs)
285
+ module_kwargs["input_dimension"], module_kwargs["output_dimension"] = (
286
+ module_kwargs["output_dimension"],
287
+ module_kwargs["input_dimension"],
288
+ )
289
+ decoder_kwargs.append(module_kwargs)
290
+
291
+ if decoder_kwargs is None:
292
+ decoder_kwargs = [
293
+ {
294
+ "module_type": "Transformer",
295
+ "input_dimension": 768,
296
+ "output_dimension": 1280,
297
+ "d_model": 1280,
298
+ "num_heads": 20,
299
+ "num_layers": 32,
300
+ "dim_feedforward": 5120,
301
+ "causal": True,
302
+ "norm": "layer_norm",
303
+ "positional_embedding": "rope",
304
+ "max_period": 10000,
305
+ "gating": "none",
306
+ "layer_scale": 0.01,
307
+ "conv_layout": True,
308
+ "context_duration": 10.0,
309
+ },
310
+ {
311
+ "module_type": "PatchedPretransform",
312
+ "patch_size": 2,
313
+ },
314
+ {
315
+ "module_type": "Transformer",
316
+ "input_dimension": 640,
317
+ "output_dimension": 768,
318
+ "d_model": 768,
319
+ "num_heads": 12,
320
+ "num_layers": 12,
321
+ "dim_feedforward": 3072,
322
+ "causal": True,
323
+ "norm": "layer_norm",
324
+ "positional_embedding": "rope",
325
+ "max_period": 10000,
326
+ "gating": "none",
327
+ "layer_scale": 0.01,
328
+ "conv_layout": True,
329
+ "context_duration": 10.0,
330
+ },
331
+ {
332
+ "module_type": "PatchedPretransform",
333
+ "patch_size": 2,
334
+ },
335
+ {
336
+ "module_type": "Transformer",
337
+ "input_dimension": 384,
338
+ "output_dimension": 768,
339
+ "d_model": 768,
340
+ "num_heads": 12,
341
+ "num_layers": 12,
342
+ "dim_feedforward": 3072,
343
+ "causal": True,
344
+ "norm": "layer_norm",
345
+ "positional_embedding": "rope",
346
+ "max_period": 10000,
347
+ "gating": "none",
348
+ "layer_scale": 0.01,
349
+ "conv_layout": True,
350
+ "context_duration": 8.0,
351
+ },
352
+ {
353
+ "module_type": "PatchedPretransform",
354
+ "patch_size": 2,
355
+ },
356
+ {
357
+ "module_type": "Transformer",
358
+ "input_dimension": 384,
359
+ "output_dimension": 768,
360
+ "d_model": 768,
361
+ "num_heads": 12,
362
+ "num_layers": 12,
363
+ "dim_feedforward": 3072,
364
+ "causal": True,
365
+ "norm": "layer_norm",
366
+ "positional_embedding": "rope",
367
+ "max_period": 10000,
368
+ "gating": "none",
369
+ "layer_scale": 0.01,
370
+ "conv_layout": True,
371
+ "context_duration": 4.0,
372
+ },
373
+ {
374
+ "module_type": "PatchedPretransform",
375
+ "patch_size": 2,
376
+ },
377
+ {
378
+ "module_type": "Transformer",
379
+ "input_dimension": 384,
380
+ "output_dimension": 768,
381
+ "d_model": 768,
382
+ "num_heads": 12,
383
+ "num_layers": 12,
384
+ "dim_feedforward": 3072,
385
+ "causal": True,
386
+ "norm": "layer_norm",
387
+ "positional_embedding": "rope",
388
+ "max_period": 10000,
389
+ "gating": "none",
390
+ "layer_scale": 0.01,
391
+ "conv_layout": True,
392
+ "context_duration": 2.0,
393
+ },
394
+ {
395
+ "module_type": "PatchedPretransform",
396
+ "patch_size": 2,
397
+ },
398
+ {
399
+ "module_type": "Transformer",
400
+ "input_dimension": 384,
401
+ "output_dimension": 240,
402
+ "d_model": 768,
403
+ "num_heads": 12,
404
+ "num_layers": 12,
405
+ "dim_feedforward": 3072,
406
+ "causal": True,
407
+ "norm": "layer_norm",
408
+ "positional_embedding": "rope",
409
+ "max_period": 10000,
410
+ "gating": "none",
411
+ "layer_scale": 0.01,
412
+ "conv_layout": True,
413
+ "context_duration": 1.0,
414
+ },
415
+ {
416
+ "module_type": "PatchedPretransform",
417
+ "patch_size": 240,
418
+ },
419
+ ]
420
+ else:
421
+ decoder_kwargs = [dict(module_kwargs) for module_kwargs in decoder_kwargs]
422
+ for module_kwargs in decoder_kwargs:
423
+ if module_kwargs.get("module_type") == "Transformer":
424
+ module_kwargs.setdefault("context_duration", causal_transformer_context_duration)
425
+ self.decoder_kwargs = decoder_kwargs
426
+
427
+ # Default quantizer configuration
428
+ if quantizer_kwargs is None:
429
+ quantizer_kwargs = {
430
+ "input_dim": 768,
431
+ "rvq_dim": 512,
432
+ "output_dim": 768,
433
+ "num_quantizers": 32,
434
+ "codebook_size": 1024,
435
+ "codebook_dim": 8,
436
+ "quantizer_type": "rlfq",
437
+ }
438
+
439
+ # Handle quantizer_type from kwargs or config
440
+ kw_qtype = quantizer_kwargs.get("quantizer_type", None)
441
+ if kw_qtype is not None:
442
+ self.quantizer_type = kw_qtype
443
+ else:
444
+ self.quantizer_type = quantizer_type
445
+ quantizer_kwargs["quantizer_type"] = quantizer_type
446
+
447
+ self.quantizer_kwargs = quantizer_kwargs
448
+
449
+ super().__init__(**kwargs)
450
+
451
+ @property
452
+ def num_quantizers(self) -> int:
453
+ """Return the number of quantizers from quantizer_kwargs."""
454
+ return self.quantizer_kwargs.get("num_quantizers", 32)
455
+
456
+ @property
457
+ def codebook_size(self) -> int:
458
+ """Return the codebook size from quantizer_kwargs."""
459
+ return self.quantizer_kwargs.get("codebook_size", 4096)
460
+
461
+ @property
462
+ def frame_rate(self) -> float:
463
+ """Return the frame rate (tokens per second)."""
464
+ return self.sampling_rate / self.downsample_rate
465
+
466
+
467
+ __all__ = ["MossAudioTokenizerConfig"]
model-00001-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2d9f9182f17b143a23937feb87c63c08221bd28e685e4bc2fa55dcdce17fcde7
3
+ size 3978639168
model-00002-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d4e48106d0254fe3b00ea0707e88fc6aee076993825e108dd9cef847f9db236e
3
+ size 3992738352
model-00003-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d0449fe1b0ef1f6045946867148d8166b9a91a58d0feca4a18b641494d0b22da
3
+ size 523681336
model.safetensors.index.json ADDED
The diff for this file is too large to render. See raw diff
 
modeling_moss_audio_tokenizer.py ADDED
The diff for this file is too large to render. See raw diff