zhangj1an commited on
Commit
9bb5d49
·
verified ·
1 Parent(s): 87af194

Upload folder using huggingface_hub

Browse files
.gitignore ADDED
File without changes
README.md ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ tags:
4
+ - vllm-omni
5
+ - kimi-audio
6
+ - test-fixture
7
+ ---
8
+
9
+ # Kimi-Audio random / test fixture
10
+
11
+ Tiny **random-init** bundle of [Kimi-Audio-7B-Instruct](https://huggingface.co/moonshotai/Kimi-Audio-7B-Instruct)
12
+ for [vLLM-Omni](https://github.com/vllm-project/vllm-omni)'s L1/L2 `core_model` CI tests.
13
+ Verifies the full pipeline end-to-end without paying the ~42 GB checkpoint cost.
14
+
15
+ It follows the same on-disk schema as upstream, but every transformer-style component has
16
+ shrunk dimensions and random weights:
17
+
18
+ | Component | File | Upstream | Random |
19
+ |---|---|---|---|
20
+ | LM (Qwen-2-style + MIMO) | `model.safetensors` | 16 GB sharded | **555 MB** (single shard) |
21
+ | Whisper encoder | `whisper-large-v3/model.safetensors` | 3 GB | **17 MB** (encoder only) |
22
+ | Audio detokenizer (FM DiT) | `audio_detokenizer/model.pt` | 19 GB | **35 MB** |
23
+
24
+ **Shrunk dims** (token IDs / vocab sizes kept at upstream values):
25
+
26
+ - LM: `hidden_size 3584→512`, `num_hidden_layers 28→4`, `num_attention_heads 28→8`,
27
+ `intermediate_size 18944→1536`, `kimia_mimo_layers 6→2`,
28
+ `kimia_mimo_transformer_from_layer_index 21→2`, `kimia_adaptor_input_dim 5120→1536`
29
+ - Whisper: `d_model 1280→384`, `encoder_layers 32→4`, `encoder_ffn_dim 5120→1536`,
30
+ `encoder_attention_heads 20→6` (decoder weights dropped — vLLM only uses the encoder)
31
+ - FM DiT: `hidden_size 2304→384`, `depth 16→4`, `num_heads 18→6`,
32
+ `condition_input_dim 1280→384`
33
+
34
+ The bundle does **not** ship a `vocoder/` subdir — `KimiBigVGAN` loads from
35
+ `zhangj1an/kimi-audio-bigvgan-hf` at runtime.
36
+
37
+ `modeling_moonshot_kimia.py` was patched to stub `flash_attn` symbols (instead of raising)
38
+ so `AutoModelForCausalLM.from_config(trust_remote_code=True)` works in CI without
39
+ flash_attn installed; vLLM-Omni replaces the attention impl anyway.
40
+
41
+ **Do not use for actual generation** — outputs are noise.
audio_detokenizer/config.yaml ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ accumulate_grad_batches: 1
2
+ base_config: config/config_base.yaml
3
+ batch_max_tokens: 12000
4
+ batch_size: 2
5
+ cfg_init: 1.0
6
+ cfg_scale: 4.0
7
+ cfg_schedule: linear
8
+ check_val_every_n_epoch: 10
9
+ clip_grad_norm: 0
10
+ data_dir: ''
11
+ debug: false
12
+ deep_speed_strategy_stage: 2
13
+ drop_last: true
14
+ dynamic_cfg: false
15
+ endless_ds: false
16
+ filter_args:
17
+ lang:
18
+ - zh
19
+ - en
20
+ max_spk_num: 6
21
+ speech_ratio: 0.6
22
+ gradient_clip_val: 1.0
23
+ indexed_ds: true
24
+ infer: false
25
+ infer_exp_name: ''
26
+ infer_json_path: ''
27
+ inference_ckpt: ''
28
+ inference_mode: nonstreaming
29
+ learning_rate: 1e-4
30
+ limit_val_batches: 100
31
+ load_opt: false
32
+ log_interval: 10
33
+ logger_type: tensorboard
34
+ loss:
35
+ lambda_fm: 1.0
36
+ lambda_phone: 0.0
37
+ mel_loss: l1
38
+ max_epochs: 1000
39
+ max_eval_sentences: -1
40
+ max_eval_tokens: -1
41
+ max_prompt_ratio: 0.5
42
+ max_segment_cnt: 20000
43
+ max_sentences: -1
44
+ max_speech_duration: 20
45
+ max_tokens: 31250
46
+ max_training_steps: 100000
47
+ max_updates: 160000
48
+ mel_mean: -4.479605
49
+ mel_std: 3.4584913
50
+ meta_dir: null
51
+ min_prompt_duration: 0.5
52
+ min_speech_duration: -1
53
+ model:
54
+ condition_prenet_depth: 6
55
+ dit:
56
+ chunk_params:
57
+ hz: 50
58
+ max_chunk: 3.0
59
+ max_chunk_history: 50000000
60
+ min_chunk: 0.5
61
+ need_block_shift: false
62
+ condition_input_dim: 384
63
+ condition_type: discrete_codes
64
+ depth: 4
65
+ ffn_act_layer: gleu_tanh
66
+ ffn_conv_kernel_size: 5
67
+ ffn_gated_glu: false
68
+ ffn_type: vanilla_mlp
69
+ hidden_size: 384
70
+ input_size: 80
71
+ max_seq_len: 4096
72
+ mlp_ratio: 4.0
73
+ num_heads: 6
74
+ position_embedding_type: skip
75
+ prompt_cfg_dropout: 0.2
76
+ rope_params:
77
+ max_position_embeddings: 4096
78
+ rope_base: 10000.0
79
+ rope_interpolation_factor: 1.0
80
+ semantic_cfg_dropout: 0.2
81
+ semantic_vocab_size: 16384
82
+ use_chunk_setting: true
83
+ use_rope: true
84
+ phone_predictor:
85
+ blank_id: 4
86
+ phone_vocab_size: 5000
87
+ position_id_start_from: 0
88
+ random_position_start: true
89
+ restart_position_ids: false
90
+ use_condition_prenet: false
91
+ need_merge_same_speaker: true
92
+ need_precise_phones: false
93
+ no_verlap: true
94
+ normalize_mel: true
95
+ num_nodes: 1
96
+ num_sanity_val_steps: 0
97
+ num_workers: 1
98
+ ode_steps: 150
99
+ optimizer_adam_beta1: 0.9
100
+ optimizer_adam_beta2: 0.98
101
+ optimizer_class: adamw
102
+ pin_memory: true
103
+ precision: bf16-mixed
104
+ save_interval: 2000
105
+ save_topk: 10
106
+ seed: 1234
107
+ shuffle: true
108
+ sort_by_len: true
109
+ src_sample_rate: 16000
110
+ strategy: ddp
111
+ tensorboard_dir: tb_logs
112
+ test_num: 100
113
+ tgt_sample_rate: 24000
114
+ timescale: 80000
115
+ use_cfg: false
116
+ use_cfg_rescale: false
117
+ use_distributed_sampler: false
118
+ use_uncondition: false
119
+ val_check_interval: 2000000
120
+ vocoder_ckpt: ''
121
+ wandb_name: glm4_semantic_cfm_v2_debug
122
+ warmup_updates: 100
123
+ weight_decay: 0.0001
audio_detokenizer/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56f29d1938d4062292306ee39209d99ceb2878c0130e61c0b3eb9fef3f1dd5cc
3
+ size 35084888
config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "MoonshotKimiaForCausalLM"
4
+ ],
5
+ "auto_map": {
6
+ "AutoConfig": "configuration_moonshot_kimia.KimiAudioConfig",
7
+ "AutoModel": "modeling_moonshot_kimia.MoonshotKimiaModel",
8
+ "AutoModelForCausalLM": "modeling_moonshot_kimia.MoonshotKimiaForCausalLM"
9
+ },
10
+ "bos_token_id": 151643,
11
+ "eos_token_ids": [
12
+ 151644,
13
+ 151645
14
+ ],
15
+ "hidden_act": "silu",
16
+ "hidden_size": 512,
17
+ "initializer_range": 0.02,
18
+ "intermediate_size": 1536,
19
+ "kimia_adaptor_input_dim": 1536,
20
+ "kimia_audio_output_vocab": 16896,
21
+ "kimia_media_begin": 151661,
22
+ "kimia_media_end": 151663,
23
+ "kimia_mimo_audiodelaytokens": 6,
24
+ "kimia_mimo_layers": 2,
25
+ "kimia_mimo_transformer_from_layer_index": 2,
26
+ "kimia_text_output_vocab": 152064,
27
+ "kimia_token_offset": 152064,
28
+ "num_attention_heads": 8,
29
+ "num_audio_special_tokens": 512,
30
+ "num_base_tokens": 151643,
31
+ "num_hidden_layers": 4,
32
+ "num_key_value_heads": 2,
33
+ "pad_token_id": 152063,
34
+ "max_position_embeddings": 8192,
35
+ "rms_norm_eps": 1e-06,
36
+ "rope_scaling": null,
37
+ "rope_theta": 1000000.0,
38
+ "tie_word_embeddings": false,
39
+ "torch_dtype": "bfloat16",
40
+ "transformers_version": "4.44.1",
41
+ "use_cache": true,
42
+ "use_whisper_feature": true,
43
+ "vocab_size": 168448
44
+ }
configuration_moonshot_kimia.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers.models.qwen2.configuration_qwen2 import Qwen2Config
2
+
3
+
4
+ class KimiAudioConfig(Qwen2Config):
5
+ def __init__(
6
+ self,
7
+ vocab_size=163840,
8
+ hidden_size=4096,
9
+ intermediate_size=11008,
10
+ num_hidden_layers=32,
11
+ num_attention_heads=32,
12
+ num_key_value_heads=None,
13
+ hidden_act="silu",
14
+ initializer_range=0.02,
15
+ rms_norm_eps=1e-6,
16
+ use_cache=True,
17
+ rope_theta=10000.0,
18
+ rope_scaling=None,
19
+ tie_word_embeddings=False,
20
+ kimia_mimo_layers: int = 6,
21
+ kimia_mimo_audiodelaytokens: int = 5,
22
+ kimia_mimo_transformer_from_layer_index: int = 21,
23
+ kimia_audio_output_vocab: int = 16896,
24
+ kimia_text_output_vocab: int = 152064,
25
+ num_audio_special_tokens: int = 512,
26
+ num_base_tokens: int = 151643,
27
+ kimia_token_offset: int = 152064,
28
+ use_whisper_feature: bool = True,
29
+ kimia_adaptor_input_dim: int = 5120,
30
+ kimia_media_begin: int = 151661,
31
+ kimia_media_end: int = 151663,
32
+ **kwargs,
33
+ ):
34
+ super().__init__(
35
+ vocab_size=vocab_size,
36
+ hidden_size=hidden_size,
37
+ intermediate_size=intermediate_size,
38
+ num_hidden_layers=num_hidden_layers,
39
+ num_attention_heads=num_attention_heads,
40
+ num_key_value_heads=num_key_value_heads,
41
+ hidden_act=hidden_act,
42
+ initializer_range=initializer_range,
43
+ rms_norm_eps=rms_norm_eps,
44
+ use_cache=use_cache,
45
+ tie_word_embeddings=tie_word_embeddings,
46
+ rope_theta=rope_theta,
47
+ rope_scaling=rope_scaling,
48
+ **kwargs,
49
+ )
50
+
51
+ self.kimia_mimo_layers = kimia_mimo_layers
52
+ self.kimia_mimo_audiodelaytokens = kimia_mimo_audiodelaytokens
53
+ # vocab
54
+ self.kimia_mimo_transformer_from_layer_index = (
55
+ kimia_mimo_transformer_from_layer_index
56
+ )
57
+ self.kimia_audio_output_vocab = kimia_audio_output_vocab
58
+ self.kimia_text_output_vocab = kimia_text_output_vocab
59
+ self.num_audio_special_tokens = num_audio_special_tokens
60
+ self.num_base_tokens = num_base_tokens
61
+ self.kimia_token_offset = kimia_token_offset
62
+ self.use_whisper_feature = use_whisper_feature
63
+ self.kimia_adaptor_input_dim = kimia_adaptor_input_dim
64
+ # special tokens
65
+ self.kimia_media_begin = kimia_media_begin
66
+ self.kimia_media_end = kimia_media_end
generation_config.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "max_length": 8192
3
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e01ec30e4fc8d85c9c3afb7d627bc9d382b69509318c0e938021f8c6f67b2813
3
+ size 555782040
model.safetensors.index.json ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 555772928
4
+ },
5
+ "weight_map": {
6
+ "model.embed_tokens.weight": "model.safetensors",
7
+ "model.layers.0.self_attn.q_proj.weight": "model.safetensors",
8
+ "model.layers.0.self_attn.q_proj.bias": "model.safetensors",
9
+ "model.layers.0.self_attn.k_proj.weight": "model.safetensors",
10
+ "model.layers.0.self_attn.k_proj.bias": "model.safetensors",
11
+ "model.layers.0.self_attn.v_proj.weight": "model.safetensors",
12
+ "model.layers.0.self_attn.v_proj.bias": "model.safetensors",
13
+ "model.layers.0.self_attn.o_proj.weight": "model.safetensors",
14
+ "model.layers.0.mlp.gate_proj.weight": "model.safetensors",
15
+ "model.layers.0.mlp.up_proj.weight": "model.safetensors",
16
+ "model.layers.0.mlp.down_proj.weight": "model.safetensors",
17
+ "model.layers.0.input_layernorm.weight": "model.safetensors",
18
+ "model.layers.0.post_attention_layernorm.weight": "model.safetensors",
19
+ "model.layers.1.self_attn.q_proj.weight": "model.safetensors",
20
+ "model.layers.1.self_attn.q_proj.bias": "model.safetensors",
21
+ "model.layers.1.self_attn.k_proj.weight": "model.safetensors",
22
+ "model.layers.1.self_attn.k_proj.bias": "model.safetensors",
23
+ "model.layers.1.self_attn.v_proj.weight": "model.safetensors",
24
+ "model.layers.1.self_attn.v_proj.bias": "model.safetensors",
25
+ "model.layers.1.self_attn.o_proj.weight": "model.safetensors",
26
+ "model.layers.1.mlp.gate_proj.weight": "model.safetensors",
27
+ "model.layers.1.mlp.up_proj.weight": "model.safetensors",
28
+ "model.layers.1.mlp.down_proj.weight": "model.safetensors",
29
+ "model.layers.1.input_layernorm.weight": "model.safetensors",
30
+ "model.layers.1.post_attention_layernorm.weight": "model.safetensors",
31
+ "model.layers.2.self_attn.q_proj.weight": "model.safetensors",
32
+ "model.layers.2.self_attn.q_proj.bias": "model.safetensors",
33
+ "model.layers.2.self_attn.k_proj.weight": "model.safetensors",
34
+ "model.layers.2.self_attn.k_proj.bias": "model.safetensors",
35
+ "model.layers.2.self_attn.v_proj.weight": "model.safetensors",
36
+ "model.layers.2.self_attn.v_proj.bias": "model.safetensors",
37
+ "model.layers.2.self_attn.o_proj.weight": "model.safetensors",
38
+ "model.layers.2.mlp.gate_proj.weight": "model.safetensors",
39
+ "model.layers.2.mlp.up_proj.weight": "model.safetensors",
40
+ "model.layers.2.mlp.down_proj.weight": "model.safetensors",
41
+ "model.layers.2.input_layernorm.weight": "model.safetensors",
42
+ "model.layers.2.post_attention_layernorm.weight": "model.safetensors",
43
+ "model.layers.3.self_attn.q_proj.weight": "model.safetensors",
44
+ "model.layers.3.self_attn.q_proj.bias": "model.safetensors",
45
+ "model.layers.3.self_attn.k_proj.weight": "model.safetensors",
46
+ "model.layers.3.self_attn.k_proj.bias": "model.safetensors",
47
+ "model.layers.3.self_attn.v_proj.weight": "model.safetensors",
48
+ "model.layers.3.self_attn.v_proj.bias": "model.safetensors",
49
+ "model.layers.3.self_attn.o_proj.weight": "model.safetensors",
50
+ "model.layers.3.mlp.gate_proj.weight": "model.safetensors",
51
+ "model.layers.3.mlp.up_proj.weight": "model.safetensors",
52
+ "model.layers.3.mlp.down_proj.weight": "model.safetensors",
53
+ "model.layers.3.input_layernorm.weight": "model.safetensors",
54
+ "model.layers.3.post_attention_layernorm.weight": "model.safetensors",
55
+ "model.norm.weight": "model.safetensors",
56
+ "model.mimo_layers.0.self_attn.q_proj.weight": "model.safetensors",
57
+ "model.mimo_layers.0.self_attn.q_proj.bias": "model.safetensors",
58
+ "model.mimo_layers.0.self_attn.k_proj.weight": "model.safetensors",
59
+ "model.mimo_layers.0.self_attn.k_proj.bias": "model.safetensors",
60
+ "model.mimo_layers.0.self_attn.v_proj.weight": "model.safetensors",
61
+ "model.mimo_layers.0.self_attn.v_proj.bias": "model.safetensors",
62
+ "model.mimo_layers.0.self_attn.o_proj.weight": "model.safetensors",
63
+ "model.mimo_layers.0.mlp.gate_proj.weight": "model.safetensors",
64
+ "model.mimo_layers.0.mlp.up_proj.weight": "model.safetensors",
65
+ "model.mimo_layers.0.mlp.down_proj.weight": "model.safetensors",
66
+ "model.mimo_layers.0.input_layernorm.weight": "model.safetensors",
67
+ "model.mimo_layers.0.post_attention_layernorm.weight": "model.safetensors",
68
+ "model.mimo_layers.1.self_attn.q_proj.weight": "model.safetensors",
69
+ "model.mimo_layers.1.self_attn.q_proj.bias": "model.safetensors",
70
+ "model.mimo_layers.1.self_attn.k_proj.weight": "model.safetensors",
71
+ "model.mimo_layers.1.self_attn.k_proj.bias": "model.safetensors",
72
+ "model.mimo_layers.1.self_attn.v_proj.weight": "model.safetensors",
73
+ "model.mimo_layers.1.self_attn.v_proj.bias": "model.safetensors",
74
+ "model.mimo_layers.1.self_attn.o_proj.weight": "model.safetensors",
75
+ "model.mimo_layers.1.mlp.gate_proj.weight": "model.safetensors",
76
+ "model.mimo_layers.1.mlp.up_proj.weight": "model.safetensors",
77
+ "model.mimo_layers.1.mlp.down_proj.weight": "model.safetensors",
78
+ "model.mimo_layers.1.input_layernorm.weight": "model.safetensors",
79
+ "model.mimo_layers.1.post_attention_layernorm.weight": "model.safetensors",
80
+ "model.mimo_norm.weight": "model.safetensors",
81
+ "model.vq_adaptor.layers.0.weight": "model.safetensors",
82
+ "model.vq_adaptor.layers.0.bias": "model.safetensors",
83
+ "model.vq_adaptor.layers.3.weight": "model.safetensors",
84
+ "model.vq_adaptor.layers.3.bias": "model.safetensors",
85
+ "model.vq_adaptor.layers.4.weight": "model.safetensors",
86
+ "model.vq_adaptor.layers.4.bias": "model.safetensors",
87
+ "lm_head.weight": "model.safetensors",
88
+ "mimo_output.weight": "model.safetensors"
89
+ }
90
+ }
modeling_moonshot_kimia.py ADDED
@@ -0,0 +1,921 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # coding=utf-8
2
+ # Copyright 2025 The Moonshot AI Team, Qwen Team, and HuggingFace Inc. team. All rights reserved.
3
+ #
4
+ # The code is based on Qwen2.5-7B, but modified for KimiAudio.
5
+ #
6
+ # Licensing Information:
7
+ # - Code derived from Qwen2.5-7B is licensed under the Apache License, Version 2.0.
8
+ # - Other parts of the code are licensed under the MIT License.
9
+ #
10
+ # Apache License, Version 2.0:
11
+ # Licensed under the Apache License, Version 2.0 (the "License");
12
+ # you may not use this file except in compliance with the License.
13
+ # You may obtain a copy of the License at
14
+ #
15
+ # http://www.apache.org/licenses/LICENSE-2.0
16
+ #
17
+ # Unless required by applicable law or agreed to in writing, software
18
+ # distributed under the License is distributed on an "AS IS" BASIS,
19
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ # See the License for the specific language governing permissions and
21
+ # limitations under the License.
22
+ #
23
+ # MIT License:
24
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
25
+ # of this software and associated documentation files (the "Software"), to deal
26
+ # in the Software without restriction, including without limitation the rights
27
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
28
+ # copies of the Software, and to permit persons to whom the Software is
29
+ # furnished to do so, subject to the following conditions:
30
+ #
31
+ # The above copyright notice and this permission notice shall be included in all
32
+ # copies or substantial portions of the Software.
33
+ #
34
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
35
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
37
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
38
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
39
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
40
+ # SOFTWARE.
41
+ """PyTorch KimiAudio model."""
42
+
43
+ from typing import List, Optional, Tuple, Union
44
+ import torch
45
+ import torch.utils.checkpoint
46
+ from torch import nn
47
+
48
+ import transformers
49
+ from packaging import version
50
+
51
+ assert version.parse(transformers.__version__) >= version.parse("4.34.1")
52
+
53
+ from transformers.modeling_outputs import (
54
+ BaseModelOutputWithPast,
55
+ CausalLMOutputWithPast,
56
+ )
57
+ from transformers.utils import (
58
+ logging,
59
+ )
60
+ from .configuration_moonshot_kimia import KimiAudioConfig
61
+ import torch.nn.functional as F
62
+ from transformers.models.qwen2.modeling_qwen2 import (
63
+ Qwen2RMSNorm,
64
+ Qwen2MLP,
65
+ Qwen2PreTrainedModel,
66
+ )
67
+ from transformers.models.qwen2.modeling_qwen2 import apply_rotary_pos_emb
68
+
69
+ if version.parse(transformers.__version__) >= version.parse("4.35.0"):
70
+ from transformers.utils import is_flash_attn_2_available as is_flash_attn_available
71
+ else:
72
+ from transformers.utils import is_flash_attn_available
73
+
74
+ if is_flash_attn_available():
75
+ from flash_attn import flash_attn_func, flash_attn_varlen_func
76
+ from flash_attn.bert_padding import index_first_axis, pad_input, unpad_input # noqa
77
+ else:
78
+ # vLLM-Omni replaces this module's attention implementation entirely; the
79
+ # forward path that imports flash_attn is never reached. Stub the symbols
80
+ # so ``AutoModelForCausalLM.from_config(trust_remote_code=True)`` works on
81
+ # boxes without flash_attn installed.
82
+ flash_attn_func = flash_attn_varlen_func = None
83
+ index_first_axis = pad_input = unpad_input = None
84
+
85
+
86
+ logger = logging.get_logger(__name__)
87
+
88
+
89
+ def _get_unpad_data(padding_mask):
90
+ seqlens_in_batch = padding_mask.sum(dim=-1, dtype=torch.int32)
91
+ indices = torch.nonzero(padding_mask.flatten(), as_tuple=False).flatten()
92
+ max_seqlen_in_batch = seqlens_in_batch.max().item()
93
+ cu_seqlens = F.pad(
94
+ torch.cumsum(seqlens_in_batch, dim=0, dtype=torch.torch.int32), (1, 0)
95
+ )
96
+ return (
97
+ indices,
98
+ cu_seqlens,
99
+ max_seqlen_in_batch,
100
+ )
101
+
102
+
103
+ def _upad_input(query_layer, key_layer, value_layer, padding_mask, query_length):
104
+ indices_k, cu_seqlens_k, max_seqlen_in_batch_k = _get_unpad_data(padding_mask)
105
+ batch_size, kv_seq_len, num_key_value_heads, head_dim = key_layer.shape
106
+ num_heads = query_layer.shape[2]
107
+
108
+ key_layer = index_first_axis(
109
+ key_layer.reshape(batch_size * kv_seq_len, num_key_value_heads, head_dim),
110
+ indices_k,
111
+ )
112
+ value_layer = index_first_axis(
113
+ value_layer.reshape(batch_size * kv_seq_len, num_key_value_heads, head_dim),
114
+ indices_k,
115
+ )
116
+ if query_length == kv_seq_len:
117
+ query_layer = index_first_axis(
118
+ query_layer.reshape(batch_size * kv_seq_len, num_heads, head_dim), indices_k
119
+ )
120
+ cu_seqlens_q = cu_seqlens_k
121
+ max_seqlen_in_batch_q = max_seqlen_in_batch_k
122
+ indices_q = indices_k
123
+ elif query_length == 1:
124
+ max_seqlen_in_batch_q = 1
125
+ cu_seqlens_q = torch.arange(
126
+ batch_size + 1, dtype=torch.int32, device=query_layer.device
127
+ ) # There is a memcpy here, that is very bad.
128
+ indices_q = cu_seqlens_q[:-1]
129
+ query_layer = query_layer.squeeze(1)
130
+ else:
131
+ # The -q_len: slice assumes left padding.
132
+ padding_mask = padding_mask[:, -query_length:]
133
+ query_layer, indices_q, cu_seqlens_q, max_seqlen_in_batch_q = unpad_input(
134
+ query_layer, padding_mask
135
+ )
136
+
137
+ return (
138
+ query_layer,
139
+ key_layer,
140
+ value_layer,
141
+ indices_q,
142
+ (cu_seqlens_q, cu_seqlens_k),
143
+ (max_seqlen_in_batch_q, max_seqlen_in_batch_k),
144
+ )
145
+
146
+
147
+ # Copied from transformers.models.bart.modeling_bart._make_causal_mask
148
+ def _make_causal_mask(
149
+ input_ids_shape: torch.Size,
150
+ dtype: torch.dtype,
151
+ device: torch.device,
152
+ past_key_values_length: int = 0,
153
+ ):
154
+ """
155
+ Make causal mask used for bi-directional self-attention.
156
+ """
157
+ bsz, tgt_len = input_ids_shape
158
+ mask = torch.full((tgt_len, tgt_len), torch.finfo(dtype).min, device=device)
159
+ mask_cond = torch.arange(mask.size(-1), device=device)
160
+ mask.masked_fill_(mask_cond < (mask_cond + 1).view(mask.size(-1), 1), 0)
161
+ mask = mask.to(dtype)
162
+
163
+ if past_key_values_length > 0:
164
+ mask = torch.cat(
165
+ [
166
+ torch.zeros(
167
+ tgt_len, past_key_values_length, dtype=dtype, device=device
168
+ ),
169
+ mask,
170
+ ],
171
+ dim=-1,
172
+ )
173
+ return mask[None, None, :, :].expand(
174
+ bsz, 1, tgt_len, tgt_len + past_key_values_length
175
+ )
176
+
177
+
178
+ # Copied from transformers.models.bart.modeling_bart._expand_mask
179
+ def _expand_mask(mask: torch.Tensor, dtype: torch.dtype, tgt_len: Optional[int] = None):
180
+ """
181
+ Expands attention_mask from `[bsz, seq_len]` to `[bsz, 1, tgt_seq_len, src_seq_len]`.
182
+ """
183
+ bsz, src_len = mask.size()
184
+ tgt_len = tgt_len if tgt_len is not None else src_len
185
+
186
+ expanded_mask = mask[:, None, None, :].expand(bsz, 1, tgt_len, src_len).to(dtype)
187
+
188
+ inverted_mask = 1.0 - expanded_mask
189
+
190
+ return inverted_mask.masked_fill(
191
+ inverted_mask.to(torch.bool), torch.finfo(dtype).min
192
+ )
193
+
194
+
195
+ class RotaryEmbedding(nn.Module):
196
+ def __init__(self, dim, max_position_embeddings=2048, base=10000, device=None):
197
+ super().__init__()
198
+
199
+ self.dim = dim
200
+ self.max_position_embeddings = max_position_embeddings
201
+ self.base = base
202
+ inv_freq = 1.0 / (
203
+ self.base ** (torch.arange(0, self.dim, 2).float().to(device) / self.dim)
204
+ )
205
+ self.register_buffer("inv_freq", inv_freq, persistent=False)
206
+
207
+ # Build here to make `torch.jit.trace` work.
208
+ self._set_cos_sin_cache(
209
+ seq_len=max_position_embeddings,
210
+ device=self.inv_freq.device,
211
+ dtype=torch.get_default_dtype(),
212
+ )
213
+
214
+ def _set_cos_sin_cache(self, seq_len, device, dtype):
215
+ self.max_seq_len_cached = seq_len
216
+ t = torch.arange(
217
+ self.max_seq_len_cached, device=device, dtype=self.inv_freq.dtype
218
+ )
219
+
220
+ freqs = torch.einsum("i,j->ij", t, self.inv_freq)
221
+ # Different from paper, but it uses a different permutation in order to obtain the same calculation
222
+ emb = torch.cat((freqs, freqs), dim=-1)
223
+ self.register_buffer("cos_cached", emb.cos().to(dtype), persistent=False)
224
+ self.register_buffer("sin_cached", emb.sin().to(dtype), persistent=False)
225
+
226
+ def forward(self, x, seq_len=None):
227
+ # x: [bs, num_attention_heads, seq_len, head_size]
228
+ if seq_len > self.max_seq_len_cached:
229
+ self._set_cos_sin_cache(seq_len=seq_len, device=x.device, dtype=x.dtype)
230
+
231
+ return (
232
+ self.cos_cached[:seq_len].to(dtype=x.dtype),
233
+ self.sin_cached[:seq_len].to(dtype=x.dtype),
234
+ )
235
+
236
+
237
+ class MoonshotAttention(nn.Module):
238
+ """Multi-headed attention from 'Attention Is All You Need' paper"""
239
+
240
+ def __init__(self, config: KimiAudioConfig):
241
+ super().__init__()
242
+ self.config = config
243
+ self.hidden_size = config.hidden_size
244
+ self.num_heads = config.num_attention_heads
245
+ self.head_dim = self.hidden_size // self.num_heads
246
+ self.num_key_value_heads = config.num_key_value_heads
247
+ self.num_key_value_groups = self.num_heads // self.num_key_value_heads
248
+ self.max_position_embeddings = config.max_position_embeddings
249
+ self.rope_theta = config.rope_theta
250
+ if (self.head_dim * self.num_heads) != self.hidden_size:
251
+ raise ValueError(
252
+ f"hidden_size must be divisible by num_heads (got `hidden_size`: {self.hidden_size}"
253
+ f" and `num_heads`: {self.num_heads})."
254
+ )
255
+ self.q_proj = nn.Linear(
256
+ self.hidden_size, self.num_heads * self.head_dim, bias=True
257
+ )
258
+ self.k_proj = nn.Linear(
259
+ self.hidden_size, self.num_key_value_heads * self.head_dim, bias=True
260
+ )
261
+ self.v_proj = nn.Linear(
262
+ self.hidden_size, self.num_key_value_heads * self.head_dim, bias=True
263
+ )
264
+ self.o_proj = nn.Linear(
265
+ self.num_heads * self.head_dim, self.hidden_size, bias=False
266
+ )
267
+
268
+ self._init_rope()
269
+
270
+ def _init_rope(self):
271
+
272
+ self.rotary_emb = RotaryEmbedding(
273
+ self.head_dim,
274
+ max_position_embeddings=self.max_position_embeddings,
275
+ base=self.rope_theta,
276
+ )
277
+
278
+ def forward(
279
+ self,
280
+ hidden_states: torch.Tensor,
281
+ attention_mask: Optional[torch.Tensor] = None,
282
+ position_ids: Optional[torch.LongTensor] = None,
283
+ past_key_value: Optional[Tuple[torch.Tensor]] = None,
284
+ output_attentions: bool = False,
285
+ use_cache: bool = False,
286
+ padding_mask: Optional[torch.LongTensor] = None,
287
+ ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]:
288
+ # LlamaFlashAttention2 attention does not support output_attentions
289
+
290
+ output_attentions = False
291
+
292
+ bsz, q_len, _ = hidden_states.size()
293
+
294
+ query_states = self.q_proj(hidden_states)
295
+ key_states = self.k_proj(hidden_states)
296
+ value_states = self.v_proj(hidden_states)
297
+
298
+ # Flash attention requires the input to have the shape
299
+ # batch_size x seq_length x head_dime x hidden_dim
300
+ # therefore we just need to keep the original shape
301
+ query_states = query_states.view(
302
+ bsz, q_len, self.num_heads, self.head_dim
303
+ ).transpose(1, 2)
304
+ key_states = key_states.view(
305
+ bsz, q_len, self.num_key_value_heads, self.head_dim
306
+ ).transpose(1, 2)
307
+ value_states = value_states.view(
308
+ bsz, q_len, self.num_key_value_heads, self.head_dim
309
+ ).transpose(1, 2)
310
+
311
+ kv_seq_len = key_states.shape[-2]
312
+ if past_key_value is not None:
313
+ kv_seq_len += past_key_value[0].shape[-2]
314
+
315
+ cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len)
316
+ cos = cos[position_ids]
317
+ sin = sin[position_ids]
318
+ query_states, key_states = apply_rotary_pos_emb(
319
+ query_states, key_states, cos, sin, position_ids
320
+ )
321
+
322
+ if past_key_value is not None:
323
+ # reuse k, v, self_attention
324
+ key_states = torch.cat([past_key_value[0], key_states], dim=2)
325
+ value_states = torch.cat([past_key_value[1], value_states], dim=2)
326
+
327
+ past_key_value = (key_states, value_states) if use_cache else None
328
+
329
+ query_states = query_states.transpose(1, 2)
330
+ key_states = key_states.transpose(1, 2)
331
+ value_states = value_states.transpose(1, 2)
332
+
333
+ # TODO: llama does not have dropout in the config??
334
+ # It is recommended to use dropout with FA according to the docs
335
+ # when training.
336
+ dropout_rate = 0.0 # if not self.training else self.attn_dropout
337
+
338
+ # In PEFT, usually we cast the layer norms in float32 for training stability reasons
339
+ # therefore the input hidden states gets silently casted in float32. Hence, we need
340
+ # cast them back in float16 just to be sure everything works as expected.
341
+ # This might slowdown training & inference so it is recommended to not cast the LayerNorms
342
+ # in fp32. (LlamaRMSNorm handles it correctly)
343
+ input_dtype = query_states.dtype
344
+ if input_dtype == torch.float32:
345
+ logger.warning_once(
346
+ "The input hidden states seems to be silently casted in float32, this might be related to"
347
+ " the fact you have upcasted embedding or layer norm layers in float32. We will cast back the input in"
348
+ " float16."
349
+ )
350
+
351
+ query_states = query_states.to(torch.float16)
352
+ key_states = key_states.to(torch.float16)
353
+ value_states = value_states.to(torch.float16)
354
+
355
+ attn_output = self._flash_attention_forward(
356
+ query_states,
357
+ key_states,
358
+ value_states,
359
+ padding_mask,
360
+ q_len,
361
+ dropout=dropout_rate,
362
+ )
363
+
364
+ if input_dtype == torch.float32:
365
+ attn_output = attn_output.to(torch.float32)
366
+
367
+ attn_output = attn_output.reshape(bsz, q_len, self.hidden_size).contiguous()
368
+ attn_output = self.o_proj(attn_output)
369
+
370
+ if not output_attentions:
371
+ attn_weights = None
372
+
373
+ return attn_output, attn_weights, past_key_value
374
+
375
+ def _flash_attention_forward(
376
+ self,
377
+ query_states,
378
+ key_states,
379
+ value_states,
380
+ padding_mask,
381
+ query_length,
382
+ dropout=0.0,
383
+ softmax_scale=None,
384
+ ):
385
+ """
386
+ Calls the forward method of Flash Attention - if the input hidden states contain at least one padding token
387
+ first unpad the input, then computes the attention scores and pad the final attention scores.
388
+
389
+ Args:
390
+ query_states (`torch.Tensor`):
391
+ Input query states to be passed to Flash Attention API
392
+ key_states (`torch.Tensor`):
393
+ Input key states to be passed to Flash Attention API
394
+ value_states (`torch.Tensor`):
395
+ Input value states to be passed to Flash Attention API
396
+ padding_mask (`torch.Tensor`):
397
+ The padding mask - corresponds to a tensor of size `(batch_size, seq_len)` where 0 stands for the
398
+ position of padding tokens and 1 for the position of non-padding tokens.
399
+ dropout (`int`, *optional*):
400
+ Attention dropout
401
+ softmax_scale (`float`, *optional*):
402
+ The scaling of QK^T before applying softmax. Default to 1 / sqrt(head_dim)
403
+ """
404
+ # Contains at least one padding token in the sequence
405
+ if padding_mask is not None:
406
+ batch_size = query_states.shape[0]
407
+ (
408
+ query_states,
409
+ key_states,
410
+ value_states,
411
+ indices_q,
412
+ cu_seq_lens,
413
+ max_seq_lens,
414
+ ) = _upad_input(
415
+ query_states, key_states, value_states, padding_mask, query_length
416
+ )
417
+
418
+ cu_seqlens_q, cu_seqlens_k = cu_seq_lens
419
+ max_seqlen_in_batch_q, max_seqlen_in_batch_k = max_seq_lens
420
+
421
+ attn_output_unpad = flash_attn_varlen_func(
422
+ query_states,
423
+ key_states,
424
+ value_states,
425
+ cu_seqlens_q=cu_seqlens_q,
426
+ cu_seqlens_k=cu_seqlens_k,
427
+ max_seqlen_q=max_seqlen_in_batch_q,
428
+ max_seqlen_k=max_seqlen_in_batch_k,
429
+ dropout_p=dropout,
430
+ softmax_scale=softmax_scale,
431
+ causal=True,
432
+ )
433
+
434
+ attn_output = pad_input(
435
+ attn_output_unpad, indices_q, batch_size, query_length
436
+ )
437
+ else:
438
+ attn_output = flash_attn_func(
439
+ query_states,
440
+ key_states,
441
+ value_states,
442
+ dropout,
443
+ softmax_scale=softmax_scale,
444
+ causal=True,
445
+ )
446
+
447
+ return attn_output
448
+
449
+
450
+ class MoonshotDecoderLayer(nn.Module):
451
+ def __init__(self, config: KimiAudioConfig):
452
+ super().__init__()
453
+ self.hidden_size = config.hidden_size
454
+ self.config = config
455
+
456
+ logger.warning_once("using normal flash attention")
457
+ self.self_attn = MoonshotAttention(config=config)
458
+
459
+ self.mlp = Qwen2MLP(config)
460
+ self.input_layernorm = Qwen2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
461
+ self.post_attention_layernorm = Qwen2RMSNorm(
462
+ config.hidden_size, eps=config.rms_norm_eps
463
+ )
464
+
465
+ def forward(
466
+ self,
467
+ hidden_states: torch.Tensor,
468
+ attention_mask: Optional[torch.Tensor] = None,
469
+ position_ids: Optional[torch.LongTensor] = None,
470
+ past_key_value: Optional[Tuple[torch.Tensor]] = None,
471
+ output_attentions: Optional[bool] = False,
472
+ use_cache: Optional[bool] = False,
473
+ padding_mask: Optional[torch.LongTensor] = None,
474
+ ) -> Tuple[
475
+ torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]
476
+ ]:
477
+ """
478
+ Args:
479
+ hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
480
+ attention_mask (`torch.FloatTensor`, *optional*): attention mask of size
481
+ `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
482
+ output_attentions (`bool`, *optional*):
483
+ Whether or not to return the attentions tensors of all attention layers. See `attentions` under
484
+ returned tensors for more detail.
485
+ use_cache (`bool`, *optional*):
486
+ If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
487
+ (see `past_key_values`).
488
+ past_key_value (`Tuple(torch.FloatTensor)`, *optional*): cached past key and value projection states
489
+ """
490
+
491
+ residual = hidden_states
492
+
493
+ hidden_states = self.input_layernorm(hidden_states)
494
+
495
+ # Self Attention
496
+ hidden_states, self_attn_weights, present_key_value = self.self_attn(
497
+ hidden_states=hidden_states,
498
+ attention_mask=attention_mask,
499
+ position_ids=position_ids,
500
+ past_key_value=past_key_value,
501
+ output_attentions=output_attentions,
502
+ use_cache=use_cache,
503
+ padding_mask=padding_mask,
504
+ )
505
+ hidden_states = residual + hidden_states
506
+
507
+ # Fully Connected
508
+ residual = hidden_states
509
+ hidden_states = self.post_attention_layernorm(hidden_states)
510
+ hidden_states = self.mlp(hidden_states)
511
+ hidden_states = residual + hidden_states
512
+
513
+ outputs = (hidden_states,)
514
+
515
+ if output_attentions:
516
+ outputs += (self_attn_weights,)
517
+
518
+ if use_cache:
519
+ outputs += (present_key_value,)
520
+
521
+ return outputs
522
+
523
+
524
+ class VQAdaptor(nn.Module):
525
+ def __init__(self, config):
526
+ super().__init__()
527
+ self.layers = nn.Sequential(
528
+ nn.Linear(config.kimia_adaptor_input_dim, config.hidden_size, bias=True),
529
+ nn.SiLU(),
530
+ nn.Dropout(0.0),
531
+ nn.Linear(config.hidden_size, config.hidden_size, bias=True),
532
+ nn.LayerNorm(config.hidden_size, eps=config.rms_norm_eps, bias=True),
533
+ )
534
+
535
+ def forward(self, x):
536
+ return self.layers(x)
537
+
538
+
539
+ class MoonshotKimiaModel(Qwen2PreTrainedModel):
540
+ """
541
+ Transformer decoder consisting of *config.num_hidden_layers* layers. Each layer is a [`QwenDecoderLayer`]
542
+
543
+ Args:
544
+ config: KimiAudioConfig
545
+ """
546
+
547
+ config_class = KimiAudioConfig
548
+
549
+ def __init__(self, config: KimiAudioConfig):
550
+ super().__init__(config)
551
+ self.padding_idx = config.pad_token_id
552
+ self.vocab_size = config.vocab_size
553
+ self.kimia_mimo_transformer_from_layer_index = (
554
+ config.kimia_mimo_transformer_from_layer_index
555
+ )
556
+
557
+ self.embed_tokens = nn.Embedding(
558
+ config.vocab_size, config.hidden_size, self.padding_idx
559
+ )
560
+ self.layers = nn.ModuleList(
561
+ [MoonshotDecoderLayer(config) for _ in range(config.num_hidden_layers)]
562
+ )
563
+ self.norm = Qwen2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
564
+
565
+ # extra 1B audio transformers
566
+ self.mimo_layers = nn.ModuleList(
567
+ [MoonshotDecoderLayer(config) for _ in range(config.kimia_mimo_layers)]
568
+ )
569
+ self.mimo_norm = Qwen2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
570
+ self.use_whisper_feature = config.use_whisper_feature
571
+ if self.use_whisper_feature:
572
+ self.vq_adaptor = VQAdaptor(config)
573
+ self.kimia_media_begin = config.kimia_media_begin
574
+ self.kimia_media_end = config.kimia_media_end
575
+
576
+ self.gradient_checkpointing = False
577
+ # Initialize weights and apply final processing
578
+ self.post_init()
579
+
580
+ def get_input_embeddings(self):
581
+ return self.embed_tokens
582
+
583
+ def set_input_embeddings(self, value):
584
+ self.embed_tokens = value
585
+
586
+ # Copied from transformers.models.bart.modeling_bart.BartDecoder._prepare_decoder_attention_mask
587
+ def _prepare_decoder_attention_mask(
588
+ self, attention_mask, input_shape, inputs_embeds, past_key_values_length
589
+ ):
590
+ # create causal mask
591
+ # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len]
592
+ combined_attention_mask = None
593
+ if input_shape[-1] > 1:
594
+ combined_attention_mask = _make_causal_mask(
595
+ input_shape,
596
+ inputs_embeds.dtype,
597
+ device=inputs_embeds.device,
598
+ past_key_values_length=past_key_values_length,
599
+ )
600
+
601
+ if attention_mask is not None:
602
+ # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len]
603
+ expanded_attn_mask = _expand_mask(
604
+ attention_mask, inputs_embeds.dtype, tgt_len=input_shape[-1]
605
+ ).to(inputs_embeds.device)
606
+ combined_attention_mask = (
607
+ expanded_attn_mask
608
+ if combined_attention_mask is None
609
+ else expanded_attn_mask + combined_attention_mask
610
+ )
611
+
612
+ return combined_attention_mask
613
+
614
+ def forward(
615
+ self,
616
+ input_ids: torch.LongTensor = None,
617
+ text_input_ids: torch.LongTensor = None,
618
+ whisper_input_feature: Optional[torch.FloatTensor] = None,
619
+ is_continuous_mask: Optional[torch.Tensor] = None,
620
+ attention_mask: Optional[torch.Tensor] = None,
621
+ position_ids: Optional[torch.LongTensor] = None,
622
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
623
+ inputs_embeds: Optional[torch.FloatTensor] = None,
624
+ use_cache: Optional[bool] = None,
625
+ output_attentions: Optional[bool] = None,
626
+ output_hidden_states: Optional[bool] = None,
627
+ return_dict: Optional[bool] = None,
628
+ ) -> Union[Tuple, BaseModelOutputWithPast]:
629
+ output_attentions = (
630
+ output_attentions
631
+ if output_attentions is not None
632
+ else self.config.output_attentions
633
+ )
634
+ output_hidden_states = (
635
+ output_hidden_states
636
+ if output_hidden_states is not None
637
+ else self.config.output_hidden_states
638
+ )
639
+ use_cache = use_cache if use_cache is not None else self.config.use_cache
640
+
641
+ return_dict = (
642
+ return_dict if return_dict is not None else self.config.use_return_dict
643
+ )
644
+
645
+ # retrieve input_ids and inputs_embeds
646
+ if input_ids is not None and inputs_embeds is not None:
647
+ raise ValueError(
648
+ "You cannot specify both input_ids and inputs_embeds at the same time"
649
+ )
650
+ elif input_ids is not None:
651
+ batch_size, seq_length = input_ids.shape
652
+ elif inputs_embeds is not None:
653
+ batch_size, seq_length, _ = inputs_embeds.shape
654
+ else:
655
+ raise ValueError("You have to specify either input_ids or inputs_embeds")
656
+
657
+ seq_length_with_past = seq_length
658
+ past_key_values_length = 0
659
+
660
+ if past_key_values is not None:
661
+ past_key_values_length = past_key_values[0][0].shape[2]
662
+ seq_length_with_past = seq_length_with_past + past_key_values_length
663
+ if position_ids is None:
664
+ device = input_ids.device if input_ids is not None else inputs_embeds.device
665
+ position_ids = torch.arange(
666
+ past_key_values_length,
667
+ seq_length + past_key_values_length,
668
+ dtype=torch.long,
669
+ device=device,
670
+ )
671
+ position_ids = position_ids.unsqueeze(0)
672
+
673
+ if inputs_embeds is None:
674
+ # shape: batch, seq_len, hidden_size
675
+ input_ids = input_ids.to(torch.cuda.current_device())
676
+ text_input_ids = text_input_ids.to(torch.cuda.current_device())
677
+ audio_emb = self.embed_tokens(input_ids)
678
+ if self.use_whisper_feature and whisper_input_feature is not None:
679
+ if not isinstance(whisper_input_feature, list):
680
+ whisper_input_feature = whisper_input_feature.squeeze(0)
681
+ whisper_input_feature = [whisper_input_feature]
682
+
683
+ media_start_idx = (input_ids == self.kimia_media_begin).nonzero()
684
+ media_end_idx = (input_ids == self.kimia_media_end).nonzero()
685
+ # shape: batch, seq_len, hidden_size
686
+ whisper_input_dim = whisper_input_feature[0].shape[-1]
687
+ whisper_dtype = whisper_input_feature[0].dtype
688
+ expanded_whisper = (
689
+ torch.zeros(audio_emb.shape[1], whisper_input_dim)
690
+ .to(torch.cuda.current_device())
691
+ .to(whisper_dtype)
692
+ )
693
+ assert (media_end_idx - media_start_idx).sum() - media_start_idx.shape[0] == is_continuous_mask.sum()
694
+ for seg_idx, ((batch_idx, start_idx), (_, end_idx)) in enumerate(zip(
695
+ media_start_idx, media_end_idx
696
+ )):
697
+
698
+ feat_len = end_idx - (start_idx + 1)
699
+ whisper_input_feature_i = whisper_input_feature[seg_idx].squeeze(0)
700
+ expanded_whisper[start_idx + 1 : end_idx, :] = (
701
+ whisper_input_feature_i[:feat_len, :]
702
+ )
703
+
704
+ expanded_whisper = expanded_whisper.unsqueeze(0)
705
+ whisper_emb = self.vq_adaptor(
706
+ expanded_whisper.transpose(0, 1)
707
+ ).transpose(0, 1)
708
+ is_continuous_mask = is_continuous_mask.to(torch.cuda.current_device())
709
+ whisper_emb = whisper_emb.to(torch.cuda.current_device())
710
+ whisper_emb = whisper_emb * is_continuous_mask[:, :, None]
711
+
712
+ encoder_input_addwith_discrete_token = (
713
+ audio_emb + whisper_emb
714
+ ) * torch.sqrt(
715
+ torch.tensor(
716
+ 2.0, dtype=whisper_emb.dtype, device=torch.cuda.current_device()
717
+ )
718
+ )
719
+ audio_emb = (
720
+ audio_emb * (~is_continuous_mask[:, :, None])
721
+ + encoder_input_addwith_discrete_token
722
+ * is_continuous_mask[:, :, None]
723
+ )
724
+ if text_input_ids is not None and text_input_ids.sum() != 0:
725
+ inputs_embeds = audio_emb + self.embed_tokens(text_input_ids)
726
+ else:
727
+ inputs_embeds = audio_emb
728
+ # embed positions
729
+ # TODO kill attention_mask for prefill
730
+ padding_mask = attention_mask
731
+
732
+ hidden_states = inputs_embeds
733
+
734
+ # decoder layers
735
+ all_hidden_states = () if output_hidden_states else None
736
+ all_self_attns = () if output_attentions else None
737
+ next_decoder_cache = () if use_cache else None
738
+ for idx, decoder_layer in enumerate(self.layers):
739
+ if output_hidden_states:
740
+ all_hidden_states += (hidden_states,)
741
+
742
+ past_key_value = (
743
+ past_key_values[idx] if past_key_values is not None else None
744
+ )
745
+ layer_outputs = decoder_layer(
746
+ hidden_states,
747
+ attention_mask=attention_mask,
748
+ position_ids=position_ids,
749
+ past_key_value=past_key_value,
750
+ output_attentions=output_attentions,
751
+ use_cache=use_cache,
752
+ padding_mask=padding_mask,
753
+ )
754
+
755
+ hidden_states = layer_outputs[0]
756
+ if idx == self.kimia_mimo_transformer_from_layer_index:
757
+ mimo_hidden_states = hidden_states.clone()
758
+
759
+ if use_cache:
760
+ next_decoder_cache += (layer_outputs[2 if output_attentions else 1],)
761
+
762
+ if output_attentions:
763
+ all_self_attns += (layer_outputs[1],)
764
+
765
+ hidden_states = self.norm(hidden_states)
766
+ if output_hidden_states:
767
+ all_hidden_states += (hidden_states,)
768
+
769
+ # apply audio transformer layers
770
+ for idx, decoder_layer in enumerate(self.mimo_layers):
771
+ if output_hidden_states:
772
+ all_hidden_states += (mimo_hidden_states,)
773
+
774
+ past_key_value = (
775
+ past_key_values[idx + len(self.layers)]
776
+ if past_key_values is not None
777
+ else None
778
+ )
779
+ layer_outputs = decoder_layer(
780
+ mimo_hidden_states,
781
+ attention_mask=attention_mask,
782
+ position_ids=position_ids,
783
+ past_key_value=past_key_value,
784
+ output_attentions=output_attentions,
785
+ use_cache=use_cache,
786
+ padding_mask=padding_mask,
787
+ )
788
+
789
+ mimo_hidden_states = layer_outputs[0]
790
+
791
+ if use_cache:
792
+ next_decoder_cache += (layer_outputs[2 if output_attentions else 1],)
793
+
794
+ mimo_hidden_states = self.mimo_norm(mimo_hidden_states)
795
+
796
+ # add hidden states from the last decoder layer
797
+ if output_hidden_states:
798
+ all_hidden_states += (mimo_hidden_states,)
799
+
800
+ next_cache = next_decoder_cache if use_cache else None
801
+ if not return_dict:
802
+ return tuple(
803
+ v
804
+ for v in [
805
+ hidden_states,
806
+ mimo_hidden_states,
807
+ next_cache,
808
+ all_hidden_states,
809
+ all_hidden_states,
810
+ all_self_attns,
811
+ ]
812
+ if v is not None
813
+ )
814
+ return BaseModelOutputWithPast(
815
+ last_hidden_state=(hidden_states, mimo_hidden_states),
816
+ past_key_values=next_cache,
817
+ hidden_states=all_hidden_states,
818
+ attentions=all_self_attns,
819
+ )
820
+
821
+
822
+ class MoonshotKimiaForCausalLM(Qwen2PreTrainedModel):
823
+ _tied_weights_keys = ["lm_head.weight", "mimo_output.weight"]
824
+ config_class = KimiAudioConfig
825
+
826
+ def __init__(self, config):
827
+ super().__init__(config)
828
+ self.model = MoonshotKimiaModel(config)
829
+ self.vocab_size = config.vocab_size
830
+ self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
831
+ self.mimo_output = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
832
+
833
+ # Initialize weights and apply final processing
834
+ self.post_init()
835
+
836
+ def get_input_embeddings(self):
837
+ return self.model.embed_tokens
838
+
839
+ def set_input_embeddings(self, value):
840
+ self.model.embed_tokens = value
841
+
842
+ def get_output_embeddings(self):
843
+ return self.lm_head
844
+
845
+ def set_output_embeddings(self, new_embeddings):
846
+ self.lm_head = new_embeddings
847
+
848
+ def set_decoder(self, decoder):
849
+ self.model = decoder
850
+
851
+ def get_decoder(self):
852
+ return self.model
853
+
854
+ def forward(
855
+ self,
856
+ input_ids: torch.LongTensor = None,
857
+ text_input_ids: torch.LongTensor = None,
858
+ whisper_input_feature: Optional[torch.FloatTensor] = None,
859
+ is_continuous_mask: Optional[torch.Tensor] = None,
860
+ attention_mask: Optional[torch.Tensor] = None,
861
+ position_ids: Optional[torch.LongTensor] = None,
862
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
863
+ inputs_embeds: Optional[torch.FloatTensor] = None,
864
+ labels: Optional[torch.LongTensor] = None,
865
+ use_cache: Optional[bool] = None,
866
+ output_attentions: Optional[bool] = None,
867
+ output_hidden_states: Optional[bool] = None,
868
+ generation_mode: Optional[bool] = None,
869
+ return_dict: Optional[bool] = None,
870
+ ) -> Union[Tuple, CausalLMOutputWithPast]:
871
+
872
+ output_attentions = (
873
+ output_attentions
874
+ if output_attentions is not None
875
+ else self.config.output_attentions
876
+ )
877
+ output_hidden_states = (
878
+ output_hidden_states
879
+ if output_hidden_states is not None
880
+ else self.config.output_hidden_states
881
+ )
882
+ return_dict = (
883
+ return_dict if return_dict is not None else self.config.use_return_dict
884
+ )
885
+
886
+ # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)
887
+ outputs = self.model(
888
+ input_ids=input_ids,
889
+ text_input_ids=text_input_ids,
890
+ whisper_input_feature=whisper_input_feature,
891
+ is_continuous_mask=is_continuous_mask,
892
+ attention_mask=attention_mask,
893
+ position_ids=position_ids,
894
+ past_key_values=past_key_values,
895
+ inputs_embeds=inputs_embeds,
896
+ use_cache=use_cache,
897
+ output_attentions=output_attentions,
898
+ output_hidden_states=output_hidden_states,
899
+ return_dict=return_dict,
900
+ )
901
+ if return_dict:
902
+ hidden_states, mimo_hidden_states = (
903
+ outputs.last_hidden_state[0],
904
+ outputs.last_hidden_state[1],
905
+ )
906
+ else:
907
+ hidden_states, mimo_hidden_states = outputs[0], outputs[1]
908
+
909
+ text_logits = self.lm_head(hidden_states)
910
+ audio_logits = self.mimo_output(mimo_hidden_states)
911
+
912
+ if not return_dict:
913
+ output = (audio_logits, text_logits) + outputs[2:]
914
+ return output
915
+ return CausalLMOutputWithPast(
916
+ loss=None,
917
+ logits=(audio_logits, text_logits),
918
+ past_key_values=outputs.past_key_values,
919
+ hidden_states=outputs.hidden_states,
920
+ attentions=outputs.attentions,
921
+ )
special_tokens_map.json ADDED
@@ -0,0 +1,425 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_msg_end|>",
4
+ "<|im_user_msg_start|>",
5
+ "<|im_assistant_msg_start|>",
6
+ "<|reserved_token_0|>",
7
+ "<|reserved_token_1|>",
8
+ "<|reserved_token_2|>",
9
+ "<|reserved_token_3|>",
10
+ "[EOT]",
11
+ "<|reserved_token_4|>",
12
+ "<|reserved_token_5|>",
13
+ "<|reserved_token_6|>",
14
+ "<|reserved_token_7|>",
15
+ "<|reserved_token_8|>",
16
+ "<|reserved_token_9|>",
17
+ "<|reserved_token_10|>",
18
+ "<|reserved_token_11|>",
19
+ "<|im_media_begin|>",
20
+ "<|reserved_token_12|>",
21
+ "<|im_media_end|>",
22
+ "<|reserved_token_13|>",
23
+ "<|reserved_token_14|>",
24
+ "<|im_kimia_text_blank|>",
25
+ "<|im_kimia_text_eos|>",
26
+ "<|reserved_token_15|>",
27
+ "<|reserved_token_16|>",
28
+ "<|im_kimia_user_msg_start|>",
29
+ "<|im_kimia_assistant_msg_start|>",
30
+ "<|reserved_token_17|>",
31
+ "<|reserved_token_18|>",
32
+ "<|reserved_token_19|>",
33
+ "<|im_kimia_speech_ct_id|>",
34
+ "<|im_kimia_speech_ctd_id|>",
35
+ "<|reserved_token_20|>",
36
+ "<|reserved_token_21|>",
37
+ "<|reserved_token_22|>",
38
+ "<|reserved_token_23|>",
39
+ "<|reserved_token_24|>",
40
+ "<|reserved_token_25|>",
41
+ "<|reserved_token_26|>",
42
+ "<|reserved_token_27|>",
43
+ "<|reserved_token_28|>",
44
+ "<|reserved_token_29|>",
45
+ "<|reserved_token_30|>",
46
+ "<|reserved_token_31|>",
47
+ "<|reserved_token_32|>",
48
+ "<|reserved_token_33|>",
49
+ "<|reserved_token_34|>",
50
+ "<|reserved_token_35|>",
51
+ "<|reserved_token_36|>",
52
+ "<|reserved_token_37|>",
53
+ "<|reserved_token_38|>",
54
+ "<|reserved_token_39|>",
55
+ "<|reserved_token_40|>",
56
+ "<|reserved_token_41|>",
57
+ "<|reserved_token_42|>",
58
+ "<|reserved_token_43|>",
59
+ "<|reserved_token_44|>",
60
+ "<|reserved_token_45|>",
61
+ "<|reserved_token_46|>",
62
+ "<|reserved_token_47|>",
63
+ "<|reserved_token_48|>",
64
+ "<|reserved_token_49|>",
65
+ "<|reserved_token_50|>",
66
+ "<|reserved_token_51|>",
67
+ "<|reserved_token_52|>",
68
+ "<|reserved_token_53|>",
69
+ "<|reserved_token_54|>",
70
+ "<|reserved_token_55|>",
71
+ "<|reserved_token_56|>",
72
+ "<|reserved_token_57|>",
73
+ "<|reserved_token_58|>",
74
+ "<|reserved_token_59|>",
75
+ "<|reserved_token_60|>",
76
+ "<|reserved_token_61|>",
77
+ "<|reserved_token_62|>",
78
+ "<|reserved_token_63|>",
79
+ "<|reserved_token_64|>",
80
+ "<|reserved_token_65|>",
81
+ "<|reserved_token_66|>",
82
+ "<|reserved_token_67|>",
83
+ "<|reserved_token_68|>",
84
+ "<|reserved_token_69|>",
85
+ "<|reserved_token_70|>",
86
+ "<|reserved_token_71|>",
87
+ "<|reserved_token_72|>",
88
+ "<|reserved_token_73|>",
89
+ "<|reserved_token_74|>",
90
+ "<|reserved_token_75|>",
91
+ "<|reserved_token_76|>",
92
+ "<|reserved_token_77|>",
93
+ "<|reserved_token_78|>",
94
+ "<|reserved_token_79|>",
95
+ "<|reserved_token_80|>",
96
+ "<|reserved_token_81|>",
97
+ "<|reserved_token_82|>",
98
+ "<|reserved_token_83|>",
99
+ "<|reserved_token_84|>",
100
+ "<|reserved_token_85|>",
101
+ "<|reserved_token_86|>",
102
+ "<|reserved_token_87|>",
103
+ "<|reserved_token_88|>",
104
+ "<|reserved_token_89|>",
105
+ "<|reserved_token_90|>",
106
+ "<|reserved_token_91|>",
107
+ "<|reserved_token_92|>",
108
+ "<|reserved_token_93|>",
109
+ "<|reserved_token_94|>",
110
+ "<|reserved_token_95|>",
111
+ "<|reserved_token_96|>",
112
+ "<|reserved_token_97|>",
113
+ "<|reserved_token_98|>",
114
+ "<|reserved_token_99|>",
115
+ "<|reserved_token_100|>",
116
+ "<|reserved_token_101|>",
117
+ "<|reserved_token_102|>",
118
+ "<|reserved_token_103|>",
119
+ "<|reserved_token_104|>",
120
+ "<|reserved_token_105|>",
121
+ "<|reserved_token_106|>",
122
+ "<|reserved_token_107|>",
123
+ "<|reserved_token_108|>",
124
+ "<|reserved_token_109|>",
125
+ "<|reserved_token_110|>",
126
+ "<|reserved_token_111|>",
127
+ "<|reserved_token_112|>",
128
+ "<|reserved_token_113|>",
129
+ "<|reserved_token_114|>",
130
+ "<|reserved_token_115|>",
131
+ "<|reserved_token_116|>",
132
+ "<|reserved_token_117|>",
133
+ "<|reserved_token_118|>",
134
+ "<|reserved_token_119|>",
135
+ "<|reserved_token_120|>",
136
+ "<|reserved_token_121|>",
137
+ "<|reserved_token_122|>",
138
+ "<|reserved_token_123|>",
139
+ "<|reserved_token_124|>",
140
+ "<|reserved_token_125|>",
141
+ "<|reserved_token_126|>",
142
+ "<|reserved_token_127|>",
143
+ "<|reserved_token_128|>",
144
+ "<|reserved_token_129|>",
145
+ "<|reserved_token_130|>",
146
+ "<|reserved_token_131|>",
147
+ "<|reserved_token_132|>",
148
+ "<|reserved_token_133|>",
149
+ "<|reserved_token_134|>",
150
+ "<|reserved_token_135|>",
151
+ "<|reserved_token_136|>",
152
+ "<|reserved_token_137|>",
153
+ "<|reserved_token_138|>",
154
+ "<|reserved_token_139|>",
155
+ "<|reserved_token_140|>",
156
+ "<|reserved_token_141|>",
157
+ "<|reserved_token_142|>",
158
+ "<|reserved_token_143|>",
159
+ "<|reserved_token_144|>",
160
+ "<|reserved_token_145|>",
161
+ "<|reserved_token_146|>",
162
+ "<|reserved_token_147|>",
163
+ "<|reserved_token_148|>",
164
+ "<|reserved_token_149|>",
165
+ "<|reserved_token_150|>",
166
+ "<|reserved_token_151|>",
167
+ "<|reserved_token_152|>",
168
+ "<|reserved_token_153|>",
169
+ "<|reserved_token_154|>",
170
+ "<|reserved_token_155|>",
171
+ "<|reserved_token_156|>",
172
+ "<|reserved_token_157|>",
173
+ "<|reserved_token_158|>",
174
+ "<|reserved_token_159|>",
175
+ "<|reserved_token_160|>",
176
+ "<|reserved_token_161|>",
177
+ "<|reserved_token_162|>",
178
+ "<|reserved_token_163|>",
179
+ "<|reserved_token_164|>",
180
+ "<|reserved_token_165|>",
181
+ "<|reserved_token_166|>",
182
+ "<|reserved_token_167|>",
183
+ "<|reserved_token_168|>",
184
+ "<|reserved_token_169|>",
185
+ "<|reserved_token_170|>",
186
+ "<|reserved_token_171|>",
187
+ "<|reserved_token_172|>",
188
+ "<|reserved_token_173|>",
189
+ "<|reserved_token_174|>",
190
+ "<|reserved_token_175|>",
191
+ "<|reserved_token_176|>",
192
+ "<|reserved_token_177|>",
193
+ "<|reserved_token_178|>",
194
+ "<|reserved_token_179|>",
195
+ "<|reserved_token_180|>",
196
+ "<|reserved_token_181|>",
197
+ "<|reserved_token_182|>",
198
+ "<|reserved_token_183|>",
199
+ "<|reserved_token_184|>",
200
+ "<|reserved_token_185|>",
201
+ "<|reserved_token_186|>",
202
+ "<|reserved_token_187|>",
203
+ "<|reserved_token_188|>",
204
+ "<|reserved_token_189|>",
205
+ "<|reserved_token_190|>",
206
+ "<|reserved_token_191|>",
207
+ "<|reserved_token_192|>",
208
+ "<|reserved_token_193|>",
209
+ "<|reserved_token_194|>",
210
+ "<|reserved_token_195|>",
211
+ "<|reserved_token_196|>",
212
+ "<|reserved_token_197|>",
213
+ "<|reserved_token_198|>",
214
+ "<|reserved_token_199|>",
215
+ "<|reserved_token_200|>",
216
+ "<|reserved_token_201|>",
217
+ "<|reserved_token_202|>",
218
+ "<|reserved_token_203|>",
219
+ "<|reserved_token_204|>",
220
+ "<|reserved_token_205|>",
221
+ "<|reserved_token_206|>",
222
+ "<|reserved_token_207|>",
223
+ "<|reserved_token_208|>",
224
+ "<|reserved_token_209|>",
225
+ "<|reserved_token_210|>",
226
+ "<|reserved_token_211|>",
227
+ "<|reserved_token_212|>",
228
+ "<|reserved_token_213|>",
229
+ "<|reserved_token_214|>",
230
+ "<|reserved_token_215|>",
231
+ "<|reserved_token_216|>",
232
+ "<|reserved_token_217|>",
233
+ "<|reserved_token_218|>",
234
+ "<|reserved_token_219|>",
235
+ "<|reserved_token_220|>",
236
+ "<|reserved_token_221|>",
237
+ "<|reserved_token_222|>",
238
+ "<|reserved_token_223|>",
239
+ "<|reserved_token_224|>",
240
+ "<|reserved_token_225|>",
241
+ "<|reserved_token_226|>",
242
+ "<|reserved_token_227|>",
243
+ "<|reserved_token_228|>",
244
+ "<|reserved_token_229|>",
245
+ "<|reserved_token_230|>",
246
+ "<|reserved_token_231|>",
247
+ "<|reserved_token_232|>",
248
+ "<|reserved_token_233|>",
249
+ "<|reserved_token_234|>",
250
+ "<|reserved_token_235|>",
251
+ "<|reserved_token_236|>",
252
+ "<|reserved_token_237|>",
253
+ "<|reserved_token_238|>",
254
+ "<|reserved_token_239|>",
255
+ "<|reserved_token_240|>",
256
+ "<|reserved_token_241|>",
257
+ "<|reserved_token_242|>",
258
+ "<|reserved_token_243|>",
259
+ "<|reserved_token_244|>",
260
+ "<|reserved_token_245|>",
261
+ "<|reserved_token_246|>",
262
+ "<|reserved_token_247|>",
263
+ "<|reserved_token_248|>",
264
+ "<|reserved_token_249|>",
265
+ "<|reserved_token_250|>",
266
+ "<|reserved_token_251|>",
267
+ "<|reserved_token_252|>",
268
+ "<|reserved_token_253|>",
269
+ "<|reserved_token_254|>",
270
+ "<|reserved_token_255|>",
271
+ "<|reserved_token_256|>",
272
+ "<|reserved_token_257|>",
273
+ "<|reserved_token_258|>",
274
+ "<|reserved_token_259|>",
275
+ "<|reserved_token_260|>",
276
+ "<|reserved_token_261|>",
277
+ "<|reserved_token_262|>",
278
+ "<|reserved_token_263|>",
279
+ "<|reserved_token_264|>",
280
+ "<|reserved_token_265|>",
281
+ "<|reserved_token_266|>",
282
+ "<|reserved_token_267|>",
283
+ "<|reserved_token_268|>",
284
+ "<|reserved_token_269|>",
285
+ "<|reserved_token_270|>",
286
+ "<|reserved_token_271|>",
287
+ "<|reserved_token_272|>",
288
+ "<|reserved_token_273|>",
289
+ "<|reserved_token_274|>",
290
+ "<|reserved_token_275|>",
291
+ "<|reserved_token_276|>",
292
+ "<|reserved_token_277|>",
293
+ "<|reserved_token_278|>",
294
+ "<|reserved_token_279|>",
295
+ "<|reserved_token_280|>",
296
+ "<|reserved_token_281|>",
297
+ "<|reserved_token_282|>",
298
+ "<|reserved_token_283|>",
299
+ "<|reserved_token_284|>",
300
+ "<|reserved_token_285|>",
301
+ "<|reserved_token_286|>",
302
+ "<|reserved_token_287|>",
303
+ "<|reserved_token_288|>",
304
+ "<|reserved_token_289|>",
305
+ "<|reserved_token_290|>",
306
+ "<|reserved_token_291|>",
307
+ "<|reserved_token_292|>",
308
+ "<|reserved_token_293|>",
309
+ "<|reserved_token_294|>",
310
+ "<|reserved_token_295|>",
311
+ "<|reserved_token_296|>",
312
+ "<|reserved_token_297|>",
313
+ "<|reserved_token_298|>",
314
+ "<|reserved_token_299|>",
315
+ "<|reserved_token_300|>",
316
+ "<|reserved_token_301|>",
317
+ "<|reserved_token_302|>",
318
+ "<|reserved_token_303|>",
319
+ "<|reserved_token_304|>",
320
+ "<|reserved_token_305|>",
321
+ "<|reserved_token_306|>",
322
+ "<|reserved_token_307|>",
323
+ "<|reserved_token_308|>",
324
+ "<|reserved_token_309|>",
325
+ "<|reserved_token_310|>",
326
+ "<|reserved_token_311|>",
327
+ "<|reserved_token_312|>",
328
+ "<|reserved_token_313|>",
329
+ "<|reserved_token_314|>",
330
+ "<|reserved_token_315|>",
331
+ "<|reserved_token_316|>",
332
+ "<|reserved_token_317|>",
333
+ "<|reserved_token_318|>",
334
+ "<|reserved_token_319|>",
335
+ "<|reserved_token_320|>",
336
+ "<|reserved_token_321|>",
337
+ "<|reserved_token_322|>",
338
+ "<|reserved_token_323|>",
339
+ "<|reserved_token_324|>",
340
+ "<|reserved_token_325|>",
341
+ "<|reserved_token_326|>",
342
+ "<|reserved_token_327|>",
343
+ "<|reserved_token_328|>",
344
+ "<|reserved_token_329|>",
345
+ "<|reserved_token_330|>",
346
+ "<|reserved_token_331|>",
347
+ "<|reserved_token_332|>",
348
+ "<|reserved_token_333|>",
349
+ "<|reserved_token_334|>",
350
+ "<|reserved_token_335|>",
351
+ "<|reserved_token_336|>",
352
+ "<|reserved_token_337|>",
353
+ "<|reserved_token_338|>",
354
+ "<|reserved_token_339|>",
355
+ "<|reserved_token_340|>",
356
+ "<|reserved_token_341|>",
357
+ "<|reserved_token_342|>",
358
+ "<|reserved_token_343|>",
359
+ "<|reserved_token_344|>",
360
+ "<|reserved_token_345|>",
361
+ "<|reserved_token_346|>",
362
+ "<|reserved_token_347|>",
363
+ "<|reserved_token_348|>",
364
+ "<|reserved_token_349|>",
365
+ "<|reserved_token_350|>",
366
+ "<|reserved_token_351|>",
367
+ "<|reserved_token_352|>",
368
+ "<|reserved_token_353|>",
369
+ "<|reserved_token_354|>",
370
+ "<|reserved_token_355|>",
371
+ "<|reserved_token_356|>",
372
+ "<|reserved_token_357|>",
373
+ "<|reserved_token_358|>",
374
+ "<|reserved_token_359|>",
375
+ "<|reserved_token_360|>",
376
+ "<|reserved_token_361|>",
377
+ "<|reserved_token_362|>",
378
+ "<|reserved_token_363|>",
379
+ "<|reserved_token_364|>",
380
+ "<|reserved_token_365|>",
381
+ "<|reserved_token_366|>",
382
+ "<|reserved_token_367|>",
383
+ "<|reserved_token_368|>",
384
+ "<|reserved_token_369|>",
385
+ "<|reserved_token_370|>",
386
+ "<|reserved_token_371|>",
387
+ "<|reserved_token_372|>",
388
+ "<|reserved_token_373|>",
389
+ "<|reserved_token_374|>",
390
+ "<|reserved_token_375|>",
391
+ "<|reserved_token_376|>",
392
+ "<|reserved_token_377|>",
393
+ "<|reserved_token_378|>",
394
+ "<|reserved_token_379|>",
395
+ "<|reserved_token_380|>",
396
+ "<|reserved_token_381|>",
397
+ "<|reserved_token_382|>",
398
+ "<|reserved_token_383|>",
399
+ "<|reserved_token_384|>",
400
+ "<|reserved_token_385|>",
401
+ "<|reserved_token_386|>",
402
+ "<|reserved_token_387|>",
403
+ "<|reserved_token_388|>",
404
+ "<|reserved_token_389|>",
405
+ "<|reserved_token_390|>",
406
+ "<|reserved_token_391|>",
407
+ "<|reserved_token_392|>",
408
+ "<|reserved_token_393|>",
409
+ "<|reserved_token_394|>",
410
+ "<|reserved_token_395|>",
411
+ "<|reserved_token_396|>",
412
+ "<|reserved_token_397|>",
413
+ "<|reserved_token_398|>",
414
+ "<|reserved_token_399|>",
415
+ "<|reserved_token_400|>",
416
+ "<|reserved_token_401|>",
417
+ "<|reserved_token_402|>",
418
+ "<|reserved_token_403|>",
419
+ "<|reserved_token_404|>"
420
+ ],
421
+ "bos_token": "[BOS]",
422
+ "eos_token": "[EOS]",
423
+ "pad_token": "<|reserved_token_406|>",
424
+ "unk_token": "<|reserved_token_405|>"
425
+ }
tiktoken.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b2b1b8dfb5cc5f024bafc373121c6aba3f66f9a5a0269e243470a1de16a33186
3
+ size 2561218
tokenization_kimia.py ADDED
@@ -0,0 +1,335 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
2
+
3
+ """Megatron tokenizers."""
4
+ from transformers.tokenization_utils import PreTrainedTokenizer
5
+ from typing import Union
6
+ from typing import (
7
+ AbstractSet,
8
+ cast,
9
+ Collection,
10
+ Dict,
11
+ Iterator,
12
+ List,
13
+ Literal,
14
+ Sequence,
15
+ Union,
16
+ Optional,
17
+ )
18
+ from tiktoken.load import load_tiktoken_bpe
19
+ import tiktoken
20
+ from pathlib import Path
21
+ import os
22
+ import logging
23
+ from tokenizers import AddedToken
24
+
25
+ logger = logging.getLogger(__name__)
26
+ VOCAB_FILES_NAMES = {"vocab_file": "tiktoken.model"}
27
+
28
+
29
+ class TikTokenTokenizer(PreTrainedTokenizer):
30
+ """
31
+ Tokenizing and encoding/decoding text using the Tiktoken tokenizer.
32
+ """
33
+
34
+ special_tokens: Dict[str, int]
35
+
36
+ num_reserved_special_tokens = 293 + 128
37
+
38
+ pat_str = "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?\\p{L}+|\\p{N}| ?[^\\s\\p{L}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+"
39
+
40
+ vocab_files_names = VOCAB_FILES_NAMES
41
+
42
+ def __init__(
43
+ self,
44
+ vocab_file,
45
+ bos_token: Union[str, AddedToken] = "[BOS]",
46
+ eos_token: Union[str, AddedToken] = "[EOS]",
47
+ unk_token: Union[str, AddedToken] = "[UNK]",
48
+ pad_token: Union[str, AddedToken] = "[PAD]",
49
+ additional_special_tokens: Optional[List[str]] = None,
50
+ added_tokens_decoder: Optional[dict] = None,
51
+ **kwargs,
52
+ ):
53
+ """
54
+ Initializes the Tokenizer with a Tiktoken model.
55
+
56
+ Args:
57
+ model_path (str): The path to the Tiktoken model file.
58
+ """
59
+ assert os.path.isfile(vocab_file), vocab_file
60
+
61
+ mergeable_ranks = load_tiktoken_bpe(vocab_file)
62
+ num_base_tokens = len(mergeable_ranks)
63
+
64
+ used_special_tokens = [
65
+ "[BOS]",
66
+ "[EOS]",
67
+ "<|im_msg_end|>", # 0
68
+ "<|im_user_msg_start|>", # 1
69
+ "<|im_assistant_msg_start|>", # 2
70
+ "<|reserved_token_0|>", # 3
71
+ "<|reserved_token_1|>",
72
+ "<|reserved_token_2|>",
73
+ "<|reserved_token_3|>", # 4
74
+ "[EOT]",
75
+ "<|reserved_token_4|>", # 5
76
+ "<|reserved_token_5|>", # 6
77
+ "<|reserved_token_6|>", # 7
78
+ "<|reserved_token_7|>", # 8
79
+ "<|reserved_token_8|>", # 9
80
+ "<|reserved_token_9|>", # 10
81
+ "<|reserved_token_10|>", # 11
82
+ "<|reserved_token_11|>", # 12
83
+ "<|im_media_begin|>", # 13
84
+ "<|reserved_token_12|>", # 14
85
+ "<|im_media_end|>", # 15
86
+ "<|reserved_token_13|>", # 16
87
+ "<|reserved_token_14|>", # 17
88
+ "<|im_kimia_text_blank|>", # 18
89
+ "<|im_kimia_text_eos|>", # 19
90
+ "<|reserved_token_15|>", # 20
91
+ "<|reserved_token_16|>", # 21
92
+ "<|im_kimia_user_msg_start|>", # 22
93
+ "<|im_kimia_assistant_msg_start|>", # 23
94
+ "<|reserved_token_17|>", # 24
95
+ "<|reserved_token_18|>", # 25
96
+ "<|reserved_token_19|>", # 26
97
+ "<|im_kimia_speech_ct_id|>", # 27
98
+ "<|im_kimia_speech_ctd_id|>", # 28
99
+ ]
100
+ autoset_special_tokens = [
101
+ f"<|reserved_token_{i}|>"
102
+ for i in range(
103
+ 20, self.num_reserved_special_tokens - len(used_special_tokens) + 20
104
+ )
105
+ ]
106
+ special_tokens = used_special_tokens + autoset_special_tokens
107
+ self.special_tokens = {
108
+ token: num_base_tokens + i for i, token in enumerate(special_tokens)
109
+ }
110
+ self.model = tiktoken.Encoding(
111
+ name=Path(vocab_file).name,
112
+ pat_str=self.pat_str,
113
+ mergeable_ranks=mergeable_ranks,
114
+ special_tokens=self.special_tokens,
115
+ )
116
+ logger.info(f"Reloaded tiktoken model from {vocab_file}")
117
+
118
+ self.n_words: int = self.model.n_vocab
119
+ # BOS / EOS token IDs
120
+ self.bos_token = "[BOS]"
121
+ self.bos_id: int = self.special_tokens["[BOS]"]
122
+ self.eos_token = "[EOS]"
123
+ self.eos_id: int = self.special_tokens["[EOS]"]
124
+
125
+ # use last speical token as pad token, the last - 1 is unk_token
126
+ self.pad_token: str = special_tokens[-1]
127
+ self.pad_id: int = self.special_tokens[self.pad_token]
128
+
129
+ self.unk_token: str = special_tokens[-2]
130
+ self.unk_id: int = self.special_tokens[self.pad_token]
131
+
132
+ self.stop_tokens = {
133
+ self.special_tokens["[EOS]"],
134
+ self.special_tokens["[EOT]"],
135
+ }
136
+
137
+ logger.info(
138
+ f"#words: {self.n_words} - BOS ID: {self.bos_id} - EOS ID: {self.eos_id}"
139
+ )
140
+
141
+ def encode(
142
+ self,
143
+ s: str,
144
+ *,
145
+ bos: bool,
146
+ eos: bool,
147
+ allowed_special: Union[Literal["all"], AbstractSet[str]] = set(),
148
+ disallowed_special: Union[Literal["all"], Collection[str]] = (),
149
+ ) -> List[int]:
150
+ """
151
+ Encodes a string into a list of token IDs.
152
+
153
+ Args:
154
+ s (str): The input string to be encoded.
155
+ bos (bool): Whether to prepend the beginning-of-sequence token.
156
+ eos (bool): Whether to append the end-of-sequence token.
157
+ allowed_tokens ("all"|set[str]): allowed special tokens in string
158
+ disallowed_tokens ("all"|set[str]): special tokens that raise an error when in string
159
+
160
+ Returns:
161
+ list[int]: A list of token IDs.
162
+
163
+ By default, setting disallowed_special=() encodes a string by ignoring
164
+ special tokens. Specifically:
165
+ - Setting `disallowed_special` to () will cause all text corresponding
166
+ to special tokens to be encoded as natural text (insteading of raising
167
+ an error).
168
+ - Setting `allowed_special` to "all" will treat all text corresponding
169
+ to special tokens to be encoded as special tokens.
170
+ """
171
+ assert type(s) is str
172
+
173
+ # The tiktoken tokenizer can handle <=400k chars without
174
+ # pyo3_runtime.PanicException.
175
+ TIKTOKEN_MAX_ENCODE_CHARS = 400_000
176
+
177
+ # https://github.com/openai/tiktoken/issues/195
178
+ # Here we iterate over subsequences and split if we exceed the limit
179
+ # of max consecutive non-whitespace or whitespace characters.
180
+ MAX_NO_WHITESPACES_CHARS = 25_000
181
+
182
+ substrs = (
183
+ substr
184
+ for i in range(0, len(s), TIKTOKEN_MAX_ENCODE_CHARS)
185
+ for substr in self._split_whitespaces_or_nonwhitespaces(
186
+ s[i : i + TIKTOKEN_MAX_ENCODE_CHARS], MAX_NO_WHITESPACES_CHARS
187
+ )
188
+ )
189
+ t: List[int] = []
190
+ for substr in substrs:
191
+ t.extend(
192
+ self.model.encode(
193
+ substr,
194
+ allowed_special=allowed_special,
195
+ disallowed_special=disallowed_special,
196
+ )
197
+ )
198
+ if bos:
199
+ t.insert(0, self.bos_id)
200
+ if eos:
201
+ t.append(self.eos_id)
202
+ return t
203
+
204
+ def decode(self, t: Sequence[int]) -> str:
205
+ """
206
+ Decodes a list of token IDs into a string.
207
+
208
+ Args:
209
+ t (List[int]): The list of token IDs to be decoded.
210
+
211
+ Returns:
212
+ str: The decoded string.
213
+ """
214
+ # Typecast is safe here. Tiktoken doesn't do anything list-related with the sequence.
215
+ return self.model.decode(cast(List[int], t))
216
+
217
+ @staticmethod
218
+ def _split_whitespaces_or_nonwhitespaces(
219
+ s: str, max_consecutive_slice_len: int
220
+ ) -> Iterator[str]:
221
+ """
222
+ Splits the string `s` so that each substring contains no more than `max_consecutive_slice_len`
223
+ consecutive whitespaces or consecutive non-whitespaces.
224
+ """
225
+ current_slice_len = 0
226
+ current_slice_is_space = s[0].isspace() if len(s) > 0 else False
227
+ slice_start = 0
228
+
229
+ for i in range(len(s)):
230
+ is_now_space = s[i].isspace()
231
+
232
+ if current_slice_is_space ^ is_now_space:
233
+ current_slice_len = 1
234
+ current_slice_is_space = is_now_space
235
+ else:
236
+ current_slice_len += 1
237
+ if current_slice_len > max_consecutive_slice_len:
238
+ yield s[slice_start:i]
239
+ slice_start = i
240
+ current_slice_len = 1
241
+ yield s[slice_start:]
242
+
243
+ """ ----- Below are the abstract methods required by megatron ----- """
244
+
245
+ @property
246
+ def vocab_size(self):
247
+ return self.n_words
248
+
249
+ @property
250
+ def vocab(self):
251
+ if hasattr(self, "str_vocab"):
252
+ return self.str_vocab
253
+ self.str_vocab = {}
254
+
255
+ # convert mergeable_ranks from bytes to string
256
+ utf8_num, unicode_num = 0, 0
257
+ for byte_key, index in self.model._mergeable_ranks.items():
258
+ try:
259
+ str_key = byte_key.decode("utf-8")
260
+ utf8_num += 1
261
+ except UnicodeDecodeError:
262
+ # use backslashreplace so we can get num vocab different tokens
263
+ # see: https://docs.python.org/3/howto/unicode.html
264
+ # this vocab is only used for offline processing, so this is fine
265
+ str_key = byte_key.decode("utf-8", "backslashreplace") + "_unicode_"
266
+ unicode_num += 1
267
+
268
+ self.str_vocab[str_key] = index
269
+ logger.info(f"num utf8: {utf8_num}, num unicode: {unicode_num}")
270
+
271
+ # add all special tokens to the dictionary
272
+ self.str_vocab.update(self.model._special_tokens)
273
+
274
+ assert len(self.str_vocab) == self.vocab_size
275
+ return self.str_vocab
276
+
277
+ @property
278
+ def inv_vocab(self):
279
+ return {v: k for k, v in self.vocab.items()}
280
+
281
+ def tokenize(self, text, eos=True):
282
+ # BOS: always add bos token
283
+ # EOS:
284
+ # Most cases should be true when we are tokenizing a full sequence
285
+ # Only setting to false when we are running a inference
286
+ return self.encode(text, bos=True, eos=eos)
287
+
288
+ def detokenize(self, tokens):
289
+ # convert tensor to list if needed...
290
+ if not isinstance(tokens, list):
291
+ tokens = tokens.tolist()
292
+ return self.decode(tokens)
293
+
294
+ @property
295
+ def eod(self):
296
+ return self.eos_id
297
+
298
+ def bod(self):
299
+ return self.bos_id
300
+
301
+ @property
302
+ def msk_start_id(self):
303
+ return self.msk_start
304
+
305
+ @property
306
+ def msk_end_id(self):
307
+ return self.msk_end
308
+
309
+ def _get_index_2_bytes(self):
310
+ if hasattr(self, "index_2_bytes"):
311
+ return self.index_2_bytes
312
+
313
+ # use array rather than dict for faster access
314
+ self.index_2_bytes = [0] * self.model.n_vocab
315
+ for byte_key, index in self.model._mergeable_ranks.items():
316
+ self.index_2_bytes[index] = len(byte_key)
317
+
318
+ for _, index in self.model._special_tokens.items():
319
+ # in total we have 256 special tokens, 2^8 = 256
320
+ # so the num of bytes of each token is only 1
321
+ self.index_2_bytes[index] = 1
322
+
323
+ return self.index_2_bytes
324
+
325
+ def get_array_bytes(self, array):
326
+ index_2_bytes = self._get_index_2_bytes()
327
+ return sum(index_2_bytes[i] for i in array)
328
+
329
+ @property
330
+ def eos_token_id(self):
331
+ return self.eos_id
332
+
333
+ @property
334
+ def pad_token_id(self):
335
+ return self.pad_id
tokenizer_config.json ADDED
The diff for this file is too large to render. See raw diff
 
