bigmoyan commited on
Commit
c102e8c
·
verified ·
1 Parent(s): eee4983

Upload folder using huggingface_hub

Browse files
.gitignore ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ *.safetensors
2
+ *.model
3
+ *.pt
4
+ *.ckpt
README.md CHANGED
@@ -1,3 +1,151 @@
1
- ---
2
- license: mit
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ language:
4
+ - en
5
+ - zh
6
+ tags:
7
+ - audio
8
+ - audio-language-model
9
+ - speech-recognition
10
+ - audio-understanding
11
+ - text-to-speech
12
+ - audio-generation
13
+ - chat
14
+ - kimi-audio
15
+ ---
16
+
17
+ # Kimi-Audio
18
+
19
+ <p align="center">
20
+ <img src="https://raw.githubusercontent.com/MoonshotAI/Kimi-Audio/main/assets/kimia_logo.png" width="400"/> <!-- TODO: Replace with actual raw image URL from your repo -->
21
+ <p>
22
+
23
+ <p align="center">
24
+ Kimi-Audio-7B <a href="https://huggingface.co/moonshotai/Kimi-Audio-7B">🤗</a>&nbsp; | Kimi-Audio-7B-Instruct <a href="https://huggingface.co/moonshotai/Kimi-Audio-7B-Instruct">🤗</a>&nbsp; | 📑 <a href="https://raw.githubusercontent.com/MoonshotAI/Kimi-Audio/main/assets/kimia_report.pdf">Paper</a>
25
+ </p>
26
+
27
+ ## Introduction
28
+
29
+ We present Kimi-Audio, an open-source audio foundation model excelling in **audio understanding, generation, and conversation**. This repository hosts the model checkpoints for Kimi-Audio-7B and Kimi-Audio-7B-Instruct.
30
+
31
+ Kimi-Audio is designed as a universal audio foundation model capable of handling a wide variety of audio processing tasks within a single unified framework. Key features include:
32
+
33
+ * **Universal Capabilities:** Handles diverse tasks like speech recognition (ASR), audio question answering (AQA), audio captioning (AAC), speech emotion recognition (SER), sound event/scene classification (SEC/ASC), text-to-speech (TTS), voice conversion (VC), and end-to-end speech conversation.
34
+ * **State-of-the-Art Performance:** Achieves SOTA results on numerous audio benchmarks (see our [Technical Report](https://raw.githubusercontent.com/MoonshotAI/Kimi-Audio/main/assets/kimia_report.pdf)). <!-- TODO: Replace with actual raw PDF URL -->
35
+ * **Large-Scale Pre-training:** Pre-trained on over 13 million hours of diverse audio data (speech, music, sounds) and text data.
36
+ * **Novel Architecture:** Employs a hybrid audio input (continuous acoustic + discrete semantic tokens) and an LLM core with parallel heads for text and audio token generation.
37
+ * **Efficient Inference:** Features a chunk-wise streaming detokenizer based on flow matching for low-latency audio generation.
38
+
39
+ For more details, please refer to our [GitHub Repository](https://github.com/MoonshotAI/Kimi-Audio) and [Technical Report](https://raw.githubusercontent.com/MoonshotAI/Kimi-Audio/main/assets/kimia_report.pdf). <!-- TODO: Replace with actual raw PDF URL -->
40
+ <br>
41
+
42
+ ## Requirements
43
+
44
+ To run the inference code, you need to install the necessary dependencies. It's recommended to clone the main Kimi-Audio repository and install the `kimia_infer` package from there.
45
+
46
+ ```bash
47
+ git clone https://github.com/MoonshotAI/Kimi-Audio
48
+ cd Kimi-Audio
49
+ pip install -e . # install the package for inference
50
+ ```
51
+
52
+ ## Quickstart
53
+
54
+ This example demonstrates basic usage for generating text from audio (ASR) and generating both text and speech in a conversational turn using the `Kimi-Audio-7B-Instruct` model.
55
+
56
+ ```python
57
+ import soundfile as sf
58
+ # Assuming the KimiAudio class is available after installation
59
+ from kimia_infer.api.kimia import KimiAudio
60
+ import torch # Ensure torch is imported if needed for device placement
61
+
62
+ # --- 1. Load Model ---
63
+ # Load the model from Hugging Face Hub
64
+ # Make sure you are logged in (`huggingface-cli login`) if the repo is private.
65
+ model_id = "Kimi/Kimi-Audio-7B-Instruct" # Or "Kimi/Kimi-Audio-7B"
66
+ device = "cuda" if torch.cuda.is_available() else "cpu" # Example device placement
67
+ # Note: The KimiAudio class might handle model loading differently.
68
+ # You might need to pass the model_id directly or download checkpoints manually
69
+ # and provide the local path as shown in the original readme_kimia.md.
70
+ # Please refer to the main Kimi-Audio repository for precise loading instructions.
71
+ # Example assuming KimiAudio takes the HF ID or a local path:
72
+ try:
73
+ model = KimiAudio(model_path=model_id, load_detokenizer=True) # May need device argument
74
+ model.to(device) # Example device placement
75
+ except Exception as e:
76
+ print(f"Automatic loading from HF Hub might require specific setup.")
77
+ print(f"Refer to Kimi-Audio docs. Trying local path example (update path!). Error: {e}")
78
+ # Fallback example:
79
+ # model_path = "/path/to/your/downloaded/kimia-hf-ckpt" # IMPORTANT: Update this path if loading locally
80
+ # model = KimiAudio(model_path=model_path, load_detokenizer=True)
81
+ # model.to(device) # Example device placement
82
+
83
+ # --- 2. Define Sampling Parameters ---
84
+ sampling_params = {
85
+ "audio_temperature": 0.8,
86
+ "audio_top_k": 10,
87
+ "text_temperature": 0.0,
88
+ "text_top_k": 5,
89
+ "audio_repetition_penalty": 1.0,
90
+ "audio_repetition_window_size": 64,
91
+ "text_repetition_penalty": 1.0,
92
+ "text_repetition_window_size": 16,
93
+ }
94
+
95
+ # --- 3. Example 1: Audio-to-Text (ASR) ---
96
+ # TODO: Provide actual example audio files or URLs accessible to users
97
+ # E.g., download sample files first or use URLs
98
+ # wget https://path/to/your/asr_example.wav -O asr_example.wav
99
+ # wget https://path/to/your/qa_example.wav -O qa_example.wav
100
+ asr_audio_path = "asr_example.wav" # IMPORTANT: Make sure this file exists
101
+ qa_audio_path = "qa_example.wav" # IMPORTANT: Make sure this file exists
102
+
103
+ messages_asr = [
104
+ {"role": "user", "message_type": "text", "content": "Please transcribe the following audio:"},
105
+ {"role": "user", "message_type": "audio", "content": asr_audio_path}
106
+ ]
107
+
108
+ # Generate only text output
109
+ # Note: Ensure the model object and generate method accept device placement if needed
110
+ _, text_output = model.generate(messages_asr, **sampling_params, output_type="text")
111
+ print(">>> ASR Output Text: ", text_output)
112
+ # Expected output: "这并不是告别,这是一个篇章的结束,也是新篇章的开始。" (Example)
113
+
114
+ # --- 4. Example 2: Audio-to-Audio/Text Conversation ---
115
+ messages_conversation = [
116
+ {"role": "user", "message_type": "audio", "content": qa_audio_path}
117
+ ]
118
+
119
+ # Generate both audio and text output
120
+ wav_output, text_output = model.generate(messages_conversation, **sampling_params, output_type="both")
121
+
122
+ # Save the generated audio
123
+ output_audio_path = "output_audio.wav"
124
+ # Ensure wav_output is on CPU and flattened before saving
125
+ sf.write(output_audio_path, wav_output.detach().cpu().view(-1).numpy(), 24000) # Assuming 24kHz output
126
+ print(f">>> Conversational Output Audio saved to: {output_audio_path}")
127
+ print(">>> Conversational Output Text: ", text_output)
128
+ # Expected output: "A." (Example)
129
+
130
+ print("Kimi-Audio inference examples complete.")
131
+
132
+ ```
133
+
134
+ ## Citation
135
+
136
+ If you find Kimi-Audio useful in your research or applications, please cite our technical report:
137
+
138
+ ```bibtex
139
+ @misc{kimi_audio_2024,
140
+ title={Kimi-Audio Technical Report},
141
+ author={Kimi Team},
142
+ year={2024},
143
+ eprint={arXiv:placeholder},
144
+ archivePrefix={arXiv},
145
+ primaryClass={cs.CL}
146
+ }
147
+ ```
148
+
149
+ ## License
150
+
151
+ The model is based and modified from [Qwen 2.5-7B](https://github.com/QwenLM/Qwen2.5). Code derived from Qwen2.5-7B is licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). Other parts of the code are licensed under the [MIT License](https://opensource.org/licenses/MIT).
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: 1280
63
+ condition_type: discrete_codes
64
+ depth: 16
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: 2304
70
+ input_size: 80
71
+ max_seq_len: 4096
72
+ mlp_ratio: 4.0
73
+ num_heads: 18
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
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": 3584,
17
+ "initializer_range": 0.02,
18
+ "intermediate_size": 18944,
19
+ "kimia_adaptor_input_dim": 5120,
20
+ "kimia_audio_output_vocab": 16896,
21
+ "kimia_media_begin": 151661,
22
+ "kimia_media_end": 151663,
23
+ "kimia_mimo_audiodelaytokens": 5,
24
+ "kimia_mimo_layers": 6,
25
+ "kimia_mimo_transformer_from_layer_index": 21,
26
+ "kimia_text_output_vocab": 152064,
27
+ "kimia_token_offset": 152064,
28
+ "num_attention_heads": 28,
29
+ "num_audio_special_tokens": 512,
30
+ "num_base_tokens": 151643,
31
+ "num_hidden_layers": 28,
32
+ "num_key_value_heads": 4,
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.index.json ADDED
@@ -0,0 +1,460 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 19532673280
4
+ },
5
+ "weight_map": {
6
+ "model.layers.0.self_attn.q_proj.weight": "model-1-of-35.safetensors",
7
+ "model.layers.0.self_attn.k_proj.weight": "model-1-of-35.safetensors",
8
+ "model.layers.0.self_attn.v_proj.weight": "model-1-of-35.safetensors",
9
+ "model.layers.0.self_attn.o_proj.weight": "model-1-of-35.safetensors",
10
+ "model.layers.0.self_attn.q_proj.bias": "model-1-of-35.safetensors",
11
+ "model.layers.0.self_attn.k_proj.bias": "model-1-of-35.safetensors",
12
+ "model.layers.0.self_attn.v_proj.bias": "model-1-of-35.safetensors",
13
+ "model.layers.0.input_layernorm.weight": "model-1-of-35.safetensors",
14
+ "model.layers.0.post_attention_layernorm.weight": "model-1-of-35.safetensors",
15
+ "model.layers.0.mlp.gate_proj.weight": "model-1-of-35.safetensors",
16
+ "model.layers.0.mlp.down_proj.weight": "model-1-of-35.safetensors",
17
+ "model.layers.0.mlp.up_proj.weight": "model-1-of-35.safetensors",
18
+ "model.layers.0.self_attn.rotary_emb.inv_freq": "model-1-of-35.safetensors",
19
+ "model.layers.1.self_attn.q_proj.weight": "model-2-of-35.safetensors",
20
+ "model.layers.1.self_attn.k_proj.weight": "model-2-of-35.safetensors",
21
+ "model.layers.1.self_attn.v_proj.weight": "model-2-of-35.safetensors",
22
+ "model.layers.1.self_attn.o_proj.weight": "model-2-of-35.safetensors",
23
+ "model.layers.1.self_attn.q_proj.bias": "model-2-of-35.safetensors",
24
+ "model.layers.1.self_attn.k_proj.bias": "model-2-of-35.safetensors",
25
+ "model.layers.1.self_attn.v_proj.bias": "model-2-of-35.safetensors",
26
+ "model.layers.1.input_layernorm.weight": "model-2-of-35.safetensors",
27
+ "model.layers.1.post_attention_layernorm.weight": "model-2-of-35.safetensors",
28
+ "model.layers.1.mlp.gate_proj.weight": "model-2-of-35.safetensors",
29
+ "model.layers.1.mlp.down_proj.weight": "model-2-of-35.safetensors",
30
+ "model.layers.1.mlp.up_proj.weight": "model-2-of-35.safetensors",
31
+ "model.layers.1.self_attn.rotary_emb.inv_freq": "model-2-of-35.safetensors",
32
+ "model.layers.2.self_attn.q_proj.weight": "model-3-of-35.safetensors",
33
+ "model.layers.2.self_attn.k_proj.weight": "model-3-of-35.safetensors",
34
+ "model.layers.2.self_attn.v_proj.weight": "model-3-of-35.safetensors",
35
+ "model.layers.2.self_attn.o_proj.weight": "model-3-of-35.safetensors",
36
+ "model.layers.2.self_attn.q_proj.bias": "model-3-of-35.safetensors",
37
+ "model.layers.2.self_attn.k_proj.bias": "model-3-of-35.safetensors",
38
+ "model.layers.2.self_attn.v_proj.bias": "model-3-of-35.safetensors",
39
+ "model.layers.2.input_layernorm.weight": "model-3-of-35.safetensors",
40
+ "model.layers.2.post_attention_layernorm.weight": "model-3-of-35.safetensors",
41
+ "model.layers.2.mlp.gate_proj.weight": "model-3-of-35.safetensors",
42
+ "model.layers.2.mlp.down_proj.weight": "model-3-of-35.safetensors",
43
+ "model.layers.2.mlp.up_proj.weight": "model-3-of-35.safetensors",
44
+ "model.layers.2.self_attn.rotary_emb.inv_freq": "model-3-of-35.safetensors",
45
+ "model.layers.3.self_attn.q_proj.weight": "model-4-of-35.safetensors",
46
+ "model.layers.3.self_attn.k_proj.weight": "model-4-of-35.safetensors",
47
+ "model.layers.3.self_attn.v_proj.weight": "model-4-of-35.safetensors",
48
+ "model.layers.3.self_attn.o_proj.weight": "model-4-of-35.safetensors",
49
+ "model.layers.3.self_attn.q_proj.bias": "model-4-of-35.safetensors",
50
+ "model.layers.3.self_attn.k_proj.bias": "model-4-of-35.safetensors",
51
+ "model.layers.3.self_attn.v_proj.bias": "model-4-of-35.safetensors",
52
+ "model.layers.3.input_layernorm.weight": "model-4-of-35.safetensors",
53
+ "model.layers.3.post_attention_layernorm.weight": "model-4-of-35.safetensors",
54
+ "model.layers.3.mlp.gate_proj.weight": "model-4-of-35.safetensors",
55
+ "model.layers.3.mlp.down_proj.weight": "model-4-of-35.safetensors",
56
+ "model.layers.3.mlp.up_proj.weight": "model-4-of-35.safetensors",
57
+ "model.layers.3.self_attn.rotary_emb.inv_freq": "model-4-of-35.safetensors",
58
+ "model.layers.4.self_attn.q_proj.weight": "model-5-of-35.safetensors",
59
+ "model.layers.4.self_attn.k_proj.weight": "model-5-of-35.safetensors",
60
+ "model.layers.4.self_attn.v_proj.weight": "model-5-of-35.safetensors",
61
+ "model.layers.4.self_attn.o_proj.weight": "model-5-of-35.safetensors",
62
+ "model.layers.4.self_attn.q_proj.bias": "model-5-of-35.safetensors",
63
+ "model.layers.4.self_attn.k_proj.bias": "model-5-of-35.safetensors",
64
+ "model.layers.4.self_attn.v_proj.bias": "model-5-of-35.safetensors",
65
+ "model.layers.4.input_layernorm.weight": "model-5-of-35.safetensors",
66
+ "model.layers.4.post_attention_layernorm.weight": "model-5-of-35.safetensors",
67
+ "model.layers.4.mlp.gate_proj.weight": "model-5-of-35.safetensors",
68
+ "model.layers.4.mlp.down_proj.weight": "model-5-of-35.safetensors",
69
+ "model.layers.4.mlp.up_proj.weight": "model-5-of-35.safetensors",
70
+ "model.layers.4.self_attn.rotary_emb.inv_freq": "model-5-of-35.safetensors",
71
+ "model.layers.5.self_attn.q_proj.weight": "model-6-of-35.safetensors",
72
+ "model.layers.5.self_attn.k_proj.weight": "model-6-of-35.safetensors",
73
+ "model.layers.5.self_attn.v_proj.weight": "model-6-of-35.safetensors",
74
+ "model.layers.5.self_attn.o_proj.weight": "model-6-of-35.safetensors",
75
+ "model.layers.5.self_attn.q_proj.bias": "model-6-of-35.safetensors",
76
+ "model.layers.5.self_attn.k_proj.bias": "model-6-of-35.safetensors",
77
+ "model.layers.5.self_attn.v_proj.bias": "model-6-of-35.safetensors",
78
+ "model.layers.5.input_layernorm.weight": "model-6-of-35.safetensors",
79
+ "model.layers.5.post_attention_layernorm.weight": "model-6-of-35.safetensors",
80
+ "model.layers.5.mlp.gate_proj.weight": "model-6-of-35.safetensors",
81
+ "model.layers.5.mlp.down_proj.weight": "model-6-of-35.safetensors",
82
+ "model.layers.5.mlp.up_proj.weight": "model-6-of-35.safetensors",
83
+ "model.layers.5.self_attn.rotary_emb.inv_freq": "model-6-of-35.safetensors",
84
+ "model.layers.6.self_attn.q_proj.weight": "model-7-of-35.safetensors",
85
+ "model.layers.6.self_attn.k_proj.weight": "model-7-of-35.safetensors",
86
+ "model.layers.6.self_attn.v_proj.weight": "model-7-of-35.safetensors",
87
+ "model.layers.6.self_attn.o_proj.weight": "model-7-of-35.safetensors",
88
+ "model.layers.6.self_attn.q_proj.bias": "model-7-of-35.safetensors",
89
+ "model.layers.6.self_attn.k_proj.bias": "model-7-of-35.safetensors",
90
+ "model.layers.6.self_attn.v_proj.bias": "model-7-of-35.safetensors",
91
+ "model.layers.6.input_layernorm.weight": "model-7-of-35.safetensors",
92
+ "model.layers.6.post_attention_layernorm.weight": "model-7-of-35.safetensors",
93
+ "model.layers.6.mlp.gate_proj.weight": "model-7-of-35.safetensors",
94
+ "model.layers.6.mlp.down_proj.weight": "model-7-of-35.safetensors",
95
+ "model.layers.6.mlp.up_proj.weight": "model-7-of-35.safetensors",
96
+ "model.layers.6.self_attn.rotary_emb.inv_freq": "model-7-of-35.safetensors",
97
+ "model.layers.7.self_attn.q_proj.weight": "model-8-of-35.safetensors",
98
+ "model.layers.7.self_attn.k_proj.weight": "model-8-of-35.safetensors",
99
+ "model.layers.7.self_attn.v_proj.weight": "model-8-of-35.safetensors",
100
+ "model.layers.7.self_attn.o_proj.weight": "model-8-of-35.safetensors",
101
+ "model.layers.7.self_attn.q_proj.bias": "model-8-of-35.safetensors",
102
+ "model.layers.7.self_attn.k_proj.bias": "model-8-of-35.safetensors",
103
+ "model.layers.7.self_attn.v_proj.bias": "model-8-of-35.safetensors",
104
+ "model.layers.7.input_layernorm.weight": "model-8-of-35.safetensors",
105
+ "model.layers.7.post_attention_layernorm.weight": "model-8-of-35.safetensors",
106
+ "model.layers.7.mlp.gate_proj.weight": "model-8-of-35.safetensors",
107
+ "model.layers.7.mlp.down_proj.weight": "model-8-of-35.safetensors",
108
+ "model.layers.7.mlp.up_proj.weight": "model-8-of-35.safetensors",
109
+ "model.layers.7.self_attn.rotary_emb.inv_freq": "model-8-of-35.safetensors",
110
+ "model.layers.8.self_attn.q_proj.weight": "model-9-of-35.safetensors",
111
+ "model.layers.8.self_attn.k_proj.weight": "model-9-of-35.safetensors",
112
+ "model.layers.8.self_attn.v_proj.weight": "model-9-of-35.safetensors",
113
+ "model.layers.8.self_attn.o_proj.weight": "model-9-of-35.safetensors",
114
+ "model.layers.8.self_attn.q_proj.bias": "model-9-of-35.safetensors",
115
+ "model.layers.8.self_attn.k_proj.bias": "model-9-of-35.safetensors",
116
+ "model.layers.8.self_attn.v_proj.bias": "model-9-of-35.safetensors",
117
+ "model.layers.8.input_layernorm.weight": "model-9-of-35.safetensors",
118
+ "model.layers.8.post_attention_layernorm.weight": "model-9-of-35.safetensors",
119
+ "model.layers.8.mlp.gate_proj.weight": "model-9-of-35.safetensors",
120
+ "model.layers.8.mlp.down_proj.weight": "model-9-of-35.safetensors",
121
+ "model.layers.8.mlp.up_proj.weight": "model-9-of-35.safetensors",
122
+ "model.layers.8.self_attn.rotary_emb.inv_freq": "model-9-of-35.safetensors",
123
+ "model.layers.9.self_attn.q_proj.weight": "model-10-of-35.safetensors",
124
+ "model.layers.9.self_attn.k_proj.weight": "model-10-of-35.safetensors",
125
+ "model.layers.9.self_attn.v_proj.weight": "model-10-of-35.safetensors",
126
+ "model.layers.9.self_attn.o_proj.weight": "model-10-of-35.safetensors",
127
+ "model.layers.9.self_attn.q_proj.bias": "model-10-of-35.safetensors",
128
+ "model.layers.9.self_attn.k_proj.bias": "model-10-of-35.safetensors",
129
+ "model.layers.9.self_attn.v_proj.bias": "model-10-of-35.safetensors",
130
+ "model.layers.9.input_layernorm.weight": "model-10-of-35.safetensors",
131
+ "model.layers.9.post_attention_layernorm.weight": "model-10-of-35.safetensors",
132
+ "model.layers.9.mlp.gate_proj.weight": "model-10-of-35.safetensors",
133
+ "model.layers.9.mlp.down_proj.weight": "model-10-of-35.safetensors",
134
+ "model.layers.9.mlp.up_proj.weight": "model-10-of-35.safetensors",
135
+ "model.layers.9.self_attn.rotary_emb.inv_freq": "model-10-of-35.safetensors",
136
+ "model.layers.10.self_attn.q_proj.weight": "model-11-of-35.safetensors",
137
+ "model.layers.10.self_attn.k_proj.weight": "model-11-of-35.safetensors",
138
+ "model.layers.10.self_attn.v_proj.weight": "model-11-of-35.safetensors",
139
+ "model.layers.10.self_attn.o_proj.weight": "model-11-of-35.safetensors",
140
+ "model.layers.10.self_attn.q_proj.bias": "model-11-of-35.safetensors",
141
+ "model.layers.10.self_attn.k_proj.bias": "model-11-of-35.safetensors",
142
+ "model.layers.10.self_attn.v_proj.bias": "model-11-of-35.safetensors",
143
+ "model.layers.10.input_layernorm.weight": "model-11-of-35.safetensors",
144
+ "model.layers.10.post_attention_layernorm.weight": "model-11-of-35.safetensors",
145
+ "model.layers.10.mlp.gate_proj.weight": "model-11-of-35.safetensors",
146
+ "model.layers.10.mlp.down_proj.weight": "model-11-of-35.safetensors",
147
+ "model.layers.10.mlp.up_proj.weight": "model-11-of-35.safetensors",
148
+ "model.layers.10.self_attn.rotary_emb.inv_freq": "model-11-of-35.safetensors",
149
+ "model.layers.11.self_attn.q_proj.weight": "model-12-of-35.safetensors",
150
+ "model.layers.11.self_attn.k_proj.weight": "model-12-of-35.safetensors",
151
+ "model.layers.11.self_attn.v_proj.weight": "model-12-of-35.safetensors",
152
+ "model.layers.11.self_attn.o_proj.weight": "model-12-of-35.safetensors",
153
+ "model.layers.11.self_attn.q_proj.bias": "model-12-of-35.safetensors",
154
+ "model.layers.11.self_attn.k_proj.bias": "model-12-of-35.safetensors",
155
+ "model.layers.11.self_attn.v_proj.bias": "model-12-of-35.safetensors",
156
+ "model.layers.11.input_layernorm.weight": "model-12-of-35.safetensors",
157
+ "model.layers.11.post_attention_layernorm.weight": "model-12-of-35.safetensors",
158
+ "model.layers.11.mlp.gate_proj.weight": "model-12-of-35.safetensors",
159
+ "model.layers.11.mlp.down_proj.weight": "model-12-of-35.safetensors",
160
+ "model.layers.11.mlp.up_proj.weight": "model-12-of-35.safetensors",
161
+ "model.layers.11.self_attn.rotary_emb.inv_freq": "model-12-of-35.safetensors",
162
+ "model.layers.12.self_attn.q_proj.weight": "model-13-of-35.safetensors",
163
+ "model.layers.12.self_attn.k_proj.weight": "model-13-of-35.safetensors",
164
+ "model.layers.12.self_attn.v_proj.weight": "model-13-of-35.safetensors",
165
+ "model.layers.12.self_attn.o_proj.weight": "model-13-of-35.safetensors",
166
+ "model.layers.12.self_attn.q_proj.bias": "model-13-of-35.safetensors",
167
+ "model.layers.12.self_attn.k_proj.bias": "model-13-of-35.safetensors",
168
+ "model.layers.12.self_attn.v_proj.bias": "model-13-of-35.safetensors",
169
+ "model.layers.12.input_layernorm.weight": "model-13-of-35.safetensors",
170
+ "model.layers.12.post_attention_layernorm.weight": "model-13-of-35.safetensors",
171
+ "model.layers.12.mlp.gate_proj.weight": "model-13-of-35.safetensors",
172
+ "model.layers.12.mlp.down_proj.weight": "model-13-of-35.safetensors",
173
+ "model.layers.12.mlp.up_proj.weight": "model-13-of-35.safetensors",
174
+ "model.layers.12.self_attn.rotary_emb.inv_freq": "model-13-of-35.safetensors",
175
+ "model.layers.13.self_attn.q_proj.weight": "model-14-of-35.safetensors",
176
+ "model.layers.13.self_attn.k_proj.weight": "model-14-of-35.safetensors",
177
+ "model.layers.13.self_attn.v_proj.weight": "model-14-of-35.safetensors",
178
+ "model.layers.13.self_attn.o_proj.weight": "model-14-of-35.safetensors",
179
+ "model.layers.13.self_attn.q_proj.bias": "model-14-of-35.safetensors",
180
+ "model.layers.13.self_attn.k_proj.bias": "model-14-of-35.safetensors",
181
+ "model.layers.13.self_attn.v_proj.bias": "model-14-of-35.safetensors",
182
+ "model.layers.13.input_layernorm.weight": "model-14-of-35.safetensors",
183
+ "model.layers.13.post_attention_layernorm.weight": "model-14-of-35.safetensors",
184
+ "model.layers.13.mlp.gate_proj.weight": "model-14-of-35.safetensors",
185
+ "model.layers.13.mlp.down_proj.weight": "model-14-of-35.safetensors",
186
+ "model.layers.13.mlp.up_proj.weight": "model-14-of-35.safetensors",
187
+ "model.layers.13.self_attn.rotary_emb.inv_freq": "model-14-of-35.safetensors",
188
+ "model.layers.14.self_attn.q_proj.weight": "model-15-of-35.safetensors",
189
+ "model.layers.14.self_attn.k_proj.weight": "model-15-of-35.safetensors",
190
+ "model.layers.14.self_attn.v_proj.weight": "model-15-of-35.safetensors",
191
+ "model.layers.14.self_attn.o_proj.weight": "model-15-of-35.safetensors",
192
+ "model.layers.14.self_attn.q_proj.bias": "model-15-of-35.safetensors",
193
+ "model.layers.14.self_attn.k_proj.bias": "model-15-of-35.safetensors",
194
+ "model.layers.14.self_attn.v_proj.bias": "model-15-of-35.safetensors",
195
+ "model.layers.14.input_layernorm.weight": "model-15-of-35.safetensors",
196
+ "model.layers.14.post_attention_layernorm.weight": "model-15-of-35.safetensors",
197
+ "model.layers.14.mlp.gate_proj.weight": "model-15-of-35.safetensors",
198
+ "model.layers.14.mlp.down_proj.weight": "model-15-of-35.safetensors",
199
+ "model.layers.14.mlp.up_proj.weight": "model-15-of-35.safetensors",
200
+ "model.layers.14.self_attn.rotary_emb.inv_freq": "model-15-of-35.safetensors",
201
+ "model.layers.15.self_attn.q_proj.weight": "model-16-of-35.safetensors",
202
+ "model.layers.15.self_attn.k_proj.weight": "model-16-of-35.safetensors",
203
+ "model.layers.15.self_attn.v_proj.weight": "model-16-of-35.safetensors",
204
+ "model.layers.15.self_attn.o_proj.weight": "model-16-of-35.safetensors",
205
+ "model.layers.15.self_attn.q_proj.bias": "model-16-of-35.safetensors",
206
+ "model.layers.15.self_attn.k_proj.bias": "model-16-of-35.safetensors",
207
+ "model.layers.15.self_attn.v_proj.bias": "model-16-of-35.safetensors",
208
+ "model.layers.15.input_layernorm.weight": "model-16-of-35.safetensors",
209
+ "model.layers.15.post_attention_layernorm.weight": "model-16-of-35.safetensors",
210
+ "model.layers.15.mlp.gate_proj.weight": "model-16-of-35.safetensors",
211
+ "model.layers.15.mlp.down_proj.weight": "model-16-of-35.safetensors",
212
+ "model.layers.15.mlp.up_proj.weight": "model-16-of-35.safetensors",
213
+ "model.layers.15.self_attn.rotary_emb.inv_freq": "model-16-of-35.safetensors",
214
+ "model.layers.16.self_attn.q_proj.weight": "model-17-of-35.safetensors",
215
+ "model.layers.16.self_attn.k_proj.weight": "model-17-of-35.safetensors",
216
+ "model.layers.16.self_attn.v_proj.weight": "model-17-of-35.safetensors",
217
+ "model.layers.16.self_attn.o_proj.weight": "model-17-of-35.safetensors",
218
+ "model.layers.16.self_attn.q_proj.bias": "model-17-of-35.safetensors",
219
+ "model.layers.16.self_attn.k_proj.bias": "model-17-of-35.safetensors",
220
+ "model.layers.16.self_attn.v_proj.bias": "model-17-of-35.safetensors",
221
+ "model.layers.16.input_layernorm.weight": "model-17-of-35.safetensors",
222
+ "model.layers.16.post_attention_layernorm.weight": "model-17-of-35.safetensors",
223
+ "model.layers.16.mlp.gate_proj.weight": "model-17-of-35.safetensors",
224
+ "model.layers.16.mlp.down_proj.weight": "model-17-of-35.safetensors",
225
+ "model.layers.16.mlp.up_proj.weight": "model-17-of-35.safetensors",
226
+ "model.layers.16.self_attn.rotary_emb.inv_freq": "model-17-of-35.safetensors",
227
+ "model.layers.17.self_attn.q_proj.weight": "model-18-of-35.safetensors",
228
+ "model.layers.17.self_attn.k_proj.weight": "model-18-of-35.safetensors",
229
+ "model.layers.17.self_attn.v_proj.weight": "model-18-of-35.safetensors",
230
+ "model.layers.17.self_attn.o_proj.weight": "model-18-of-35.safetensors",
231
+ "model.layers.17.self_attn.q_proj.bias": "model-18-of-35.safetensors",
232
+ "model.layers.17.self_attn.k_proj.bias": "model-18-of-35.safetensors",
233
+ "model.layers.17.self_attn.v_proj.bias": "model-18-of-35.safetensors",
234
+ "model.layers.17.input_layernorm.weight": "model-18-of-35.safetensors",
235
+ "model.layers.17.post_attention_layernorm.weight": "model-18-of-35.safetensors",
236
+ "model.layers.17.mlp.gate_proj.weight": "model-18-of-35.safetensors",
237
+ "model.layers.17.mlp.down_proj.weight": "model-18-of-35.safetensors",
238
+ "model.layers.17.mlp.up_proj.weight": "model-18-of-35.safetensors",
239
+ "model.layers.17.self_attn.rotary_emb.inv_freq": "model-18-of-35.safetensors",
240
+ "model.layers.18.self_attn.q_proj.weight": "model-19-of-35.safetensors",
241
+ "model.layers.18.self_attn.k_proj.weight": "model-19-of-35.safetensors",
242
+ "model.layers.18.self_attn.v_proj.weight": "model-19-of-35.safetensors",
243
+ "model.layers.18.self_attn.o_proj.weight": "model-19-of-35.safetensors",
244
+ "model.layers.18.self_attn.q_proj.bias": "model-19-of-35.safetensors",
245
+ "model.layers.18.self_attn.k_proj.bias": "model-19-of-35.safetensors",
246
+ "model.layers.18.self_attn.v_proj.bias": "model-19-of-35.safetensors",
247
+ "model.layers.18.input_layernorm.weight": "model-19-of-35.safetensors",
248
+ "model.layers.18.post_attention_layernorm.weight": "model-19-of-35.safetensors",
249
+ "model.layers.18.mlp.gate_proj.weight": "model-19-of-35.safetensors",
250
+ "model.layers.18.mlp.down_proj.weight": "model-19-of-35.safetensors",
251
+ "model.layers.18.mlp.up_proj.weight": "model-19-of-35.safetensors",
252
+ "model.layers.18.self_attn.rotary_emb.inv_freq": "model-19-of-35.safetensors",
253
+ "model.layers.19.self_attn.q_proj.weight": "model-20-of-35.safetensors",
254
+ "model.layers.19.self_attn.k_proj.weight": "model-20-of-35.safetensors",
255
+ "model.layers.19.self_attn.v_proj.weight": "model-20-of-35.safetensors",
256
+ "model.layers.19.self_attn.o_proj.weight": "model-20-of-35.safetensors",
257
+ "model.layers.19.self_attn.q_proj.bias": "model-20-of-35.safetensors",
258
+ "model.layers.19.self_attn.k_proj.bias": "model-20-of-35.safetensors",
259
+ "model.layers.19.self_attn.v_proj.bias": "model-20-of-35.safetensors",
260
+ "model.layers.19.input_layernorm.weight": "model-20-of-35.safetensors",
261
+ "model.layers.19.post_attention_layernorm.weight": "model-20-of-35.safetensors",
262
+ "model.layers.19.mlp.gate_proj.weight": "model-20-of-35.safetensors",
263
+ "model.layers.19.mlp.down_proj.weight": "model-20-of-35.safetensors",
264
+ "model.layers.19.mlp.up_proj.weight": "model-20-of-35.safetensors",
265
+ "model.layers.19.self_attn.rotary_emb.inv_freq": "model-20-of-35.safetensors",
266
+ "model.layers.20.self_attn.q_proj.weight": "model-21-of-35.safetensors",
267
+ "model.layers.20.self_attn.k_proj.weight": "model-21-of-35.safetensors",
268
+ "model.layers.20.self_attn.v_proj.weight": "model-21-of-35.safetensors",
269
+ "model.layers.20.self_attn.o_proj.weight": "model-21-of-35.safetensors",
270
+ "model.layers.20.self_attn.q_proj.bias": "model-21-of-35.safetensors",
271
+ "model.layers.20.self_attn.k_proj.bias": "model-21-of-35.safetensors",
272
+ "model.layers.20.self_attn.v_proj.bias": "model-21-of-35.safetensors",
273
+ "model.layers.20.input_layernorm.weight": "model-21-of-35.safetensors",
274
+ "model.layers.20.post_attention_layernorm.weight": "model-21-of-35.safetensors",
275
+ "model.layers.20.mlp.gate_proj.weight": "model-21-of-35.safetensors",
276
+ "model.layers.20.mlp.down_proj.weight": "model-21-of-35.safetensors",
277
+ "model.layers.20.mlp.up_proj.weight": "model-21-of-35.safetensors",
278
+ "model.layers.20.self_attn.rotary_emb.inv_freq": "model-21-of-35.safetensors",
279
+ "model.layers.21.self_attn.q_proj.weight": "model-22-of-35.safetensors",
280
+ "model.layers.21.self_attn.k_proj.weight": "model-22-of-35.safetensors",
281
+ "model.layers.21.self_attn.v_proj.weight": "model-22-of-35.safetensors",
282
+ "model.layers.21.self_attn.o_proj.weight": "model-22-of-35.safetensors",
283
+ "model.layers.21.self_attn.q_proj.bias": "model-22-of-35.safetensors",
284
+ "model.layers.21.self_attn.k_proj.bias": "model-22-of-35.safetensors",
285
+ "model.layers.21.self_attn.v_proj.bias": "model-22-of-35.safetensors",
286
+ "model.layers.21.input_layernorm.weight": "model-22-of-35.safetensors",
287
+ "model.layers.21.post_attention_layernorm.weight": "model-22-of-35.safetensors",
288
+ "model.layers.21.mlp.gate_proj.weight": "model-22-of-35.safetensors",
289
+ "model.layers.21.mlp.down_proj.weight": "model-22-of-35.safetensors",
290
+ "model.layers.21.mlp.up_proj.weight": "model-22-of-35.safetensors",
291
+ "model.layers.21.self_attn.rotary_emb.inv_freq": "model-22-of-35.safetensors",
292
+ "model.layers.22.self_attn.q_proj.weight": "model-23-of-35.safetensors",
293
+ "model.layers.22.self_attn.k_proj.weight": "model-23-of-35.safetensors",
294
+ "model.layers.22.self_attn.v_proj.weight": "model-23-of-35.safetensors",
295
+ "model.layers.22.self_attn.o_proj.weight": "model-23-of-35.safetensors",
296
+ "model.layers.22.self_attn.q_proj.bias": "model-23-of-35.safetensors",
297
+ "model.layers.22.self_attn.k_proj.bias": "model-23-of-35.safetensors",
298
+ "model.layers.22.self_attn.v_proj.bias": "model-23-of-35.safetensors",
299
+ "model.layers.22.input_layernorm.weight": "model-23-of-35.safetensors",
300
+ "model.layers.22.post_attention_layernorm.weight": "model-23-of-35.safetensors",
301
+ "model.layers.22.mlp.gate_proj.weight": "model-23-of-35.safetensors",
302
+ "model.layers.22.mlp.down_proj.weight": "model-23-of-35.safetensors",
303
+ "model.layers.22.mlp.up_proj.weight": "model-23-of-35.safetensors",
304
+ "model.layers.22.self_attn.rotary_emb.inv_freq": "model-23-of-35.safetensors",
305
+ "model.layers.23.self_attn.q_proj.weight": "model-24-of-35.safetensors",
306
+ "model.layers.23.self_attn.k_proj.weight": "model-24-of-35.safetensors",
307
+ "model.layers.23.self_attn.v_proj.weight": "model-24-of-35.safetensors",
308
+ "model.layers.23.self_attn.o_proj.weight": "model-24-of-35.safetensors",
309
+ "model.layers.23.self_attn.q_proj.bias": "model-24-of-35.safetensors",
310
+ "model.layers.23.self_attn.k_proj.bias": "model-24-of-35.safetensors",
311
+ "model.layers.23.self_attn.v_proj.bias": "model-24-of-35.safetensors",
312
+ "model.layers.23.input_layernorm.weight": "model-24-of-35.safetensors",
313
+ "model.layers.23.post_attention_layernorm.weight": "model-24-of-35.safetensors",
314
+ "model.layers.23.mlp.gate_proj.weight": "model-24-of-35.safetensors",
315
+ "model.layers.23.mlp.down_proj.weight": "model-24-of-35.safetensors",
316
+ "model.layers.23.mlp.up_proj.weight": "model-24-of-35.safetensors",
317
+ "model.layers.23.self_attn.rotary_emb.inv_freq": "model-24-of-35.safetensors",
318
+ "model.layers.24.self_attn.q_proj.weight": "model-25-of-35.safetensors",
319
+ "model.layers.24.self_attn.k_proj.weight": "model-25-of-35.safetensors",
320
+ "model.layers.24.self_attn.v_proj.weight": "model-25-of-35.safetensors",
321
+ "model.layers.24.self_attn.o_proj.weight": "model-25-of-35.safetensors",
322
+ "model.layers.24.self_attn.q_proj.bias": "model-25-of-35.safetensors",
323
+ "model.layers.24.self_attn.k_proj.bias": "model-25-of-35.safetensors",
324
+ "model.layers.24.self_attn.v_proj.bias": "model-25-of-35.safetensors",
325
+ "model.layers.24.input_layernorm.weight": "model-25-of-35.safetensors",
326
+ "model.layers.24.post_attention_layernorm.weight": "model-25-of-35.safetensors",
327
+ "model.layers.24.mlp.gate_proj.weight": "model-25-of-35.safetensors",
328
+ "model.layers.24.mlp.down_proj.weight": "model-25-of-35.safetensors",
329
+ "model.layers.24.mlp.up_proj.weight": "model-25-of-35.safetensors",
330
+ "model.layers.24.self_attn.rotary_emb.inv_freq": "model-25-of-35.safetensors",
331
+ "model.layers.25.self_attn.q_proj.weight": "model-26-of-35.safetensors",
332
+ "model.layers.25.self_attn.k_proj.weight": "model-26-of-35.safetensors",
333
+ "model.layers.25.self_attn.v_proj.weight": "model-26-of-35.safetensors",
334
+ "model.layers.25.self_attn.o_proj.weight": "model-26-of-35.safetensors",
335
+ "model.layers.25.self_attn.q_proj.bias": "model-26-of-35.safetensors",
336
+ "model.layers.25.self_attn.k_proj.bias": "model-26-of-35.safetensors",
337
+ "model.layers.25.self_attn.v_proj.bias": "model-26-of-35.safetensors",
338
+ "model.layers.25.input_layernorm.weight": "model-26-of-35.safetensors",
339
+ "model.layers.25.post_attention_layernorm.weight": "model-26-of-35.safetensors",
340
+ "model.layers.25.mlp.gate_proj.weight": "model-26-of-35.safetensors",
341
+ "model.layers.25.mlp.down_proj.weight": "model-26-of-35.safetensors",
342
+ "model.layers.25.mlp.up_proj.weight": "model-26-of-35.safetensors",
343
+ "model.layers.25.self_attn.rotary_emb.inv_freq": "model-26-of-35.safetensors",
344
+ "model.layers.26.self_attn.q_proj.weight": "model-27-of-35.safetensors",
345
+ "model.layers.26.self_attn.k_proj.weight": "model-27-of-35.safetensors",
346
+ "model.layers.26.self_attn.v_proj.weight": "model-27-of-35.safetensors",
347
+ "model.layers.26.self_attn.o_proj.weight": "model-27-of-35.safetensors",
348
+ "model.layers.26.self_attn.q_proj.bias": "model-27-of-35.safetensors",
349
+ "model.layers.26.self_attn.k_proj.bias": "model-27-of-35.safetensors",
350
+ "model.layers.26.self_attn.v_proj.bias": "model-27-of-35.safetensors",
351
+ "model.layers.26.input_layernorm.weight": "model-27-of-35.safetensors",
352
+ "model.layers.26.post_attention_layernorm.weight": "model-27-of-35.safetensors",
353
+ "model.layers.26.mlp.gate_proj.weight": "model-27-of-35.safetensors",
354
+ "model.layers.26.mlp.down_proj.weight": "model-27-of-35.safetensors",
355
+ "model.layers.26.mlp.up_proj.weight": "model-27-of-35.safetensors",
356
+ "model.layers.26.self_attn.rotary_emb.inv_freq": "model-27-of-35.safetensors",
357
+ "model.layers.27.self_attn.q_proj.weight": "model-28-of-35.safetensors",
358
+ "model.layers.27.self_attn.k_proj.weight": "model-28-of-35.safetensors",
359
+ "model.layers.27.self_attn.v_proj.weight": "model-28-of-35.safetensors",
360
+ "model.layers.27.self_attn.o_proj.weight": "model-28-of-35.safetensors",
361
+ "model.layers.27.self_attn.q_proj.bias": "model-28-of-35.safetensors",
362
+ "model.layers.27.self_attn.k_proj.bias": "model-28-of-35.safetensors",
363
+ "model.layers.27.self_attn.v_proj.bias": "model-28-of-35.safetensors",
364
+ "model.layers.27.input_layernorm.weight": "model-28-of-35.safetensors",
365
+ "model.layers.27.post_attention_layernorm.weight": "model-28-of-35.safetensors",
366
+ "model.layers.27.mlp.gate_proj.weight": "model-28-of-35.safetensors",
367
+ "model.layers.27.mlp.down_proj.weight": "model-28-of-35.safetensors",
368
+ "model.layers.27.mlp.up_proj.weight": "model-28-of-35.safetensors",
369
+ "model.layers.27.self_attn.rotary_emb.inv_freq": "model-28-of-35.safetensors",
370
+ "model.mimo_layers.0.self_attn.q_proj.weight": "model-29-of-35.safetensors",
371
+ "model.mimo_layers.0.self_attn.k_proj.weight": "model-29-of-35.safetensors",
372
+ "model.mimo_layers.0.self_attn.v_proj.weight": "model-29-of-35.safetensors",
373
+ "model.mimo_layers.0.self_attn.o_proj.weight": "model-29-of-35.safetensors",
374
+ "model.mimo_layers.0.input_layernorm.weight": "model-29-of-35.safetensors",
375
+ "model.mimo_layers.0.post_attention_layernorm.weight": "model-29-of-35.safetensors",
376
+ "model.mimo_layers.0.mlp.gate_proj.weight": "model-29-of-35.safetensors",
377
+ "model.mimo_layers.0.mlp.down_proj.weight": "model-29-of-35.safetensors",
378
+ "model.mimo_layers.0.mlp.up_proj.weight": "model-29-of-35.safetensors",
379
+ "model.mimo_layers.0.self_attn.q_proj.bias": "model-29-of-35.safetensors",
380
+ "model.mimo_layers.0.self_attn.k_proj.bias": "model-29-of-35.safetensors",
381
+ "model.mimo_layers.0.self_attn.v_proj.bias": "model-29-of-35.safetensors",
382
+ "model.mimo_layers.0.self_attn.rotary_emb.inv_freq": "model-29-of-35.safetensors",
383
+ "model.mimo_layers.1.self_attn.q_proj.weight": "model-30-of-35.safetensors",
384
+ "model.mimo_layers.1.self_attn.k_proj.weight": "model-30-of-35.safetensors",
385
+ "model.mimo_layers.1.self_attn.v_proj.weight": "model-30-of-35.safetensors",
386
+ "model.mimo_layers.1.self_attn.o_proj.weight": "model-30-of-35.safetensors",
387
+ "model.mimo_layers.1.input_layernorm.weight": "model-30-of-35.safetensors",
388
+ "model.mimo_layers.1.post_attention_layernorm.weight": "model-30-of-35.safetensors",
389
+ "model.mimo_layers.1.mlp.gate_proj.weight": "model-30-of-35.safetensors",
390
+ "model.mimo_layers.1.mlp.down_proj.weight": "model-30-of-35.safetensors",
391
+ "model.mimo_layers.1.mlp.up_proj.weight": "model-30-of-35.safetensors",
392
+ "model.mimo_layers.1.self_attn.q_proj.bias": "model-30-of-35.safetensors",
393
+ "model.mimo_layers.1.self_attn.k_proj.bias": "model-30-of-35.safetensors",
394
+ "model.mimo_layers.1.self_attn.v_proj.bias": "model-30-of-35.safetensors",
395
+ "model.mimo_layers.1.self_attn.rotary_emb.inv_freq": "model-30-of-35.safetensors",
396
+ "model.mimo_layers.2.self_attn.q_proj.weight": "model-31-of-35.safetensors",
397
+ "model.mimo_layers.2.self_attn.k_proj.weight": "model-31-of-35.safetensors",
398
+ "model.mimo_layers.2.self_attn.v_proj.weight": "model-31-of-35.safetensors",
399
+ "model.mimo_layers.2.self_attn.o_proj.weight": "model-31-of-35.safetensors",
400
+ "model.mimo_layers.2.input_layernorm.weight": "model-31-of-35.safetensors",
401
+ "model.mimo_layers.2.post_attention_layernorm.weight": "model-31-of-35.safetensors",
402
+ "model.mimo_layers.2.mlp.gate_proj.weight": "model-31-of-35.safetensors",
403
+ "model.mimo_layers.2.mlp.down_proj.weight": "model-31-of-35.safetensors",
404
+ "model.mimo_layers.2.mlp.up_proj.weight": "model-31-of-35.safetensors",
405
+ "model.mimo_layers.2.self_attn.q_proj.bias": "model-31-of-35.safetensors",
406
+ "model.mimo_layers.2.self_attn.k_proj.bias": "model-31-of-35.safetensors",
407
+ "model.mimo_layers.2.self_attn.v_proj.bias": "model-31-of-35.safetensors",
408
+ "model.mimo_layers.2.self_attn.rotary_emb.inv_freq": "model-31-of-35.safetensors",
409
+ "model.mimo_layers.3.self_attn.q_proj.weight": "model-32-of-35.safetensors",
410
+ "model.mimo_layers.3.self_attn.k_proj.weight": "model-32-of-35.safetensors",
411
+ "model.mimo_layers.3.self_attn.v_proj.weight": "model-32-of-35.safetensors",
412
+ "model.mimo_layers.3.self_attn.o_proj.weight": "model-32-of-35.safetensors",
413
+ "model.mimo_layers.3.input_layernorm.weight": "model-32-of-35.safetensors",
414
+ "model.mimo_layers.3.post_attention_layernorm.weight": "model-32-of-35.safetensors",
415
+ "model.mimo_layers.3.mlp.gate_proj.weight": "model-32-of-35.safetensors",
416
+ "model.mimo_layers.3.mlp.down_proj.weight": "model-32-of-35.safetensors",
417
+ "model.mimo_layers.3.mlp.up_proj.weight": "model-32-of-35.safetensors",
418
+ "model.mimo_layers.3.self_attn.q_proj.bias": "model-32-of-35.safetensors",
419
+ "model.mimo_layers.3.self_attn.k_proj.bias": "model-32-of-35.safetensors",
420
+ "model.mimo_layers.3.self_attn.v_proj.bias": "model-32-of-35.safetensors",
421
+ "model.mimo_layers.3.self_attn.rotary_emb.inv_freq": "model-32-of-35.safetensors",
422
+ "model.mimo_layers.4.self_attn.q_proj.weight": "model-33-of-35.safetensors",
423
+ "model.mimo_layers.4.self_attn.k_proj.weight": "model-33-of-35.safetensors",
424
+ "model.mimo_layers.4.self_attn.v_proj.weight": "model-33-of-35.safetensors",
425
+ "model.mimo_layers.4.self_attn.o_proj.weight": "model-33-of-35.safetensors",
426
+ "model.mimo_layers.4.input_layernorm.weight": "model-33-of-35.safetensors",
427
+ "model.mimo_layers.4.post_attention_layernorm.weight": "model-33-of-35.safetensors",
428
+ "model.mimo_layers.4.mlp.gate_proj.weight": "model-33-of-35.safetensors",
429
+ "model.mimo_layers.4.mlp.down_proj.weight": "model-33-of-35.safetensors",
430
+ "model.mimo_layers.4.mlp.up_proj.weight": "model-33-of-35.safetensors",
431
+ "model.mimo_layers.4.self_attn.q_proj.bias": "model-33-of-35.safetensors",
432
+ "model.mimo_layers.4.self_attn.k_proj.bias": "model-33-of-35.safetensors",
433
+ "model.mimo_layers.4.self_attn.v_proj.bias": "model-33-of-35.safetensors",
434
+ "model.mimo_layers.4.self_attn.rotary_emb.inv_freq": "model-33-of-35.safetensors",
435
+ "model.mimo_layers.5.self_attn.q_proj.weight": "model-34-of-35.safetensors",
436
+ "model.mimo_layers.5.self_attn.k_proj.weight": "model-34-of-35.safetensors",
437
+ "model.mimo_layers.5.self_attn.v_proj.weight": "model-34-of-35.safetensors",
438
+ "model.mimo_layers.5.self_attn.o_proj.weight": "model-34-of-35.safetensors",
439
+ "model.mimo_layers.5.input_layernorm.weight": "model-34-of-35.safetensors",
440
+ "model.mimo_layers.5.post_attention_layernorm.weight": "model-34-of-35.safetensors",
441
+ "model.mimo_layers.5.mlp.gate_proj.weight": "model-34-of-35.safetensors",
442
+ "model.mimo_layers.5.mlp.down_proj.weight": "model-34-of-35.safetensors",
443
+ "model.mimo_layers.5.mlp.up_proj.weight": "model-34-of-35.safetensors",
444
+ "model.mimo_layers.5.self_attn.q_proj.bias": "model-34-of-35.safetensors",
445
+ "model.mimo_layers.5.self_attn.k_proj.bias": "model-34-of-35.safetensors",
446
+ "model.mimo_layers.5.self_attn.v_proj.bias": "model-34-of-35.safetensors",
447
+ "model.mimo_layers.5.self_attn.rotary_emb.inv_freq": "model-34-of-35.safetensors",
448
+ "model.vq_adaptor.layers.0.weight": "model-35-of-35.safetensors",
449
+ "model.vq_adaptor.layers.0.bias": "model-35-of-35.safetensors",
450
+ "model.vq_adaptor.layers.3.weight": "model-35-of-35.safetensors",
451
+ "model.vq_adaptor.layers.3.bias": "model-35-of-35.safetensors",
452
+ "model.vq_adaptor.layers.4.weight": "model-35-of-35.safetensors",
453
+ "model.vq_adaptor.layers.4.bias": "model-35-of-35.safetensors",
454
+ "model.embed_tokens.weight": "model-36-of-36.safetensors",
455
+ "model.norm.weight": "model-36-of-36.safetensors",
456
+ "lm_head.weight": "model-36-of-36.safetensors",
457
+ "mimo_output.weight": "model-36-of-36.safetensors",
458
+ "model.mimo_norm.weight": "model-36-of-36.safetensors"
459
+ }
460
+ }
modeling_moonshot_kimia.py ADDED
@@ -0,0 +1,917 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ raise RuntimeError("flash attention must be installed")
79
+
80
+
81
+ logger = logging.get_logger(__name__)
82
+
83
+
84
+ def _get_unpad_data(padding_mask):
85
+ seqlens_in_batch = padding_mask.sum(dim=-1, dtype=torch.int32)
86
+ indices = torch.nonzero(padding_mask.flatten(), as_tuple=False).flatten()
87
+ max_seqlen_in_batch = seqlens_in_batch.max().item()
88
+ cu_seqlens = F.pad(
89
+ torch.cumsum(seqlens_in_batch, dim=0, dtype=torch.torch.int32), (1, 0)
90
+ )
91
+ return (
92
+ indices,
93
+ cu_seqlens,
94
+ max_seqlen_in_batch,
95
+ )
96
+
97
+
98
+ def _upad_input(query_layer, key_layer, value_layer, padding_mask, query_length):
99
+ indices_k, cu_seqlens_k, max_seqlen_in_batch_k = _get_unpad_data(padding_mask)
100
+ batch_size, kv_seq_len, num_key_value_heads, head_dim = key_layer.shape
101
+ num_heads = query_layer.shape[2]
102
+
103
+ key_layer = index_first_axis(
104
+ key_layer.reshape(batch_size * kv_seq_len, num_key_value_heads, head_dim),
105
+ indices_k,
106
+ )
107
+ value_layer = index_first_axis(
108
+ value_layer.reshape(batch_size * kv_seq_len, num_key_value_heads, head_dim),
109
+ indices_k,
110
+ )
111
+ if query_length == kv_seq_len:
112
+ query_layer = index_first_axis(
113
+ query_layer.reshape(batch_size * kv_seq_len, num_heads, head_dim), indices_k
114
+ )
115
+ cu_seqlens_q = cu_seqlens_k
116
+ max_seqlen_in_batch_q = max_seqlen_in_batch_k
117
+ indices_q = indices_k
118
+ elif query_length == 1:
119
+ max_seqlen_in_batch_q = 1
120
+ cu_seqlens_q = torch.arange(
121
+ batch_size + 1, dtype=torch.int32, device=query_layer.device
122
+ ) # There is a memcpy here, that is very bad.
123
+ indices_q = cu_seqlens_q[:-1]
124
+ query_layer = query_layer.squeeze(1)
125
+ else:
126
+ # The -q_len: slice assumes left padding.
127
+ padding_mask = padding_mask[:, -query_length:]
128
+ query_layer, indices_q, cu_seqlens_q, max_seqlen_in_batch_q = unpad_input(
129
+ query_layer, padding_mask
130
+ )
131
+
132
+ return (
133
+ query_layer,
134
+ key_layer,
135
+ value_layer,
136
+ indices_q,
137
+ (cu_seqlens_q, cu_seqlens_k),
138
+ (max_seqlen_in_batch_q, max_seqlen_in_batch_k),
139
+ )
140
+
141
+
142
+ # Copied from transformers.models.bart.modeling_bart._make_causal_mask
143
+ def _make_causal_mask(
144
+ input_ids_shape: torch.Size,
145
+ dtype: torch.dtype,
146
+ device: torch.device,
147
+ past_key_values_length: int = 0,
148
+ ):
149
+ """
150
+ Make causal mask used for bi-directional self-attention.
151
+ """
152
+ bsz, tgt_len = input_ids_shape
153
+ mask = torch.full((tgt_len, tgt_len), torch.finfo(dtype).min, device=device)
154
+ mask_cond = torch.arange(mask.size(-1), device=device)
155
+ mask.masked_fill_(mask_cond < (mask_cond + 1).view(mask.size(-1), 1), 0)
156
+ mask = mask.to(dtype)
157
+
158
+ if past_key_values_length > 0:
159
+ mask = torch.cat(
160
+ [
161
+ torch.zeros(
162
+ tgt_len, past_key_values_length, dtype=dtype, device=device
163
+ ),
164
+ mask,
165
+ ],
166
+ dim=-1,
167
+ )
168
+ return mask[None, None, :, :].expand(
169
+ bsz, 1, tgt_len, tgt_len + past_key_values_length
170
+ )
171
+
172
+
173
+ # Copied from transformers.models.bart.modeling_bart._expand_mask
174
+ def _expand_mask(mask: torch.Tensor, dtype: torch.dtype, tgt_len: Optional[int] = None):
175
+ """
176
+ Expands attention_mask from `[bsz, seq_len]` to `[bsz, 1, tgt_seq_len, src_seq_len]`.
177
+ """
178
+ bsz, src_len = mask.size()
179
+ tgt_len = tgt_len if tgt_len is not None else src_len
180
+
181
+ expanded_mask = mask[:, None, None, :].expand(bsz, 1, tgt_len, src_len).to(dtype)
182
+
183
+ inverted_mask = 1.0 - expanded_mask
184
+
185
+ return inverted_mask.masked_fill(
186
+ inverted_mask.to(torch.bool), torch.finfo(dtype).min
187
+ )
188
+
189
+
190
+ class RotaryEmbedding(nn.Module):
191
+ def __init__(self, dim, max_position_embeddings=2048, base=10000, device=None):
192
+ super().__init__()
193
+
194
+ self.dim = dim
195
+ self.max_position_embeddings = max_position_embeddings
196
+ self.base = base
197
+ inv_freq = 1.0 / (
198
+ self.base ** (torch.arange(0, self.dim, 2).float().to(device) / self.dim)
199
+ )
200
+ self.register_buffer("inv_freq", inv_freq, persistent=False)
201
+
202
+ # Build here to make `torch.jit.trace` work.
203
+ self._set_cos_sin_cache(
204
+ seq_len=max_position_embeddings,
205
+ device=self.inv_freq.device,
206
+ dtype=torch.get_default_dtype(),
207
+ )
208
+
209
+ def _set_cos_sin_cache(self, seq_len, device, dtype):
210
+ self.max_seq_len_cached = seq_len
211
+ t = torch.arange(
212
+ self.max_seq_len_cached, device=device, dtype=self.inv_freq.dtype
213
+ )
214
+
215
+ freqs = torch.einsum("i,j->ij", t, self.inv_freq)
216
+ # Different from paper, but it uses a different permutation in order to obtain the same calculation
217
+ emb = torch.cat((freqs, freqs), dim=-1)
218
+ self.register_buffer("cos_cached", emb.cos().to(dtype), persistent=False)
219
+ self.register_buffer("sin_cached", emb.sin().to(dtype), persistent=False)
220
+
221
+ def forward(self, x, seq_len=None):
222
+ # x: [bs, num_attention_heads, seq_len, head_size]
223
+ if seq_len > self.max_seq_len_cached:
224
+ self._set_cos_sin_cache(seq_len=seq_len, device=x.device, dtype=x.dtype)
225
+
226
+ return (
227
+ self.cos_cached[:seq_len].to(dtype=x.dtype),
228
+ self.sin_cached[:seq_len].to(dtype=x.dtype),
229
+ )
230
+
231
+
232
+ class MoonshotAttention(nn.Module):
233
+ """Multi-headed attention from 'Attention Is All You Need' paper"""
234
+
235
+ def __init__(self, config: KimiAudioConfig):
236
+ super().__init__()
237
+ self.config = config
238
+ self.hidden_size = config.hidden_size
239
+ self.num_heads = config.num_attention_heads
240
+ self.head_dim = self.hidden_size // self.num_heads
241
+ self.num_key_value_heads = config.num_key_value_heads
242
+ self.num_key_value_groups = self.num_heads // self.num_key_value_heads
243
+ self.max_position_embeddings = config.max_position_embeddings
244
+ self.rope_theta = config.rope_theta
245
+ if (self.head_dim * self.num_heads) != self.hidden_size:
246
+ raise ValueError(
247
+ f"hidden_size must be divisible by num_heads (got `hidden_size`: {self.hidden_size}"
248
+ f" and `num_heads`: {self.num_heads})."
249
+ )
250
+ self.q_proj = nn.Linear(
251
+ self.hidden_size, self.num_heads * self.head_dim, bias=True
252
+ )
253
+ self.k_proj = nn.Linear(
254
+ self.hidden_size, self.num_key_value_heads * self.head_dim, bias=True
255
+ )
256
+ self.v_proj = nn.Linear(
257
+ self.hidden_size, self.num_key_value_heads * self.head_dim, bias=True
258
+ )
259
+ self.o_proj = nn.Linear(
260
+ self.num_heads * self.head_dim, self.hidden_size, bias=False
261
+ )
262
+
263
+ self._init_rope()
264
+
265
+ def _init_rope(self):
266
+
267
+ self.rotary_emb = RotaryEmbedding(
268
+ self.head_dim,
269
+ max_position_embeddings=self.max_position_embeddings,
270
+ base=self.rope_theta,
271
+ )
272
+
273
+ def forward(
274
+ self,
275
+ hidden_states: torch.Tensor,
276
+ attention_mask: Optional[torch.Tensor] = None,
277
+ position_ids: Optional[torch.LongTensor] = None,
278
+ past_key_value: Optional[Tuple[torch.Tensor]] = None,
279
+ output_attentions: bool = False,
280
+ use_cache: bool = False,
281
+ padding_mask: Optional[torch.LongTensor] = None,
282
+ ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]:
283
+ # LlamaFlashAttention2 attention does not support output_attentions
284
+
285
+ output_attentions = False
286
+
287
+ bsz, q_len, _ = hidden_states.size()
288
+
289
+ query_states = self.q_proj(hidden_states)
290
+ key_states = self.k_proj(hidden_states)
291
+ value_states = self.v_proj(hidden_states)
292
+
293
+ # Flash attention requires the input to have the shape
294
+ # batch_size x seq_length x head_dime x hidden_dim
295
+ # therefore we just need to keep the original shape
296
+ query_states = query_states.view(
297
+ bsz, q_len, self.num_heads, self.head_dim
298
+ ).transpose(1, 2)
299
+ key_states = key_states.view(
300
+ bsz, q_len, self.num_key_value_heads, self.head_dim
301
+ ).transpose(1, 2)
302
+ value_states = value_states.view(
303
+ bsz, q_len, self.num_key_value_heads, self.head_dim
304
+ ).transpose(1, 2)
305
+
306
+ kv_seq_len = key_states.shape[-2]
307
+ if past_key_value is not None:
308
+ kv_seq_len += past_key_value[0].shape[-2]
309
+
310
+ cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len)
311
+ cos = cos[position_ids]
312
+ sin = sin[position_ids]
313
+ query_states, key_states = apply_rotary_pos_emb(
314
+ query_states, key_states, cos, sin, position_ids
315
+ )
316
+
317
+ if past_key_value is not None:
318
+ # reuse k, v, self_attention
319
+ key_states = torch.cat([past_key_value[0], key_states], dim=2)
320
+ value_states = torch.cat([past_key_value[1], value_states], dim=2)
321
+
322
+ past_key_value = (key_states, value_states) if use_cache else None
323
+
324
+ query_states = query_states.transpose(1, 2)
325
+ key_states = key_states.transpose(1, 2)
326
+ value_states = value_states.transpose(1, 2)
327
+
328
+ # TODO: llama does not have dropout in the config??
329
+ # It is recommended to use dropout with FA according to the docs
330
+ # when training.
331
+ dropout_rate = 0.0 # if not self.training else self.attn_dropout
332
+
333
+ # In PEFT, usually we cast the layer norms in float32 for training stability reasons
334
+ # therefore the input hidden states gets silently casted in float32. Hence, we need
335
+ # cast them back in float16 just to be sure everything works as expected.
336
+ # This might slowdown training & inference so it is recommended to not cast the LayerNorms
337
+ # in fp32. (LlamaRMSNorm handles it correctly)
338
+ input_dtype = query_states.dtype
339
+ if input_dtype == torch.float32:
340
+ logger.warning_once(
341
+ "The input hidden states seems to be silently casted in float32, this might be related to"
342
+ " the fact you have upcasted embedding or layer norm layers in float32. We will cast back the input in"
343
+ " float16."
344
+ )
345
+
346
+ query_states = query_states.to(torch.float16)
347
+ key_states = key_states.to(torch.float16)
348
+ value_states = value_states.to(torch.float16)
349
+
350
+ attn_output = self._flash_attention_forward(
351
+ query_states,
352
+ key_states,
353
+ value_states,
354
+ padding_mask,
355
+ q_len,
356
+ dropout=dropout_rate,
357
+ )
358
+
359
+ if input_dtype == torch.float32:
360
+ attn_output = attn_output.to(torch.float32)
361
+
362
+ attn_output = attn_output.reshape(bsz, q_len, self.hidden_size).contiguous()
363
+ attn_output = self.o_proj(attn_output)
364
+
365
+ if not output_attentions:
366
+ attn_weights = None
367
+
368
+ return attn_output, attn_weights, past_key_value
369
+
370
+ def _flash_attention_forward(
371
+ self,
372
+ query_states,
373
+ key_states,
374
+ value_states,
375
+ padding_mask,
376
+ query_length,
377
+ dropout=0.0,
378
+ softmax_scale=None,
379
+ ):
380
+ """
381
+ Calls the forward method of Flash Attention - if the input hidden states contain at least one padding token
382
+ first unpad the input, then computes the attention scores and pad the final attention scores.
383
+
384
+ Args:
385
+ query_states (`torch.Tensor`):
386
+ Input query states to be passed to Flash Attention API
387
+ key_states (`torch.Tensor`):
388
+ Input key states to be passed to Flash Attention API
389
+ value_states (`torch.Tensor`):
390
+ Input value states to be passed to Flash Attention API
391
+ padding_mask (`torch.Tensor`):
392
+ The padding mask - corresponds to a tensor of size `(batch_size, seq_len)` where 0 stands for the
393
+ position of padding tokens and 1 for the position of non-padding tokens.
394
+ dropout (`int`, *optional*):
395
+ Attention dropout
396
+ softmax_scale (`float`, *optional*):
397
+ The scaling of QK^T before applying softmax. Default to 1 / sqrt(head_dim)
398
+ """
399
+ # Contains at least one padding token in the sequence
400
+ if padding_mask is not None:
401
+ batch_size = query_states.shape[0]
402
+ (
403
+ query_states,
404
+ key_states,
405
+ value_states,
406
+ indices_q,
407
+ cu_seq_lens,
408
+ max_seq_lens,
409
+ ) = _upad_input(
410
+ query_states, key_states, value_states, padding_mask, query_length
411
+ )
412
+
413
+ cu_seqlens_q, cu_seqlens_k = cu_seq_lens
414
+ max_seqlen_in_batch_q, max_seqlen_in_batch_k = max_seq_lens
415
+
416
+ attn_output_unpad = flash_attn_varlen_func(
417
+ query_states,
418
+ key_states,
419
+ value_states,
420
+ cu_seqlens_q=cu_seqlens_q,
421
+ cu_seqlens_k=cu_seqlens_k,
422
+ max_seqlen_q=max_seqlen_in_batch_q,
423
+ max_seqlen_k=max_seqlen_in_batch_k,
424
+ dropout_p=dropout,
425
+ softmax_scale=softmax_scale,
426
+ causal=True,
427
+ )
428
+
429
+ attn_output = pad_input(
430
+ attn_output_unpad, indices_q, batch_size, query_length
431
+ )
432
+ else:
433
+ attn_output = flash_attn_func(
434
+ query_states,
435
+ key_states,
436
+ value_states,
437
+ dropout,
438
+ softmax_scale=softmax_scale,
439
+ causal=True,
440
+ )
441
+
442
+ return attn_output
443
+
444
+
445
+ class MoonshotDecoderLayer(nn.Module):
446
+ def __init__(self, config: KimiAudioConfig):
447
+ super().__init__()
448
+ self.hidden_size = config.hidden_size
449
+ self.config = config
450
+
451
+ logger.warning_once("using normal flash attention")
452
+ self.self_attn = MoonshotAttention(config=config)
453
+
454
+ self.mlp = Qwen2MLP(config)
455
+ self.input_layernorm = Qwen2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
456
+ self.post_attention_layernorm = Qwen2RMSNorm(
457
+ config.hidden_size, eps=config.rms_norm_eps
458
+ )
459
+
460
+ def forward(
461
+ self,
462
+ hidden_states: torch.Tensor,
463
+ attention_mask: Optional[torch.Tensor] = None,
464
+ position_ids: Optional[torch.LongTensor] = None,
465
+ past_key_value: Optional[Tuple[torch.Tensor]] = None,
466
+ output_attentions: Optional[bool] = False,
467
+ use_cache: Optional[bool] = False,
468
+ padding_mask: Optional[torch.LongTensor] = None,
469
+ ) -> Tuple[
470
+ torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]
471
+ ]:
472
+ """
473
+ Args:
474
+ hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
475
+ attention_mask (`torch.FloatTensor`, *optional*): attention mask of size
476
+ `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
477
+ output_attentions (`bool`, *optional*):
478
+ Whether or not to return the attentions tensors of all attention layers. See `attentions` under
479
+ returned tensors for more detail.
480
+ use_cache (`bool`, *optional*):
481
+ If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
482
+ (see `past_key_values`).
483
+ past_key_value (`Tuple(torch.FloatTensor)`, *optional*): cached past key and value projection states
484
+ """
485
+
486
+ residual = hidden_states
487
+
488
+ hidden_states = self.input_layernorm(hidden_states)
489
+
490
+ # Self Attention
491
+ hidden_states, self_attn_weights, present_key_value = self.self_attn(
492
+ hidden_states=hidden_states,
493
+ attention_mask=attention_mask,
494
+ position_ids=position_ids,
495
+ past_key_value=past_key_value,
496
+ output_attentions=output_attentions,
497
+ use_cache=use_cache,
498
+ padding_mask=padding_mask,
499
+ )
500
+ hidden_states = residual + hidden_states
501
+
502
+ # Fully Connected
503
+ residual = hidden_states
504
+ hidden_states = self.post_attention_layernorm(hidden_states)
505
+ hidden_states = self.mlp(hidden_states)
506
+ hidden_states = residual + hidden_states
507
+
508
+ outputs = (hidden_states,)
509
+
510
+ if output_attentions:
511
+ outputs += (self_attn_weights,)
512
+
513
+ if use_cache:
514
+ outputs += (present_key_value,)
515
+
516
+ return outputs
517
+
518
+
519
+ class VQAdaptor(nn.Module):
520
+ def __init__(self, config):
521
+ super().__init__()
522
+ self.layers = nn.Sequential(
523
+ nn.Linear(config.kimia_adaptor_input_dim, config.hidden_size, bias=True),
524
+ nn.SiLU(),
525
+ nn.Dropout(0.0),
526
+ nn.Linear(config.hidden_size, config.hidden_size, bias=True),
527
+ nn.LayerNorm(config.hidden_size, eps=config.rms_norm_eps, bias=True),
528
+ )
529
+
530
+ def forward(self, x):
531
+ return self.layers(x)
532
+
533
+
534
+ class MoonshotKimiaModel(Qwen2PreTrainedModel):
535
+ """
536
+ Transformer decoder consisting of *config.num_hidden_layers* layers. Each layer is a [`QwenDecoderLayer`]
537
+
538
+ Args:
539
+ config: KimiAudioConfig
540
+ """
541
+
542
+ config_class = KimiAudioConfig
543
+
544
+ def __init__(self, config: KimiAudioConfig):
545
+ super().__init__(config)
546
+ self.padding_idx = config.pad_token_id
547
+ self.vocab_size = config.vocab_size
548
+ self.kimia_mimo_transformer_from_layer_index = (
549
+ config.kimia_mimo_transformer_from_layer_index
550
+ )
551
+
552
+ self.embed_tokens = nn.Embedding(
553
+ config.vocab_size, config.hidden_size, self.padding_idx
554
+ )
555
+ self.layers = nn.ModuleList(
556
+ [MoonshotDecoderLayer(config) for _ in range(config.num_hidden_layers)]
557
+ )
558
+ self.norm = Qwen2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
559
+
560
+ # extra 1B audio transformers
561
+ self.mimo_layers = nn.ModuleList(
562
+ [MoonshotDecoderLayer(config) for _ in range(config.kimia_mimo_layers)]
563
+ )
564
+ self.mimo_norm = Qwen2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
565
+ self.use_whisper_feature = config.use_whisper_feature
566
+ if self.use_whisper_feature:
567
+ self.vq_adaptor = VQAdaptor(config)
568
+ self.kimia_media_begin = config.kimia_media_begin
569
+ self.kimia_media_end = config.kimia_media_end
570
+
571
+ self.gradient_checkpointing = False
572
+ # Initialize weights and apply final processing
573
+ self.post_init()
574
+
575
+ def get_input_embeddings(self):
576
+ return self.embed_tokens
577
+
578
+ def set_input_embeddings(self, value):
579
+ self.embed_tokens = value
580
+
581
+ # Copied from transformers.models.bart.modeling_bart.BartDecoder._prepare_decoder_attention_mask
582
+ def _prepare_decoder_attention_mask(
583
+ self, attention_mask, input_shape, inputs_embeds, past_key_values_length
584
+ ):
585
+ # create causal mask
586
+ # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len]
587
+ combined_attention_mask = None
588
+ if input_shape[-1] > 1:
589
+ combined_attention_mask = _make_causal_mask(
590
+ input_shape,
591
+ inputs_embeds.dtype,
592
+ device=inputs_embeds.device,
593
+ past_key_values_length=past_key_values_length,
594
+ )
595
+
596
+ if attention_mask is not None:
597
+ # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len]
598
+ expanded_attn_mask = _expand_mask(
599
+ attention_mask, inputs_embeds.dtype, tgt_len=input_shape[-1]
600
+ ).to(inputs_embeds.device)
601
+ combined_attention_mask = (
602
+ expanded_attn_mask
603
+ if combined_attention_mask is None
604
+ else expanded_attn_mask + combined_attention_mask
605
+ )
606
+
607
+ return combined_attention_mask
608
+
609
+ def forward(
610
+ self,
611
+ input_ids: torch.LongTensor = None,
612
+ text_input_ids: torch.LongTensor = None,
613
+ whisper_input_feature: Optional[torch.FloatTensor] = None,
614
+ is_continuous_mask: Optional[torch.Tensor] = None,
615
+ attention_mask: Optional[torch.Tensor] = None,
616
+ position_ids: Optional[torch.LongTensor] = None,
617
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
618
+ inputs_embeds: Optional[torch.FloatTensor] = None,
619
+ use_cache: Optional[bool] = None,
620
+ output_attentions: Optional[bool] = None,
621
+ output_hidden_states: Optional[bool] = None,
622
+ return_dict: Optional[bool] = None,
623
+ ) -> Union[Tuple, BaseModelOutputWithPast]:
624
+ output_attentions = (
625
+ output_attentions
626
+ if output_attentions is not None
627
+ else self.config.output_attentions
628
+ )
629
+ output_hidden_states = (
630
+ output_hidden_states
631
+ if output_hidden_states is not None
632
+ else self.config.output_hidden_states
633
+ )
634
+ use_cache = use_cache if use_cache is not None else self.config.use_cache
635
+
636
+ return_dict = (
637
+ return_dict if return_dict is not None else self.config.use_return_dict
638
+ )
639
+
640
+ # retrieve input_ids and inputs_embeds
641
+ if input_ids is not None and inputs_embeds is not None:
642
+ raise ValueError(
643
+ "You cannot specify both input_ids and inputs_embeds at the same time"
644
+ )
645
+ elif input_ids is not None:
646
+ batch_size, seq_length = input_ids.shape
647
+ elif inputs_embeds is not None:
648
+ batch_size, seq_length, _ = inputs_embeds.shape
649
+ else:
650
+ raise ValueError("You have to specify either input_ids or inputs_embeds")
651
+
652
+ seq_length_with_past = seq_length
653
+ past_key_values_length = 0
654
+
655
+ if past_key_values is not None:
656
+ past_key_values_length = past_key_values[0][0].shape[2]
657
+ seq_length_with_past = seq_length_with_past + past_key_values_length
658
+ if position_ids is None:
659
+ device = input_ids.device if input_ids is not None else inputs_embeds.device
660
+ position_ids = torch.arange(
661
+ past_key_values_length,
662
+ seq_length + past_key_values_length,
663
+ dtype=torch.long,
664
+ device=device,
665
+ )
666
+ position_ids = position_ids.unsqueeze(0)
667
+
668
+ if inputs_embeds is None:
669
+ # shape: batch, seq_len, hidden_size
670
+ input_ids = input_ids.to(torch.cuda.current_device())
671
+ text_input_ids = text_input_ids.to(torch.cuda.current_device())
672
+ audio_emb = self.embed_tokens(input_ids)
673
+ if self.use_whisper_feature and whisper_input_feature is not None:
674
+ if not isinstance(whisper_input_feature, list):
675
+ whisper_input_feature = whisper_input_feature.squeeze(0)
676
+ whisper_input_feature = [whisper_input_feature]
677
+
678
+ media_start_idx = (input_ids == self.kimia_media_begin).nonzero()
679
+ media_end_idx = (input_ids == self.kimia_media_end).nonzero()
680
+ # shape: batch, seq_len, hidden_size
681
+ whisper_input_dim = whisper_input_feature[0].shape[-1]
682
+ whisper_dtype = whisper_input_feature[0].dtype
683
+ expanded_whisper = (
684
+ torch.zeros(audio_emb.shape[1], whisper_input_dim)
685
+ .to(torch.cuda.current_device())
686
+ .to(whisper_dtype)
687
+ )
688
+ for (seg_idx, start_idx), (_, end_idx) in zip(
689
+ media_start_idx, media_end_idx
690
+ ):
691
+ # assert whisper_emb.shape[1] == end_idx - (start_idx + 1)
692
+
693
+ feat_len = end_idx - (start_idx + 1)
694
+ whisper_input_feature_i = whisper_input_feature[seg_idx].squeeze(0)
695
+ assert feat_len == is_continuous_mask[seg_idx].sum()
696
+ expanded_whisper[start_idx + 1 : end_idx, :] = (
697
+ whisper_input_feature_i[:feat_len, :]
698
+ )
699
+
700
+ expanded_whisper = expanded_whisper.unsqueeze(0)
701
+ whisper_emb = self.vq_adaptor(
702
+ expanded_whisper.transpose(0, 1)
703
+ ).transpose(0, 1)
704
+ is_continuous_mask = is_continuous_mask.to(torch.cuda.current_device())
705
+ whisper_emb = whisper_emb.to(torch.cuda.current_device())
706
+ whisper_emb = whisper_emb * is_continuous_mask[:, :, None]
707
+
708
+ encoder_input_addwith_discrete_token = (
709
+ audio_emb + whisper_emb
710
+ ) * torch.sqrt(
711
+ torch.tensor(
712
+ 2.0, dtype=whisper_emb.dtype, device=torch.cuda.current_device()
713
+ )
714
+ )
715
+ audio_emb = (
716
+ audio_emb * (~is_continuous_mask[:, :, None])
717
+ + encoder_input_addwith_discrete_token
718
+ * is_continuous_mask[:, :, None]
719
+ )
720
+ if text_input_ids is not None and text_input_ids.sum() != 0:
721
+ inputs_embeds = audio_emb + self.embed_tokens(text_input_ids)
722
+ else:
723
+ inputs_embeds = audio_emb
724
+ # embed positions
725
+ # TODO kill attention_mask for prefill
726
+ padding_mask = attention_mask
727
+
728
+ hidden_states = inputs_embeds
729
+
730
+ # decoder layers
731
+ all_hidden_states = () if output_hidden_states else None
732
+ all_self_attns = () if output_attentions else None
733
+ next_decoder_cache = () if use_cache else None
734
+ for idx, decoder_layer in enumerate(self.layers):
735
+ if output_hidden_states:
736
+ all_hidden_states += (hidden_states,)
737
+
738
+ past_key_value = (
739
+ past_key_values[idx] if past_key_values is not None else None
740
+ )
741
+ layer_outputs = decoder_layer(
742
+ hidden_states,
743
+ attention_mask=attention_mask,
744
+ position_ids=position_ids,
745
+ past_key_value=past_key_value,
746
+ output_attentions=output_attentions,
747
+ use_cache=use_cache,
748
+ padding_mask=padding_mask,
749
+ )
750
+
751
+ hidden_states = layer_outputs[0]
752
+ if idx == self.kimia_mimo_transformer_from_layer_index:
753
+ mimo_hidden_states = hidden_states.clone()
754
+
755
+ if use_cache:
756
+ next_decoder_cache += (layer_outputs[2 if output_attentions else 1],)
757
+
758
+ if output_attentions:
759
+ all_self_attns += (layer_outputs[1],)
760
+
761
+ hidden_states = self.norm(hidden_states)
762
+ if output_hidden_states:
763
+ all_hidden_states += (hidden_states,)
764
+
765
+ # apply audio transformer layers
766
+ for idx, decoder_layer in enumerate(self.mimo_layers):
767
+ if output_hidden_states:
768
+ all_hidden_states += (mimo_hidden_states,)
769
+
770
+ past_key_value = (
771
+ past_key_values[idx + len(self.layers)]
772
+ if past_key_values is not None
773
+ else None
774
+ )
775
+ layer_outputs = decoder_layer(
776
+ mimo_hidden_states,
777
+ attention_mask=attention_mask,
778
+ position_ids=position_ids,
779
+ past_key_value=past_key_value,
780
+ output_attentions=output_attentions,
781
+ use_cache=use_cache,
782
+ padding_mask=padding_mask,
783
+ )
784
+
785
+ mimo_hidden_states = layer_outputs[0]
786
+
787
+ if use_cache:
788
+ next_decoder_cache += (layer_outputs[2 if output_attentions else 1],)
789
+
790
+ mimo_hidden_states = self.mimo_norm(mimo_hidden_states)
791
+
792
+ # add hidden states from the last decoder layer
793
+ if output_hidden_states:
794
+ all_hidden_states += (mimo_hidden_states,)
795
+
796
+ next_cache = next_decoder_cache if use_cache else None
797
+ if not return_dict:
798
+ return tuple(
799
+ v
800
+ for v in [
801
+ hidden_states,
802
+ mimo_hidden_states,
803
+ next_cache,
804
+ all_hidden_states,
805
+ all_hidden_states,
806
+ all_self_attns,
807
+ ]
808
+ if v is not None
809
+ )
810
+ return BaseModelOutputWithPast(
811
+ last_hidden_state=(hidden_states, mimo_hidden_states),
812
+ past_key_values=next_cache,
813
+ hidden_states=all_hidden_states,
814
+ attentions=all_self_attns,
815
+ )
816
+
817
+
818
+ class MoonshotKimiaForCausalLM(Qwen2PreTrainedModel):
819
+ _tied_weights_keys = ["lm_head.weight", "mimo_output.weight"]
820
+ config_class = KimiAudioConfig
821
+
822
+ def __init__(self, config):
823
+ super().__init__(config)
824
+ self.model = MoonshotKimiaModel(config)
825
+ self.vocab_size = config.vocab_size
826
+ self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
827
+ self.mimo_output = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
828
+
829
+ # Initialize weights and apply final processing
830
+ self.post_init()
831
+
832
+ def get_input_embeddings(self):
833
+ return self.model.embed_tokens
834
+
835
+ def set_input_embeddings(self, value):
836
+ self.model.embed_tokens = value
837
+
838
+ def get_output_embeddings(self):
839
+ return self.lm_head
840
+
841
+ def set_output_embeddings(self, new_embeddings):
842
+ self.lm_head = new_embeddings
843
+
844
+ def set_decoder(self, decoder):
845
+ self.model = decoder
846
+
847
+ def get_decoder(self):
848
+ return self.model
849
+
850
+ def forward(
851
+ self,
852
+ input_ids: torch.LongTensor = None,
853
+ text_input_ids: torch.LongTensor = None,
854
+ whisper_input_feature: Optional[torch.FloatTensor] = None,
855
+ is_continuous_mask: Optional[torch.Tensor] = None,
856
+ attention_mask: Optional[torch.Tensor] = None,
857
+ position_ids: Optional[torch.LongTensor] = None,
858
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
859
+ inputs_embeds: Optional[torch.FloatTensor] = None,
860
+ labels: Optional[torch.LongTensor] = None,
861
+ use_cache: Optional[bool] = None,
862
+ output_attentions: Optional[bool] = None,
863
+ output_hidden_states: Optional[bool] = None,
864
+ generation_mode: Optional[bool] = None,
865
+ return_dict: Optional[bool] = None,
866
+ ) -> Union[Tuple, CausalLMOutputWithPast]:
867
+
868
+ output_attentions = (
869
+ output_attentions
870
+ if output_attentions is not None
871
+ else self.config.output_attentions
872
+ )
873
+ output_hidden_states = (
874
+ output_hidden_states
875
+ if output_hidden_states is not None
876
+ else self.config.output_hidden_states
877
+ )
878
+ return_dict = (
879
+ return_dict if return_dict is not None else self.config.use_return_dict
880
+ )
881
+
882
+ # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)
883
+ outputs = self.model(
884
+ input_ids=input_ids,
885
+ text_input_ids=text_input_ids,
886
+ whisper_input_feature=whisper_input_feature,
887
+ is_continuous_mask=is_continuous_mask,
888
+ attention_mask=attention_mask,
889
+ position_ids=position_ids,
890
+ past_key_values=past_key_values,
891
+ inputs_embeds=inputs_embeds,
892
+ use_cache=use_cache,
893
+ output_attentions=output_attentions,
894
+ output_hidden_states=output_hidden_states,
895
+ return_dict=return_dict,
896
+ )
897
+ if return_dict:
898
+ hidden_states, mimo_hidden_states = (
899
+ outputs.last_hidden_state[0],
900
+ outputs.last_hidden_state[1],
901
+ )
902
+ else:
903
+ hidden_states, mimo_hidden_states = outputs[0], outputs[1]
904
+
905
+ audio_logits = self.lm_head(hidden_states)
906
+ text_logits = self.mimo_output(mimo_hidden_states)
907
+
908
+ if not return_dict:
909
+ output = (text_logits, audio_logits) + outputs[2:]
910
+ return output
911
+ return CausalLMOutputWithPast(
912
+ loss=None,
913
+ logits=(text_logits, audio_logits),
914
+ past_key_values=outputs.past_key_values,
915
+ hidden_states=outputs.hidden_states,
916
+ attentions=outputs.attentions,
917
+ )
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
+ }
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": 1280,
17
+ "decoder_attention_heads": 20,
18
+ "decoder_ffn_dim": 5120,
19
+ "decoder_layerdrop": 0.0,
20
+ "decoder_layers": 32,
21
+ "decoder_start_token_id": 50258,
22
+ "dropout": 0.0,
23
+ "encoder_attention_heads": 20,
24
+ "encoder_ffn_dim": 5120,
25
+ "encoder_layerdrop": 0.0,
26
+ "encoder_layers": 32,
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": 32,
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/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