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).
|