vocoder/config.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "resblock": "1",
3
+ "num_gpus": 8,
4
+ "batch_size": 32,
5
+ "learning_rate": 0.0001,
6
+ "adam_b1": 0.8,
7
+ "adam_b2": 0.99,
8
+ "lr_decay": 0.9999996,
9
+ "seed": 1235,
10
+
11
+ "upsample_rates": [5, 2, 2, 2, 2, 3, 2],
12
+ "upsample_kernel_sizes": [9, 4, 4, 4, 4, 5, 4],
13
+ "upsample_initial_channel": 2048,
14
+ "resblock_kernel_sizes": [3,5, 7,11],
15
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5], [1,3,5]],
16
+
17
+ "use_tanh_at_final": false,
18
+ "use_bias_at_final": false,
19
+
20
+ "activation": "snakebeta",
21
+ "snake_logscale": true,
22
+
23
+ "use_cqtd_instead_of_mrd": true,
24
+ "cqtd_filters": 128,
25
+ "cqtd_max_filters": 1024,
26
+ "cqtd_filters_scale": 1,
27
+ "cqtd_dilations": [1, 2, 4],
28
+ "cqtd_hop_lengths": [512, 256, 256],
29
+ "cqtd_n_octaves": [9, 9, 9],
30
+ "cqtd_bins_per_octaves": [24, 36, 48],
31
+
32
+ "mpd_reshapes": [2, 3, 5, 7, 11],
33
+ "use_spectral_norm": false,
34
+ "discriminator_channel_mult": 1,
35
+
36
+ "use_multiscale_melloss": true,
37
+ "lambda_melloss": 15,
38
+
39
+ "clip_grad_norm": 500,
40
+
41
+ "segment_size": 86400,
42
+
43
+ "num_mels": 80,
44
+ "num_freq": 1025,
45
+ "n_fft": 1024,
46
+ "hop_size": 480,
47
+ "win_size": 1024,
48
+
49
+ "sampling_rate": 24000,
50
+
51
+ "fmin": 0,
52
+ "fmax": null,
53
+ "fmax_for_loss": null,
54
+
55
+ "num_workers": 4,
56
+
57
+ "dist_config": {
58
+ "dist_backend": "nccl",
59
+ "dist_url": "tcp://localhost:5432",
60
+ "world_size": 1
61
+ }
62
+ }
whisper-large-v3/README.md ADDED
@@ -0,0 +1,538 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ - zh
5
+ - de
6
+ - es
7
+ - ru
8
+ - ko
9
+ - fr
10
+ - ja
11
+ - pt
12
+ - tr
13
+ - pl
14
+ - ca
15
+ - nl
16
+ - ar
17
+ - sv
18
+ - it
19
+ - id
20
+ - hi
21
+ - fi
22
+ - vi
23
+ - he
24
+ - uk
25
+ - el
26
+ - ms
27
+ - cs
28
+ - ro
29
+ - da
30
+ - hu
31
+ - ta
32
+ - no
33
+ - th
34
+ - ur
35
+ - hr
36
+ - bg
37
+ - lt
38
+ - la
39
+ - mi
40
+ - ml
41
+ - cy
42
+ - sk
43
+ - te
44
+ - fa
45
+ - lv
46
+ - bn
47
+ - sr
48
+ - az
49
+ - sl
50
+ - kn
51
+ - et
52
+ - mk
53
+ - br
54
+ - eu
55
+ - is
56
+ - hy
57
+ - ne
58
+ - mn
59
+ - bs
60
+ - kk
61
+ - sq
62
+ - sw
63
+ - gl
64
+ - mr
65
+ - pa
66
+ - si
67
+ - km
68
+ - sn
69
+ - yo
70
+ - so
71
+ - af
72
+ - oc
73
+ - ka
74
+ - be
75
+ - tg
76
+ - sd
77
+ - gu
78
+ - am
79
+ - yi
80
+ - lo
81
+ - uz
82
+ - fo
83
+ - ht
84
+ - ps
85
+ - tk
86
+ - nn
87
+ - mt
88
+ - sa
89
+ - lb
90
+ - my
91
+ - bo
92
+ - tl
93
+ - mg
94
+ - as
95
+ - tt
96
+ - haw
97
+ - ln
98
+ - ha
99
+ - ba
100
+ - jw
101
+ - su
102
+ tags:
103
+ - audio
104
+ - automatic-speech-recognition
105
+ - hf-asr-leaderboard
106
+ widget:
107
+ - example_title: Librispeech sample 1
108
+ src: https://cdn-media.huggingface.co/speech_samples/sample1.flac
109
+ - example_title: Librispeech sample 2
110
+ src: https://cdn-media.huggingface.co/speech_samples/sample2.flac
111
+ pipeline_tag: automatic-speech-recognition
112
+ license: apache-2.0
113
+ ---
114
+
115
+ # Whisper
116
+
117
+ Whisper is a state-of-the-art model for automatic speech recognition (ASR) and speech translation, proposed in the paper
118
+ [Robust Speech Recognition via Large-Scale Weak Supervision](https://huggingface.co/papers/2212.04356) by Alec Radford
119
+ et al. from OpenAI. Trained on >5M hours of labeled data, Whisper demonstrates a strong ability to generalise to many
120
+ datasets and domains in a zero-shot setting.
121
+
122
+ Whisper large-v3 has the same architecture as the previous [large](https://huggingface.co/openai/whisper-large) and [large-v2](https://huggingface.co/openai/whisper-large-v2)
123
+ models, except for the following minor differences:
124
+
125
+ 1. The spectrogram input uses 128 Mel frequency bins instead of 80
126
+ 2. A new language token for Cantonese
127
+
128
+ The Whisper large-v3 model was trained on 1 million hours of weakly labeled audio and 4 million hours of pseudo-labeled
129
+ audio collected using Whisper [large-v2](https://huggingface.co/openai/whisper-large-v2) . The model was trained for 2.0 epochs over this mixture dataset.
130
+
131
+ The large-v3 model shows improved performance over a wide variety of languages, showing 10% to 20% reduction of errors
132
+ compared to Whisper [large-v2](https://huggingface.co/openai/whisper-large-v2) . For more details on the different checkpoints available, refer to the section [Model details](#model-details).
133
+
134
+ **Disclaimer**: Content for this model card has partly been written by the 🤗 Hugging Face team, and partly copied and
135
+ pasted from the original model card.
136
+
137
+ ## Usage
138
+
139
+ Whisper large-v3 is supported in Hugging Face 🤗 Transformers. To run the model, first install the Transformers
140
+ library. For this example, we'll also install 🤗 Datasets to load toy audio dataset from the Hugging Face Hub, and
141
+ 🤗 Accelerate to reduce the model loading time:
142
+
143
+ ```bash
144
+ pip install --upgrade pip
145
+ pip install --upgrade transformers datasets[audio] accelerate
146
+ ```
147
+
148
+ The model can be used with the [`pipeline`](https://huggingface.co/docs/transformers/main_classes/pipelines#transformers.AutomaticSpeechRecognitionPipeline)
149
+ class to transcribe audios of arbitrary length:
150
+
151
+ ```python
152
+ import torch
153
+ from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
154
+ from datasets import load_dataset
155
+
156
+
157
+ device = "cuda:0" if torch.cuda.is_available() else "cpu"
158
+ torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
159
+
160
+ model_id = "openai/whisper-large-v3"
161
+
162
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(
163
+ model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
164
+ )
165
+ model.to(device)
166
+
167
+ processor = AutoProcessor.from_pretrained(model_id)
168
+
169
+ pipe = pipeline(
170
+ "automatic-speech-recognition",
171
+ model=model,
172
+ tokenizer=processor.tokenizer,
173
+ feature_extractor=processor.feature_extractor,
174
+ torch_dtype=torch_dtype,
175
+ device=device,
176
+ )
177
+
178
+ dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
179
+ sample = dataset[0]["audio"]
180
+
181
+ result = pipe(sample)
182
+ print(result["text"])
183
+ ```
184
+
185
+ To transcribe a local audio file, simply pass the path to your audio file when you call the pipeline:
186
+
187
+ ```python
188
+ result = pipe("audio.mp3")
189
+ ```
190
+
191
+ Multiple audio files can be transcribed in parallel by specifying them as a list and setting the `batch_size` parameter:
192
+
193
+ ```python
194
+ result = pipe(["audio_1.mp3", "audio_2.mp3"], batch_size=2)
195
+ ```
196
+
197
+ Transformers is compatible with all Whisper decoding strategies, such as temperature fallback and condition on previous
198
+ tokens. The following example demonstrates how to enable these heuristics:
199
+
200
+ ```python
201
+ generate_kwargs = {
202
+ "max_new_tokens": 448,
203
+ "num_beams": 1,
204
+ "condition_on_prev_tokens": False,
205
+ "compression_ratio_threshold": 1.35, # zlib compression ratio threshold (in token space)
206
+ "temperature": (0.0, 0.2, 0.4, 0.6, 0.8, 1.0),
207
+ "logprob_threshold": -1.0,
208
+ "no_speech_threshold": 0.6,
209
+ "return_timestamps": True,
210
+ }
211
+
212
+ result = pipe(sample, generate_kwargs=generate_kwargs)
213
+ ```
214
+
215
+ Whisper predicts the language of the source audio automatically. If the source audio language is known *a-priori*, it
216
+ can be passed as an argument to the pipeline:
217
+
218
+ ```python
219
+ result = pipe(sample, generate_kwargs={"language": "english"})
220
+ ```
221
+
222
+ By default, Whisper performs the task of *speech transcription*, where the source audio language is the same as the target
223
+ text language. To perform *speech translation*, where the target text is in English, set the task to `"translate"`:
224
+
225
+ ```python
226
+ result = pipe(sample, generate_kwargs={"task": "translate"})
227
+ ```
228
+
229
+ Finally, the model can be made to predict timestamps. For sentence-level timestamps, pass the `return_timestamps` argument:
230
+
231
+ ```python
232
+ result = pipe(sample, return_timestamps=True)
233
+ print(result["chunks"])
234
+ ```
235
+
236
+ And for word-level timestamps:
237
+
238
+ ```python
239
+ result = pipe(sample, return_timestamps="word")
240
+ print(result["chunks"])
241
+ ```
242
+
243
+ The above arguments can be used in isolation or in combination. For example, to perform the task of speech transcription
244
+ where the source audio is in French, and we want to return sentence-level timestamps, the following can be used:
245
+
246
+ ```python
247
+ result = pipe(sample, return_timestamps=True, generate_kwargs={"language": "french", "task": "translate"})
248
+ print(result["chunks"])
249
+ ```
250
+
251
+ <details>
252
+
253
+ <summary> For more control over the generation parameters, use the model + processor API directly: </summary>
254
+
255
+ ```python
256
+ import torch
257
+ from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
258
+ from datasets import Audio, load_dataset
259
+
260
+
261
+ device = "cuda:0" if torch.cuda.is_available() else "cpu"
262
+ torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
263
+
264
+ model_id = "openai/whisper-large-v3"
265
+
266
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(
267
+ model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True
268
+ )
269
+ model.to(device)
270
+
271
+ processor = AutoProcessor.from_pretrained(model_id)
272
+
273
+ dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
274
+ dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))
275
+ sample = dataset[0]["audio"]
276
+
277
+ inputs = processor(
278
+ sample["array"],
279
+ sampling_rate=sample["sampling_rate"],
280
+ return_tensors="pt",
281
+ truncation=False,
282
+ padding="longest",
283
+ return_attention_mask=True,
284
+ )
285
+ inputs = inputs.to(device, dtype=torch_dtype)
286
+
287
+ gen_kwargs = {
288
+ "max_new_tokens": 448,
289
+ "num_beams": 1,
290
+ "condition_on_prev_tokens": False,
291
+ "compression_ratio_threshold": 1.35, # zlib compression ratio threshold (in token space)
292
+ "temperature": (0.0, 0.2, 0.4, 0.6, 0.8, 1.0),
293
+ "logprob_threshold": -1.0,
294
+ "no_speech_threshold": 0.6,
295
+ "return_timestamps": True,
296
+ }
297
+
298
+ pred_ids = model.generate(**inputs, **gen_kwargs)
299
+ pred_text = processor.batch_decode(pred_ids, skip_special_tokens=True, decode_with_timestamps=False)
300
+
301
+ print(pred_text)
302
+ ```
303
+
304
+ </details>
305
+
306
+ ## Additional Speed & Memory Improvements
307
+
308
+ You can apply additional speed and memory improvements to Whisper to further reduce the inference speed and VRAM
309
+ requirements.
310
+
311
+ ### Chunked Long-Form
312
+
313
+ Whisper has a receptive field of 30-seconds. To transcribe audios longer than this, one of two long-form algorithms are
314
+ required:
315
+ 1. **Sequential:** uses a "sliding window" for buffered inference, transcribing 30-second slices one after the other
316
+ 2. **Chunked:** splits long audio files into shorter ones (with a small overlap between segments), transcribes each segment independently, and stitches the resulting transcriptions at the boundaries
317
+
318
+ The sequential long-form algorithm should be used in either of the following scenarios:
319
+ 1. Transcription accuracy is the most important factor, and speed is less of a consideration
320
+ 2. You are transcribing **batches** of long audio files, in which case the latency of sequential is comparable to chunked, while being up to 0.5% WER more accurate
321
+
322
+ Conversely, the chunked algorithm should be used when:
323
+ 1. Transcription speed is the most important factor
324
+ 2. You are transcribing a **single** long audio file
325
+
326
+ By default, Transformers uses the sequential algorithm. To enable the chunked algorithm, pass the `chunk_length_s`
327
+ parameter to the `pipeline`. For large-v3, a chunk length of 30-seconds is optimal. To activate batching over long
328
+ audio files, pass the argument `batch_size`:
329
+
330
+ ```python
331
+ import torch
332
+ from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
333
+ from datasets import load_dataset
334
+
335
+
336
+ device = "cuda:0" if torch.cuda.is_available() else "cpu"
337
+ torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
338
+
339
+ model_id = "openai/whisper-large-v3"
340
+
341
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(
342
+ model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True
343
+ )
344
+ model.to(device)
345
+
346
+ processor = AutoProcessor.from_pretrained(model_id)
347
+
348
+ pipe = pipeline(
349
+ "automatic-speech-recognition",
350
+ model=model,
351
+ tokenizer=processor.tokenizer,
352
+ feature_extractor=processor.feature_extractor,
353
+ chunk_length_s=30,
354
+ batch_size=16, # batch size for inference - set based on your device
355
+ torch_dtype=torch_dtype,
356
+ device=device,
357
+ )
358
+
359
+ dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
360
+ sample = dataset[0]["audio"]
361
+
362
+ result = pipe(sample)
363
+ print(result["text"])
364
+ ```
365
+
366
+ #### Torch compile
367
+
368
+ The Whisper forward pass is compatible with [`torch.compile`](https://pytorch.org/docs/stable/generated/torch.compile.html)
369
+ for 4.5x speed-ups.
370
+
371
+ **Note:** `torch.compile` is currently not compatible with the Chunked long-form algorithm or Flash Attention 2 ⚠️
372
+
373
+ ```python
374
+ import torch
375
+ from torch.nn.attention import SDPBackend, sdpa_kernel
376
+ from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
377
+ from datasets import load_dataset
378
+ from tqdm import tqdm
379
+
380
+ torch.set_float32_matmul_precision("high")
381
+
382
+ device = "cuda:0" if torch.cuda.is_available() else "cpu"
383
+ torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
384
+
385
+ model_id = "openai/whisper-large-v3"
386
+
387
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(
388
+ model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True
389
+ ).to(device)
390
+
391
+ # Enable static cache and compile the forward pass
392
+ model.generation_config.cache_implementation = "static"
393
+ model.generation_config.max_new_tokens = 256
394
+ model.forward = torch.compile(model.forward, mode="reduce-overhead", fullgraph=True)
395
+
396
+ processor = AutoProcessor.from_pretrained(model_id)
397
+
398
+ pipe = pipeline(
399
+ "automatic-speech-recognition",
400
+ model=model,
401
+ tokenizer=processor.tokenizer,
402
+ feature_extractor=processor.feature_extractor,
403
+ torch_dtype=torch_dtype,
404
+ device=device,
405
+ )
406
+
407
+ dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
408
+ sample = dataset[0]["audio"]
409
+
410
+ # 2 warmup steps
411
+ for _ in tqdm(range(2), desc="Warm-up step"):
412
+ with sdpa_kernel(SDPBackend.MATH):
413
+ result = pipe(sample.copy(), generate_kwargs={"min_new_tokens": 256, "max_new_tokens": 256})
414
+
415
+ # fast run
416
+ with sdpa_kernel(SDPBackend.MATH):
417
+ result = pipe(sample.copy())
418
+
419
+ print(result["text"])
420
+ ```
421
+
422
+ #### Flash Attention 2
423
+
424
+ We recommend using [Flash-Attention 2](https://huggingface.co/docs/transformers/main/en/perf_infer_gpu_one#flashattention-2) if your GPU supports it and you are not using [torch.compile](#torch-compile).
425
+ To do so, first install [Flash Attention](https://github.com/Dao-AILab/flash-attention):
426
+
427
+ ```
428
+ pip install flash-attn --no-build-isolation
429
+ ```
430
+
431
+ Then pass `attn_implementation="flash_attention_2"` to `from_pretrained`:
432
+
433
+ ```python
434
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, attn_implementation="flash_attention_2")
435
+ ```
436
+
437
+ #### Torch Scale-Product-Attention (SDPA)
438
+
439
+ If your GPU does not support Flash Attention, we recommend making use of PyTorch [scaled dot-product attention (SDPA)](https://pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html).
440
+ This attention implementation is activated **by default** for PyTorch versions 2.1.1 or greater. To check
441
+ whether you have a compatible PyTorch version, run the following Python code snippet:
442
+
443
+ ```python
444
+ from transformers.utils import is_torch_sdpa_available
445
+
446
+ print(is_torch_sdpa_available())
447
+ ```
448
+
449
+ If the above returns `True`, you have a valid version of PyTorch installed and SDPA is activated by default. If it
450
+ returns `False`, you need to upgrade your PyTorch version according to the [official instructions](https://pytorch.org/get-started/locally/)
451
+
452
+ Once a valid PyTorch version is installed, SDPA is activated by default. It can also be set explicitly by specifying
453
+ `attn_implementation="sdpa"` as follows:
454
+
455
+ ```python
456
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, attn_implementation="sdpa")
457
+ ```
458
+
459
+ For more information about how to use the SDPA refer to the [Transformers SDPA documentation](https://huggingface.co/docs/transformers/en/perf_infer_gpu_one#pytorch-scaled-dot-product-attention).
460
+
461
+
462
+ ## Model details
463
+
464
+ Whisper is a Transformer based encoder-decoder model, also referred to as a _sequence-to-sequence_ model. There are two
465
+ flavours of Whisper model: English-only and multilingual. The English-only models were trained on the task of English
466
+ speech recognition. The multilingual models were trained simultaneously on multilingual speech recognition and speech
467
+ translation. For speech recognition, the model predicts transcriptions in the *same* language as the audio. For speech
468
+ translation, the model predicts transcriptions to a *different* language to the audio.
469
+
470
+ Whisper checkpoints come in five configurations of varying model sizes. The smallest four are available as English-only
471
+ and multilingual. The largest checkpoints are multilingual only. All ten of the pre-trained checkpoints
472
+ are available on the [Hugging Face Hub](https://huggingface.co/models?search=openai/whisper). The
473
+ checkpoints are summarised in the following table with links to the models on the Hub:
474
+
475
+ | Size | Parameters | English-only | Multilingual |
476
+ |----------|------------|------------------------------------------------------|-----------------------------------------------------|
477
+ | tiny | 39 M | [✓](https://huggingface.co/openai/whisper-tiny.en) | [✓](https://huggingface.co/openai/whisper-tiny) |
478
+ | base | 74 M | [✓](https://huggingface.co/openai/whisper-base.en) | [✓](https://huggingface.co/openai/whisper-base) |
479
+ | small | 244 M | [✓](https://huggingface.co/openai/whisper-small.en) | [✓](https://huggingface.co/openai/whisper-small) |
480
+ | medium | 769 M | [✓](https://huggingface.co/openai/whisper-medium.en) | [✓](https://huggingface.co/openai/whisper-medium) |
481
+ | large | 1550 M | x | [✓](https://huggingface.co/openai/whisper-large) |
482
+ | large-v2 | 1550 M | x | [✓](https://huggingface.co/openai/whisper-large-v2) |
483
+ | large-v3 | 1550 M | x | [✓](https://huggingface.co/openai/whisper-large-v3) |
484
+
485
+
486
+ ## Fine-Tuning
487
+
488
+ The pre-trained Whisper model demonstrates a strong ability to generalise to different datasets and domains. However,
489
+ its predictive capabilities can be improved further for certain languages and tasks through *fine-tuning*. The blog
490
+ post [Fine-Tune Whisper with 🤗 Transformers](https://huggingface.co/blog/fine-tune-whisper) provides a step-by-step
491
+ guide to fine-tuning the Whisper model with as little as 5 hours of labelled data.
492
+
493
+ ### Evaluated Use
494
+
495
+ The primary intended users of these models are AI researchers studying robustness, generalization, capabilities, biases, and constraints of the current model. However, Whisper is also potentially quite useful as an ASR solution for developers, especially for English speech recognition. We recognize that once models are released, it is impossible to restrict access to only “intended” uses or to draw reasonable guidelines around what is or is not research.
496
+
497
+ The models are primarily trained and evaluated on ASR and speech translation to English tasks. They show strong ASR results in ~10 languages. They may exhibit additional capabilities, particularly if fine-tuned on certain tasks like voice activity detection, speaker classification, or speaker diarization but have not been robustly evaluated in these areas. We strongly recommend that users perform robust evaluations of the models in a particular context and domain before deploying them.
498
+
499
+ In particular, we caution against using Whisper models to transcribe recordings of individuals taken without their consent or purporting to use these models for any kind of subjective classification. We recommend against use in high-risk domains like decision-making contexts, where flaws in accuracy can lead to pronounced flaws in outcomes. The models are intended to transcribe and translate speech, use of the model for classification is not only not evaluated but also not appropriate, particularly to infer human attributes.
500
+
501
+
502
+ ## Training Data
503
+
504
+ The large-v3 checkpoint is trained on 1 million hours of weakly labeled audio and 4 million hours of pseudo-labeled audio collected using Whisper large-v2.
505
+
506
+ As discussed in [the accompanying paper](https://cdn.openai.com/papers/whisper.pdf), we see that performance on transcription in a given language is directly correlated with the amount of training data we employ in that language.
507
+
508
+
509
+ ## Performance and Limitations
510
+
511
+ Our studies show that, over many existing ASR systems, the models exhibit improved robustness to accents, background noise, technical language, as well as zero shot translation from multiple languages into English; and that accuracy on speech recognition and translation is near the state-of-the-art level.
512
+
513
+ However, because the models are trained in a weakly supervised manner using large-scale noisy data, the predictions may include texts that are not actually spoken in the audio input (i.e. hallucination). We hypothesize that this happens because, given their general knowledge of language, the models combine trying to predict the next word in audio with trying to transcribe the audio itself.
514
+
515
+ Our models perform unevenly across languages, and we observe lower accuracy on low-resource and/or low-discoverability languages or languages where we have less training data. The models also exhibit disparate performance on different accents and dialects of particular languages, which may include higher word error rate across speakers of different genders, races, ages, or other demographic criteria. Our full evaluation results are presented in [the paper accompanying this release](https://cdn.openai.com/papers/whisper.pdf).
516
+
517
+ In addition, the sequence-to-sequence architecture of the model makes it prone to generating repetitive texts, which can be mitigated to some degree by beam search and temperature scheduling but not perfectly. Further analysis on these limitations are provided in [the paper](https://cdn.openai.com/papers/whisper.pdf). It is likely that this behavior and hallucinations may be worse on lower-resource and/or lower-discoverability languages.
518
+
519
+
520
+ ## Broader Implications
521
+
522
+ We anticipate that Whisper models’ transcription capabilities may be used for improving accessibility tools. While Whisper models cannot be used for real-time transcription out of the box – their speed and size suggest that others may be able to build applications on top of them that allow for near-real-time speech recognition and translation. The real value of beneficial applications built on top of Whisper models suggests that the disparate performance of these models may have real economic implications.
523
+
524
+ There are also potential dual use concerns that come with releasing Whisper. While we hope the technology will be used primarily for beneficial purposes, making ASR technology more accessible could enable more actors to build capable surveillance technologies or scale up existing surveillance efforts, as the speed and accuracy allow for affordable automatic transcription and translation of large volumes of audio communication. Moreover, these models may have some capabilities to recognize specific individuals out of the box, which in turn presents safety concerns related both to dual use and disparate performance. In practice, we expect that the cost of transcription is not the limiting factor of scaling up surveillance projects.
525
+
526
+
527
+ ### BibTeX entry and citation info
528
+ ```bibtex
529
+ @misc{radford2022whisper,
530
+ doi = {10.48550/ARXIV.2212.04356},
531
+ url = {https://arxiv.org/abs/2212.04356},
532
+ author = {Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
533
+ title = {Robust Speech Recognition via Large-Scale Weak Supervision},
534
+ publisher = {arXiv},
535
+ year = {2022},
536
+ copyright = {arXiv.org perpetual, non-exclusive license}
537
+ }
538
+ ```
whisper-large-v3/added_tokens.json ADDED
@@ -0,0 +1,1611 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "<|0.00|>": 50365,
3
+ "<|0.02|>": 50366,
4
+ "<|0.04|>": 50367,
5
+ "<|0.06|>": 50368,
6
+ "<|0.08|>": 50369,
7
+ "<|0.10|>": 50370,
8
+ "<|0.12|>": 50371,
9
+ "<|0.14|>": 50372,
10
+ "<|0.16|>": 50373,
11
+ "<|0.18|>": 50374,
12
+ "<|0.20|>": 50375,
13
+ "<|0.22|>": 50376,
14
+ "<|0.24|>": 50377,
15
+ "<|0.26|>": 50378,
16
+ "<|0.28|>": 50379,
17
+ "<|0.30|>": 50380,
18
+ "<|0.32|>": 50381,
19
+ "<|0.34|>": 50382,
20
+ "<|0.36|>": 50383,
21
+ "<|0.38|>": 50384,
22
+ "<|0.40|>": 50385,
23
+ "<|0.42|>": 50386,
24
+ "<|0.44|>": 50387,
25
+ "<|0.46|>": 50388,
26
+ "<|0.48|>": 50389,
27
+ "<|0.50|>": 50390,
28
+ "<|0.52|>": 50391,
29
+ "<|0.54|>": 50392,
30
+ "<|0.56|>": 50393,
31
+ "<|0.58|>": 50394,
32
+ "<|0.60|>": 50395,
33
+ "<|0.62|>": 50396,
34
+ "<|0.64|>": 50397,
35
+ "<|0.66|>": 50398,
36
+ "<|0.68|>": 50399,
37
+ "<|0.70|>": 50400,
38
+ "<|0.72|>": 50401,
39
+ "<|0.74|>": 50402,
40
+ "<|0.76|>": 50403,
41
+ "<|0.78|>": 50404,
42
+ "<|0.80|>": 50405,
43
+ "<|0.82|>": 50406,
44
+ "<|0.84|>": 50407,
45
+ "<|0.86|>": 50408,
46
+ "<|0.88|>": 50409,
47
+ "<|0.90|>": 50410,
48
+ "<|0.92|>": 50411,
49
+ "<|0.94|>": 50412,
50
+ "<|0.96|>": 50413,
51
+ "<|0.98|>": 50414,
52
+ "<|1.00|>": 50415,
53
+ "<|1.02|>": 50416,
54
+ "<|1.04|>": 50417,
55
+ "<|1.06|>": 50418,
56
+ "<|1.08|>": 50419,
57
+ "<|1.10|>": 50420,
58
+ "<|1.12|>": 50421,
59
+ "<|1.14|>": 50422,
60
+ "<|1.16|>": 50423,
61
+ "<|1.18|>": 50424,
62
+ "<|1.20|>": 50425,
63
+ "<|1.22|>": 50426,
64
+ "<|1.24|>": 50427,
65
+ "<|1.26|>": 50428,
66
+ "<|1.28|>": 50429,
67
+ "<|1.30|>": 50430,
68
+ "<|1.32|>": 50431,
69
+ "<|1.34|>": 50432,
70
+ "<|1.36|>": 50433,
71
+ "<|1.38|>": 50434,
72
+ "<|1.40|>": 50435,
73
+ "<|1.42|>": 50436,
74
+ "<|1.44|>": 50437,
75
+ "<|1.46|>": 50438,
76
+ "<|1.48|>": 50439,
77
+ "<|1.50|>": 50440,
78
+ "<|1.52|>": 50441,
79
+ "<|1.54|>": 50442,
80
+ "<|1.56|>": 50443,
81
+ "<|1.58|>": 50444,
82
+ "<|1.60|>": 50445,
83
+ "<|1.62|>": 50446,
84
+ "<|1.64|>": 50447,
85
+ "<|1.66|>": 50448,
86
+ "<|1.68|>": 50449,
87
+ "<|1.70|>": 50450,
88
+ "<|1.72|>": 50451,
89
+ "<|1.74|>": 50452,
90
+ "<|1.76|>": 50453,
91
+ "<|1.78|>": 50454,
92
+ "<|1.80|>": 50455,
93
+ "<|1.82|>": 50456,
94
+ "<|1.84|>": 50457,
95
+ "<|1.86|>": 50458,
96
+ "<|1.88|>": 50459,
97
+ "<|1.90|>": 50460,
98
+ "<|1.92|>": 50461,
99
+ "<|1.94|>": 50462,
100
+ "<|1.96|>": 50463,
101
+ "<|1.98|>": 50464,
102
+ "<|10.00|>": 50865,
103
+ "<|10.02|>": 50866,
104
+ "<|10.04|>": 50867,
105
+ "<|10.06|>": 50868,
106
+ "<|10.08|>": 50869,
107
+ "<|10.10|>": 50870,
108
+ "<|10.12|>": 50871,
109
+ "<|10.14|>": 50872,
110
+ "<|10.16|>": 50873,
111
+ "<|10.18|>": 50874,
112
+ "<|10.20|>": 50875,
113
+ "<|10.22|>": 50876,
114
+ "<|10.24|>": 50877,
115
+ "<|10.26|>": 50878,
116
+ "<|10.28|>": 50879,
117
+ "<|10.30|>": 50880,
118
+ "<|10.32|>": 50881,
119
+ "<|10.34|>": 50882,
120
+ "<|10.36|>": 50883,
121
+ "<|10.38|>": 50884,
122
+ "<|10.40|>": 50885,
123
+ "<|10.42|>": 50886,
124
+ "<|10.44|>": 50887,
125
+ "<|10.46|>": 50888,
126
+ "<|10.48|>": 50889,
127
+ "<|10.50|>": 50890,
128
+ "<|10.52|>": 50891,
129
+ "<|10.54|>": 50892,
130
+ "<|10.56|>": 50893,
131
+ "<|10.58|>": 50894,
132
+ "<|10.60|>": 50895,
133
+ "<|10.62|>": 50896,
134
+ "<|10.64|>": 50897,
135
+ "<|10.66|>": 50898,
136
+ "<|10.68|>": 50899,
137
+ "<|10.70|>": 50900,
138
+ "<|10.72|>": 50901,
139
+ "<|10.74|>": 50902,
140
+ "<|10.76|>": 50903,
141
+ "<|10.78|>": 50904,
142
+ "<|10.80|>": 50905,
143
+ "<|10.82|>": 50906,
144
+ "<|10.84|>": 50907,
145
+ "<|10.86|>": 50908,
146
+ "<|10.88|>": 50909,
147
+ "<|10.90|>": 50910,
148
+ "<|10.92|>": 50911,
149
+ "<|10.94|>": 50912,
150
+ "<|10.96|>": 50913,
151
+ "<|10.98|>": 50914,
152
+ "<|11.00|>": 50915,
153
+ "<|11.02|>": 50916,
154
+ "<|11.04|>": 50917,
155
+ "<|11.06|>": 50918,
156
+ "<|11.08|>": 50919,
157
+ "<|11.10|>": 50920,
158
+ "<|11.12|>": 50921,
159
+ "<|11.14|>": 50922,
160
+ "<|11.16|>": 50923,
161
+ "<|11.18|>": 50924,
162
+ "<|11.20|>": 50925,
163
+ "<|11.22|>": 50926,
164
+ "<|11.24|>": 50927,
165
+ "<|11.26|>": 50928,
166
+ "<|11.28|>": 50929,
167
+ "<|11.30|>": 50930,
168
+ "<|11.32|>": 50931,
169
+ "<|11.34|>": 50932,
170
+ "<|11.36|>": 50933,
171
+ "<|11.38|>": 50934,
172
+ "<|11.40|>": 50935,
173
+ "<|11.42|>": 50936,
174
+ "<|11.44|>": 50937,
175
+ "<|11.46|>": 50938,
176
+ "<|11.48|>": 50939,
177
+ "<|11.50|>": 50940,
178
+ "<|11.52|>": 50941,
179
+ "<|11.54|>": 50942,
180
+ "<|11.56|>": 50943,
181
+ "<|11.58|>": 50944,
182
+ "<|11.60|>": 50945,
183
+ "<|11.62|>": 50946,
184
+ "<|11.64|>": 50947,
185
+ "<|11.66|>": 50948,
186
+ "<|11.68|>": 50949,
187
+ "<|11.70|>": 50950,
188
+ "<|11.72|>": 50951,
189
+ "<|11.74|>": 50952,
190
+ "<|11.76|>": 50953,
191
+ "<|11.78|>": 50954,
192
+ "<|11.80|>": 50955,
193
+ "<|11.82|>": 50956,
194
+ "<|11.84|>": 50957,
195
+ "<|11.86|>": 50958,
196
+ "<|11.88|>": 50959,
197
+ "<|11.90|>": 50960,
198
+ "<|11.92|>": 50961,
199
+ "<|11.94|>": 50962,
200
+ "<|11.96|>": 50963,
201
+ "<|11.98|>": 50964,
202
+ "<|12.00|>": 50965,
203
+ "<|12.02|>": 50966,
204
+ "<|12.04|>": 50967,
205
+ "<|12.06|>": 50968,
206
+ "<|12.08|>": 50969,
207
+ "<|12.10|>": 50970,
208
+ "<|12.12|>": 50971,
209
+ "<|12.14|>": 50972,
210
+ "<|12.16|>": 50973,
211
+ "<|12.18|>": 50974,
212
+ "<|12.20|>": 50975,
213
+ "<|12.22|>": 50976,
214
+ "<|12.24|>": 50977,
215
+ "<|12.26|>": 50978,
216
+ "<|12.28|>": 50979,
217
+ "<|12.30|>": 50980,
218
+ "<|12.32|>": 50981,
219
+ "<|12.34|>": 50982,
220
+ "<|12.36|>": 50983,
221
+ "<|12.38|>": 50984,
222
+ "<|12.40|>": 50985,
223
+ "<|12.42|>": 50986,
224
+ "<|12.44|>": 50987,
225
+ "<|12.46|>": 50988,
226
+ "<|12.48|>": 50989,
227
+ "<|12.50|>": 50990,
228
+ "<|12.52|>": 50991,
229
+ "<|12.54|>": 50992,
230
+ "<|12.56|>": 50993,
231
+ "<|12.58|>": 50994,
232
+ "<|12.60|>": 50995,
233
+ "<|12.62|>": 50996,
234
+ "<|12.64|>": 50997,
235
+ "<|12.66|>": 50998,
236
+ "<|12.68|>": 50999,
237
+ "<|12.70|>": 51000,
238
+ "<|12.72|>": 51001,
239
+ "<|12.74|>": 51002,
240
+ "<|12.76|>": 51003,
241
+ "<|12.78|>": 51004,
242
+ "<|12.80|>": 51005,
243
+ "<|12.82|>": 51006,
244
+ "<|12.84|>": 51007,
245
+ "<|12.86|>": 51008,
246
+ "<|12.88|>": 51009,
247
+ "<|12.90|>": 51010,
248
+ "<|12.92|>": 51011,
249
+ "<|12.94|>": 51012,
250
+ "<|12.96|>": 51013,
251
+ "<|12.98|>": 51014,
252
+ "<|13.00|>": 51015,
253
+ "<|13.02|>": 51016,
254
+ "<|13.04|>": 51017,
255
+ "<|13.06|>": 51018,
256
+ "<|13.08|>": 51019,
257
+ "<|13.10|>": 51020,
258
+ "<|13.12|>": 51021,
259
+ "<|13.14|>": 51022,
260
+ "<|13.16|>": 51023,
261
+ "<|13.18|>": 51024,
262
+ "<|13.20|>": 51025,
263
+ "<|13.22|>": 51026,
264
+ "<|13.24|>": 51027,
265
+ "<|13.26|>": 51028,
266
+ "<|13.28|>": 51029,
267
+ "<|13.30|>": 51030,
268
+ "<|13.32|>": 51031,
269
+ "<|13.34|>": 51032,
270
+ "<|13.36|>": 51033,
271
+ "<|13.38|>": 51034,
272
+ "<|13.40|>": 51035,
273
+ "<|13.42|>": 51036,
274
+ "<|13.44|>": 51037,
275
+ "<|13.46|>": 51038,
276
+ "<|13.48|>": 51039,
277
+ "<|13.50|>": 51040,
278
+ "<|13.52|>": 51041,
279
+ "<|13.54|>": 51042,
280
+ "<|13.56|>": 51043,
281
+ "<|13.58|>": 51044,
282
+ "<|13.60|>": 51045,
283
+ "<|13.62|>": 51046,
284
+ "<|13.64|>": 51047,
285
+ "<|13.66|>": 51048,
286
+ "<|13.68|>": 51049,
287
+ "<|13.70|>": 51050,
288
+ "<|13.72|>": 51051,
289
+ "<|13.74|>": 51052,
290
+ "<|13.76|>": 51053,
291
+ "<|13.78|>": 51054,
292
+ "<|13.80|>": 51055,
293
+ "<|13.82|>": 51056,
294
+ "<|13.84|>": 51057,
295
+ "<|13.86|>": 51058,
296
+ "<|13.88|>": 51059,
297
+ "<|13.90|>": 51060,
298
+ "<|13.92|>": 51061,
299
+ "<|13.94|>": 51062,
300
+ "<|13.96|>": 51063,
301
+ "<|13.98|>": 51064,
302
+ "<|14.00|>": 51065,
303
+ "<|14.02|>": 51066,
304
+ "<|14.04|>": 51067,
305
+ "<|14.06|>": 51068,
306
+ "<|14.08|>": 51069,
307
+ "<|14.10|>": 51070,
308
+ "<|14.12|>": 51071,
309
+ "<|14.14|>": 51072,
310
+ "<|14.16|>": 51073,
311
+ "<|14.18|>": 51074,
312
+ "<|14.20|>": 51075,
313
+ "<|14.22|>": 51076,
314
+ "<|14.24|>": 51077,
315
+ "<|14.26|>": 51078,
316
+ "<|14.28|>": 51079,
317
+ "<|14.30|>": 51080,
318
+ "<|14.32|>": 51081,
319
+ "<|14.34|>": 51082,
320
+ "<|14.36|>": 51083,
321
+ "<|14.38|>": 51084,
322
+ "<|14.40|>": 51085,
323
+ "<|14.42|>": 51086,
324
+ "<|14.44|>": 51087,
325
+ "<|14.46|>": 51088,
326
+ "<|14.48|>": 51089,
327
+ "<|14.50|>": 51090,
328
+ "<|14.52|>": 51091,
329
+ "<|14.54|>": 51092,
330
+ "<|14.56|>": 51093,
331
+ "<|14.58|>": 51094,
332
+ "<|14.60|>": 51095,
333
+ "<|14.62|>": 51096,
334
+ "<|14.64|>": 51097,
335
+ "<|14.66|>": 51098,
336
+ "<|14.68|>": 51099,
337
+ "<|14.70|>": 51100,
338
+ "<|14.72|>": 51101,
339
+ "<|14.74|>": 51102,
340
+ "<|14.76|>": 51103,
341
+ "<|14.78|>": 51104,
342
+ "<|14.80|>": 51105,
343
+ "<|14.82|>": 51106,
344
+ "<|14.84|>": 51107,
345
+ "<|14.86|>": 51108,
346
+ "<|14.88|>": 51109,
347
+ "<|14.90|>": 51110,
348
+ "<|14.92|>": 51111,
349
+ "<|14.94|>": 51112,
350
+ "<|14.96|>": 51113,
351
+ "<|14.98|>": 51114,
352
+ "<|15.00|>": 51115,
353
+ "<|15.02|>": 51116,
354
+ "<|15.04|>": 51117,
355
+ "<|15.06|>": 51118,
356
+ "<|15.08|>": 51119,
357
+ "<|15.10|>": 51120,
358
+ "<|15.12|>": 51121,
359
+ "<|15.14|>": 51122,
360
+ "<|15.16|>": 51123,
361
+ "<|15.18|>": 51124,
362
+ "<|15.20|>": 51125,
363
+ "<|15.22|>": 51126,
364
+ "<|15.24|>": 51127,
365
+ "<|15.26|>": 51128,
366
+ "<|15.28|>": 51129,
367
+ "<|15.30|>": 51130,
368
+ "<|15.32|>": 51131,
369
+ "<|15.34|>": 51132,
370
+ "<|15.36|>": 51133,
371
+ "<|15.38|>": 51134,
372
+ "<|15.40|>": 51135,
373
+ "<|15.42|>": 51136,
374
+ "<|15.44|>": 51137,
375
+ "<|15.46|>": 51138,
376
+ "<|15.48|>": 51139,
377
+ "<|15.50|>": 51140,
378
+ "<|15.52|>": 51141,
379
+ "<|15.54|>": 51142,
380
+ "<|15.56|>": 51143,
381
+ "<|15.58|>": 51144,
382
+ "<|15.60|>": 51145,
383
+ "<|15.62|>": 51146,
384
+ "<|15.64|>": 51147,
385
+ "<|15.66|>": 51148,
386
+ "<|15.68|>": 51149,
387
+ "<|15.70|>": 51150,
388
+ "<|15.72|>": 51151,
389
+ "<|15.74|>": 51152,
390
+ "<|15.76|>": 51153,
391
+ "<|15.78|>": 51154,
392
+ "<|15.80|>": 51155,
393
+ "<|15.82|>": 51156,
394
+ "<|15.84|>": 51157,
395
+ "<|15.86|>": 51158,
396
+ "<|15.88|>": 51159,
397
+ "<|15.90|>": 51160,
398
+ "<|15.92|>": 51161,
399
+ "<|15.94|>": 51162,
400
+ "<|15.96|>": 51163,
401
+ "<|15.98|>": 51164,
402
+ "<|16.00|>": 51165,
403
+ "<|16.02|>": 51166,
404
+ "<|16.04|>": 51167,
405
+ "<|16.06|>": 51168,
406
+ "<|16.08|>": 51169,
407
+ "<|16.10|>": 51170,
408
+ "<|16.12|>": 51171,
409
+ "<|16.14|>": 51172,
410
+ "<|16.16|>": 51173,
411
+ "<|16.18|>": 51174,
412
+ "<|16.20|>": 51175,
413
+ "<|16.22|>": 51176,
414
+ "<|16.24|>": 51177,
415
+ "<|16.26|>": 51178,
416
+ "<|16.28|>": 51179,
417
+ "<|16.30|>": 51180,
418
+ "<|16.32|>": 51181,
419
+ "<|16.34|>": 51182,
420
+ "<|16.36|>": 51183,
421
+ "<|16.38|>": 51184,
422
+ "<|16.40|>": 51185,
423
+ "<|16.42|>": 51186,
424
+ "<|16.44|>": 51187,
425
+ "<|16.46|>": 51188,
426
+ "<|16.48|>": 51189,
427
+ "<|16.50|>": 51190,
428
+ "<|16.52|>": 51191,
429
+ "<|16.54|>": 51192,
430
+ "<|16.56|>": 51193,
431
+ "<|16.58|>": 51194,
432
+ "<|16.60|>": 51195,
433
+ "<|16.62|>": 51196,
434
+ "<|16.64|>": 51197,
435
+ "<|16.66|>": 51198,
436
+ "<|16.68|>": 51199,
437
+ "<|16.70|>": 51200,
438
+ "<|16.72|>": 51201,
439
+ "<|16.74|>": 51202,
440
+ "<|16.76|>": 51203,
441
+ "<|16.78|>": 51204,
442
+ "<|16.80|>": 51205,
443
+ "<|16.82|>": 51206,
444
+ "<|16.84|>": 51207,
445
+ "<|16.86|>": 51208,
446
+ "<|16.88|>": 51209,
447
+ "<|16.90|>": 51210,
448
+ "<|16.92|>": 51211,
449
+ "<|16.94|>": 51212,
450
+ "<|16.96|>": 51213,
451
+ "<|16.98|>": 51214,
452
+ "<|17.00|>": 51215,
453
+ "<|17.02|>": 51216,
454
+ "<|17.04|>": 51217,
455
+ "<|17.06|>": 51218,
456
+ "<|17.08|>": 51219,
457
+ "<|17.10|>": 51220,
458
+ "<|17.12|>": 51221,
459
+ "<|17.14|>": 51222,
460
+ "<|17.16|>": 51223,
461
+ "<|17.18|>": 51224,
462
+ "<|17.20|>": 51225,
463
+ "<|17.22|>": 51226,
464
+ "<|17.24|>": 51227,
465
+ "<|17.26|>": 51228,
466
+ "<|17.28|>": 51229,
467
+ "<|17.30|>": 51230,
468
+ "<|17.32|>": 51231,
469
+ "<|17.34|>": 51232,
470
+ "<|17.36|>": 51233,
471
+ "<|17.38|>": 51234,
472
+ "<|17.40|>": 51235,
473
+ "<|17.42|>": 51236,
474
+ "<|17.44|>": 51237,
475
+ "<|17.46|>": 51238,
476
+ "<|17.48|>": 51239,
477
+ "<|17.50|>": 51240,
478
+ "<|17.52|>": 51241,
479
+ "<|17.54|>": 51242,
480
+ "<|17.56|>": 51243,
481
+ "<|17.58|>": 51244,
482
+ "<|17.60|>": 51245,
483
+ "<|17.62|>": 51246,
484
+ "<|17.64|>": 51247,
485
+ "<|17.66|>": 51248,
486
+ "<|17.68|>": 51249,
487
+ "<|17.70|>": 51250,
488
+ "<|17.72|>": 51251,
489
+ "<|17.74|>": 51252,
490
+ "<|17.76|>": 51253,
491
+ "<|17.78|>": 51254,
492
+ "<|17.80|>": 51255,
493
+ "<|17.82|>": 51256,
494
+ "<|17.84|>": 51257,
495
+ "<|17.86|>": 51258,
496
+ "<|17.88|>": 51259,
497
+ "<|17.90|>": 51260,
498
+ "<|17.92|>": 51261,
499
+ "<|17.94|>": 51262,
500
+ "<|17.96|>": 51263,
501
+ "<|17.98|>": 51264,
502
+ "<|18.00|>": 51265,
503
+ "<|18.02|>": 51266,
504
+ "<|18.04|>": 51267,
505
+ "<|18.06|>": 51268,
506
+ "<|18.08|>": 51269,
507
+ "<|18.10|>": 51270,
508
+ "<|18.12|>": 51271,
509
+ "<|18.14|>": 51272,
510
+ "<|18.16|>": 51273,
511
+ "<|18.18|>": 51274,
512
+ "<|18.20|>": 51275,
513
+ "<|18.22|>": 51276,
514
+ "<|18.24|>": 51277,
515
+ "<|18.26|>": 51278,
516
+ "<|18.28|>": 51279,
517
+ "<|18.30|>": 51280,
518
+ "<|18.32|>": 51281,
519
+ "<|18.34|>": 51282,
520
+ "<|18.36|>": 51283,
521
+ "<|18.38|>": 51284,
522
+ "<|18.40|>": 51285,
523
+ "<|18.42|>": 51286,
524
+ "<|18.44|>": 51287,
525
+ "<|18.46|>": 51288,
526
+ "<|18.48|>": 51289,
527
+ "<|18.50|>": 51290,
528
+ "<|18.52|>": 51291,
529
+ "<|18.54|>": 51292,
530
+ "<|18.56|>": 51293,
531
+ "<|18.58|>": 51294,
532
+ "<|18.60|>": 51295,
533
+ "<|18.62|>": 51296,
534
+ "<|18.64|>": 51297,
535
+ "<|18.66|>": 51298,
536
+ "<|18.68|>": 51299,
537
+ "<|18.70|>": 51300,
538
+ "<|18.72|>": 51301,
539
+ "<|18.74|>": 51302,
540
+ "<|18.76|>": 51303,
541
+ "<|18.78|>": 51304,
542
+ "<|18.80|>": 51305,
543
+ "<|18.82|>": 51306,
544
+ "<|18.84|>": 51307,
545
+ "<|18.86|>": 51308,
546
+ "<|18.88|>": 51309,
547
+ "<|18.90|>": 51310,
548
+ "<|18.92|>": 51311,
549
+ "<|18.94|>": 51312,
550
+ "<|18.96|>": 51313,
551
+ "<|18.98|>": 51314,
552
+ "<|19.00|>": 51315,
553
+ "<|19.02|>": 51316,
554
+ "<|19.04|>": 51317,
555
+ "<|19.06|>": 51318,
556
+ "<|19.08|>": 51319,
557
+ "<|19.10|>": 51320,
558
+ "<|19.12|>": 51321,
559
+ "<|19.14|>": 51322,
560
+ "<|19.16|>": 51323,
561
+ "<|19.18|>": 51324,
562
+ "<|19.20|>": 51325,
563
+ "<|19.22|>": 51326,
564
+ "<|19.24|>": 51327,
565
+ "<|19.26|>": 51328,
566
+ "<|19.28|>": 51329,
567
+ "<|19.30|>": 51330,
568
+ "<|19.32|>": 51331,
569
+ "<|19.34|>": 51332,
570
+ "<|19.36|>": 51333,
571
+ "<|19.38|>": 51334,
572
+ "<|19.40|>": 51335,
573
+ "<|19.42|>": 51336,
574
+ "<|19.44|>": 51337,
575
+ "<|19.46|>": 51338,
576
+ "<|19.48|>": 51339,
577
+ "<|19.50|>": 51340,
578
+ "<|19.52|>": 51341,
579
+ "<|19.54|>": 51342,
580
+ "<|19.56|>": 51343,
581
+ "<|19.58|>": 51344,
582
+ "<|19.60|>": 51345,
583
+ "<|19.62|>": 51346,
584
+ "<|19.64|>": 51347,
585
+ "<|19.66|>": 51348,
586
+ "<|19.68|>": 51349,
587
+ "<|19.70|>": 51350,
588
+ "<|19.72|>": 51351,
589
+ "<|19.74|>": 51352,
590
+ "<|19.76|>": 51353,
591
+ "<|19.78|>": 51354,
592
+ "<|19.80|>": 51355,
593
+ "<|19.82|>": 51356,
594
+ "<|19.84|>": 51357,
595
+ "<|19.86|>": 51358,
596
+ "<|19.88|>": 51359,
597
+ "<|19.90|>": 51360,
598
+ "<|19.92|>": 51361,
599
+ "<|19.94|>": 51362,
600
+ "<|19.96|>": 51363,
601
+ "<|19.98|>": 51364,
602
+ "<|2.00|>": 50465,
603
+ "<|2.02|>": 50466,
604
+ "<|2.04|>": 50467,
605
+ "<|2.06|>": 50468,
606
+ "<|2.08|>": 50469,
607
+ "<|2.10|>": 50470,
608
+ "<|2.12|>": 50471,
609
+ "<|2.14|>": 50472,
610
+ "<|2.16|>": 50473,
611
+ "<|2.18|>": 50474,
612
+ "<|2.20|>": 50475,
613
+ "<|2.22|>": 50476,
614
+ "<|2.24|>": 50477,
615
+ "<|2.26|>": 50478,
616
+ "<|2.28|>": 50479,
617
+ "<|2.30|>": 50480,
618
+ "<|2.32|>": 50481,
619
+ "<|2.34|>": 50482,
620
+ "<|2.36|>": 50483,
621
+ "<|2.38|>": 50484,
622
+ "<|2.40|>": 50485,
623
+ "<|2.42|>": 50486,
624
+ "<|2.44|>": 50487,
625
+ "<|2.46|>": 50488,
626
+ "<|2.48|>": 50489,
627
+ "<|2.50|>": 50490,
628
+ "<|2.52|>": 50491,
629
+ "<|2.54|>": 50492,
630
+ "<|2.56|>": 50493,
631
+ "<|2.58|>": 50494,
632
+ "<|2.60|>": 50495,
633
+ "<|2.62|>": 50496,
634
+ "<|2.64|>": 50497,
635
+ "<|2.66|>": 50498,
636
+ "<|2.68|>": 50499,
637
+ "<|2.70|>": 50500,
638
+ "<|2.72|>": 50501,
639
+ "<|2.74|>": 50502,
640
+ "<|2.76|>": 50503,
641
+ "<|2.78|>": 50504,
642
+ "<|2.80|>": 50505,
643
+ "<|2.82|>": 50506,
644
+ "<|2.84|>": 50507,
645
+ "<|2.86|>": 50508,
646
+ "<|2.88|>": 50509,
647
+ "<|2.90|>": 50510,
648
+ "<|2.92|>": 50511,
649
+ "<|2.94|>": 50512,
650
+ "<|2.96|>": 50513,
651
+ "<|2.98|>": 50514,
652
+ "<|20.00|>": 51365,
653
+ "<|20.02|>": 51366,
654
+ "<|20.04|>": 51367,
655
+ "<|20.06|>": 51368,
656
+ "<|20.08|>": 51369,
657
+ "<|20.10|>": 51370,
658
+ "<|20.12|>": 51371,
659
+ "<|20.14|>": 51372,
660
+ "<|20.16|>": 51373,
661
+ "<|20.18|>": 51374,
662
+ "<|20.20|>": 51375,
663
+ "<|20.22|>": 51376,
664
+ "<|20.24|>": 51377,
665
+ "<|20.26|>": 51378,
666
+ "<|20.28|>": 51379,
667
+ "<|20.30|>": 51380,
668
+ "<|20.32|>": 51381,
669
+ "<|20.34|>": 51382,
670
+ "<|20.36|>": 51383,
671
+ "<|20.38|>": 51384,
672
+ "<|20.40|>": 51385,
673
+ "<|20.42|>": 51386,
674
+ "<|20.44|>": 51387,
675
+ "<|20.46|>": 51388,
676
+ "<|20.48|>": 51389,
677
+ "<|20.50|>": 51390,
678
+ "<|20.52|>": 51391,
679
+ "<|20.54|>": 51392,
680
+ "<|20.56|>": 51393,
681
+ "<|20.58|>": 51394,
682
+ "<|20.60|>": 51395,
683
+ "<|20.62|>": 51396,
684
+ "<|20.64|>": 51397,
685
+ "<|20.66|>": 51398,
686
+ "<|20.68|>": 51399,
687
+ "<|20.70|>": 51400,
688
+ "<|20.72|>": 51401,
689
+ "<|20.74|>": 51402,
690
+ "<|20.76|>": 51403,
691
+ "<|20.78|>": 51404,
692
+ "<|20.80|>": 51405,
693
+ "<|20.82|>": 51406,
694
+ "<|20.84|>": 51407,
695
+ "<|20.86|>": 51408,
696
+ "<|20.88|>": 51409,
697
+ "<|20.90|>": 51410,
698
+ "<|20.92|>": 51411,
699
+ "<|20.94|>": 51412,
700
+ "<|20.96|>": 51413,
701
+ "<|20.98|>": 51414,
702
+ "<|21.00|>": 51415,
703
+ "<|21.02|>": 51416,
704
+ "<|21.04|>": 51417,
705
+ "<|21.06|>": 51418,
706
+ "<|21.08|>": 51419,
707
+ "<|21.10|>": 51420,
708
+ "<|21.12|>": 51421,
709
+ "<|21.14|>": 51422,
710
+ "<|21.16|>": 51423,
711
+ "<|21.18|>": 51424,
712
+ "<|21.20|>": 51425,
713
+ "<|21.22|>": 51426,
714
+ "<|21.24|>": 51427,
715
+ "<|21.26|>": 51428,
716
+ "<|21.28|>": 51429,
717
+ "<|21.30|>": 51430,
718
+ "<|21.32|>": 51431,
719
+ "<|21.34|>": 51432,
720
+ "<|21.36|>": 51433,
721
+ "<|21.38|>": 51434,
722
+ "<|21.40|>": 51435,
723
+ "<|21.42|>": 51436,
724
+ "<|21.44|>": 51437,
725
+ "<|21.46|>": 51438,
726
+ "<|21.48|>": 51439,
727
+ "<|21.50|>": 51440,
728
+ "<|21.52|>": 51441,
729
+ "<|21.54|>": 51442,
730
+ "<|21.56|>": 51443,
731
+ "<|21.58|>": 51444,
732
+ "<|21.60|>": 51445,
733
+ "<|21.62|>": 51446,
734
+ "<|21.64|>": 51447,
735
+ "<|21.66|>": 51448,
736
+ "<|21.68|>": 51449,
737
+ "<|21.70|>": 51450,
738
+ "<|21.72|>": 51451,
739
+ "<|21.74|>": 51452,
740
+ "<|21.76|>": 51453,
741
+ "<|21.78|>": 51454,
742
+ "<|21.80|>": 51455,
743
+ "<|21.82|>": 51456,
744
+ "<|21.84|>": 51457,
745
+ "<|21.86|>": 51458,
746
+ "<|21.88|>": 51459,
747
+ "<|21.90|>": 51460,
748
+ "<|21.92|>": 51461,
749
+ "<|21.94|>": 51462,
750
+ "<|21.96|>": 51463,
751
+ "<|21.98|>": 51464,
752
+ "<|22.00|>": 51465,
753
+ "<|22.02|>": 51466,
754
+ "<|22.04|>": 51467,
755
+ "<|22.06|>": 51468,
756
+ "<|22.08|>": 51469,
757
+ "<|22.10|>": 51470,
758
+ "<|22.12|>": 51471,
759
+ "<|22.14|>": 51472,
760
+ "<|22.16|>": 51473,
761
+ "<|22.18|>": 51474,
762
+ "<|22.20|>": 51475,
763
+ "<|22.22|>": 51476,
764
+ "<|22.24|>": 51477,
765
+ "<|22.26|>": 51478,
766
+ "<|22.28|>": 51479,
767
+ "<|22.30|>": 51480,
768
+ "<|22.32|>": 51481,
769
+ "<|22.34|>": 51482,
770
+ "<|22.36|>": 51483,
771
+ "<|22.38|>": 51484,
772
+ "<|22.40|>": 51485,
773
+ "<|22.42|>": 51486,
774
+ "<|22.44|>": 51487,
775
+ "<|22.46|>": 51488,
776
+ "<|22.48|>": 51489,
777
+ "<|22.50|>": 51490,
778
+ "<|22.52|>": 51491,
779
+ "<|22.54|>": 51492,
780
+ "<|22.56|>": 51493,
781
+ "<|22.58|>": 51494,
782
+ "<|22.60|>": 51495,
783
+ "<|22.62|>": 51496,
784
+ "<|22.64|>": 51497,
785
+ "<|22.66|>": 51498,
786
+ "<|22.68|>": 51499,
787
+ "<|22.70|>": 51500,
788
+ "<|22.72|>": 51501,
789
+ "<|22.74|>": 51502,
790
+ "<|22.76|>": 51503,
791
+ "<|22.78|>": 51504,
792
+ "<|22.80|>": 51505,
793
+ "<|22.82|>": 51506,
794
+ "<|22.84|>": 51507,
795
+ "<|22.86|>": 51508,
796
+ "<|22.88|>": 51509,
797
+ "<|22.90|>": 51510,
798
+ "<|22.92|>": 51511,
799
+ "<|22.94|>": 51512,
800
+ "<|22.96|>": 51513,
801
+ "<|22.98|>": 51514,
802
+ "<|23.00|>": 51515,
803
+ "<|23.02|>": 51516,
804
+ "<|23.04|>": 51517,
805
+ "<|23.06|>": 51518,
806
+ "<|23.08|>": 51519,
807
+ "<|23.10|>": 51520,
808
+ "<|23.12|>": 51521,
809
+ "<|23.14|>": 51522,
810
+ "<|23.16|>": 51523,
811
+ "<|23.18|>": 51524,
812
+ "<|23.20|>": 51525,
813
+ "<|23.22|>": 51526,
814
+ "<|23.24|>": 51527,
815
+ "<|23.26|>": 51528,
816
+ "<|23.28|>": 51529,
817
+ "<|23.30|>": 51530,
818
+ "<|23.32|>": 51531,
819
+ "<|23.34|>": 51532,
820
+ "<|23.36|>": 51533,
821
+ "<|23.38|>": 51534,
822
+ "<|23.40|>": 51535,
823
+ "<|23.42|>": 51536,
824
+ "<|23.44|>": 51537,
825
+ "<|23.46|>": 51538,
826
+ "<|23.48|>": 51539,
827
+ "<|23.50|>": 51540,
828
+ "<|23.52|>": 51541,
829
+ "<|23.54|>": 51542,
830
+ "<|23.56|>": 51543,
831
+ "<|23.58|>": 51544,
832
+ "<|23.60|>": 51545,
833
+ "<|23.62|>": 51546,
834
+ "<|23.64|>": 51547,
835
+ "<|23.66|>": 51548,
836
+ "<|23.68|>": 51549,
837
+ "<|23.70|>": 51550,
838
+ "<|23.72|>": 51551,
839
+ "<|23.74|>": 51552,
840
+ "<|23.76|>": 51553,
841
+ "<|23.78|>": 51554,
842
+ "<|23.80|>": 51555,
843
+ "<|23.82|>": 51556,
844
+ "<|23.84|>": 51557,
845
+ "<|23.86|>": 51558,
846
+ "<|23.88|>": 51559,
847
+ "<|23.90|>": 51560,
848
+ "<|23.92|>": 51561,
849
+ "<|23.94|>": 51562,
850
+ "<|23.96|>": 51563,
851
+ "<|23.98|>": 51564,
852
+ "<|24.00|>": 51565,
853
+ "<|24.02|>": 51566,
854
+ "<|24.04|>": 51567,
855
+ "<|24.06|>": 51568,
856
+ "<|24.08|>": 51569,
857
+ "<|24.10|>": 51570,
858
+ "<|24.12|>": 51571,
859
+ "<|24.14|>": 51572,
860
+ "<|24.16|>": 51573,
861
+ "<|24.18|>": 51574,
862
+ "<|24.20|>": 51575,
863
+ "<|24.22|>": 51576,
864
+ "<|24.24|>": 51577,
865
+ "<|24.26|>": 51578,
866
+ "<|24.28|>": 51579,
867
+ "<|24.30|>": 51580,
868
+ "<|24.32|>": 51581,
869
+ "<|24.34|>": 51582,
870
+ "<|24.36|>": 51583,
871
+ "<|24.38|>": 51584,
872
+ "<|24.40|>": 51585,
873
+ "<|24.42|>": 51586,
874
+ "<|24.44|>": 51587,
875
+ "<|24.46|>": 51588,
876
+ "<|24.48|>": 51589,
877
+ "<|24.50|>": 51590,
878
+ "<|24.52|>": 51591,
879
+ "<|24.54|>": 51592,
880
+ "<|24.56|>": 51593,
881
+ "<|24.58|>": 51594,
882
+ "<|24.60|>": 51595,
883
+ "<|24.62|>": 51596,
884
+ "<|24.64|>": 51597,
885
+ "<|24.66|>": 51598,
886
+ "<|24.68|>": 51599,
887
+ "<|24.70|>": 51600,
888
+ "<|24.72|>": 51601,
889
+ "<|24.74|>": 51602,
890
+ "<|24.76|>": 51603,
891
+ "<|24.78|>": 51604,
892
+ "<|24.80|>": 51605,
893
+ "<|24.82|>": 51606,
894
+ "<|24.84|>": 51607,
895
+ "<|24.86|>": 51608,
896
+ "<|24.88|>": 51609,
897
+ "<|24.90|>": 51610,
898
+ "<|24.92|>": 51611,
899
+ "<|24.94|>": 51612,
900
+ "<|24.96|>": 51613,
901
+ "<|24.98|>": 51614,
902
+ "<|25.00|>": 51615,
903
+ "<|25.02|>": 51616,
904
+ "<|25.04|>": 51617,
905
+ "<|25.06|>": 51618,
906
+ "<|25.08|>": 51619,
907
+ "<|25.10|>": 51620,
908
+ "<|25.12|>": 51621,
909
+ "<|25.14|>": 51622,
910
+ "<|25.16|>": 51623,
911
+ "<|25.18|>": 51624,
912
+ "<|25.20|>": 51625,
913
+ "<|25.22|>": 51626,
914
+ "<|25.24|>": 51627,
915
+ "<|25.26|>": 51628,
916
+ "<|25.28|>": 51629,
917
+ "<|25.30|>": 51630,
918
+ "<|25.32|>": 51631,
919
+ "<|25.34|>": 51632,
920
+ "<|25.36|>": 51633,
921
+ "<|25.38|>": 51634,
922
+ "<|25.40|>": 51635,
923
+ "<|25.42|>": 51636,
924
+ "<|25.44|>": 51637,
925
+ "<|25.46|>": 51638,
926
+ "<|25.48|>": 51639,
927
+ "<|25.50|>": 51640,
928
+ "<|25.52|>": 51641,
929
+ "<|25.54|>": 51642,
930
+ "<|25.56|>": 51643,
931
+ "<|25.58|>": 51644,
932
+ "<|25.60|>": 51645,
933
+ "<|25.62|>": 51646,
934
+ "<|25.64|>": 51647,
935
+ "<|25.66|>": 51648,
936
+ "<|25.68|>": 51649,
937
+ "<|25.70|>": 51650,
938
+ "<|25.72|>": 51651,
939
+ "<|25.74|>": 51652,
940
+ "<|25.76|>": 51653,
941
+ "<|25.78|>": 51654,
942
+ "<|25.80|>": 51655,
943
+ "<|25.82|>": 51656,
944
+ "<|25.84|>": 51657,
945
+ "<|25.86|>": 51658,
946
+ "<|25.88|>": 51659,
947
+ "<|25.90|>": 51660,
948
+ "<|25.92|>": 51661,
949
+ "<|25.94|>": 51662,
950
+ "<|25.96|>": 51663,
951
+ "<|25.98|>": 51664,
952
+ "<|26.00|>": 51665,
953
+ "<|26.02|>": 51666,
954
+ "<|26.04|>": 51667,
955
+ "<|26.06|>": 51668,
956
+ "<|26.08|>": 51669,
957
+ "<|26.10|>": 51670,
958
+ "<|26.12|>": 51671,
959
+ "<|26.14|>": 51672,
960
+ "<|26.16|>": 51673,
961
+ "<|26.18|>": 51674,
962
+ "<|26.20|>": 51675,
963
+ "<|26.22|>": 51676,
964
+ "<|26.24|>": 51677,
965
+ "<|26.26|>": 51678,
966
+ "<|26.28|>": 51679,
967
+ "<|26.30|>": 51680,
968
+ "<|26.32|>": 51681,
969
+ "<|26.34|>": 51682,
970
+ "<|26.36|>": 51683,
971
+ "<|26.38|>": 51684,
972
+ "<|26.40|>": 51685,
973
+ "<|26.42|>": 51686,
974
+ "<|26.44|>": 51687,
975
+ "<|26.46|>": 51688,
976
+ "<|26.48|>": 51689,
977
+ "<|26.50|>": 51690,
978
+ "<|26.52|>": 51691,
979
+ "<|26.54|>": 51692,
980
+ "<|26.56|>": 51693,
981
+ "<|26.58|>": 51694,
982
+ "<|26.60|>": 51695,
983
+ "<|26.62|>": 51696,
984
+ "<|26.64|>": 51697,
985
+ "<|26.66|>": 51698,
986
+ "<|26.68|>": 51699,
987
+ "<|26.70|>": 51700,
988
+ "<|26.72|>": 51701,
989
+ "<|26.74|>": 51702,
990
+ "<|26.76|>": 51703,
991
+ "<|26.78|>": 51704,
992
+ "<|26.80|>": 51705,
993
+ "<|26.82|>": 51706,
994
+ "<|26.84|>": 51707,
995
+ "<|26.86|>": 51708,
996
+ "<|26.88|>": 51709,
997
+ "<|26.90|>": 51710,
998
+ "<|26.92|>": 51711,
999
+ "<|26.94|>": 51712,
1000
+ "<|26.96|>": 51713,
1001
+ "<|26.98|>": 51714,
1002
+ "<|27.00|>": 51715,
1003
+ "<|27.02|>": 51716,
1004
+ "<|27.04|>": 51717,
1005
+ "<|27.06|>": 51718,
1006
+ "<|27.08|>": 51719,
1007
+ "<|27.10|>": 51720,
1008
+ "<|27.12|>": 51721,
1009
+ "<|27.14|>": 51722,
1010
+ "<|27.16|>": 51723,
1011
+ "<|27.18|>": 51724,
1012
+ "<|27.20|>": 51725,
1013
+ "<|27.22|>": 51726,
1014
+ "<|27.24|>": 51727,
1015
+ "<|27.26|>": 51728,
1016
+ "<|27.28|>": 51729,
1017
+ "<|27.30|>": 51730,
1018
+ "<|27.32|>": 51731,
1019
+ "<|27.34|>": 51732,
1020
+ "<|27.36|>": 51733,
1021
+ "<|27.38|>": 51734,
1022
+ "<|27.40|>": 51735,
1023
+ "<|27.42|>": 51736,
1024
+ "<|27.44|>": 51737,
1025
+ "<|27.46|>": 51738,
1026
+ "<|27.48|>": 51739,
1027
+ "<|27.50|>": 51740,
1028
+ "<|27.52|>": 51741,
1029
+ "<|27.54|>": 51742,
1030
+ "<|27.56|>": 51743,
1031
+ "<|27.58|>": 51744,
1032
+ "<|27.60|>": 51745,
1033
+ "<|27.62|>": 51746,
1034
+ "<|27.64|>": 51747,
1035
+ "<|27.66|>": 51748,
1036
+ "<|27.68|>": 51749,
1037
+ "<|27.70|>": 51750,
1038
+ "<|27.72|>": 51751,
1039
+ "<|27.74|>": 51752,
1040
+ "<|27.76|>": 51753,
1041
+ "<|27.78|>": 51754,
1042
+ "<|27.80|>": 51755,
1043
+ "<|27.82|>": 51756,
1044
+ "<|27.84|>": 51757,
1045
+ "<|27.86|>": 51758,
1046
+ "<|27.88|>": 51759,
1047
+ "<|27.90|>": 51760,
1048
+ "<|27.92|>": 51761,
1049
+ "<|27.94|>": 51762,
1050
+ "<|27.96|>": 51763,
1051
+ "<|27.98|>": 51764,
1052
+ "<|28.00|>": 51765,
1053
+ "<|28.02|>": 51766,
1054
+ "<|28.04|>": 51767,
1055
+ "<|28.06|>": 51768,
1056
+ "<|28.08|>": 51769,
1057
+ "<|28.10|>": 51770,
1058
+ "<|28.12|>": 51771,
1059
+ "<|28.14|>": 51772,
1060
+ "<|28.16|>": 51773,
1061
+ "<|28.18|>": 51774,
1062
+ "<|28.20|>": 51775,
1063
+ "<|28.22|>": 51776,
1064
+ "<|28.24|>": 51777,
1065
+ "<|28.26|>": 51778,
1066
+ "<|28.28|>": 51779,
1067
+ "<|28.30|>": 51780,
1068
+ "<|28.32|>": 51781,
1069
+ "<|28.34|>": 51782,
1070
+ "<|28.36|>": 51783,
1071
+ "<|28.38|>": 51784,
1072
+ "<|28.40|>": 51785,
1073
+ "<|28.42|>": 51786,
1074
+ "<|28.44|>": 51787,
1075
+ "<|28.46|>": 51788,
1076
+ "<|28.48|>": 51789,
1077
+ "<|28.50|>": 51790,
1078
+ "<|28.52|>": 51791,
1079
+ "<|28.54|>": 51792,
1080
+ "<|28.56|>": 51793,
1081
+ "<|28.58|>": 51794,
1082
+ "<|28.60|>": 51795,
1083
+ "<|28.62|>": 51796,
1084
+ "<|28.64|>": 51797,
1085
+ "<|28.66|>": 51798,
1086
+ "<|28.68|>": 51799,
1087
+ "<|28.70|>": 51800,
1088
+ "<|28.72|>": 51801,
1089
+ "<|28.74|>": 51802,
1090
+ "<|28.76|>": 51803,
1091
+ "<|28.78|>": 51804,
1092
+ "<|28.80|>": 51805,
1093
+ "<|28.82|>": 51806,
1094
+ "<|28.84|>": 51807,
1095
+ "<|28.86|>": 51808,
1096
+ "<|28.88|>": 51809,
1097
+ "<|28.90|>": 51810,
1098
+ "<|28.92|>": 51811,
1099
+ "<|28.94|>": 51812,
1100
+ "<|28.96|>": 51813,
1101
+ "<|28.98|>": 51814,
1102
+ "<|29.00|>": 51815,
1103
+ "<|29.02|>": 51816,
1104
+ "<|29.04|>": 51817,
1105
+ "<|29.06|>": 51818,
1106
+ "<|29.08|>": 51819,
1107
+ "<|29.10|>": 51820,
1108
+ "<|29.12|>": 51821,
1109
+ "<|29.14|>": 51822,
1110
+ "<|29.16|>": 51823,
1111
+ "<|29.18|>": 51824,
1112
+ "<|29.20|>": 51825,
1113
+ "<|29.22|>": 51826,
1114
+ "<|29.24|>": 51827,
1115
+ "<|29.26|>": 51828,
1116
+ "<|29.28|>": 51829,
1117
+ "<|29.30|>": 51830,
1118
+ "<|29.32|>": 51831,
1119
+ "<|29.34|>": 51832,
1120
+ "<|29.36|>": 51833,
1121
+ "<|29.38|>": 51834,
1122
+ "<|29.40|>": 51835,
1123
+ "<|29.42|>": 51836,
1124
+ "<|29.44|>": 51837,
1125
+ "<|29.46|>": 51838,
1126
+ "<|29.48|>": 51839,
1127
+ "<|29.50|>": 51840,
1128
+ "<|29.52|>": 51841,
1129
+ "<|29.54|>": 51842,
1130
+ "<|29.56|>": 51843,
1131
+ "<|29.58|>": 51844,
1132
+ "<|29.60|>": 51845,
1133
+ "<|29.62|>": 51846,
1134
+ "<|29.64|>": 51847,
1135
+ "<|29.66|>": 51848,
1136
+ "<|29.68|>": 51849,
1137
+ "<|29.70|>": 51850,
1138
+ "<|29.72|>": 51851,
1139
+ "<|29.74|>": 51852,
1140
+ "<|29.76|>": 51853,
1141
+ "<|29.78|>": 51854,
1142
+ "<|29.80|>": 51855,
1143
+ "<|29.82|>": 51856,
1144
+ "<|29.84|>": 51857,
1145
+ "<|29.86|>": 51858,
1146
+ "<|29.88|>": 51859,
1147
+ "<|29.90|>": 51860,
1148
+ "<|29.92|>": 51861,
1149
+ "<|29.94|>": 51862,
1150
+ "<|29.96|>": 51863,
1151
+ "<|29.98|>": 51864,
1152
+ "<|3.00|>": 50515,
1153
+ "<|3.02|>": 50516,
1154
+ "<|3.04|>": 50517,
1155
+ "<|3.06|>": 50518,
1156
+ "<|3.08|>": 50519,
1157
+ "<|3.10|>": 50520,
1158
+ "<|3.12|>": 50521,
1159
+ "<|3.14|>": 50522,
1160
+ "<|3.16|>": 50523,
1161
+ "<|3.18|>": 50524,
1162
+ "<|3.20|>": 50525,
1163
+ "<|3.22|>": 50526,
1164
+ "<|3.24|>": 50527,
1165
+ "<|3.26|>": 50528,
1166
+ "<|3.28|>": 50529,
1167
+ "<|3.30|>": 50530,
1168
+ "<|3.32|>": 50531,
1169
+ "<|3.34|>": 50532,
1170
+ "<|3.36|>": 50533,
1171
+ "<|3.38|>": 50534,
1172
+ "<|3.40|>": 50535,
1173
+ "<|3.42|>": 50536,
1174
+ "<|3.44|>": 50537,
1175
+ "<|3.46|>": 50538,
1176
+ "<|3.48|>": 50539,
1177
+ "<|3.50|>": 50540,
1178
+ "<|3.52|>": 50541,
1179
+ "<|3.54|>": 50542,
1180
+ "<|3.56|>": 50543,
1181
+ "<|3.58|>": 50544,
1182
+ "<|3.60|>": 50545,
1183
+ "<|3.62|>": 50546,
1184
+ "<|3.64|>": 50547,
1185
+ "<|3.66|>": 50548,
1186
+ "<|3.68|>": 50549,
1187
+ "<|3.70|>": 50550,
1188
+ "<|3.72|>": 50551,
1189
+ "<|3.74|>": 50552,
1190
+ "<|3.76|>": 50553,
1191
+ "<|3.78|>": 50554,
1192
+ "<|3.80|>": 50555,
1193
+ "<|3.82|>": 50556,
1194
+ "<|3.84|>": 50557,
1195
+ "<|3.86|>": 50558,
1196
+ "<|3.88|>": 50559,
1197
+ "<|3.90|>": 50560,
1198
+ "<|3.92|>": 50561,
1199
+ "<|3.94|>": 50562,
1200
+ "<|3.96|>": 50563,
1201
+ "<|3.98|>": 50564,
1202
+ "<|30.00|>": 51865,
1203
+ "<|4.00|>": 50565,
1204
+ "<|4.02|>": 50566,
1205
+ "<|4.04|>": 50567,
1206
+ "<|4.06|>": 50568,
1207
+ "<|4.08|>": 50569,
1208
+ "<|4.10|>": 50570,
1209
+ "<|4.12|>": 50571,
1210
+ "<|4.14|>": 50572,
1211
+ "<|4.16|>": 50573,
1212
+ "<|4.18|>": 50574,
1213
+ "<|4.20|>": 50575,
1214
+ "<|4.22|>": 50576,
1215
+ "<|4.24|>": 50577,
1216
+ "<|4.26|>": 50578,
1217
+ "<|4.28|>": 50579,
1218
+ "<|4.30|>": 50580,
1219
+ "<|4.32|>": 50581,
1220
+ "<|4.34|>": 50582,
1221
+ "<|4.36|>": 50583,
1222
+ "<|4.38|>": 50584,
1223
+ "<|4.40|>": 50585,
1224
+ "<|4.42|>": 50586,
1225
+ "<|4.44|>": 50587,
1226
+ "<|4.46|>": 50588,
1227
+ "<|4.48|>": 50589,
1228
+ "<|4.50|>": 50590,
1229
+ "<|4.52|>": 50591,
1230
+ "<|4.54|>": 50592,
1231
+ "<|4.56|>": 50593,
1232
+ "<|4.58|>": 50594,
1233
+ "<|4.60|>": 50595,
1234
+ "<|4.62|>": 50596,
1235
+ "<|4.64|>": 50597,
1236
+ "<|4.66|>": 50598,
1237
+ "<|4.68|>": 50599,
1238
+ "<|4.70|>": 50600,
1239
+ "<|4.72|>": 50601,
1240
+ "<|4.74|>": 50602,
1241
+ "<|4.76|>": 50603,
1242
+ "<|4.78|>": 50604,
1243
+ "<|4.80|>": 50605,
1244
+ "<|4.82|>": 50606,
1245
+ "<|4.84|>": 50607,
1246
+ "<|4.86|>": 50608,
1247
+ "<|4.88|>": 50609,
1248
+ "<|4.90|>": 50610,
1249
+ "<|4.92|>": 50611,
1250
+ "<|4.94|>": 50612,
1251
+ "<|4.96|>": 50613,
1252
+ "<|4.98|>": 50614,
1253
+ "<|5.00|>": 50615,
1254
+ "<|5.02|>": 50616,
1255
+ "<|5.04|>": 50617,
1256
+ "<|5.06|>": 50618,
1257
+ "<|5.08|>": 50619,
1258
+ "<|5.10|>": 50620,
1259
+ "<|5.12|>": 50621,
1260
+ "<|5.14|>": 50622,
1261
+ "<|5.16|>": 50623,
1262
+ "<|5.18|>": 50624,
1263
+ "<|5.20|>": 50625,
1264
+ "<|5.22|>": 50626,
1265
+ "<|5.24|>": 50627,
1266
+ "<|5.26|>": 50628,
1267
+ "<|5.28|>": 50629,
1268
+ "<|5.30|>": 50630,
1269
+ "<|5.32|>": 50631,
1270
+ "<|5.34|>": 50632,
1271
+ "<|5.36|>": 50633,
1272
+ "<|5.38|>": 50634,
1273
+ "<|5.40|>": 50635,
1274
+ "<|5.42|>": 50636,
1275
+ "<|5.44|>": 50637,
1276
+ "<|5.46|>": 50638,
1277
+ "<|5.48|>": 50639,
1278
+ "<|5.50|>": 50640,
1279
+ "<|5.52|>": 50641,
1280
+ "<|5.54|>": 50642,
1281
+ "<|5.56|>": 50643,
1282
+ "<|5.58|>": 50644,
1283
+ "<|5.60|>": 50645,
1284
+ "<|5.62|>": 50646,
1285
+ "<|5.64|>": 50647,
1286
+ "<|5.66|>": 50648,
1287
+ "<|5.68|>": 50649,
1288
+ "<|5.70|>": 50650,
1289
+ "<|5.72|>": 50651,
1290
+ "<|5.74|>": 50652,
1291
+ "<|5.76|>": 50653,
1292
+ "<|5.78|>": 50654,
1293
+ "<|5.80|>": 50655,
1294
+ "<|5.82|>": 50656,
1295
+ "<|5.84|>": 50657,
1296
+ "<|5.86|>": 50658,
1297
+ "<|5.88|>": 50659,
1298
+ "<|5.90|>": 50660,
1299
+ "<|5.92|>": 50661,
1300
+ "<|5.94|>": 50662,
1301
+ "<|5.96|>": 50663,
1302
+ "<|5.98|>": 50664,
1303
+ "<|6.00|>": 50665,
1304
+ "<|6.02|>": 50666,
1305
+ "<|6.04|>": 50667,
1306
+ "<|6.06|>": 50668,
1307
+ "<|6.08|>": 50669,
1308
+ "<|6.10|>": 50670,
1309
+ "<|6.12|>": 50671,
1310
+ "<|6.14|>": 50672,
1311
+ "<|6.16|>": 50673,
1312
+ "<|6.18|>": 50674,
1313
+ "<|6.20|>": 50675,
1314
+ "<|6.22|>": 50676,
1315
+ "<|6.24|>": 50677,
1316
+ "<|6.26|>": 50678,
1317
+ "<|6.28|>": 50679,
1318
+ "<|6.30|>": 50680,
1319
+ "<|6.32|>": 50681,
1320
+ "<|6.34|>": 50682,
1321
+ "<|6.36|>": 50683,
1322
+ "<|6.38|>": 50684,
1323
+ "<|6.40|>": 50685,
1324
+ "<|6.42|>": 50686,
1325
+ "<|6.44|>": 50687,
1326
+ "<|6.46|>": 50688,
1327
+ "<|6.48|>": 50689,
1328
+ "<|6.50|>": 50690,
1329
+ "<|6.52|>": 50691,
1330
+ "<|6.54|>": 50692,
1331
+ "<|6.56|>": 50693,
1332
+ "<|6.58|>": 50694,
1333
+ "<|6.60|>": 50695,
1334
+ "<|6.62|>": 50696,
1335
+ "<|6.64|>": 50697,
1336
+ "<|6.66|>": 50698,
1337
+ "<|6.68|>": 50699,
1338
+ "<|6.70|>": 50700,
1339
+ "<|6.72|>": 50701,
1340
+ "<|6.74|>": 50702,
1341
+ "<|6.76|>": 50703,
1342
+ "<|6.78|>": 50704,
1343
+ "<|6.80|>": 50705,
1344
+ "<|6.82|>": 50706,
1345
+ "<|6.84|>": 50707,
1346
+ "<|6.86|>": 50708,
1347
+ "<|6.88|>": 50709,
1348
+ "<|6.90|>": 50710,
1349
+ "<|6.92|>": 50711,
1350
+ "<|6.94|>": 50712,
1351
+ "<|6.96|>": 50713,
1352
+ "<|6.98|>": 50714,
1353
+ "<|7.00|>": 50715,
1354
+ "<|7.02|>": 50716,
1355
+ "<|7.04|>": 50717,
1356
+ "<|7.06|>": 50718,
1357
+ "<|7.08|>": 50719,
1358
+ "<|7.10|>": 50720,
1359
+ "<|7.12|>": 50721,
1360
+ "<|7.14|>": 50722,
1361
+ "<|7.16|>": 50723,
1362
+ "<|7.18|>": 50724,
1363
+ "<|7.20|>": 50725,
1364
+ "<|7.22|>": 50726,
1365
+ "<|7.24|>": 50727,
1366
+ "<|7.26|>": 50728,
1367
+ "<|7.28|>": 50729,
1368
+ "<|7.30|>": 50730,
1369
+ "<|7.32|>": 50731,
1370
+ "<|7.34|>": 50732,
1371
+ "<|7.36|>": 50733,
1372
+ "<|7.38|>": 50734,
1373
+ "<|7.40|>": 50735,
1374
+ "<|7.42|>": 50736,
1375
+ "<|7.44|>": 50737,
1376
+ "<|7.46|>": 50738,
1377
+ "<|7.48|>": 50739,
1378
+ "<|7.50|>": 50740,
1379
+ "<|7.52|>": 50741,
1380
+ "<|7.54|>": 50742,
1381
+ "<|7.56|>": 50743,
1382
+ "<|7.58|>": 50744,
1383
+ "<|7.60|>": 50745,
1384
+ "<|7.62|>": 50746,
1385
+ "<|7.64|>": 50747,
1386
+ "<|7.66|>": 50748,
1387
+ "<|7.68|>": 50749,
1388
+ "<|7.70|>": 50750,
1389
+ "<|7.72|>": 50751,
1390
+ "<|7.74|>": 50752,
1391
+ "<|7.76|>": 50753,
1392
+ "<|7.78|>": 50754,
1393
+ "<|7.80|>": 50755,
1394
+ "<|7.82|>": 50756,
1395
+ "<|7.84|>": 50757,
1396
+ "<|7.86|>": 50758,
1397
+ "<|7.88|>": 50759,
1398
+ "<|7.90|>": 50760,
1399
+ "<|7.92|>": 50761,
1400
+ "<|7.94|>": 50762,
1401
+ "<|7.96|>": 50763,
1402
+ "<|7.98|>": 50764,
1403
+ "<|8.00|>": 50765,
1404
+ "<|8.02|>": 50766,
1405
+ "<|8.04|>": 50767,
1406
+ "<|8.06|>": 50768,
1407
+ "<|8.08|>": 50769,
1408
+ "<|8.10|>": 50770,
1409
+ "<|8.12|>": 50771,
1410
+ "<|8.14|>": 50772,
1411
+ "<|8.16|>": 50773,
1412
+ "<|8.18|>": 50774,
1413
+ "<|8.20|>": 50775,
1414
+ "<|8.22|>": 50776,
1415
+ "<|8.24|>": 50777,
1416
+ "<|8.26|>": 50778,
1417
+ "<|8.28|>": 50779,
1418
+ "<|8.30|>": 50780,
1419
+ "<|8.32|>": 50781,
1420
+ "<|8.34|>": 50782,
1421
+ "<|8.36|>": 50783,
1422
+ "<|8.38|>": 50784,
1423
+ "<|8.40|>": 50785,
1424
+ "<|8.42|>": 50786,
1425
+ "<|8.44|>": 50787,
1426
+ "<|8.46|>": 50788,
1427
+ "<|8.48|>": 50789,
1428
+ "<|8.50|>": 50790,
1429
+ "<|8.52|>": 50791,
1430
+ "<|8.54|>": 50792,
1431
+ "<|8.56|>": 50793,
1432
+ "<|8.58|>": 50794,
1433
+ "<|8.60|>": 50795,
1434
+ "<|8.62|>": 50796,
1435
+ "<|8.64|>": 50797,
1436
+ "<|8.66|>": 50798,
1437
+ "<|8.68|>": 50799,
1438
+ "<|8.70|>": 50800,
1439
+ "<|8.72|>": 50801,
1440
+ "<|8.74|>": 50802,
1441
+ "<|8.76|>": 50803,
1442
+ "<|8.78|>": 50804,
1443
+ "<|8.80|>": 50805,
1444
+ "<|8.82|>": 50806,
1445
+ "<|8.84|>": 50807,
1446
+ "<|8.86|>": 50808,
1447
+ "<|8.88|>": 50809,
1448
+ "<|8.90|>": 50810,
1449
+ "<|8.92|>": 50811,
1450
+ "<|8.94|>": 50812,
1451
+ "<|8.96|>": 50813,
1452
+ "<|8.98|>": 50814,
1453
+ "<|9.00|>": 50815,
1454
+ "<|9.02|>": 50816,
1455
+ "<|9.04|>": 50817,
1456
+ "<|9.06|>": 50818,
1457
+ "<|9.08|>": 50819,
1458
+ "<|9.10|>": 50820,
1459
+ "<|9.12|>": 50821,
1460
+ "<|9.14|>": 50822,
1461
+ "<|9.16|>": 50823,
1462
+ "<|9.18|>": 50824,
1463
+ "<|9.20|>": 50825,
1464
+ "<|9.22|>": 50826,
1465
+ "<|9.24|>": 50827,
1466
+ "<|9.26|>": 50828,
1467
+ "<|9.28|>": 50829,
1468
+ "<|9.30|>": 50830,
1469
+ "<|9.32|>": 50831,
1470
+ "<|9.34|>": 50832,
1471
+ "<|9.36|>": 50833,
1472
+ "<|9.38|>": 50834,
1473
+ "<|9.40|>": 50835,
1474
+ "<|9.42|>": 50836,
1475
+ "<|9.44|>": 50837,
1476
+ "<|9.46|>": 50838,
1477
+ "<|9.48|>": 50839,
1478
+ "<|9.50|>": 50840,
1479
+ "<|9.52|>": 50841,
1480
+ "<|9.54|>": 50842,
1481
+ "<|9.56|>": 50843,
1482
+ "<|9.58|>": 50844,
1483
+ "<|9.60|>": 50845,
1484
+ "<|9.62|>": 50846,
1485
+ "<|9.64|>": 50847,
1486
+ "<|9.66|>": 50848,
1487
+ "<|9.68|>": 50849,
1488
+ "<|9.70|>": 50850,
1489
+ "<|9.72|>": 50851,
1490
+ "<|9.74|>": 50852,
1491
+ "<|9.76|>": 50853,
1492
+ "<|9.78|>": 50854,
1493
+ "<|9.80|>": 50855,
1494
+ "<|9.82|>": 50856,
1495
+ "<|9.84|>": 50857,
1496
+ "<|9.86|>": 50858,
1497
+ "<|9.88|>": 50859,
1498
+ "<|9.90|>": 50860,
1499
+ "<|9.92|>": 50861,
1500
+ "<|9.94|>": 50862,
1501
+ "<|9.96|>": 50863,
1502
+ "<|9.98|>": 50864,
1503
+ "<|af|>": 50327,
1504
+ "<|am|>": 50334,
1505
+ "<|ar|>": 50272,
1506
+ "<|as|>": 50350,
1507
+ "<|az|>": 50304,
1508
+ "<|ba|>": 50355,
1509
+ "<|be|>": 50330,
1510
+ "<|bg|>": 50292,
1511
+ "<|bn|>": 50302,
1512
+ "<|bo|>": 50347,
1513
+ "<|br|>": 50309,
1514
+ "<|bs|>": 50315,
1515
+ "<|ca|>": 50270,
1516
+ "<|cs|>": 50283,
1517
+ "<|cy|>": 50297,
1518
+ "<|da|>": 50285,
1519
+ "<|de|>": 50261,
1520
+ "<|el|>": 50281,
1521
+ "<|endoftext|>": 50257,
1522
+ "<|en|>": 50259,
1523
+ "<|es|>": 50262,
1524
+ "<|et|>": 50307,
1525
+ "<|eu|>": 50310,
1526
+ "<|fa|>": 50300,
1527
+ "<|fi|>": 50277,
1528
+ "<|fo|>": 50338,
1529
+ "<|fr|>": 50265,
1530
+ "<|gl|>": 50319,
1531
+ "<|gu|>": 50333,
1532
+ "<|haw|>": 50352,
1533
+ "<|ha|>": 50354,
1534
+ "<|he|>": 50279,
1535
+ "<|hi|>": 50276,
1536
+ "<|hr|>": 50291,
1537
+ "<|ht|>": 50339,
1538
+ "<|hu|>": 50286,
1539
+ "<|hy|>": 50312,
1540
+ "<|id|>": 50275,
1541
+ "<|is|>": 50311,
1542
+ "<|it|>": 50274,
1543
+ "<|ja|>": 50266,
1544
+ "<|jw|>": 50356,
1545
+ "<|ka|>": 50329,
1546
+ "<|kk|>": 50316,
1547
+ "<|km|>": 50323,
1548
+ "<|kn|>": 50306,
1549
+ "<|ko|>": 50264,
1550
+ "<|la|>": 50294,
1551
+ "<|lb|>": 50345,
1552
+ "<|ln|>": 50353,
1553
+ "<|lo|>": 50336,
1554
+ "<|lt|>": 50293,
1555
+ "<|lv|>": 50301,
1556
+ "<|mg|>": 50349,
1557
+ "<|mi|>": 50295,
1558
+ "<|mk|>": 50308,
1559
+ "<|ml|>": 50296,
1560
+ "<|mn|>": 50314,
1561
+ "<|mr|>": 50320,
1562
+ "<|ms|>": 50282,
1563
+ "<|mt|>": 50343,
1564
+ "<|my|>": 50346,
1565
+ "<|ne|>": 50313,
1566
+ "<|nl|>": 50271,
1567
+ "<|nn|>": 50342,
1568
+ "<|nospeech|>": 50363,
1569
+ "<|notimestamps|>": 50364,
1570
+ "<|no|>": 50288,
1571
+ "<|oc|>": 50328,
1572
+ "<|pa|>": 50321,
1573
+ "<|pl|>": 50269,
1574
+ "<|ps|>": 50340,
1575
+ "<|pt|>": 50267,
1576
+ "<|ro|>": 50284,
1577
+ "<|ru|>": 50263,
1578
+ "<|sa|>": 50344,
1579
+ "<|sd|>": 50332,
1580
+ "<|si|>": 50322,
1581
+ "<|sk|>": 50298,
1582
+ "<|sl|>": 50305,
1583
+ "<|sn|>": 50324,
1584
+ "<|so|>": 50326,
1585
+ "<|sq|>": 50317,
1586
+ "<|sr|>": 50303,
1587
+ "<|startoflm|>": 50361,
1588
+ "<|startofprev|>": 50362,
1589
+ "<|startoftranscript|>": 50258,
1590
+ "<|su|>": 50357,
1591
+ "<|sv|>": 50273,
1592
+ "<|sw|>": 50318,
1593
+ "<|ta|>": 50287,
1594
+ "<|te|>": 50299,
1595
+ "<|tg|>": 50331,
1596
+ "<|th|>": 50289,
1597
+ "<|tk|>": 50341,
1598
+ "<|tl|>": 50348,
1599
+ "<|transcribe|>": 50360,
1600
+ "<|translate|>": 50359,
1601
+ "<|tr|>": 50268,
1602
+ "<|tt|>": 50351,
1603
+ "<|uk|>": 50280,
1604
+ "<|ur|>": 50290,
1605
+ "<|uz|>": 50337,
1606
+ "<|vi|>": 50278,
1607
+ "<|yi|>": 50335,
1608
+ "<|yo|>": 50325,
1609
+ "<|yue|>": 50358,
1610
+ "<|zh|>": 50260
1611
+ }
whisper-large-v3/config.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "openai/whisper-large-v3",
3
+ "activation_dropout": 0.0,
4
+ "activation_function": "gelu",
5
+ "apply_spec_augment": false,
6
+ "architectures": [
7
+ "WhisperForConditionalGeneration"
8
+ ],
9
+ "attention_dropout": 0.0,
10
+ "begin_suppress_tokens": [
11
+ 220,
12
+ 50257
13
+ ],
14
+ "bos_token_id": 50257,
15
+ "classifier_proj_size": 256,
16
+ "d_model": 384,
17
+ "decoder_attention_heads": 6,
18
+ "decoder_ffn_dim": 1536,
19
+ "decoder_layerdrop": 0.0,
20
+ "decoder_layers": 4,
21
+ "decoder_start_token_id": 50258,
22
+ "dropout": 0.0,
23
+ "encoder_attention_heads": 6,
24
+ "encoder_ffn_dim": 1536,
25
+ "encoder_layerdrop": 0.0,
26
+ "encoder_layers": 4,
27
+ "eos_token_id": 50257,
28
+ "init_std": 0.02,
29
+ "is_encoder_decoder": true,
30
+ "mask_feature_length": 10,
31
+ "mask_feature_min_masks": 0,
32
+ "mask_feature_prob": 0.0,
33
+ "mask_time_length": 10,
34
+ "mask_time_min_masks": 2,
35
+ "mask_time_prob": 0.05,
36
+ "max_length": 448,
37
+ "max_source_positions": 1500,
38
+ "max_target_positions": 448,
39
+ "median_filter_width": 7,
40
+ "model_type": "whisper",
41
+ "num_hidden_layers": 4,
42
+ "num_mel_bins": 128,
43
+ "pad_token_id": 50256,
44
+ "scale_embedding": false,
45
+ "torch_dtype": "float16",
46
+ "transformers_version": "4.36.0.dev0",
47
+ "use_cache": true,
48
+ "use_weighted_layer_sum": false,
49
+ "vocab_size": 51866
50
+ }
whisper-large-v3/generation_config.json ADDED
@@ -0,0 +1,265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alignment_heads": [
3
+ [
4
+ 7,
5
+ 0
6
+ ],
7
+ [
8
+ 10,
9
+ 17
10
+ ],
11
+ [
12
+ 12,
13
+ 18
14
+ ],
15
+ [
16
+ 13,
17
+ 12
18
+ ],
19
+ [
20
+ 16,
21
+ 1
22
+ ],
23
+ [
24
+ 17,
25
+ 14
26
+ ],
27
+ [
28
+ 19,
29
+ 11
30
+ ],
31
+ [
32
+ 21,
33
+ 4
34
+ ],
35
+ [
36
+ 24,
37
+ 1
38
+ ],
39
+ [
40
+ 25,
41
+ 6
42
+ ]
43
+ ],
44
+ "begin_suppress_tokens": [
45
+ 220,
46
+ 50257
47
+ ],
48
+ "bos_token_id": 50257,
49
+ "decoder_start_token_id": 50258,
50
+ "eos_token_id": 50257,
51
+ "forced_decoder_ids": [
52
+ [
53
+ 1,
54
+ null
55
+ ],
56
+ [
57
+ 2,
58
+ 50360
59
+ ]
60
+ ],
61
+ "is_multilingual": true,
62
+ "lang_to_id": {
63
+ "<|af|>": 50327,
64
+ "<|am|>": 50334,
65
+ "<|ar|>": 50272,
66
+ "<|as|>": 50350,
67
+ "<|az|>": 50304,
68
+ "<|ba|>": 50355,
69
+ "<|be|>": 50330,
70
+ "<|bg|>": 50292,
71
+ "<|bn|>": 50302,
72
+ "<|bo|>": 50347,
73
+ "<|br|>": 50309,
74
+ "<|bs|>": 50315,
75
+ "<|ca|>": 50270,
76
+ "<|cs|>": 50283,
77
+ "<|cy|>": 50297,
78
+ "<|da|>": 50285,
79
+ "<|de|>": 50261,
80
+ "<|el|>": 50281,
81
+ "<|en|>": 50259,
82
+ "<|es|>": 50262,
83
+ "<|et|>": 50307,
84
+ "<|eu|>": 50310,
85
+ "<|fa|>": 50300,
86
+ "<|fi|>": 50277,
87
+ "<|fo|>": 50338,
88
+ "<|fr|>": 50265,
89
+ "<|gl|>": 50319,
90
+ "<|gu|>": 50333,
91
+ "<|haw|>": 50352,
92
+ "<|ha|>": 50354,
93
+ "<|he|>": 50279,
94
+ "<|hi|>": 50276,
95
+ "<|hr|>": 50291,
96
+ "<|ht|>": 50339,
97
+ "<|hu|>": 50286,
98
+ "<|hy|>": 50312,
99
+ "<|id|>": 50275,
100
+ "<|is|>": 50311,
101
+ "<|it|>": 50274,
102
+ "<|ja|>": 50266,
103
+ "<|jw|>": 50356,
104
+ "<|ka|>": 50329,
105
+ "<|kk|>": 50316,
106
+ "<|km|>": 50323,
107
+ "<|kn|>": 50306,
108
+ "<|ko|>": 50264,
109
+ "<|la|>": 50294,
110
+ "<|lb|>": 50345,
111
+ "<|ln|>": 50353,
112
+ "<|lo|>": 50336,
113
+ "<|lt|>": 50293,
114
+ "<|lv|>": 50301,
115
+ "<|mg|>": 50349,
116
+ "<|mi|>": 50295,
117
+ "<|mk|>": 50308,
118
+ "<|ml|>": 50296,
119
+ "<|mn|>": 50314,
120
+ "<|mr|>": 50320,
121
+ "<|ms|>": 50282,
122
+ "<|mt|>": 50343,
123
+ "<|my|>": 50346,
124
+ "<|ne|>": 50313,
125
+ "<|nl|>": 50271,
126
+ "<|nn|>": 50342,
127
+ "<|no|>": 50288,
128
+ "<|oc|>": 50328,
129
+ "<|pa|>": 50321,
130
+ "<|pl|>": 50269,
131
+ "<|ps|>": 50340,
132
+ "<|pt|>": 50267,
133
+ "<|ro|>": 50284,
134
+ "<|ru|>": 50263,
135
+ "<|sa|>": 50344,
136
+ "<|sd|>": 50332,
137
+ "<|si|>": 50322,
138
+ "<|sk|>": 50298,
139
+ "<|sl|>": 50305,
140
+ "<|sn|>": 50324,
141
+ "<|so|>": 50326,
142
+ "<|sq|>": 50317,
143
+ "<|sr|>": 50303,
144
+ "<|su|>": 50357,
145
+ "<|sv|>": 50273,
146
+ "<|sw|>": 50318,
147
+ "<|ta|>": 50287,
148
+ "<|te|>": 50299,
149
+ "<|tg|>": 50331,
150
+ "<|th|>": 50289,
151
+ "<|tk|>": 50341,
152
+ "<|tl|>": 50348,
153
+ "<|tr|>": 50268,
154
+ "<|tt|>": 50351,
155
+ "<|uk|>": 50280,
156
+ "<|ur|>": 50290,
157
+ "<|uz|>": 50337,
158
+ "<|vi|>": 50278,
159
+ "<|yi|>": 50335,
160
+ "<|yo|>": 50325,
161
+ "<|yue|>": 50358,
162
+ "<|zh|>": 50260
163
+ },
164
+ "max_initial_timestamp_index": 50,
165
+ "max_length": 448,
166
+ "no_timestamps_token_id": 50364,
167
+ "pad_token_id": 50257,
168
+ "prev_sot_token_id": 50362,
169
+ "return_timestamps": false,
170
+ "suppress_tokens": [
171
+ 1,
172
+ 2,
173
+ 7,
174
+ 8,
175
+ 9,
176
+ 10,
177
+ 14,
178
+ 25,
179
+ 26,
180
+ 27,
181
+ 28,
182
+ 29,
183
+ 31,
184
+ 58,
185
+ 59,
186
+ 60,
187
+ 61,
188
+ 62,
189
+ 63,
190
+ 90,
191
+ 91,
192
+ 92,
193
+ 93,
194
+ 359,
195
+ 503,
196
+ 522,
197
+ 542,
198
+ 873,
199
+ 893,
200
+ 902,
201
+ 918,
202
+ 922,
203
+ 931,
204
+ 1350,
205
+ 1853,
206
+ 1982,
207
+ 2460,
208
+ 2627,
209
+ 3246,
210
+ 3253,
211
+ 3268,
212
+ 3536,
213
+ 3846,
214
+ 3961,
215
+ 4183,
216
+ 4667,
217
+ 6585,
218
+ 6647,
219
+ 7273,
220
+ 9061,
221
+ 9383,
222
+ 10428,
223
+ 10929,
224
+ 11938,
225
+ 12033,
226
+ 12331,
227
+ 12562,
228
+ 13793,
229
+ 14157,
230
+ 14635,
231
+ 15265,
232
+ 15618,
233
+ 16553,
234
+ 16604,
235
+ 18362,
236
+ 18956,
237
+ 20075,
238
+ 21675,
239
+ 22520,
240
+ 26130,
241
+ 26161,
242
+ 26435,
243
+ 28279,
244
+ 29464,
245
+ 31650,
246
+ 32302,
247
+ 32470,
248
+ 36865,
249
+ 42863,
250
+ 47425,
251
+ 49870,
252
+ 50254,
253
+ 50258,
254
+ 50359,
255
+ 50360,
256
+ 50361,
257
+ 50362,
258
+ 50363
259
+ ],
260
+ "task_to_id": {
261
+ "transcribe": 50360,
262
+ "translate": 50359
263
+ },
264
+ "transformers_version": "4.36.0.dev0"
265
+ }
whisper-large-v3/merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
whisper-large-v3/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7b0cd79c483dca55792dcc2eb7b0ce8bc3cf934d8d67ff8f3bf6557ee023ee5
3
+ size 16534696
whisper-large-v3/model.safetensors.index.json ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 16527360
4
+ },
5
+ "weight_map": {
6
+ "model.encoder.conv1.weight": "model.safetensors",
7
+ "model.encoder.conv1.bias": "model.safetensors",
8
+ "model.encoder.conv2.weight": "model.safetensors",
9
+ "model.encoder.conv2.bias": "model.safetensors",
10
+ "model.encoder.embed_positions.weight": "model.safetensors",
11
+ "model.encoder.layers.0.self_attn.k_proj.weight": "model.safetensors",
12
+ "model.encoder.layers.0.self_attn.v_proj.weight": "model.safetensors",
13
+ "model.encoder.layers.0.self_attn.v_proj.bias": "model.safetensors",
14
+ "model.encoder.layers.0.self_attn.q_proj.weight": "model.safetensors",
15
+ "model.encoder.layers.0.self_attn.q_proj.bias": "model.safetensors",
16
+ "model.encoder.layers.0.self_attn.out_proj.weight": "model.safetensors",
17
+ "model.encoder.layers.0.self_attn.out_proj.bias": "model.safetensors",
18
+ "model.encoder.layers.0.self_attn_layer_norm.weight": "model.safetensors",
19
+ "model.encoder.layers.0.self_attn_layer_norm.bias": "model.safetensors",
20
+ "model.encoder.layers.0.fc1.weight": "model.safetensors",
21
+ "model.encoder.layers.0.fc1.bias": "model.safetensors",
22
+ "model.encoder.layers.0.fc2.weight": "model.safetensors",
23
+ "model.encoder.layers.0.fc2.bias": "model.safetensors",
24
+ "model.encoder.layers.0.final_layer_norm.weight": "model.safetensors",
25
+ "model.encoder.layers.0.final_layer_norm.bias": "model.safetensors",
26
+ "model.encoder.layers.1.self_attn.k_proj.weight": "model.safetensors",
27
+ "model.encoder.layers.1.self_attn.v_proj.weight": "model.safetensors",
28
+ "model.encoder.layers.1.self_attn.v_proj.bias": "model.safetensors",
29
+ "model.encoder.layers.1.self_attn.q_proj.weight": "model.safetensors",
30
+ "model.encoder.layers.1.self_attn.q_proj.bias": "model.safetensors",
31
+ "model.encoder.layers.1.self_attn.out_proj.weight": "model.safetensors",
32
+ "model.encoder.layers.1.self_attn.out_proj.bias": "model.safetensors",
33
+ "model.encoder.layers.1.self_attn_layer_norm.weight": "model.safetensors",
34
+ "model.encoder.layers.1.self_attn_layer_norm.bias": "model.safetensors",
35
+ "model.encoder.layers.1.fc1.weight": "model.safetensors",
36
+ "model.encoder.layers.1.fc1.bias": "model.safetensors",
37
+ "model.encoder.layers.1.fc2.weight": "model.safetensors",
38
+ "model.encoder.layers.1.fc2.bias": "model.safetensors",
39
+ "model.encoder.layers.1.final_layer_norm.weight": "model.safetensors",
40
+ "model.encoder.layers.1.final_layer_norm.bias": "model.safetensors",
41
+ "model.encoder.layers.2.self_attn.k_proj.weight": "model.safetensors",
42
+ "model.encoder.layers.2.self_attn.v_proj.weight": "model.safetensors",
43
+ "model.encoder.layers.2.self_attn.v_proj.bias": "model.safetensors",
44
+ "model.encoder.layers.2.self_attn.q_proj.weight": "model.safetensors",
45
+ "model.encoder.layers.2.self_attn.q_proj.bias": "model.safetensors",
46
+ "model.encoder.layers.2.self_attn.out_proj.weight": "model.safetensors",
47
+ "model.encoder.layers.2.self_attn.out_proj.bias": "model.safetensors",
48
+ "model.encoder.layers.2.self_attn_layer_norm.weight": "model.safetensors",
49
+ "model.encoder.layers.2.self_attn_layer_norm.bias": "model.safetensors",
50
+ "model.encoder.layers.2.fc1.weight": "model.safetensors",
51
+ "model.encoder.layers.2.fc1.bias": "model.safetensors",
52
+ "model.encoder.layers.2.fc2.weight": "model.safetensors",
53
+ "model.encoder.layers.2.fc2.bias": "model.safetensors",
54
+ "model.encoder.layers.2.final_layer_norm.weight": "model.safetensors",
55
+ "model.encoder.layers.2.final_layer_norm.bias": "model.safetensors",
56
+ "model.encoder.layers.3.self_attn.k_proj.weight": "model.safetensors",
57
+ "model.encoder.layers.3.self_attn.v_proj.weight": "model.safetensors",
58
+ "model.encoder.layers.3.self_attn.v_proj.bias": "model.safetensors",
59
+ "model.encoder.layers.3.self_attn.q_proj.weight": "model.safetensors",
60
+ "model.encoder.layers.3.self_attn.q_proj.bias": "model.safetensors",
61
+ "model.encoder.layers.3.self_attn.out_proj.weight": "model.safetensors",
62
+ "model.encoder.layers.3.self_attn.out_proj.bias": "model.safetensors",
63
+ "model.encoder.layers.3.self_attn_layer_norm.weight": "model.safetensors",
64
+ "model.encoder.layers.3.self_attn_layer_norm.bias": "model.safetensors",
65
+ "model.encoder.layers.3.fc1.weight": "model.safetensors",
66
+ "model.encoder.layers.3.fc1.bias": "model.safetensors",
67
+ "model.encoder.layers.3.fc2.weight": "model.safetensors",
68
+ "model.encoder.layers.3.fc2.bias": "model.safetensors",
69
+ "model.encoder.layers.3.final_layer_norm.weight": "model.safetensors",
70
+ "model.encoder.layers.3.final_layer_norm.bias": "model.safetensors",
71
+ "model.encoder.layer_norm.weight": "model.safetensors",
72
+ "model.encoder.layer_norm.bias": "model.safetensors"
73
+ }
74
+ }
whisper-large-v3/normalizer.json ADDED
@@ -0,0 +1,1742 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accessorise": "accessorize",
3
+ "accessorised": "accessorized",
4
+ "accessorises": "accessorizes",
5
+ "accessorising": "accessorizing",
6
+ "acclimatisation": "acclimatization",
7
+ "acclimatise": "acclimatize",
8
+ "acclimatised": "acclimatized",
9
+ "acclimatises": "acclimatizes",
10
+ "acclimatising": "acclimatizing",
11
+ "accoutrements": "accouterments",
12
+ "aeon": "eon",
13
+ "aeons": "eons",
14
+ "aerogramme": "aerogram",
15
+ "aerogrammes": "aerograms",
16
+ "aeroplane": "airplane",
17
+ "aeroplanes": "airplanes",
18
+ "aesthete": "esthete",
19
+ "aesthetes": "esthetes",
20
+ "aesthetic": "esthetic",
21
+ "aesthetically": "esthetically",
22
+ "aesthetics": "esthetics",
23
+ "aetiology": "etiology",
24
+ "ageing": "aging",
25
+ "aggrandisement": "aggrandizement",
26
+ "agonise": "agonize",
27
+ "agonised": "agonized",
28
+ "agonises": "agonizes",
29
+ "agonising": "agonizing",
30
+ "agonisingly": "agonizingly",
31
+ "almanack": "almanac",
32
+ "almanacks": "almanacs",
33
+ "aluminium": "aluminum",
34
+ "amortisable": "amortizable",
35
+ "amortisation": "amortization",
36
+ "amortisations": "amortizations",
37
+ "amortise": "amortize",
38
+ "amortised": "amortized",
39
+ "amortises": "amortizes",
40
+ "amortising": "amortizing",
41
+ "amphitheatre": "amphitheater",
42
+ "amphitheatres": "amphitheaters",
43
+ "anaemia": "anemia",
44
+ "anaemic": "anemic",
45
+ "anaesthesia": "anesthesia",
46
+ "anaesthetic": "anesthetic",
47
+ "anaesthetics": "anesthetics",
48
+ "anaesthetise": "anesthetize",
49
+ "anaesthetised": "anesthetized",
50
+ "anaesthetises": "anesthetizes",
51
+ "anaesthetising": "anesthetizing",
52
+ "anaesthetist": "anesthetist",
53
+ "anaesthetists": "anesthetists",
54
+ "anaesthetize": "anesthetize",
55
+ "anaesthetized": "anesthetized",
56
+ "anaesthetizes": "anesthetizes",
57
+ "anaesthetizing": "anesthetizing",
58
+ "analogue": "analog",
59
+ "analogues": "analogs",
60
+ "analyse": "analyze",
61
+ "analysed": "analyzed",
62
+ "analyses": "analyzes",
63
+ "analysing": "analyzing",
64
+ "anglicise": "anglicize",
65
+ "anglicised": "anglicized",
66
+ "anglicises": "anglicizes",
67
+ "anglicising": "anglicizing",
68
+ "annualised": "annualized",
69
+ "antagonise": "antagonize",
70
+ "antagonised": "antagonized",
71
+ "antagonises": "antagonizes",
72
+ "antagonising": "antagonizing",
73
+ "apologise": "apologize",
74
+ "apologised": "apologized",
75
+ "apologises": "apologizes",
76
+ "apologising": "apologizing",
77
+ "appal": "appall",
78
+ "appals": "appalls",
79
+ "appetiser": "appetizer",
80
+ "appetisers": "appetizers",
81
+ "appetising": "appetizing",
82
+ "appetisingly": "appetizingly",
83
+ "arbour": "arbor",
84
+ "arbours": "arbors",
85
+ "archaeologically": "archeologically",
86
+ "archaeologist": "archeologist",
87
+ "archaeologists": "archeologists",
88
+ "archaeology": "archeology</span>",
89
+ "archeological": "archaeological",
90
+ "ardour": "ardor",
91
+ "armour": "armor",
92
+ "armoured": "armored",
93
+ "armourer": "armorer",
94
+ "armourers": "armorers",
95
+ "armouries": "armories",
96
+ "armoury": "armory",
97
+ "artefact": "artifact",
98
+ "artefacts": "artifacts",
99
+ "authorise": "authorize",
100
+ "authorised": "authorized",
101
+ "authorises": "authorizes",
102
+ "authorising": "authorizing",
103
+ "axe": "ax",
104
+ "backpedalled": "backpedaled",
105
+ "backpedalling": "backpedaling",
106
+ "bannister": "banister",
107
+ "bannisters": "banisters",
108
+ "baptise": "baptize",
109
+ "baptised": "baptized",
110
+ "baptises": "baptizes",
111
+ "baptising": "baptizing",
112
+ "bastardise": "bastardize",
113
+ "bastardised": "bastardized",
114
+ "bastardises": "bastardizes",
115
+ "bastardising": "bastardizing",
116
+ "battleax": "battleaxe",
117
+ "baulk": "balk",
118
+ "baulked": "balked",
119
+ "baulking": "balking",
120
+ "baulks": "balks",
121
+ "bedevilled": "bedeviled",
122
+ "bedevilling": "bedeviling",
123
+ "behaviour": "behavior",
124
+ "behavioural": "behavioral",
125
+ "behaviourism": "behaviorism",
126
+ "behaviourist": "behaviorist",
127
+ "behaviourists": "behaviorists",
128
+ "behaviours": "behaviors",
129
+ "behove": "behoove",
130
+ "behoved": "behooved",
131
+ "behoves": "behooves",
132
+ "bejewelled": "bejeweled",
133
+ "belabour": "belabor",
134
+ "belaboured": "belabored",
135
+ "belabouring": "belaboring",
136
+ "belabours": "belabors",
137
+ "bevelled": "beveled",
138
+ "bevvies": "bevies",
139
+ "bevvy": "bevy",
140
+ "biassed": "biased",
141
+ "biassing": "biasing",
142
+ "bingeing": "binging",
143
+ "bougainvillaea": "bougainvillea",
144
+ "bougainvillaeas": "bougainvilleas",
145
+ "bowdlerise": "bowdlerize",
146
+ "bowdlerised": "bowdlerized",
147
+ "bowdlerises": "bowdlerizes",
148
+ "bowdlerising": "bowdlerizing",
149
+ "breathalyse": "breathalyze",
150
+ "breathalysed": "breathalyzed",
151
+ "breathalyser": "breathalyzer",
152
+ "breathalysers": "breathalyzers",
153
+ "breathalyses": "breathalyzes",
154
+ "breathalysing": "breathalyzing",
155
+ "brutalise": "brutalize",
156
+ "brutalised": "brutalized",
157
+ "brutalises": "brutalizes",
158
+ "brutalising": "brutalizing",
159
+ "busses": "buses",
160
+ "bussing": "busing",
161
+ "caesarean": "cesarean",
162
+ "caesareans": "cesareans",
163
+ "calibre": "caliber",
164
+ "calibres": "calibers",
165
+ "calliper": "caliper",
166
+ "callipers": "calipers",
167
+ "callisthenics": "calisthenics",
168
+ "canalise": "canalize",
169
+ "canalised": "canalized",
170
+ "canalises": "canalizes",
171
+ "canalising": "canalizing",
172
+ "cancelation": "cancellation",
173
+ "cancelations": "cancellations",
174
+ "cancelled": "canceled",
175
+ "cancelling": "canceling",
176
+ "candour": "candor",
177
+ "cannibalise": "cannibalize",
178
+ "cannibalised": "cannibalized",
179
+ "cannibalises": "cannibalizes",
180
+ "cannibalising": "cannibalizing",
181
+ "canonise": "canonize",
182
+ "canonised": "canonized",
183
+ "canonises": "canonizes",
184
+ "canonising": "canonizing",
185
+ "capitalise": "capitalize",
186
+ "capitalised": "capitalized",
187
+ "capitalises": "capitalizes",
188
+ "capitalising": "capitalizing",
189
+ "caramelise": "caramelize",
190
+ "caramelised": "caramelized",
191
+ "caramelises": "caramelizes",
192
+ "caramelising": "caramelizing",
193
+ "carbonise": "carbonize",
194
+ "carbonised": "carbonized",
195
+ "carbonises": "carbonizes",
196
+ "carbonising": "carbonizing",
197
+ "carolled": "caroled",
198
+ "carolling": "caroling",
199
+ "catalogue": "catalog",
200
+ "catalogued": "cataloged",
201
+ "catalogues": "catalogs",
202
+ "cataloguing": "cataloging",
203
+ "catalyse": "catalyze",
204
+ "catalysed": "catalyzed",
205
+ "catalyses": "catalyzes",
206
+ "catalysing": "catalyzing",
207
+ "categorise": "categorize",
208
+ "categorised": "categorized",
209
+ "categorises": "categorizes",
210
+ "categorising": "categorizing",
211
+ "cauterise": "cauterize",
212
+ "cauterised": "cauterized",
213
+ "cauterises": "cauterizes",
214
+ "cauterising": "cauterizing",
215
+ "cavilled": "caviled",
216
+ "cavilling": "caviling",
217
+ "centigramme": "centigram",
218
+ "centigrammes": "centigrams",
219
+ "centilitre": "centiliter",
220
+ "centilitres": "centiliters",
221
+ "centimetre": "centimeter",
222
+ "centimetres": "centimeters",
223
+ "centralise": "centralize",
224
+ "centralised": "centralized",
225
+ "centralises": "centralizes",
226
+ "centralising": "centralizing",
227
+ "centre": "center",
228
+ "centred": "centered",
229
+ "centrefold": "centerfold",
230
+ "centrefolds": "centerfolds",
231
+ "centrepiece": "centerpiece",
232
+ "centrepieces": "centerpieces",
233
+ "centres": "centers",
234
+ "channelled": "channeled",
235
+ "channelling": "channeling",
236
+ "characterise": "characterize",
237
+ "characterised": "characterized",
238
+ "characterises": "characterizes",
239
+ "characterising": "characterizing",
240
+ "cheque": "check",
241
+ "chequebook": "checkbook",
242
+ "chequebooks": "checkbooks",
243
+ "chequered": "checkered",
244
+ "cheques": "checks",
245
+ "chilli": "chili",
246
+ "chimaera": "chimera",
247
+ "chimaeras": "chimeras",
248
+ "chiselled": "chiseled",
249
+ "chiselling": "chiseling",
250
+ "circularise": "circularize",
251
+ "circularised": "circularized",
252
+ "circularises": "circularizes",
253
+ "circularising": "circularizing",
254
+ "civilise": "civilize",
255
+ "civilised": "civilized",
256
+ "civilises": "civilizes",
257
+ "civilising": "civilizing",
258
+ "clamour": "clamor",
259
+ "clamoured": "clamored",
260
+ "clamouring": "clamoring",
261
+ "clamours": "clamors",
262
+ "clangour": "clangor",
263
+ "clarinettist": "clarinetist",
264
+ "clarinettists": "clarinetists",
265
+ "collectivise": "collectivize",
266
+ "collectivised": "collectivized",
267
+ "collectivises": "collectivizes",
268
+ "collectivising": "collectivizing",
269
+ "colonisation": "colonization",
270
+ "colonise": "colonize",
271
+ "colonised": "colonized",
272
+ "coloniser": "colonizer",
273
+ "colonisers": "colonizers",
274
+ "colonises": "colonizes",
275
+ "colonising": "colonizing",
276
+ "colour": "color",
277
+ "colourant": "colorant",
278
+ "colourants": "colorants",
279
+ "coloured": "colored",
280
+ "coloureds": "coloreds",
281
+ "colourful": "colorful",
282
+ "colourfully": "colorfully",
283
+ "colouring": "coloring",
284
+ "colourize": "colorize",
285
+ "colourized": "colorized",
286
+ "colourizes": "colorizes",
287
+ "colourizing": "colorizing",
288
+ "colourless": "colorless",
289
+ "colours": "colors",
290
+ "commercialise": "commercialize",
291
+ "commercialised": "commercialized",
292
+ "commercialises": "commercializes",
293
+ "commercialising": "commercializing",
294
+ "compartmentalise": "compartmentalize",
295
+ "compartmentalised": "compartmentalized",
296
+ "compartmentalises": "compartmentalizes",
297
+ "compartmentalising": "compartmentalizing",
298
+ "computerise": "computerize",
299
+ "computerised": "computerized",
300
+ "computerises": "computerizes",
301
+ "computerising": "computerizing",
302
+ "conceptualise": "conceptualize",
303
+ "conceptualised": "conceptualized",
304
+ "conceptualises": "conceptualizes",
305
+ "conceptualising": "conceptualizing",
306
+ "connexion": "connection",
307
+ "connexions": "connections",
308
+ "contextualise": "contextualize",
309
+ "contextualised": "contextualized",
310
+ "contextualises": "contextualizes",
311
+ "contextualising": "contextualizing",
312
+ "cosier": "cozier",
313
+ "cosies": "cozies",
314
+ "cosiest": "coziest",
315
+ "cosily": "cozily",
316
+ "cosiness": "coziness",
317
+ "cosy": "cozy",
318
+ "councillor": "councilor",
319
+ "councillors": "councilors",
320
+ "counselled": "counseled",
321
+ "counselling": "counseling",
322
+ "counsellor": "counselor",
323
+ "counsellors": "counselors",
324
+ "crenelated": "crenellated",
325
+ "criminalise": "criminalize",
326
+ "criminalised": "criminalized",
327
+ "criminalises": "criminalizes",
328
+ "criminalising": "criminalizing",
329
+ "criticise": "criticize",
330
+ "criticised": "criticized",
331
+ "criticises": "criticizes",
332
+ "criticising": "criticizing",
333
+ "crueller": "crueler",
334
+ "cruellest": "cruelest",
335
+ "crystallisation": "crystallization",
336
+ "crystallise": "crystallize",
337
+ "crystallised": "crystallized",
338
+ "crystallises": "crystallizes",
339
+ "crystallising": "crystallizing",
340
+ "cudgelled": "cudgeled",
341
+ "cudgelling": "cudgeling",
342
+ "customise": "customize",
343
+ "customised": "customized",
344
+ "customises": "customizes",
345
+ "customising": "customizing",
346
+ "cypher": "cipher",
347
+ "cyphers": "ciphers",
348
+ "decentralisation": "decentralization",
349
+ "decentralise": "decentralize",
350
+ "decentralised": "decentralized",
351
+ "decentralises": "decentralizes",
352
+ "decentralising": "decentralizing",
353
+ "decriminalisation": "decriminalization",
354
+ "decriminalise": "decriminalize",
355
+ "decriminalised": "decriminalized",
356
+ "decriminalises": "decriminalizes",
357
+ "decriminalising": "decriminalizing",
358
+ "defence": "defense",
359
+ "defenceless": "defenseless",
360
+ "defences": "defenses",
361
+ "dehumanisation": "dehumanization",
362
+ "dehumanise": "dehumanize",
363
+ "dehumanised": "dehumanized",
364
+ "dehumanises": "dehumanizes",
365
+ "dehumanising": "dehumanizing",
366
+ "demeanour": "demeanor",
367
+ "demilitarisation": "demilitarization",
368
+ "demilitarise": "demilitarize",
369
+ "demilitarised": "demilitarized",
370
+ "demilitarises": "demilitarizes",
371
+ "demilitarising": "demilitarizing",
372
+ "demobilisation": "demobilization",
373
+ "demobilise": "demobilize",
374
+ "demobilised": "demobilized",
375
+ "demobilises": "demobilizes",
376
+ "demobilising": "demobilizing",
377
+ "democratisation": "democratization",
378
+ "democratise": "democratize",
379
+ "democratised": "democratized",
380
+ "democratises": "democratizes",
381
+ "democratising": "democratizing",
382
+ "demonise": "demonize",
383
+ "demonised": "demonized",
384
+ "demonises": "demonizes",
385
+ "demonising": "demonizing",
386
+ "demoralisation": "demoralization",
387
+ "demoralise": "demoralize",
388
+ "demoralised": "demoralized",
389
+ "demoralises": "demoralizes",
390
+ "demoralising": "demoralizing",
391
+ "denationalisation": "denationalization",
392
+ "denationalise": "denationalize",
393
+ "denationalised": "denationalized",
394
+ "denationalises": "denationalizes",
395
+ "denationalising": "denationalizing",
396
+ "deodorise": "deodorize",
397
+ "deodorised": "deodorized",
398
+ "deodorises": "deodorizes",
399
+ "deodorising": "deodorizing",
400
+ "depersonalise": "depersonalize",
401
+ "depersonalised": "depersonalized",
402
+ "depersonalises": "depersonalizes",
403
+ "depersonalising": "depersonalizing",
404
+ "deputise": "deputize",
405
+ "deputised": "deputized",
406
+ "deputises": "deputizes",
407
+ "deputising": "deputizing",
408
+ "desensitisation": "desensitization",
409
+ "desensitise": "desensitize",
410
+ "desensitised": "desensitized",
411
+ "desensitises": "desensitizes",
412
+ "desensitising": "desensitizing",
413
+ "destabilisation": "destabilization",
414
+ "destabilise": "destabilize",
415
+ "destabilised": "destabilized",
416
+ "destabilises": "destabilizes",
417
+ "destabilising": "destabilizing",
418
+ "dialled": "dialed",
419
+ "dialling": "dialing",
420
+ "dialogue": "dialog",
421
+ "dialogues": "dialogs",
422
+ "diarrhoea": "diarrhea",
423
+ "digitise": "digitize",
424
+ "digitised": "digitized",
425
+ "digitises": "digitizes",
426
+ "digitising": "digitizing",
427
+ "disc": "disk",
428
+ "discolour": "discolor",
429
+ "discoloured": "discolored",
430
+ "discolouring": "discoloring",
431
+ "discolours": "discolors",
432
+ "discs": "disks",
433
+ "disembowelled": "disemboweled",
434
+ "disembowelling": "disemboweling",
435
+ "disfavour": "disfavor",
436
+ "dishevelled": "disheveled",
437
+ "dishonour": "dishonor",
438
+ "dishonourable": "dishonorable",
439
+ "dishonourably": "dishonorably",
440
+ "dishonoured": "dishonored",
441
+ "dishonouring": "dishonoring",
442
+ "dishonours": "dishonors",
443
+ "disorganisation": "disorganization",
444
+ "disorganised": "disorganized",
445
+ "distil": "distill",
446
+ "distils": "distills",
447
+ "dramatisation": "dramatization",
448
+ "dramatisations": "dramatizations",
449
+ "dramatise": "dramatize",
450
+ "dramatised": "dramatized",
451
+ "dramatises": "dramatizes",
452
+ "dramatising": "dramatizing",
453
+ "draught": "draft",
454
+ "draughtboard": "draftboard",
455
+ "draughtboards": "draftboards",
456
+ "draughtier": "draftier",
457
+ "draughtiest": "draftiest",
458
+ "draughts": "drafts",
459
+ "draughtsman": "draftsman",
460
+ "draughtsmanship": "draftsmanship",
461
+ "draughtsmen": "draftsmen",
462
+ "draughtswoman": "draftswoman",
463
+ "draughtswomen": "draftswomen",
464
+ "draughty": "drafty",
465
+ "drivelled": "driveled",
466
+ "drivelling": "driveling",
467
+ "duelled": "dueled",
468
+ "duelling": "dueling",
469
+ "economise": "economize",
470
+ "economised": "economized",
471
+ "economises": "economizes",
472
+ "economising": "economizing",
473
+ "editorialise": "editorialize",
474
+ "editorialised": "editorialized",
475
+ "editorialises": "editorializes",
476
+ "editorialising": "editorializing",
477
+ "edoema": "edema",
478
+ "empathise": "empathize",
479
+ "empathised": "empathized",
480
+ "empathises": "empathizes",
481
+ "empathising": "empathizing",
482
+ "emphasise": "emphasize",
483
+ "emphasised": "emphasized",
484
+ "emphasises": "emphasizes",
485
+ "emphasising": "emphasizing",
486
+ "enamelled": "enameled",
487
+ "enamelling": "enameling",
488
+ "enamoured": "enamored",
489
+ "encyclopaedia": "encyclopedia",
490
+ "encyclopaedias": "encyclopedias",
491
+ "encyclopaedic": "encyclopedic",
492
+ "endeavour": "endeavor",
493
+ "endeavoured": "endeavored",
494
+ "endeavouring": "endeavoring",
495
+ "endeavours": "endeavors",
496
+ "energise": "energize",
497
+ "energised": "energized",
498
+ "energises": "energizes",
499
+ "energising": "energizing",
500
+ "enrol": "enroll",
501
+ "enrols": "enrolls",
502
+ "enthral": "enthrall",
503
+ "enthrals": "enthralls",
504
+ "epaulette": "epaulet",
505
+ "epaulettes": "epaulets",
506
+ "epicentre": "epicenter",
507
+ "epicentres": "epicenters",
508
+ "epilogue": "epilog",
509
+ "epilogues": "epilogs",
510
+ "epitomise": "epitomize",
511
+ "epitomised": "epitomized",
512
+ "epitomises": "epitomizes",
513
+ "epitomising": "epitomizing",
514
+ "equalisation": "equalization",
515
+ "equalise": "equalize",
516
+ "equalised": "equalized",
517
+ "equaliser": "equalizer",
518
+ "equalisers": "equalizers",
519
+ "equalises": "equalizes",
520
+ "equalising": "equalizing",
521
+ "eulogise": "eulogize",
522
+ "eulogised": "eulogized",
523
+ "eulogises": "eulogizes",
524
+ "eulogising": "eulogizing",
525
+ "evangelise": "evangelize",
526
+ "evangelised": "evangelized",
527
+ "evangelises": "evangelizes",
528
+ "evangelising": "evangelizing",
529
+ "exorcise": "exorcize",
530
+ "exorcised": "exorcized",
531
+ "exorcises": "exorcizes",
532
+ "exorcising": "exorcizing",
533
+ "extemporisation": "extemporization",
534
+ "extemporise": "extemporize",
535
+ "extemporised": "extemporized",
536
+ "extemporises": "extemporizes",
537
+ "extemporising": "extemporizing",
538
+ "externalisation": "externalization",
539
+ "externalisations": "externalizations",
540
+ "externalise": "externalize",
541
+ "externalised": "externalized",
542
+ "externalises": "externalizes",
543
+ "externalising": "externalizing",
544
+ "factorise": "factorize",
545
+ "factorised": "factorized",
546
+ "factorises": "factorizes",
547
+ "factorising": "factorizing",
548
+ "faecal": "fecal",
549
+ "faeces": "feces",
550
+ "familiarisation": "familiarization",
551
+ "familiarise": "familiarize",
552
+ "familiarised": "familiarized",
553
+ "familiarises": "familiarizes",
554
+ "familiarising": "familiarizing",
555
+ "fantasise": "fantasize",
556
+ "fantasised": "fantasized",
557
+ "fantasises": "fantasizes",
558
+ "fantasising": "fantasizing",
559
+ "favour": "favor",
560
+ "favourable": "favorable",
561
+ "favourably": "favorably",
562
+ "favoured": "favored",
563
+ "favouring": "favoring",
564
+ "favourite": "favorite",
565
+ "favourites": "favorites",
566
+ "favouritism": "favoritism",
567
+ "favours": "favors",
568
+ "feminise": "feminize",
569
+ "feminised": "feminized",
570
+ "feminises": "feminizes",
571
+ "feminising": "feminizing",
572
+ "fertilisation": "fertilization",
573
+ "fertilise": "fertilize",
574
+ "fertilised": "fertilized",
575
+ "fertiliser": "fertilizer",
576
+ "fertilisers": "fertilizers",
577
+ "fertilises": "fertilizes",
578
+ "fertilising": "fertilizing",
579
+ "fervour": "fervor",
580
+ "fibre": "fiber",
581
+ "fibreglass": "fiberglass",
582
+ "fibres": "fibers",
583
+ "fictionalisation": "fictionalization",
584
+ "fictionalisations": "fictionalizations",
585
+ "fictionalise": "fictionalize",
586
+ "fictionalised": "fictionalized",
587
+ "fictionalises": "fictionalizes",
588
+ "fictionalising": "fictionalizing",
589
+ "fillet": "filet",
590
+ "filleted": "fileted",
591
+ "filleting": "fileting",
592
+ "fillets": "filets",
593
+ "finalisation": "finalization",
594
+ "finalise": "finalize",
595
+ "finalised": "finalized",
596
+ "finalises": "finalizes",
597
+ "finalising": "finalizing",
598
+ "flautist": "flutist",
599
+ "flautists": "flutists",
600
+ "flavour": "flavor",
601
+ "flavoured": "flavored",
602
+ "flavouring": "flavoring",
603
+ "flavourings": "flavorings",
604
+ "flavourless": "flavorless",
605
+ "flavours": "flavors",
606
+ "flavoursome": "flavorsome",
607
+ "flyer / flier": "flier / flyer",
608
+ "foetal": "fetal",
609
+ "foetid": "fetid",
610
+ "foetus": "fetus",
611
+ "foetuses": "fetuses",
612
+ "formalisation": "formalization",
613
+ "formalise": "formalize",
614
+ "formalised": "formalized",
615
+ "formalises": "formalizes",
616
+ "formalising": "formalizing",
617
+ "fossilisation": "fossilization",
618
+ "fossilise": "fossilize",
619
+ "fossilised": "fossilized",
620
+ "fossilises": "fossilizes",
621
+ "fossilising": "fossilizing",
622
+ "fraternisation": "fraternization",
623
+ "fraternise": "fraternize",
624
+ "fraternised": "fraternized",
625
+ "fraternises": "fraternizes",
626
+ "fraternising": "fraternizing",
627
+ "fulfil": "fulfill",
628
+ "fulfilment": "fulfillment",
629
+ "fulfils": "fulfills",
630
+ "funnelled": "funneled",
631
+ "funnelling": "funneling",
632
+ "gage": "gauge",
633
+ "gaged": "gauged",
634
+ "gages": "gauges",
635
+ "gaging": "gauging",
636
+ "galvanise": "galvanize",
637
+ "galvanised": "galvanized",
638
+ "galvanises": "galvanizes",
639
+ "galvanising": "galvanizing",
640
+ "gambolled": "gamboled",
641
+ "gambolling": "gamboling",
642
+ "gaol": "jail",
643
+ "gaolbird": "jailbird",
644
+ "gaolbirds": "jailbirds",
645
+ "gaolbreak": "jailbreak",
646
+ "gaolbreaks": "jailbreaks",
647
+ "gaoled": "jailed",
648
+ "gaoler": "jailer",
649
+ "gaolers": "jailers",
650
+ "gaoling": "jailing",
651
+ "gaols": "jails",
652
+ "gasses": "gases",
653
+ "generalisation": "generalization",
654
+ "generalisations": "generalizations",
655
+ "generalise": "generalize",
656
+ "generalised": "generalized",
657
+ "generalises": "generalizes",
658
+ "generalising": "generalizing",
659
+ "ghettoise": "ghettoize",
660
+ "ghettoised": "ghettoized",
661
+ "ghettoises": "ghettoizes",
662
+ "ghettoising": "ghettoizing",
663
+ "gipsies": "gypsies",
664
+ "glamor": "glamour",
665
+ "glamorise": "glamorize",
666
+ "glamorised": "glamorized",
667
+ "glamorises": "glamorizes",
668
+ "glamorising": "glamorizing",
669
+ "globalisation": "globalization",
670
+ "globalise": "globalize",
671
+ "globalised": "globalized",
672
+ "globalises": "globalizes",
673
+ "globalising": "globalizing",
674
+ "glueing": "gluing",
675
+ "goitre": "goiter",
676
+ "goitres": "goiters",
677
+ "gonorrhoea": "gonorrhea",
678
+ "gramme": "gram",
679
+ "grammes": "grams",
680
+ "gravelled": "graveled",
681
+ "grey": "gray",
682
+ "greyed": "grayed",
683
+ "greying": "graying",
684
+ "greyish": "grayish",
685
+ "greyness": "grayness",
686
+ "greys": "grays",
687
+ "grovelled": "groveled",
688
+ "grovelling": "groveling",
689
+ "groyne": "groin",
690
+ "groynes": "groins",
691
+ "gruelling": "grueling",
692
+ "gruellingly": "gruelingly",
693
+ "gryphon": "griffin",
694
+ "gryphons": "griffins",
695
+ "gynaecological": "gynecological",
696
+ "gynaecologist": "gynecologist",
697
+ "gynaecologists": "gynecologists",
698
+ "gynaecology": "gynecology",
699
+ "haematological": "hematological",
700
+ "haematologist": "hematologist",
701
+ "haematologists": "hematologists",
702
+ "haematology": "hematology",
703
+ "haemoglobin": "hemoglobin",
704
+ "haemophilia": "hemophilia",
705
+ "haemophiliac": "hemophiliac",
706
+ "haemophiliacs": "hemophiliacs",
707
+ "haemorrhage": "hemorrhage",
708
+ "haemorrhaged": "hemorrhaged",
709
+ "haemorrhages": "hemorrhages",
710
+ "haemorrhaging": "hemorrhaging",
711
+ "haemorrhoids": "hemorrhoids",
712
+ "harbour": "harbor",
713
+ "harboured": "harbored",
714
+ "harbouring": "harboring",
715
+ "harbours": "harbors",
716
+ "harmonisation": "harmonization",
717
+ "harmonise": "harmonize",
718
+ "harmonised": "harmonized",
719
+ "harmonises": "harmonizes",
720
+ "harmonising": "harmonizing",
721
+ "homoeopath": "homeopath",
722
+ "homoeopathic": "homeopathic",
723
+ "homoeopaths": "homeopaths",
724
+ "homoeopathy": "homeopathy",
725
+ "homogenise": "homogenize",
726
+ "homogenised": "homogenized",
727
+ "homogenises": "homogenizes",
728
+ "homogenising": "homogenizing",
729
+ "honour": "honor",
730
+ "honourable": "honorable",
731
+ "honourably": "honorably",
732
+ "honoured": "honored",
733
+ "honouring": "honoring",
734
+ "honours": "honors",
735
+ "hospitalisation": "hospitalization",
736
+ "hospitalise": "hospitalize",
737
+ "hospitalised": "hospitalized",
738
+ "hospitalises": "hospitalizes",
739
+ "hospitalising": "hospitalizing",
740
+ "humanise": "humanize",
741
+ "humanised": "humanized",
742
+ "humanises": "humanizes",
743
+ "humanising": "humanizing",
744
+ "humour": "humor",
745
+ "humoured": "humored",
746
+ "humouring": "humoring",
747
+ "humourless": "humorless",
748
+ "humours": "humors",
749
+ "hybridise": "hybridize",
750
+ "hybridised": "hybridized",
751
+ "hybridises": "hybridizes",
752
+ "hybridising": "hybridizing",
753
+ "hypnotise": "hypnotize",
754
+ "hypnotised": "hypnotized",
755
+ "hypnotises": "hypnotizes",
756
+ "hypnotising": "hypnotizing",
757
+ "hypothesise": "hypothesize",
758
+ "hypothesised": "hypothesized",
759
+ "hypothesises": "hypothesizes",
760
+ "hypothesising": "hypothesizing",
761
+ "idealisation": "idealization",
762
+ "idealise": "idealize",
763
+ "idealised": "idealized",
764
+ "idealises": "idealizes",
765
+ "idealising": "idealizing",
766
+ "idolise": "idolize",
767
+ "idolised": "idolized",
768
+ "idolises": "idolizes",
769
+ "idolising": "idolizing",
770
+ "immobilisation": "immobilization",
771
+ "immobilise": "immobilize",
772
+ "immobilised": "immobilized",
773
+ "immobiliser": "immobilizer",
774
+ "immobilisers": "immobilizers",
775
+ "immobilises": "immobilizes",
776
+ "immobilising": "immobilizing",
777
+ "immortalise": "immortalize",
778
+ "immortalised": "immortalized",
779
+ "immortalises": "immortalizes",
780
+ "immortalising": "immortalizing",
781
+ "immunisation": "immunization",
782
+ "immunise": "immunize",
783
+ "immunised": "immunized",
784
+ "immunises": "immunizes",
785
+ "immunising": "immunizing",
786
+ "impanelled": "impaneled",
787
+ "impanelling": "impaneling",
788
+ "imperilled": "imperiled",
789
+ "imperilling": "imperiling",
790
+ "individualise": "individualize",
791
+ "individualised": "individualized",
792
+ "individualises": "individualizes",
793
+ "individualising": "individualizing",
794
+ "industrialise": "industrialize",
795
+ "industrialised": "industrialized",
796
+ "industrialises": "industrializes",
797
+ "industrialising": "industrializing",
798
+ "inflexion": "inflection",
799
+ "inflexions": "inflections",
800
+ "initialise": "initialize",
801
+ "initialised": "initialized",
802
+ "initialises": "initializes",
803
+ "initialising": "initializing",
804
+ "initialled": "initialed",
805
+ "initialling": "initialing",
806
+ "instal": "install",
807
+ "instalment": "installment",
808
+ "instalments": "installments",
809
+ "instals": "installs",
810
+ "instil": "instill",
811
+ "instils": "instills",
812
+ "institutionalisation": "institutionalization",
813
+ "institutionalise": "institutionalize",
814
+ "institutionalised": "institutionalized",
815
+ "institutionalises": "institutionalizes",
816
+ "institutionalising": "institutionalizing",
817
+ "intellectualise": "intellectualize",
818
+ "intellectualised": "intellectualized",
819
+ "intellectualises": "intellectualizes",
820
+ "intellectualising": "intellectualizing",
821
+ "internalisation": "internalization",
822
+ "internalise": "internalize",
823
+ "internalised": "internalized",
824
+ "internalises": "internalizes",
825
+ "internalising": "internalizing",
826
+ "internationalisation": "internationalization",
827
+ "internationalise": "internationalize",
828
+ "internationalised": "internationalized",
829
+ "internationalises": "internationalizes",
830
+ "internationalising": "internationalizing",
831
+ "ionisation": "ionization",
832
+ "ionise": "ionize",
833
+ "ionised": "ionized",
834
+ "ioniser": "ionizer",
835
+ "ionisers": "ionizers",
836
+ "ionises": "ionizes",
837
+ "ionising": "ionizing",
838
+ "italicise": "italicize",
839
+ "italicised": "italicized",
840
+ "italicises": "italicizes",
841
+ "italicising": "italicizing",
842
+ "itemise": "itemize",
843
+ "itemised": "itemized",
844
+ "itemises": "itemizes",
845
+ "itemising": "itemizing",
846
+ "jeopardise": "jeopardize",
847
+ "jeopardised": "jeopardized",
848
+ "jeopardises": "jeopardizes",
849
+ "jeopardising": "jeopardizing",
850
+ "jewelled": "jeweled",
851
+ "jeweller": "jeweler",
852
+ "jewellers": "jewelers",
853
+ "jewellery": "jewelry",
854
+ "judgement": "judgment",
855
+ "kilogramme": "kilogram",
856
+ "kilogrammes": "kilograms",
857
+ "kilometre": "kilometer",
858
+ "kilometres": "kilometers",
859
+ "labelled": "labeled",
860
+ "labelling": "labeling",
861
+ "labour": "labor",
862
+ "laboured": "labored",
863
+ "labourer": "laborer",
864
+ "labourers": "laborers",
865
+ "labouring": "laboring",
866
+ "labours": "labors",
867
+ "lacklustre": "lackluster",
868
+ "legalisation": "legalization",
869
+ "legalise": "legalize",
870
+ "legalised": "legalized",
871
+ "legalises": "legalizes",
872
+ "legalising": "legalizing",
873
+ "legitimise": "legitimize",
874
+ "legitimised": "legitimized",
875
+ "legitimises": "legitimizes",
876
+ "legitimising": "legitimizing",
877
+ "leukaemia": "leukemia",
878
+ "levelled": "leveled",
879
+ "leveller": "leveler",
880
+ "levellers": "levelers",
881
+ "levelling": "leveling",
882
+ "libelled": "libeled",
883
+ "libelling": "libeling",
884
+ "libellous": "libelous",
885
+ "liberalisation": "liberalization",
886
+ "liberalise": "liberalize",
887
+ "liberalised": "liberalized",
888
+ "liberalises": "liberalizes",
889
+ "liberalising": "liberalizing",
890
+ "licence": "license",
891
+ "licenced": "licensed",
892
+ "licences": "licenses",
893
+ "licencing": "licensing",
894
+ "likeable": "likable",
895
+ "lionisation": "lionization",
896
+ "lionise": "lionize",
897
+ "lionised": "lionized",
898
+ "lionises": "lionizes",
899
+ "lionising": "lionizing",
900
+ "liquidise": "liquidize",
901
+ "liquidised": "liquidized",
902
+ "liquidiser": "liquidizer",
903
+ "liquidisers": "liquidizers",
904
+ "liquidises": "liquidizes",
905
+ "liquidising": "liquidizing",
906
+ "litre": "liter",
907
+ "litres": "liters",
908
+ "localise": "localize",
909
+ "localised": "localized",
910
+ "localises": "localizes",
911
+ "localising": "localizing",
912
+ "louvre": "louver",
913
+ "louvred": "louvered",
914
+ "louvres": "louvers",
915
+ "lustre": "luster",
916
+ "magnetise": "magnetize",
917
+ "magnetised": "magnetized",
918
+ "magnetises": "magnetizes",
919
+ "magnetising": "magnetizing",
920
+ "manoeuvrability": "maneuverability",
921
+ "manoeuvrable": "maneuverable",
922
+ "manoeuvre": "maneuver",
923
+ "manoeuvred": "maneuvered",
924
+ "manoeuvres": "maneuvers",
925
+ "manoeuvring": "maneuvering",
926
+ "manoeuvrings": "maneuverings",
927
+ "marginalisation": "marginalization",
928
+ "marginalise": "marginalize",
929
+ "marginalised": "marginalized",
930
+ "marginalises": "marginalizes",
931
+ "marginalising": "marginalizing",
932
+ "marshalled": "marshaled",
933
+ "marshalling": "marshaling",
934
+ "marvelled": "marveled",
935
+ "marvelling": "marveling",
936
+ "marvellous": "marvelous",
937
+ "marvellously": "marvelously",
938
+ "materialisation": "materialization",
939
+ "materialise": "materialize",
940
+ "materialised": "materialized",
941
+ "materialises": "materializes",
942
+ "materialising": "materializing",
943
+ "maximisation": "maximization",
944
+ "maximise": "maximize",
945
+ "maximised": "maximized",
946
+ "maximises": "maximizes",
947
+ "maximising": "maximizing",
948
+ "meagre": "meager",
949
+ "mechanisation": "mechanization",
950
+ "mechanise": "mechanize",
951
+ "mechanised": "mechanized",
952
+ "mechanises": "mechanizes",
953
+ "mechanising": "mechanizing",
954
+ "mediaeval": "medieval",
955
+ "memorialise": "memorialize",
956
+ "memorialised": "memorialized",
957
+ "memorialises": "memorializes",
958
+ "memorialising": "memorializing",
959
+ "memorise": "memorize",
960
+ "memorised": "memorized",
961
+ "memorises": "memorizes",
962
+ "memorising": "memorizing",
963
+ "mesmerise": "mesmerize",
964
+ "mesmerised": "mesmerized",
965
+ "mesmerises": "mesmerizes",
966
+ "mesmerising": "mesmerizing",
967
+ "metabolise": "metabolize",
968
+ "metabolised": "metabolized",
969
+ "metabolises": "metabolizes",
970
+ "metabolising": "metabolizing",
971
+ "metre": "meter",
972
+ "metres": "meters",
973
+ "mhm": "hmm",
974
+ "micrometre": "micrometer",
975
+ "micrometres": "micrometers",
976
+ "militarise": "militarize",
977
+ "militarised": "militarized",
978
+ "militarises": "militarizes",
979
+ "militarising": "militarizing",
980
+ "milligramme": "milligram",
981
+ "milligrammes": "milligrams",
982
+ "millilitre": "milliliter",
983
+ "millilitres": "milliliters",
984
+ "millimetre": "millimeter",
985
+ "millimetres": "millimeters",
986
+ "miniaturisation": "miniaturization",
987
+ "miniaturise": "miniaturize",
988
+ "miniaturised": "miniaturized",
989
+ "miniaturises": "miniaturizes",
990
+ "miniaturising": "miniaturizing",
991
+ "minibusses": "minibuses",
992
+ "minimise": "minimize",
993
+ "minimised": "minimized",
994
+ "minimises": "minimizes",
995
+ "minimising": "minimizing",
996
+ "misbehaviour": "misbehavior",
997
+ "misdemeanour": "misdemeanor",
998
+ "misdemeanours": "misdemeanors",
999
+ "misspelt": "misspelled",
1000
+ "mitre": "miter",
1001
+ "mitres": "miters",
1002
+ "mm": "hmm",
1003
+ "mmm": "hmm",
1004
+ "mobilisation": "mobilization",
1005
+ "mobilise": "mobilize",
1006
+ "mobilised": "mobilized",
1007
+ "mobilises": "mobilizes",
1008
+ "mobilising": "mobilizing",
1009
+ "modelled": "modeled",
1010
+ "modeller": "modeler",
1011
+ "modellers": "modelers",
1012
+ "modelling": "modeling",
1013
+ "modernise": "modernize",
1014
+ "modernised": "modernized",
1015
+ "modernises": "modernizes",
1016
+ "modernising": "modernizing",
1017
+ "moisturise": "moisturize",
1018
+ "moisturised": "moisturized",
1019
+ "moisturiser": "moisturizer",
1020
+ "moisturisers": "moisturizers",
1021
+ "moisturises": "moisturizes",
1022
+ "moisturising": "moisturizing",
1023
+ "monologue": "monolog",
1024
+ "monologues": "monologs",
1025
+ "monopolisation": "monopolization",
1026
+ "monopolise": "monopolize",
1027
+ "monopolised": "monopolized",
1028
+ "monopolises": "monopolizes",
1029
+ "monopolising": "monopolizing",
1030
+ "moralise": "moralize",
1031
+ "moralised": "moralized",
1032
+ "moralises": "moralizes",
1033
+ "moralising": "moralizing",
1034
+ "motorised": "motorized",
1035
+ "mould": "mold",
1036
+ "moulded": "molded",
1037
+ "moulder": "molder",
1038
+ "mouldered": "moldered",
1039
+ "mouldering": "moldering",
1040
+ "moulders": "molders",
1041
+ "mouldier": "moldier",
1042
+ "mouldiest": "moldiest",
1043
+ "moulding": "molding",
1044
+ "mouldings": "moldings",
1045
+ "moulds": "molds",
1046
+ "mouldy": "moldy",
1047
+ "moult": "molt",
1048
+ "moulted": "molted",
1049
+ "moulting": "molting",
1050
+ "moults": "molts",
1051
+ "moustache": "mustache",
1052
+ "moustached": "mustached",
1053
+ "moustaches": "mustaches",
1054
+ "moustachioed": "mustachioed",
1055
+ "multicoloured": "multicolored",
1056
+ "nationalisation": "nationalization",
1057
+ "nationalisations": "nationalizations",
1058
+ "nationalise": "nationalize",
1059
+ "nationalised": "nationalized",
1060
+ "nationalises": "nationalizes",
1061
+ "nationalising": "nationalizing",
1062
+ "naturalisation": "naturalization",
1063
+ "naturalise": "naturalize",
1064
+ "naturalised": "naturalized",
1065
+ "naturalises": "naturalizes",
1066
+ "naturalising": "naturalizing",
1067
+ "neighbour": "neighbor",
1068
+ "neighbourhood": "neighborhood",
1069
+ "neighbourhoods": "neighborhoods",
1070
+ "neighbouring": "neighboring",
1071
+ "neighbourliness": "neighborliness",
1072
+ "neighbourly": "neighborly",
1073
+ "neighbours": "neighbors",
1074
+ "neutralisation": "neutralization",
1075
+ "neutralise": "neutralize",
1076
+ "neutralised": "neutralized",
1077
+ "neutralises": "neutralizes",
1078
+ "neutralising": "neutralizing",
1079
+ "normalisation": "normalization",
1080
+ "normalise": "normalize",
1081
+ "normalised": "normalized",
1082
+ "normalises": "normalizes",
1083
+ "normalising": "normalizing",
1084
+ "odour": "odor",
1085
+ "odourless": "odorless",
1086
+ "odours": "odors",
1087
+ "oesophagus": "esophagus",
1088
+ "oesophaguses": "esophaguses",
1089
+ "oestrogen": "estrogen",
1090
+ "offence": "offense",
1091
+ "offences": "offenses",
1092
+ "omelette": "omelet",
1093
+ "omelettes": "omelets",
1094
+ "optimise": "optimize",
1095
+ "optimised": "optimized",
1096
+ "optimises": "optimizes",
1097
+ "optimising": "optimizing",
1098
+ "organisation": "organization",
1099
+ "organisational": "organizational",
1100
+ "organisations": "organizations",
1101
+ "organise": "organize",
1102
+ "organised": "organized",
1103
+ "organiser": "organizer",
1104
+ "organisers": "organizers",
1105
+ "organises": "organizes",
1106
+ "organising": "organizing",
1107
+ "orthopaedic": "orthopedic",
1108
+ "orthopaedics": "orthopedics",
1109
+ "ostracise": "ostracize",
1110
+ "ostracised": "ostracized",
1111
+ "ostracises": "ostracizes",
1112
+ "ostracising": "ostracizing",
1113
+ "outmanoeuvre": "outmaneuver",
1114
+ "outmanoeuvred": "outmaneuvered",
1115
+ "outmanoeuvres": "outmaneuvers",
1116
+ "outmanoeuvring": "outmaneuvering",
1117
+ "overemphasise": "overemphasize",
1118
+ "overemphasised": "overemphasized",
1119
+ "overemphasises": "overemphasizes",
1120
+ "overemphasising": "overemphasizing",
1121
+ "oxidisation": "oxidization",
1122
+ "oxidise": "oxidize",
1123
+ "oxidised": "oxidized",
1124
+ "oxidises": "oxidizes",
1125
+ "oxidising": "oxidizing",
1126
+ "paederast": "pederast",
1127
+ "paederasts": "pederasts",
1128
+ "paediatric": "pediatric",
1129
+ "paediatrician": "pediatrician",
1130
+ "paediatricians": "pediatricians",
1131
+ "paediatrics": "pediatrics",
1132
+ "paedophile": "pedophile",
1133
+ "paedophiles": "pedophiles",
1134
+ "paedophilia": "pedophilia",
1135
+ "palaeolithic": "paleolithic",
1136
+ "palaeontologist": "paleontologist",
1137
+ "palaeontologists": "paleontologists",
1138
+ "palaeontology": "paleontology",
1139
+ "panelled": "paneled",
1140
+ "panelling": "paneling",
1141
+ "panellist": "panelist",
1142
+ "panellists": "panelists",
1143
+ "paralyse": "paralyze",
1144
+ "paralysed": "paralyzed",
1145
+ "paralyses": "paralyzes",
1146
+ "paralysing": "paralyzing",
1147
+ "parcelled": "parceled",
1148
+ "parcelling": "parceling",
1149
+ "parlour": "parlor",
1150
+ "parlours": "parlors",
1151
+ "particularise": "particularize",
1152
+ "particularised": "particularized",
1153
+ "particularises": "particularizes",
1154
+ "particularising": "particularizing",
1155
+ "passivisation": "passivization",
1156
+ "passivise": "passivize",
1157
+ "passivised": "passivized",
1158
+ "passivises": "passivizes",
1159
+ "passivising": "passivizing",
1160
+ "pasteurisation": "pasteurization",
1161
+ "pasteurise": "pasteurize",
1162
+ "pasteurised": "pasteurized",
1163
+ "pasteurises": "pasteurizes",
1164
+ "pasteurising": "pasteurizing",
1165
+ "patronise": "patronize",
1166
+ "patronised": "patronized",
1167
+ "patronises": "patronizes",
1168
+ "patronising": "patronizing",
1169
+ "patronisingly": "patronizingly",
1170
+ "pedalled": "pedaled",
1171
+ "pedalling": "pedaling",
1172
+ "pedestrianisation": "pedestrianization",
1173
+ "pedestrianise": "pedestrianize",
1174
+ "pedestrianised": "pedestrianized",
1175
+ "pedestrianises": "pedestrianizes",
1176
+ "pedestrianising": "pedestrianizing",
1177
+ "penalise": "penalize",
1178
+ "penalised": "penalized",
1179
+ "penalises": "penalizes",
1180
+ "penalising": "penalizing",
1181
+ "pencilled": "penciled",
1182
+ "pencilling": "penciling",
1183
+ "personalise": "personalize",
1184
+ "personalised": "personalized",
1185
+ "personalises": "personalizes",
1186
+ "personalising": "personalizing",
1187
+ "pharmacopoeia": "pharmacopeia",
1188
+ "pharmacopoeias": "pharmacopeias",
1189
+ "philosophise": "philosophize",
1190
+ "philosophised": "philosophized",
1191
+ "philosophises": "philosophizes",
1192
+ "philosophising": "philosophizing",
1193
+ "philtre": "filter",
1194
+ "philtres": "filters",
1195
+ "phoney": "phony",
1196
+ "plagiarise": "plagiarize",
1197
+ "plagiarised": "plagiarized",
1198
+ "plagiarises": "plagiarizes",
1199
+ "plagiarising": "plagiarizing",
1200
+ "plough": "plow",
1201
+ "ploughed": "plowed",
1202
+ "ploughing": "plowing",
1203
+ "ploughman": "plowman",
1204
+ "ploughmen": "plowmen",
1205
+ "ploughs": "plows",
1206
+ "ploughshare": "plowshare",
1207
+ "ploughshares": "plowshares",
1208
+ "polarisation": "polarization",
1209
+ "polarise": "polarize",
1210
+ "polarised": "polarized",
1211
+ "polarises": "polarizes",
1212
+ "polarising": "polarizing",
1213
+ "politicisation": "politicization",
1214
+ "politicise": "politicize",
1215
+ "politicised": "politicized",
1216
+ "politicises": "politicizes",
1217
+ "politicising": "politicizing",
1218
+ "popularisation": "popularization",
1219
+ "popularise": "popularize",
1220
+ "popularised": "popularized",
1221
+ "popularises": "popularizes",
1222
+ "popularising": "popularizing",
1223
+ "pouffe": "pouf",
1224
+ "pouffes": "poufs",
1225
+ "practise": "practice",
1226
+ "practised": "practiced",
1227
+ "practises": "practices",
1228
+ "practising": "practicing",
1229
+ "praesidium": "presidium",
1230
+ "praesidiums": "presidiums",
1231
+ "pressurisation": "pressurization",
1232
+ "pressurise": "pressurize",
1233
+ "pressurised": "pressurized",
1234
+ "pressurises": "pressurizes",
1235
+ "pressurising": "pressurizing",
1236
+ "pretence": "pretense",
1237
+ "pretences": "pretenses",
1238
+ "primaeval": "primeval",
1239
+ "prioritisation": "prioritization",
1240
+ "prioritise": "prioritize",
1241
+ "prioritised": "prioritized",
1242
+ "prioritises": "prioritizes",
1243
+ "prioritising": "prioritizing",
1244
+ "privatisation": "privatization",
1245
+ "privatisations": "privatizations",
1246
+ "privatise": "privatize",
1247
+ "privatised": "privatized",
1248
+ "privatises": "privatizes",
1249
+ "privatising": "privatizing",
1250
+ "professionalisation": "professionalization",
1251
+ "professionalise": "professionalize",
1252
+ "professionalised": "professionalized",
1253
+ "professionalises": "professionalizes",
1254
+ "professionalising": "professionalizing",
1255
+ "programme": "program",
1256
+ "programmes": "programs",
1257
+ "prologue": "prolog",
1258
+ "prologues": "prologs",
1259
+ "propagandise": "propagandize",
1260
+ "propagandised": "propagandized",
1261
+ "propagandises": "propagandizes",
1262
+ "propagandising": "propagandizing",
1263
+ "proselytise": "proselytize",
1264
+ "proselytised": "proselytized",
1265
+ "proselytiser": "proselytizer",
1266
+ "proselytisers": "proselytizers",
1267
+ "proselytises": "proselytizes",
1268
+ "proselytising": "proselytizing",
1269
+ "psychoanalyse": "psychoanalyze",
1270
+ "psychoanalysed": "psychoanalyzed",
1271
+ "psychoanalyses": "psychoanalyzes",
1272
+ "psychoanalysing": "psychoanalyzing",
1273
+ "publicise": "publicize",
1274
+ "publicised": "publicized",
1275
+ "publicises": "publicizes",
1276
+ "publicising": "publicizing",
1277
+ "pulverisation": "pulverization",
1278
+ "pulverise": "pulverize",
1279
+ "pulverised": "pulverized",
1280
+ "pulverises": "pulverizes",
1281
+ "pulverising": "pulverizing",
1282
+ "pummelled": "pummel",
1283
+ "pummelling": "pummeled",
1284
+ "pyjama": "pajama",
1285
+ "pyjamas": "pajamas",
1286
+ "pzazz": "pizzazz",
1287
+ "quarrelled": "quarreled",
1288
+ "quarrelling": "quarreling",
1289
+ "radicalise": "radicalize",
1290
+ "radicalised": "radicalized",
1291
+ "radicalises": "radicalizes",
1292
+ "radicalising": "radicalizing",
1293
+ "rancour": "rancor",
1294
+ "randomise": "randomize",
1295
+ "randomised": "randomized",
1296
+ "randomises": "randomizes",
1297
+ "randomising": "randomizing",
1298
+ "rationalisation": "rationalization",
1299
+ "rationalisations": "rationalizations",
1300
+ "rationalise": "rationalize",
1301
+ "rationalised": "rationalized",
1302
+ "rationalises": "rationalizes",
1303
+ "rationalising": "rationalizing",
1304
+ "ravelled": "raveled",
1305
+ "ravelling": "raveling",
1306
+ "realisable": "realizable",
1307
+ "realisation": "realization",
1308
+ "realisations": "realizations",
1309
+ "realise": "realize",
1310
+ "realised": "realized",
1311
+ "realises": "realizes",
1312
+ "realising": "realizing",
1313
+ "recognisable": "recognizable",
1314
+ "recognisably": "recognizably",
1315
+ "recognisance": "recognizance",
1316
+ "recognise": "recognize",
1317
+ "recognised": "recognized",
1318
+ "recognises": "recognizes",
1319
+ "recognising": "recognizing",
1320
+ "reconnoitre": "reconnoiter",
1321
+ "reconnoitred": "reconnoitered",
1322
+ "reconnoitres": "reconnoiters",
1323
+ "reconnoitring": "reconnoitering",
1324
+ "refuelled": "refueled",
1325
+ "refuelling": "refueling",
1326
+ "regularisation": "regularization",
1327
+ "regularise": "regularize",
1328
+ "regularised": "regularized",
1329
+ "regularises": "regularizes",
1330
+ "regularising": "regularizing",
1331
+ "remodelled": "remodeled",
1332
+ "remodelling": "remodeling",
1333
+ "remould": "remold",
1334
+ "remoulded": "remolded",
1335
+ "remoulding": "remolding",
1336
+ "remoulds": "remolds",
1337
+ "reorganisation": "reorganization",
1338
+ "reorganisations": "reorganizations",
1339
+ "reorganise": "reorganize",
1340
+ "reorganised": "reorganized",
1341
+ "reorganises": "reorganizes",
1342
+ "reorganising": "reorganizing",
1343
+ "revelled": "reveled",
1344
+ "reveller": "reveler",
1345
+ "revellers": "revelers",
1346
+ "revelling": "reveling",
1347
+ "revitalise": "revitalize",
1348
+ "revitalised": "revitalized",
1349
+ "revitalises": "revitalizes",
1350
+ "revitalising": "revitalizing",
1351
+ "revolutionise": "revolutionize",
1352
+ "revolutionised": "revolutionized",
1353
+ "revolutionises": "revolutionizes",
1354
+ "revolutionising": "revolutionizing",
1355
+ "rhapsodise": "rhapsodize",
1356
+ "rhapsodised": "rhapsodized",
1357
+ "rhapsodises": "rhapsodizes",
1358
+ "rhapsodising": "rhapsodizing",
1359
+ "rigour": "rigor",
1360
+ "rigours": "rigors",
1361
+ "ritualised": "ritualized",
1362
+ "rivalled": "rivaled",
1363
+ "rivalling": "rivaling",
1364
+ "romanticise": "romanticize",
1365
+ "romanticised": "romanticized",
1366
+ "romanticises": "romanticizes",
1367
+ "romanticising": "romanticizing",
1368
+ "rumour": "rumor",
1369
+ "rumoured": "rumored",
1370
+ "rumours": "rumors",
1371
+ "sabre": "saber",
1372
+ "sabres": "sabers",
1373
+ "saltpetre": "saltpeter",
1374
+ "sanitise": "sanitize",
1375
+ "sanitised": "sanitized",
1376
+ "sanitises": "sanitizes",
1377
+ "sanitising": "sanitizing",
1378
+ "satirise": "satirize",
1379
+ "satirised": "satirized",
1380
+ "satirises": "satirizes",
1381
+ "satirising": "satirizing",
1382
+ "saviour": "savior",
1383
+ "saviours": "saviors",
1384
+ "savour": "savor",
1385
+ "savoured": "savored",
1386
+ "savouries": "savories",
1387
+ "savouring": "savoring",
1388
+ "savours": "savors",
1389
+ "savoury": "savory",
1390
+ "scandalise": "scandalize",
1391
+ "scandalised": "scandalized",
1392
+ "scandalises": "scandalizes",
1393
+ "scandalising": "scandalizing",
1394
+ "sceptic": "skeptic",
1395
+ "sceptical": "skeptical",
1396
+ "sceptically": "skeptically",
1397
+ "scepticism": "skepticism",
1398
+ "sceptics": "skeptics",
1399
+ "sceptre": "scepter",
1400
+ "sceptres": "scepters",
1401
+ "scrutinise": "scrutinize",
1402
+ "scrutinised": "scrutinized",
1403
+ "scrutinises": "scrutinizes",
1404
+ "scrutinising": "scrutinizing",
1405
+ "secularisation": "secularization",
1406
+ "secularise": "secularize",
1407
+ "secularised": "secularized",
1408
+ "secularises": "secularizes",
1409
+ "secularising": "secularizing",
1410
+ "sensationalise": "sensationalize",
1411
+ "sensationalised": "sensationalized",
1412
+ "sensationalises": "sensationalizes",
1413
+ "sensationalising": "sensationalizing",
1414
+ "sensitise": "sensitize",
1415
+ "sensitised": "sensitized",
1416
+ "sensitises": "sensitizes",
1417
+ "sensitising": "sensitizing",
1418
+ "sentimentalise": "sentimentalize",
1419
+ "sentimentalised": "sentimentalized",
1420
+ "sentimentalises": "sentimentalizes",
1421
+ "sentimentalising": "sentimentalizing",
1422
+ "sepulchre": "sepulcher",
1423
+ "sepulchres": "sepulchers",
1424
+ "serialisation": "serialization",
1425
+ "serialisations": "serializations",
1426
+ "serialise": "serialize",
1427
+ "serialised": "serialized",
1428
+ "serialises": "serializes",
1429
+ "serialising": "serializing",
1430
+ "sermonise": "sermonize",
1431
+ "sermonised": "sermonized",
1432
+ "sermonises": "sermonizes",
1433
+ "sermonising": "sermonizing",
1434
+ "sheikh": "sheik",
1435
+ "shovelled": "shoveled",
1436
+ "shovelling": "shoveling",
1437
+ "shrivelled": "shriveled",
1438
+ "shrivelling": "shriveling",
1439
+ "signalise": "signalize",
1440
+ "signalised": "signalized",
1441
+ "signalises": "signalizes",
1442
+ "signalising": "signalizing",
1443
+ "signalled": "signaled",
1444
+ "signalling": "signaling",
1445
+ "smoulder": "smolder",
1446
+ "smouldered": "smoldered",
1447
+ "smouldering": "smoldering",
1448
+ "smoulders": "smolders",
1449
+ "snivelled": "sniveled",
1450
+ "snivelling": "sniveling",
1451
+ "snorkelled": "snorkeled",
1452
+ "snorkelling": "snorkeling",
1453
+ "snowplough": "snowplow",
1454
+ "snowploughs": "snowplow",
1455
+ "socialisation": "socialization",
1456
+ "socialise": "socialize",
1457
+ "socialised": "socialized",
1458
+ "socialises": "socializes",
1459
+ "socialising": "socializing",
1460
+ "sodomise": "sodomize",
1461
+ "sodomised": "sodomized",
1462
+ "sodomises": "sodomizes",
1463
+ "sodomising": "sodomizing",
1464
+ "solemnise": "solemnize",
1465
+ "solemnised": "solemnized",
1466
+ "solemnises": "solemnizes",
1467
+ "solemnising": "solemnizing",
1468
+ "sombre": "somber",
1469
+ "specialisation": "specialization",
1470
+ "specialisations": "specializations",
1471
+ "specialise": "specialize",
1472
+ "specialised": "specialized",
1473
+ "specialises": "specializes",
1474
+ "specialising": "specializing",
1475
+ "spectre": "specter",
1476
+ "spectres": "specters",
1477
+ "spiralled": "spiraled",
1478
+ "spiralling": "spiraling",
1479
+ "splendour": "splendor",
1480
+ "splendours": "splendors",
1481
+ "squirrelled": "squirreled",
1482
+ "squirrelling": "squirreling",
1483
+ "stabilisation": "stabilization",
1484
+ "stabilise": "stabilize",
1485
+ "stabilised": "stabilized",
1486
+ "stabiliser": "stabilizer",
1487
+ "stabilisers": "stabilizers",
1488
+ "stabilises": "stabilizes",
1489
+ "stabilising": "stabilizing",
1490
+ "standardisation": "standardization",
1491
+ "standardise": "standardize",
1492
+ "standardised": "standardized",
1493
+ "standardises": "standardizes",
1494
+ "standardising": "standardizing",
1495
+ "stencilled": "stenciled",
1496
+ "stencilling": "stenciling",
1497
+ "sterilisation": "sterilization",
1498
+ "sterilisations": "sterilizations",
1499
+ "sterilise": "sterilize",
1500
+ "sterilised": "sterilized",
1501
+ "steriliser": "sterilizer",
1502
+ "sterilisers": "sterilizers",
1503
+ "sterilises": "sterilizes",
1504
+ "sterilising": "sterilizing",
1505
+ "stigmatisation": "stigmatization",
1506
+ "stigmatise": "stigmatize",
1507
+ "stigmatised": "stigmatized",
1508
+ "stigmatises": "stigmatizes",
1509
+ "stigmatising": "stigmatizing",
1510
+ "storey": "story",
1511
+ "storeys": "stories",
1512
+ "subsidisation": "subsidization",
1513
+ "subsidise": "subsidize",
1514
+ "subsidised": "subsidized",
1515
+ "subsidiser": "subsidizer",
1516
+ "subsidisers": "subsidizers",
1517
+ "subsidises": "subsidizes",
1518
+ "subsidising": "subsidizing",
1519
+ "succour": "succor",
1520
+ "succoured": "succored",
1521
+ "succouring": "succoring",
1522
+ "succours": "succors",
1523
+ "sulphate": "sulfate",
1524
+ "sulphates": "sulfates",
1525
+ "sulphide": "sulfide",
1526
+ "sulphides": "sulfides",
1527
+ "sulphur": "sulfur",
1528
+ "sulphurous": "sulfurous",
1529
+ "summarise": "summarize",
1530
+ "summarised": "summarized",
1531
+ "summarises": "summarizes",
1532
+ "summarising": "summarizing",
1533
+ "swivelled": "swiveled",
1534
+ "swivelling": "swiveling",
1535
+ "symbolise": "symbolize",
1536
+ "symbolised": "symbolized",
1537
+ "symbolises": "symbolizes",
1538
+ "symbolising": "symbolizing",
1539
+ "sympathise": "sympathize",
1540
+ "sympathised": "sympathized",
1541
+ "sympathiser": "sympathizer",
1542
+ "sympathisers": "sympathizers",
1543
+ "sympathises": "sympathizes",
1544
+ "sympathising": "sympathizing",
1545
+ "synchronisation": "synchronization",
1546
+ "synchronise": "synchronize",
1547
+ "synchronised": "synchronized",
1548
+ "synchronises": "synchronizes",
1549
+ "synchronising": "synchronizing",
1550
+ "synthesise": "synthesize",
1551
+ "synthesised": "synthesized",
1552
+ "synthesiser": "synthesizer",
1553
+ "synthesisers": "synthesizers",
1554
+ "synthesises": "synthesizes",
1555
+ "synthesising": "synthesizing",
1556
+ "syphon": "siphon",
1557
+ "syphoned": "siphoned",
1558
+ "syphoning": "siphoning",
1559
+ "syphons": "siphons",
1560
+ "systematisation": "systematization",
1561
+ "systematise": "systematize",
1562
+ "systematised": "systematized",
1563
+ "systematises": "systematizes",
1564
+ "systematising": "systematizing",
1565
+ "tantalise": "tantalize",
1566
+ "tantalised": "tantalized",
1567
+ "tantalises": "tantalizes",
1568
+ "tantalising": "tantalizing",
1569
+ "tantalisingly": "tantalizingly",
1570
+ "tasselled": "tasseled",
1571
+ "technicolour": "technicolor",
1572
+ "temporise": "temporize",
1573
+ "temporised": "temporized",
1574
+ "temporises": "temporizes",
1575
+ "temporising": "temporizing",
1576
+ "tenderise": "tenderize",
1577
+ "tenderised": "tenderized",
1578
+ "tenderises": "tenderizes",
1579
+ "tenderising": "tenderizing",
1580
+ "terrorise": "terrorize",
1581
+ "terrorised": "terrorized",
1582
+ "terrorises": "terrorizes",
1583
+ "terrorising": "terrorizing",
1584
+ "theatre": "theater",
1585
+ "theatregoer": "theatergoer",
1586
+ "theatregoers": "theatergoers",
1587
+ "theatres": "theaters",
1588
+ "theorise": "theorize",
1589
+ "theorised": "theorized",
1590
+ "theorises": "theorizes",
1591
+ "theorising": "theorizing",
1592
+ "tonne": "ton",
1593
+ "tonnes": "tons",
1594
+ "towelled": "toweled",
1595
+ "towelling": "toweling",
1596
+ "toxaemia": "toxemia",
1597
+ "tranquillise": "tranquilize",
1598
+ "tranquillised": "tranquilized",
1599
+ "tranquilliser": "tranquilizer",
1600
+ "tranquillisers": "tranquilizers",
1601
+ "tranquillises": "tranquilizes",
1602
+ "tranquillising": "tranquilizing",
1603
+ "tranquillity": "tranquility",
1604
+ "tranquillize": "tranquilize",
1605
+ "tranquillized": "tranquilized",
1606
+ "tranquillizer": "tranquilizer",
1607
+ "tranquillizers": "tranquilizers",
1608
+ "tranquillizes": "tranquilizes",
1609
+ "tranquillizing": "tranquilizing",
1610
+ "tranquilly": "tranquility",
1611
+ "transistorised": "transistorized",
1612
+ "traumatise": "traumatize",
1613
+ "traumatised": "traumatized",
1614
+ "traumatises": "traumatizes",
1615
+ "traumatising": "traumatizing",
1616
+ "travelled": "traveled",
1617
+ "traveller": "traveler",
1618
+ "travellers": "travelers",
1619
+ "travelling": "traveling",
1620
+ "travelog": "travelogue",
1621
+ "travelogs": "travelogues",
1622
+ "trialled": "trialed",
1623
+ "trialling": "trialing",
1624
+ "tricolour": "tricolor",
1625
+ "tricolours": "tricolors",
1626
+ "trivialise": "trivialize",
1627
+ "trivialised": "trivialized",
1628
+ "trivialises": "trivializes",
1629
+ "trivialising": "trivializing",
1630
+ "tumour": "tumor",
1631
+ "tumours": "tumors",
1632
+ "tunnelled": "tunneled",
1633
+ "tunnelling": "tunneling",
1634
+ "tyrannise": "tyrannize",
1635
+ "tyrannised": "tyrannized",
1636
+ "tyrannises": "tyrannizes",
1637
+ "tyrannising": "tyrannizing",
1638
+ "tyre": "tire",
1639
+ "tyres": "tires",
1640
+ "unauthorised": "unauthorized",
1641
+ "uncivilised": "uncivilized",
1642
+ "underutilised": "underutilized",
1643
+ "unequalled": "unequaled",
1644
+ "unfavourable": "unfavorable",
1645
+ "unfavourably": "unfavorably",
1646
+ "unionisation": "unionization",
1647
+ "unionise": "unionize",
1648
+ "unionised": "unionized",
1649
+ "unionises": "unionizes",
1650
+ "unionising": "unionizing",
1651
+ "unorganised": "unorganized",
1652
+ "unravelled": "unraveled",
1653
+ "unravelling": "unraveling",
1654
+ "unrecognisable": "unrecognizable",
1655
+ "unrecognised": "unrecognized",
1656
+ "unrivalled": "unrivaled",
1657
+ "unsavoury": "unsavory",
1658
+ "untrammelled": "untrammeled",
1659
+ "urbanisation": "urbanization",
1660
+ "urbanise": "urbanize",
1661
+ "urbanised": "urbanized",
1662
+ "urbanises": "urbanizes",
1663
+ "urbanising": "urbanizing",
1664
+ "utilisable": "utilizable",
1665
+ "utilisation": "utilization",
1666
+ "utilise": "utilize",
1667
+ "utilised": "utilized",
1668
+ "utilises": "utilizes",
1669
+ "utilising": "utilizing",
1670
+ "valour": "valor",
1671
+ "vandalise": "vandalize",
1672
+ "vandalised": "vandalized",
1673
+ "vandalises": "vandalizes",
1674
+ "vandalising": "vandalizing",
1675
+ "vaporisation": "vaporization",
1676
+ "vaporise": "vaporize",
1677
+ "vaporised": "vaporized",
1678
+ "vaporises": "vaporizes",
1679
+ "vaporising": "vaporizing",
1680
+ "vapour": "vapor",
1681
+ "vapours": "vapors",
1682
+ "verbalise": "verbalize",
1683
+ "verbalised": "verbalized",
1684
+ "verbalises": "verbalizes",
1685
+ "verbalising": "verbalizing",
1686
+ "victimisation": "victimization",
1687
+ "victimise": "victimize",
1688
+ "victimised": "victimized",
1689
+ "victimises": "victimizes",
1690
+ "victimising": "victimizing",
1691
+ "videodisc": "videodisk",
1692
+ "videodiscs": "videodisks",
1693
+ "vigour": "vigor",
1694
+ "visualisation": "visualization",
1695
+ "visualisations": "visualizations",
1696
+ "visualise": "visualize",
1697
+ "visualised": "visualized",
1698
+ "visualises": "visualizes",
1699
+ "visualising": "visualizing",
1700
+ "vocalisation": "vocalization",
1701
+ "vocalisations": "vocalizations",
1702
+ "vocalise": "vocalize",
1703
+ "vocalised": "vocalized",
1704
+ "vocalises": "vocalizes",
1705
+ "vocalising": "vocalizing",
1706
+ "vulcanised": "vulcanized",
1707
+ "vulgarisation": "vulgarization",
1708
+ "vulgarise": "vulgarize",
1709
+ "vulgarised": "vulgarized",
1710
+ "vulgarises": "vulgarizes",
1711
+ "vulgarising": "vulgarizing",
1712
+ "waggon": "wagon",
1713
+ "waggons": "wagons",
1714
+ "watercolour": "watercolor",
1715
+ "watercolours": "watercolors",
1716
+ "weaselled": "weaseled",
1717
+ "weaselling": "weaseling",
1718
+ "westernisation": "westernization",
1719
+ "westernise": "westernize",
1720
+ "westernised": "westernized",
1721
+ "westernises": "westernizes",
1722
+ "westernising": "westernizing",
1723
+ "womanise": "womanize",
1724
+ "womanised": "womanized",
1725
+ "womaniser": "womanizer",
1726
+ "womanisers": "womanizers",
1727
+ "womanises": "womanizes",
1728
+ "womanising": "womanizing",
1729
+ "woollen": "woolen",
1730
+ "woollens": "woolens",
1731
+ "woollies": "woolies",
1732
+ "woolly": "wooly",
1733
+ "worshipped": "worshiped",
1734
+ "worshipper": "worshiper",
1735
+ "worshipping": "worshiping",
1736
+ "yodelled": "yodeled",
1737
+ "yodelling": "yodeling",
1738
+ "yoghourt": "yogurt",
1739
+ "yoghourts": "yogurts",
1740
+ "yoghurt": "yogurt",
1741
+ "yoghurts": "yogurts"
1742
+ }
whisper-large-v3/preprocessor_config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "chunk_length": 30,
3
+ "feature_extractor_type": "WhisperFeatureExtractor",
4
+ "feature_size": 128,
5
+ "hop_length": 160,
6
+ "n_fft": 400,
7
+ "n_samples": 480000,
8
+ "nb_max_frames": 3000,
9
+ "padding_side": "right",
10
+ "padding_value": 0.0,
11
+ "processor_class": "WhisperProcessor",
12
+ "return_attention_mask": false,
13
+ "sampling_rate": 16000
14
+ }
whisper-large-v3/special_tokens_map.json ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|startoftranscript|>",
4
+ "<|en|>",
5
+ "<|zh|>",
6
+ "<|de|>",
7
+ "<|es|>",
8
+ "<|ru|>",
9
+ "<|ko|>",
10
+ "<|fr|>",
11
+ "<|ja|>",
12
+ "<|pt|>",
13
+ "<|tr|>",
14
+ "<|pl|>",
15
+ "<|ca|>",
16
+ "<|nl|>",
17
+ "<|ar|>",
18
+ "<|sv|>",
19
+ "<|it|>",
20
+ "<|id|>",
21
+ "<|hi|>",
22
+ "<|fi|>",
23
+ "<|vi|>",
24
+ "<|he|>",
25
+ "<|uk|>",
26
+ "<|el|>",
27
+ "<|ms|>",
28
+ "<|cs|>",
29
+ "<|ro|>",
30
+ "<|da|>",
31
+ "<|hu|>",
32
+ "<|ta|>",
33
+ "<|no|>",
34
+ "<|th|>",
35
+ "<|ur|>",
36
+ "<|hr|>",
37
+ "<|bg|>",
38
+ "<|lt|>",
39
+ "<|la|>",
40
+ "<|mi|>",
41
+ "<|ml|>",
42
+ "<|cy|>",
43
+ "<|sk|>",
44
+ "<|te|>",
45
+ "<|fa|>",
46
+ "<|lv|>",
47
+ "<|bn|>",
48
+ "<|sr|>",
49
+ "<|az|>",
50
+ "<|sl|>",
51
+ "<|kn|>",
52
+ "<|et|>",
53
+ "<|mk|>",
54
+ "<|br|>",
55
+ "<|eu|>",
56
+ "<|is|>",
57
+ "<|hy|>",
58
+ "<|ne|>",
59
+ "<|mn|>",
60
+ "<|bs|>",
61
+ "<|kk|>",
62
+ "<|sq|>",
63
+ "<|sw|>",
64
+ "<|gl|>",
65
+ "<|mr|>",
66
+ "<|pa|>",
67
+ "<|si|>",
68
+ "<|km|>",
69
+ "<|sn|>",
70
+ "<|yo|>",
71
+ "<|so|>",
72
+ "<|af|>",
73
+ "<|oc|>",
74
+ "<|ka|>",
75
+ "<|be|>",
76
+ "<|tg|>",
77
+ "<|sd|>",
78
+ "<|gu|>",
79
+ "<|am|>",
80
+ "<|yi|>",
81
+ "<|lo|>",
82
+ "<|uz|>",
83
+ "<|fo|>",
84
+ "<|ht|>",
85
+ "<|ps|>",
86
+ "<|tk|>",
87
+ "<|nn|>",
88
+ "<|mt|>",
89
+ "<|sa|>",
90
+ "<|lb|>",
91
+ "<|my|>",
92
+ "<|bo|>",
93
+ "<|tl|>",
94
+ "<|mg|>",
95
+ "<|as|>",
96
+ "<|tt|>",
97
+ "<|haw|>",
98
+ "<|ln|>",
99
+ "<|ha|>",
100
+ "<|ba|>",
101
+ "<|jw|>",
102
+ "<|su|>",
103
+ "<|yue|>",
104
+ "<|translate|>",
105
+ "<|transcribe|>",
106
+ "<|startoflm|>",
107
+ "<|startofprev|>",
108
+ "<|nospeech|>",
109
+ "<|notimestamps|>"
110
+ ],
111
+ "bos_token": {
112
+ "content": "<|endoftext|>",
113
+ "lstrip": false,
114
+ "normalized": false,
115
+ "rstrip": false,
116
+ "single_word": false
117
+ },
118
+ "eos_token": {
119
+ "content": "<|endoftext|>",
120
+ "lstrip": false,
121
+ "normalized": false,
122
+ "rstrip": false,
123
+ "single_word": false
124
+ },
125
+ "pad_token": "<|endoftext|>",
126
+ "unk_token": {
127
+ "content": "<|endoftext|>",
128
+ "lstrip": false,
129
+ "normalized": false,
130
+ "rstrip": false,
131
+ "single_word": false
132
+ }
133
+ }
whisper-large-v3/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
whisper-large-v3/tokenizer_config.json ADDED
The diff for this file is too large to render. See raw diff
 
whisper-large-v3/vocab.json ADDED
The diff for this file is too large to render. See raw diff