初始化项目,由ModelHub XC社区提供模型

Model: alvanlii/wav2vec2-BERT-cantonese
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-05-17 23:47:19 +08:00
commit 2769758173
12 changed files with 574 additions and 0 deletions

35
.gitattributes vendored Normal file
View File

@@ -0,0 +1,35 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text

74
README.md Normal file
View File

@@ -0,0 +1,74 @@
---
language:
- zh
license: apache-2.0
datasets:
- mozilla-foundation/common_voice_16_0
model-index:
- name: Wav2Vec2-BERT - Alvin
results:
- task:
name: Automatic Speech Recognition
type: automatic-speech-recognition
dataset:
name: mozilla-foundation/common_voice_16_0 yue
type: mozilla-foundation/common_voice_16_0
config: yue
split: test
args: yue
metrics:
- name: CER
type: cer
value: 10.27
---
# Wav2Vec2-BERT - Alvin
This model is a fine-tuned version of [facebook/w2v-bert-2.0](https://huggingface.co/facebook/w2v-bert-2.0). This has a CER of 10.27 on Common Voice 16 (yue) test set (without punctuations).
## Training and evaluation data
For training, three datasets were used:
- Common Voice 16 `zh-HK` and `yue` Train Set
- CantoMap: Winterstein, Grégoire, Tang, Carmen and Lai, Regine (2020) "CantoMap: a Hong Kong Cantonese MapTask Corpus", in Proceedings of The 12th Language Resources and Evaluation Conference, Marseille: European Language Resources Association, p. 2899-2906.
- Cantonse-ASR: Yu, Tiezheng, Frieske, Rita, Xu, Peng, Cahyawijaya, Samuel, Yiu, Cheuk Tung, Lovenia, Holy, Dai, Wenliang, Barezi, Elham, Chen, Qifeng, Ma, Xiaojuan, Shi, Bertram, Fung, Pascale (2022) "Automatic Speech Recognition Datasets in Cantonese: A Survey and New Dataset", 2022. Link: https://arxiv.org/pdf/2201.02419.pdf
## Code Example
```
from transformers import pipeline
bert_asr = pipeline(
"automatic-speech-recognition", model="alvanlii/wav2vec2-BERT-cantonese", device="cuda"
)
text = pipe(file)["text"]
```
or
```
import torch
import soundfile as sf
from transformers import AutoModelForCTC, Wav2Vec2BertProcessor
model_name = "alvanlii/wav2vec2-BERT-cantonese"
asr_model = AutoModelForCTC.from_pretrained(model_name).to(device)
processor = Wav2Vec2BertProcessor.from_pretrained(model_name)
audio_input, _ = sf.read(file)
inputs = processor([audio_input], sampling_rate=16_000).input_features
features = torch.tensor(inputs)
with torch.no_grad():
logits = asr_model(features).logits
predicted_ids = torch.argmax(logits, dim=-1)
predictions = processor.batch_decode(predicted_ids, skip_special_tokens=True)
```
## Training Hyperparameters
- learning_rate: 5e-5
- train_batch_size: 4 (on 1 3090)
- eval_batch_size: 1
- gradient_accumulation_steps: 32
- total_train_batch_size: 32x4=128
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_warmup_steps: 1500

82
config.json Normal file
View File

@@ -0,0 +1,82 @@
{
"_name_or_path": "alvanlii/wav2vec2-BERT-cantonese",
"activation_dropout": 0.0,
"adapter_act": "relu",
"adapter_kernel_size": 3,
"adapter_stride": 2,
"add_adapter": true,
"apply_spec_augment": false,
"architectures": [
"Wav2Vec2BertForCTC"
],
"attention_dropout": 0.1,
"bos_token_id": 1,
"classifier_proj_size": 768,
"codevector_dim": 768,
"conformer_conv_dropout": 0.1,
"contrastive_logits_temperature": 0.1,
"conv_depthwise_kernel_size": 31,
"ctc_loss_reduction": "mean",
"ctc_zero_infinity": true,
"diversity_loss_weight": 0.1,
"eos_token_id": 2,
"feat_proj_dropout": 0.1,
"feat_quantizer_dropout": 0.0,
"feature_projection_input_dim": 160,
"final_dropout": 0.1,
"hidden_act": "swish",
"hidden_dropout": 0.0,
"hidden_size": 1024,
"initializer_range": 0.02,
"intermediate_size": 4096,
"layer_norm_eps": 1e-05,
"layerdrop": 0.1,
"left_max_position_embeddings": 64,
"mask_feature_length": 10,
"mask_feature_min_masks": 0,
"mask_feature_prob": 0.0,
"mask_time_length": 10,
"mask_time_min_masks": 2,
"mask_time_prob": 0.0,
"max_source_positions": 5000,
"model_type": "wav2vec2-bert",
"num_adapter_layers": 1,
"num_attention_heads": 16,
"num_codevector_groups": 2,
"num_codevectors_per_group": 320,
"num_hidden_layers": 24,
"num_negatives": 100,
"output_hidden_size": 1024,
"pad_token_id": 2696,
"position_embeddings_type": "relative_key",
"proj_codevector_dim": 768,
"right_max_position_embeddings": 8,
"rotary_embedding_base": 10000,
"tdnn_dilation": [
1,
2,
3,
1,
1
],
"tdnn_dim": [
512,
512,
512,
512,
1500
],
"tdnn_kernel": [
5,
3,
3,
1,
1
],
"torch_dtype": "float32",
"transformers_version": "4.38.2",
"use_intermediate_ffn_before_adapter": false,
"use_weighted_layer_sum": false,
"vocab_size": 2699,
"xvector_output_dim": 512
}

3
model.safetensors Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:252cc61123d2c7b44d04cd7ae87d789e61e86f292d9339f05fabbffe0eec2813
size 2433880476

3
optimizer.pt Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4a420558ee6dd550d0bf57ff4b79087225ff1a0db8441910732ed915ba6187fa
size 2103705600

10
preprocessor_config.json Normal file
View File

@@ -0,0 +1,10 @@
{
"feature_extractor_type": "SeamlessM4TFeatureExtractor",
"feature_size": 80,
"num_mel_bins": 80,
"padding_side": "right",
"padding_value": 0.0,
"return_attention_mask": true,
"sampling_rate": 16000,
"stride": 2
}

3
rng_state.pth Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8d41fc46d0cba18a124097418b7f25a99868be3af2511a03c16b6472d5ff5a56
size 14244

3
scheduler.pt Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d5951bb0dce0845c2de727d3fe5cb2c3377d931684f23d2aea053d66c153fdad
size 1064

16
special_tokens_map.json Normal file
View File

@@ -0,0 +1,16 @@
{
"pad_token": {
"content": "[PAD]",
"lstrip": false,
"normalized": true,
"rstrip": false,
"single_word": false
},
"unk_token": {
"content": "[UNK]",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
}
}

341
trainer_state.json Normal file
View File

@@ -0,0 +1,341 @@
{
"best_metric": null,
"best_model_checkpoint": null,
"epoch": 0.8165192041489382,
"eval_steps": 300,
"global_step": 6000,
"is_hyper_param_search": false,
"is_local_process_zero": true,
"is_world_process_zero": true,
"log_history": [
{
"epoch": 0.04,
"grad_norm": 21.039730072021484,
"learning_rate": 7.4e-06,
"loss": 2.2676,
"step": 300
},
{
"epoch": 0.04,
"eval_cer": 0.2868164937892176,
"eval_loss": 0.6633031964302063,
"eval_runtime": 320.6214,
"eval_samples_per_second": 8.05,
"eval_steps_per_second": 8.05,
"step": 300
},
{
"epoch": 0.08,
"grad_norm": 9.525612831115723,
"learning_rate": 1.49e-05,
"loss": 1.8817,
"step": 600
},
{
"epoch": 0.08,
"eval_cer": 0.2927711614803432,
"eval_loss": 0.6335302591323853,
"eval_runtime": 119.6817,
"eval_samples_per_second": 21.566,
"eval_steps_per_second": 21.566,
"step": 600
},
{
"epoch": 0.12,
"grad_norm": 7.7516608238220215,
"learning_rate": 2.2400000000000002e-05,
"loss": 1.7845,
"step": 900
},
{
"epoch": 0.12,
"eval_cer": 0.2928031758227686,
"eval_loss": 0.5966914296150208,
"eval_runtime": 123.0968,
"eval_samples_per_second": 20.967,
"eval_steps_per_second": 20.967,
"step": 900
},
{
"epoch": 0.16,
"grad_norm": 4.020584583282471,
"learning_rate": 2.9875000000000004e-05,
"loss": 1.7503,
"step": 1200
},
{
"epoch": 0.16,
"eval_cer": 0.29213087463183507,
"eval_loss": 0.5989494919776917,
"eval_runtime": 125.3567,
"eval_samples_per_second": 20.589,
"eval_steps_per_second": 20.589,
"step": 1200
},
{
"epoch": 0.2,
"grad_norm": 3.7881321907043457,
"learning_rate": 3.737500000000001e-05,
"loss": 1.7549,
"step": 1500
},
{
"epoch": 0.2,
"eval_cer": 0.29901395825329746,
"eval_loss": 0.6132485866546631,
"eval_runtime": 132.3811,
"eval_samples_per_second": 19.497,
"eval_steps_per_second": 19.497,
"step": 1500
},
{
"epoch": 0.24,
"grad_norm": 3.710826873779297,
"learning_rate": 4.4875e-05,
"loss": 1.7214,
"step": 1800
},
{
"epoch": 0.24,
"eval_cer": 0.29782942758355746,
"eval_loss": 0.6118220686912537,
"eval_runtime": 130.5327,
"eval_samples_per_second": 19.773,
"eval_steps_per_second": 19.773,
"step": 1800
},
{
"epoch": 0.29,
"grad_norm": 4.127965927124023,
"learning_rate": 4.911181750186986e-05,
"loss": 1.6742,
"step": 2100
},
{
"epoch": 0.29,
"eval_cer": 0.2963567678319887,
"eval_loss": 0.6121346354484558,
"eval_runtime": 131.7081,
"eval_samples_per_second": 19.596,
"eval_steps_per_second": 19.596,
"step": 2100
},
{
"epoch": 0.33,
"grad_norm": 2.801788091659546,
"learning_rate": 4.630703066566941e-05,
"loss": 1.6562,
"step": 2400
},
{
"epoch": 0.33,
"eval_cer": 0.3039761813292355,
"eval_loss": 0.6422853469848633,
"eval_runtime": 132.5985,
"eval_samples_per_second": 19.465,
"eval_steps_per_second": 19.465,
"step": 2400
},
{
"epoch": 0.37,
"grad_norm": 5.572460174560547,
"learning_rate": 4.350224382946896e-05,
"loss": 1.6373,
"step": 2700
},
{
"epoch": 0.37,
"eval_cer": 0.2989499295684467,
"eval_loss": 0.639430046081543,
"eval_runtime": 133.5523,
"eval_samples_per_second": 19.326,
"eval_steps_per_second": 19.326,
"step": 2700
},
{
"epoch": 0.41,
"grad_norm": 4.840504169464111,
"learning_rate": 4.069745699326851e-05,
"loss": 1.5944,
"step": 3000
},
{
"epoch": 0.41,
"eval_cer": 0.2967089255986682,
"eval_loss": 0.6272587776184082,
"eval_runtime": 134.0186,
"eval_samples_per_second": 19.259,
"eval_steps_per_second": 19.259,
"step": 3000
},
{
"epoch": 0.45,
"grad_norm": 2.972968816757202,
"learning_rate": 3.7892670157068066e-05,
"loss": 1.5654,
"step": 3300
},
{
"epoch": 0.45,
"eval_cer": 0.2903700857984377,
"eval_loss": 0.5716381669044495,
"eval_runtime": 134.8224,
"eval_samples_per_second": 19.144,
"eval_steps_per_second": 19.144,
"step": 3300
},
{
"epoch": 0.49,
"grad_norm": 2.683291435241699,
"learning_rate": 3.5087883320867614e-05,
"loss": 1.5333,
"step": 3600
},
{
"epoch": 0.49,
"eval_cer": 0.29011397105903447,
"eval_loss": 0.573725163936615,
"eval_runtime": 134.5796,
"eval_samples_per_second": 19.178,
"eval_steps_per_second": 19.178,
"step": 3600
},
{
"epoch": 0.53,
"grad_norm": 8.39251708984375,
"learning_rate": 3.228309648466717e-05,
"loss": 1.5252,
"step": 3900
},
{
"epoch": 0.53,
"eval_cer": 0.29501216545012166,
"eval_loss": 0.5687663555145264,
"eval_runtime": 135.3645,
"eval_samples_per_second": 19.067,
"eval_steps_per_second": 19.067,
"step": 3900
},
{
"epoch": 0.57,
"grad_norm": 2.761993169784546,
"learning_rate": 2.9478309648466717e-05,
"loss": 1.5017,
"step": 4200
},
{
"epoch": 0.57,
"eval_cer": 0.2957164809834806,
"eval_loss": 0.5565311312675476,
"eval_runtime": 135.2285,
"eval_samples_per_second": 19.086,
"eval_steps_per_second": 19.086,
"step": 4200
},
{
"epoch": 0.61,
"grad_norm": 23.93025016784668,
"learning_rate": 2.667352281226627e-05,
"loss": 1.4707,
"step": 4500
},
{
"epoch": 0.61,
"eval_cer": 0.28828915354078627,
"eval_loss": 0.5579658150672913,
"eval_runtime": 135.1123,
"eval_samples_per_second": 19.103,
"eval_steps_per_second": 19.103,
"step": 4500
},
{
"epoch": 0.65,
"grad_norm": 1.7994115352630615,
"learning_rate": 2.386873597606582e-05,
"loss": 1.4578,
"step": 4800
},
{
"epoch": 0.65,
"eval_cer": 0.2855359200922013,
"eval_loss": 0.5352594256401062,
"eval_runtime": 135.7058,
"eval_samples_per_second": 19.019,
"eval_steps_per_second": 19.019,
"step": 4800
},
{
"epoch": 0.69,
"grad_norm": 1.9403347969055176,
"learning_rate": 2.1073298429319373e-05,
"loss": 1.4236,
"step": 5100
},
{
"epoch": 0.69,
"eval_cer": 0.28758483800742735,
"eval_loss": 0.5495265126228333,
"eval_runtime": 136.3492,
"eval_samples_per_second": 18.929,
"eval_steps_per_second": 18.929,
"step": 5100
},
{
"epoch": 0.73,
"grad_norm": 3.021031379699707,
"learning_rate": 1.8268511593118924e-05,
"loss": 1.3954,
"step": 5400
},
{
"epoch": 0.73,
"eval_cer": 0.2876808810347036,
"eval_loss": 0.5390140414237976,
"eval_runtime": 138.4653,
"eval_samples_per_second": 18.64,
"eval_steps_per_second": 18.64,
"step": 5400
},
{
"epoch": 0.78,
"grad_norm": 9.61117172241211,
"learning_rate": 1.5463724756918475e-05,
"loss": 1.3947,
"step": 5700
},
{
"epoch": 0.78,
"eval_cer": 0.28633627865283645,
"eval_loss": 0.5187196731567383,
"eval_runtime": 136.0715,
"eval_samples_per_second": 18.968,
"eval_steps_per_second": 18.968,
"step": 5700
},
{
"epoch": 0.82,
"grad_norm": 2.387241840362549,
"learning_rate": 1.2658937920718025e-05,
"loss": 1.3678,
"step": 6000
},
{
"epoch": 0.82,
"eval_cer": 0.27993341016775514,
"eval_loss": 0.5071456432342529,
"eval_runtime": 136.2594,
"eval_samples_per_second": 18.942,
"eval_steps_per_second": 18.942,
"step": 6000
}
],
"logging_steps": 300,
"max_steps": 7348,
"num_input_tokens_seen": 0,
"num_train_epochs": 1,
"save_steps": 600,
"total_flos": 1.8710735171848015e+20,
"train_batch_size": 1,
"trial_name": null,
"trial_params": null
}

3
training_args.bin Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:55d26536955cba130ab0ce5e51b836904166383e2bf233c2c401fde5e5113deb
size 4856

1
vocab.json Normal file

File diff suppressed because one or more lines are too long