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

Model: dysata/Wav2Vec2-Ru-Child
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-05-08 11:13:06 +08:00
commit 88c6578198
9 changed files with 392 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

130
README.md Normal file
View File

@@ -0,0 +1,130 @@
---
language:
- ru
license: mit
library_name: transformers
pipeline_tag: automatic-speech-recognition
tags:
- wav2vec2
- speech
- russian
- children
- ctc
- forced-alignment
- pronunciation
- phonetics
datasets:
- dysata/rwords
model-index:
- name: Wav2Vec2-Ru-Child
results: []
---
# Wav2Vec2-Ru-Child
Модель автоматического распознавания речи (ASR) для русского языка, дообученная на записях детского чтения.
## Model Details
### Architecture
- **Base model:** wav2vec2-large
- **Architecture:** `Wav2Vec2ForCTC`
- **Hidden size:** 1024
- **Layers:** 24 transformer layers
- **Attention heads:** 16
- **Parameters:** ~317M
- **Vocabulary:** 37 токенов (33 буквы русского алфавита + 4 служебных)
- **CTC loss:** mean reduction
### Intended Use
Модель предназначена для:
- Распознавания русской детской речи
- Forced alignment (выравнивание текста по аудио на уровне букв)
- Анализа произношения — выявление ошибок в детском чтении
- Классификации качества произношения отдельных звуков (например, звука "Р")
## How to Use
### Speech Recognition
```python
import torch
import librosa
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
processor = Wav2Vec2Processor.from_pretrained("dysata/Wav2Vec2-Ru-Child")
model = Wav2Vec2ForCTC.from_pretrained("dysata/Wav2Vec2-Ru-Child")
audio, sr = librosa.load("audio.wav", sr=16000)
processed = processor([audio], sampling_rate=16000,
return_tensors="pt", padding="longest")
with torch.no_grad():
logits = model(processed.input_values,
attention_mask=processed.attention_mask).logits
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.decode(predicted_ids[0])
print(transcription)
```
### Forced Alignment
Модель может использоваться для побуквенного выравнивания эталонного текста по аудио через CTC forced alignment (trellis + backtrack + merge_repeats). Это позволяет определить временные границы каждой буквы в записи.
### Hidden States для классификации
```python
with torch.no_grad():
outputs = model(processed.input_values,
attention_mask=processed.attention_mask,
output_hidden_states=True, return_dict=True)
last_hidden_state = outputs.hidden_states[-1] # [batch, frames, 1024]
```
Вектора последнего скрытого слоя (1024-мерные) могут быть использованы как признаки для классификации качества произношения отдельных звуков.
## Training
Модель дообучена на записях детского чтения на русском языке. Аудиозаписи преобразованы в формат WAV 16 кГц и вручную оттранскрибированы.
## Technical Specifications
| Parameter | Value |
|---|---|
| Sample rate | 16 kHz |
| Feature extractor | 7-layer CNN |
| Transformer layers | 24 |
| Hidden size | 1024 |
| Vocab size | 37 |
| Precision | float32 |
| Format | Safetensors |
## Vocabulary
Алфавит модели: `<pad>`, `<s>`, `</s>`, `<unk>`, `|` (разделитель слов), а-я (33 буквы русского алфавита).
## Limitations
- Модель обучена на детской речи и может показывать худшие результаты на взрослой речи
- Только русский язык
- Оптимальное качество на записях в формате WAV 16 кГц
## Citation
```bibtex
@misc{wav2vec2-ru-child,
author = {Павел Рудич},
title = {Wav2Vec2-Ru-Child: Russian Children's Speech Recognition Model},
year = {2025},
publisher = {Hugging Face},
url = {https://huggingface.co/dysata/Wav2Vec2-Ru-Child}
}
```
## Funding
Фонд содействия инновациям (fasie).

4
added_tokens.json Normal file
View File

@@ -0,0 +1,4 @@
{
"[PAD]": 38,
"[UNK]": 37
}

116
config.json Normal file
View File

