Upload Mongolian Moonshine ASR (WER 11.88 pct)
Browse files- config.json +37 -0
- generation_config.json +17 -0
- mn_bpe.model +3 -0
- mn_tokenizer.py +82 -0
- model.safetensors +3 -0
- preprocessor_config.json +9 -0
- tokenizer_config.json +36 -0
config.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"MoonshineForConditionalGeneration"
|
| 4 |
+
],
|
| 5 |
+
"attention_bias": false,
|
| 6 |
+
"attention_dropout": 0.0,
|
| 7 |
+
"bos_token_id": 1,
|
| 8 |
+
"decoder_hidden_act": "silu",
|
| 9 |
+
"decoder_num_attention_heads": 8,
|
| 10 |
+
"decoder_num_hidden_layers": 8,
|
| 11 |
+
"decoder_num_key_value_heads": 8,
|
| 12 |
+
"decoder_start_token_id": 1,
|
| 13 |
+
"dtype": "float32",
|
| 14 |
+
"encoder_hidden_act": "gelu",
|
| 15 |
+
"encoder_num_attention_heads": 8,
|
| 16 |
+
"encoder_num_hidden_layers": 8,
|
| 17 |
+
"encoder_num_key_value_heads": 8,
|
| 18 |
+
"eos_token_id": 2,
|
| 19 |
+
"hidden_size": 416,
|
| 20 |
+
"initializer_range": 0.02,
|
| 21 |
+
"intermediate_size": 1664,
|
| 22 |
+
"is_encoder_decoder": true,
|
| 23 |
+
"max_position_embeddings": 194,
|
| 24 |
+
"model_type": "moonshine",
|
| 25 |
+
"pad_head_dim_to_multiple_of": 8,
|
| 26 |
+
"pad_token_id": 2,
|
| 27 |
+
"partial_rotary_factor": 0.62,
|
| 28 |
+
"rope_parameters": {
|
| 29 |
+
"partial_rotary_factor": 0.62,
|
| 30 |
+
"rope_theta": 10000.0,
|
| 31 |
+
"rope_type": "default"
|
| 32 |
+
},
|
| 33 |
+
"tie_word_embeddings": true,
|
| 34 |
+
"transformers_version": "5.12.1",
|
| 35 |
+
"use_cache": false,
|
| 36 |
+
"vocab_size": 2003
|
| 37 |
+
}
|
generation_config.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_from_model_config": true,
|
| 3 |
+
"bos_token_id": 1,
|
| 4 |
+
"decoder_start_token_id": 1,
|
| 5 |
+
"do_sample": false,
|
| 6 |
+
"early_stopping": true,
|
| 7 |
+
"eos_token_id": [
|
| 8 |
+
2
|
| 9 |
+
],
|
| 10 |
+
"length_penalty": 1.2,
|
| 11 |
+
"max_length": 194,
|
| 12 |
+
"no_repeat_ngram_size": 2,
|
| 13 |
+
"num_beams": 5,
|
| 14 |
+
"pad_token_id": 2,
|
| 15 |
+
"repetition_penalty": 1.2,
|
| 16 |
+
"transformers_version": "5.12.1"
|
| 17 |
+
}
|
mn_bpe.model
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a23510d1ccd07f7219758f14f32eca9b542e9af6c7c03f6e16c25d898dac4107
|
| 3 |
+
size 37637
|
mn_tokenizer.py
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
MnBPETokenizer - HuggingFace PreTrainedTokenizer for the Mongolian BPE model.
|
| 3 |
+
|
| 4 |
+
Special token layout (matches training in mn_tokenizer_patch.py):
|
| 5 |
+
id 0 -> <pad>
|
| 6 |
+
id 1 -> <s> BOS
|
| 7 |
+
id 2 -> </s> EOS / PAD
|
| 8 |
+
id 3+ -> BPE pieces (offset = 3)
|
| 9 |
+
"""
|
| 10 |
+
import os, shutil
|
| 11 |
+
from typing import Dict, List, Optional, Tuple
|
| 12 |
+
import sentencepiece as spm
|
| 13 |
+
from transformers import PreTrainedTokenizer
|
| 14 |
+
|
| 15 |
+
VOCAB_FILES_NAMES = {"vocab_file": "mn_bpe.model"}
|
| 16 |
+
_SPECIAL = {0: "<pad>", 1: "<s>", 2: "</s>"}
|
| 17 |
+
_OFFSET = 3
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
class MnBPETokenizer(PreTrainedTokenizer):
|
| 21 |
+
vocab_files_names = VOCAB_FILES_NAMES
|
| 22 |
+
model_input_names = ["input_ids", "attention_mask"]
|
| 23 |
+
|
| 24 |
+
def __init__(self, vocab_file, bos_token="<s>", eos_token="</s>",
|
| 25 |
+
unk_token="<unk>", pad_token="</s>",
|
| 26 |
+
sp_model_kwargs=None, **kwargs):
|
| 27 |
+
self.sp_model_kwargs = sp_model_kwargs or {}
|
| 28 |
+
self.sp_model = spm.SentencePieceProcessor(**self.sp_model_kwargs)
|
| 29 |
+
self.sp_model.Load(vocab_file)
|
| 30 |
+
self.vocab_file = vocab_file
|
| 31 |
+
super().__init__(bos_token=bos_token, eos_token=eos_token,
|
| 32 |
+
unk_token=unk_token, pad_token=pad_token,
|
| 33 |
+
sp_model_kwargs=sp_model_kwargs, **kwargs)
|
| 34 |
+
|
| 35 |
+
@property
|
| 36 |
+
def vocab_size(self):
|
| 37 |
+
return self.sp_model.get_piece_size() + _OFFSET
|
| 38 |
+
|
| 39 |
+
def get_vocab(self):
|
| 40 |
+
v = {self.convert_ids_to_tokens(i): i for i in range(self.vocab_size)}
|
| 41 |
+
v.update(self.added_tokens_encoder)
|
| 42 |
+
return v
|
| 43 |
+
|
| 44 |
+
def _tokenize(self, text):
|
| 45 |
+
return self.sp_model.encode(text, out_type=str)
|
| 46 |
+
|
| 47 |
+
def _convert_token_to_id(self, token):
|
| 48 |
+
rev = {v: k for k, v in _SPECIAL.items()}
|
| 49 |
+
if token in rev:
|
| 50 |
+
return rev[token]
|
| 51 |
+
return self.sp_model.piece_to_id(token) + _OFFSET
|
| 52 |
+
|
| 53 |
+
def _convert_id_to_token(self, index):
|
| 54 |
+
if index in _SPECIAL:
|
| 55 |
+
return _SPECIAL[index]
|
| 56 |
+
return self.sp_model.id_to_piece(index - _OFFSET)
|
| 57 |
+
|
| 58 |
+
def convert_tokens_to_string(self, tokens):
|
| 59 |
+
return self.sp_model.decode(tokens)
|
| 60 |
+
|
| 61 |
+
def save_vocabulary(self, save_directory, filename_prefix=None):
|
| 62 |
+
if not os.path.isdir(save_directory):
|
| 63 |
+
return ()
|
| 64 |
+
fname = VOCAB_FILES_NAMES["vocab_file"]
|
| 65 |
+
if filename_prefix:
|
| 66 |
+
fname = f"{filename_prefix}-{fname}"
|
| 67 |
+
out = os.path.join(save_directory, fname)
|
| 68 |
+
if os.path.abspath(self.vocab_file) != os.path.abspath(out):
|
| 69 |
+
shutil.copyfile(self.vocab_file, out)
|
| 70 |
+
return (out,)
|
| 71 |
+
|
| 72 |
+
def decode_ids(self, ids, skip_special=True):
|
| 73 |
+
"""Decode token ids to text, matching training decode logic."""
|
| 74 |
+
pieces = []
|
| 75 |
+
for i in ids:
|
| 76 |
+
i = int(i)
|
| 77 |
+
if i == self.eos_token_id:
|
| 78 |
+
break
|
| 79 |
+
if skip_special and i < _OFFSET:
|
| 80 |
+
continue
|
| 81 |
+
pieces.append(i - _OFFSET)
|
| 82 |
+
return self.sp_model.decode(pieces) if pieces else ""
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8e7aa75168859df3714a3d0de883deca658e1545062d1268c95e25ae43656f1b
|
| 3 |
+
size 194886848
|
preprocessor_config.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"do_normalize": false,
|
| 3 |
+
"feature_extractor_type": "Wav2Vec2FeatureExtractor",
|
| 4 |
+
"feature_size": 1,
|
| 5 |
+
"padding_side": "right",
|
| 6 |
+
"padding_value": 0.0,
|
| 7 |
+
"return_attention_mask": true,
|
| 8 |
+
"sampling_rate": 16000
|
| 9 |
+
}
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"added_tokens_decoder": {
|
| 3 |
+
"1": {
|
| 4 |
+
"content": "<s>",
|
| 5 |
+
"lstrip": false,
|
| 6 |
+
"normalized": false,
|
| 7 |
+
"rstrip": false,
|
| 8 |
+
"single_word": false,
|
| 9 |
+
"special": true
|
| 10 |
+
},
|
| 11 |
+
"2": {
|
| 12 |
+
"content": "</s>",
|
| 13 |
+
"lstrip": false,
|
| 14 |
+
"normalized": false,
|
| 15 |
+
"rstrip": false,
|
| 16 |
+
"single_word": false,
|
| 17 |
+
"special": true
|
| 18 |
+
},
|
| 19 |
+
"4": {
|
| 20 |
+
"content": "<unk>",
|
| 21 |
+
"lstrip": false,
|
| 22 |
+
"normalized": false,
|
| 23 |
+
"rstrip": false,
|
| 24 |
+
"single_word": false,
|
| 25 |
+
"special": true
|
| 26 |
+
}
|
| 27 |
+
},
|
| 28 |
+
"backend": "custom",
|
| 29 |
+
"bos_token": "<s>",
|
| 30 |
+
"eos_token": "</s>",
|
| 31 |
+
"model_max_length": 1000000000000000019884624838656,
|
| 32 |
+
"pad_token": "</s>",
|
| 33 |
+
"sp_model_kwargs": {},
|
| 34 |
+
"tokenizer_class": "MnBPETokenizer",
|
| 35 |
+
"unk_token": "<unk>"
|
| 36 |
+
}
|