131 lines
4.2 KiB
Markdown
131 lines
4.2 KiB
Markdown
---
|
||
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).
|