@@ -0,0 +1,116 @@
{
"_name_or_path": "./model6m",
"activation_dropout": 0.0,
"adapter_attn_dim": null,
"adapter_kernel_size": 3,
"adapter_stride": 2,
"add_adapter": false,
"apply_spec_augment": true,
"architectures": [
"Wav2Vec2ForCTC"
],
"attention_dropout": 0.0,
"bos_token_id": 1,
"classifier_proj_size": 256,
"codevector_dim": 768,
"contrastive_logits_temperature": 0.1,
"conv_bias": true,
"conv_dim": [
512,
512,
512,
512,
512,
512,
512
],
"conv_kernel": [
10,
3,
3,
3,
3,
2,
2
],
"conv_stride": [
5,
2,
2,
2,
2,
2,
2
],
"ctc_loss_reduction": "mean",
"ctc_zero_infinity": true,
"diversity_loss_weight": 0.1,
"do_stable_layer_norm": true,
"eos_token_id": 2,
"feat_extract_activation": "gelu",
"feat_extract_dropout": 0.0,
"feat_extract_norm": "layer",
"feat_proj_dropout": 0.0,
"feat_quantizer_dropout": 0.0,
"final_dropout": 0.0,
"hidden_act": "gelu",
"hidden_dropout": 0.0,
"hidden_size": 1024,
"initializer_range": 0.02,
"intermediate_size": 4096,
"layer_norm_eps": 1e-05,
"layerdrop": 0.0,
"mask_channel_length": 10,
"mask_channel_min_space": 1,
"mask_channel_other": 0.0,
"mask_channel_prob": 0.0,
"mask_channel_selection": "static",
"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_min_space": 1,
"mask_time_other": 0.0,
"mask_time_prob": 0.05,
"mask_time_selection": "static",
"model_type": "wav2vec2",
"num_adapter_layers": 3,
"num_attention_heads": 16,
"num_codevector_groups": 2,
"num_codevectors_per_group": 320,
"num_conv_pos_embedding_groups": 16,
"num_conv_pos_embeddings": 128,
"num_feat_extract_layers": 7,
"num_hidden_layers": 24,
"num_negatives": 100,
"output_hidden_size": 1024,
"pad_token_id": 0,
"proj_codevector_dim": 768,
"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.49.0",
"use_weighted_layer_sum": false,
"vocab_size": 37,
"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:9f5b304a55228829a041a5aac128708c195d9c5280e6ab80ab6b7d217a6e6cba
size 1261959180

10
preprocessor_config.json Normal file
View File

@@ -0,0 +1,10 @@
{
"do_normalize": true,
"feature_extractor_type": "Wav2Vec2FeatureExtractor",
"feature_size": 1,
"padding_side": "right",
"padding_value": 0.0,
"processor_class": "Wav2Vec2Processor",
"return_attention_mask": true,
"sampling_rate": 16000
}

6
special_tokens_map.json Normal file
View File

@@ -0,0 +1,6 @@
{
"bos_token": "<s>",
"eos_token": "</s>",
"pad_token": "<pad>",
"unk_token": "<unk>"
}

49
tokenizer_config.json Normal file
View File

@@ -0,0 +1,49 @@
{
"added_tokens_decoder": {
"0": {
"content": "<pad>",
"lstrip": true,
"normalized": false,
"rstrip": true,
"single_word": false,
"special": false
},
"1": {
"content": "<s>",
"lstrip": true,
"normalized": false,
"rstrip": true,
"single_word": false,
"special": false
},
"2": {
"content": "</s>",
"lstrip": true,
"normalized": false,
"rstrip": true,
"single_word": false,
"special": false
},
"3": {
"content": "<unk>",
"lstrip": true,
"normalized": false,
"rstrip": true,
"single_word": false,
"special": false
}
},
"bos_token": "<s>",
"clean_up_tokenization_spaces": false,
"do_lower_case": false,
"eos_token": "</s>",
"extra_special_tokens": {},
"model_max_length": 1000000000000000019884624838656,
"pad_token": "<pad>",
"processor_class": "Wav2Vec2Processor",
"replace_word_delimiter_char": " ",
"target_lang": null,
"tokenizer_class": "Wav2Vec2CTCTokenizer",
"unk_token": "<unk>",
"word_delimiter_token": "|"
}

39
vocab.json Normal file
View File

@@ -0,0 +1,39 @@
{
"</s>": 2,
"<pad>": 0,
"<s>": 1,
"<unk>": 3,
"|": 4,
"а": 5,
"б": 6,
"в": 7,
"г": 8,
"д": 9,
"е": 10,
"ж": 11,
"з": 12,
"и": 13,
"й": 14,
"к": 15,
"л": 16,
"м": 17,
"н": 18,
"о": 19,
"п": 20,
"р": 21,
"с": 22,
"т": 23,
"у": 24,
"ф": 25,
"х": 26,
"ц": 27,
"ч": 28,
"ш": 29,
"щ": 30,
"ъ": 31,
"ы": 32,
"ь": 33,
"э": 34,
"ю": 35,
"я": 36
}