--- 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 Алфавит модели: ``, ``, ``, ``, `|` (разделитель слов), а-я (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).