Локальный ИИ · обучение · чтение
Локальный ИИ проверяет чтение ребёнка вслух: скорость, ошибки и понимание текста
Можно ли посадить ребёнка перед микрофоном, дать ему текст и автоматически получить отчёт: сколько слов прочитано правильно, где были пропуски, замены и повторы, каков темп и понял ли он смысл? Да, но для качественного результата одного Whisper или одной LLM недостаточно. Нужна связка распознавания речи, сопоставления с эталонным текстом, измеряемых метрик и отдельной проверки понимания.
Что вообще означает «хорошо читает»
Скорость сама по себе — плохая цель. В исследовании автоматизированной оценки чтения вслух отдельно рассматриваются точность, скорость, автоматичность и просодия. Для домашнего ИИ-тренажёра я бы добавил ещё один обязательный слой — понимание прочитанного.
Какие слова прочитаны правильно, пропущены, заменены, вставлены или повторены.
Сколько времени ушло на весь текст и на отдельные фрагменты.
Где ребёнок долго останавливается, перечитывает или «разбирает» слово.
Может ли ребёнок пересказать смысл, назвать причины событий и ответить на вопросы.
Паузы, ритм, ударение и интонация. Это заметно сложнее первых четырёх пунктов.
Архитектура локальной проверки чтения
В отличие от обычной диктовки, здесь у нас есть большое преимущество: система заранее знает, какой текст ребёнок должен прочитать. Это позволяет не только распознать речь, но и сопоставить её с эталоном.
Почему нельзя просто отправить запись в Whisper
Whisper и его локальные реализации хорошо подходят для получения текста из аудио. Но расшифровка — это ещё не оценка чтения. ASR оптимизирована на восстановление смысла речи и может сгладить именно те ошибки, которые нам важно увидеть.
Например, ребёнок может повторить слово дважды, проглотить окончание или остановиться на несколько секунд. Транскрипция при этом может выглядеть почти идеально. Более того, в whisper.cpp token-level timestamps существуют, но часть механизмов помечена как experimental, а в issue tracker встречаются реальные проблемы с точностью временных меток.
Пошаговая обработка одного чтения
- Выбрать эталонный текст. Хранить исходный текст отдельно и не менять его после начала серии измерений.
- Записать чистое аудио. Один ребёнок, минимальный фоновый шум, одинаковое расстояние до микрофона.
- Вырезать длинную тишину и определить речь. VAD помогает отделить реальные фрагменты речи от пауз до и после задания.
- Получить локальную транскрипцию. Например, whisper.cpp или faster-whisper/WhisperX.
- Нормализовать два текста. Регистр, «ё/е», кавычки, тире, цифры и другие элементы должны обрабатываться одинаково.
- Сопоставить последовательности слов. Алгоритм sequence alignment определяет совпадения, замены, пропуски и вставки.
- Привязать слова ко времени. Forced alignment позволяет оценивать паузы и длительность чтения фрагментов.
- Посчитать метрики. Правильные слова, типы ошибок, время и корректно прочитанные слова в минуту.
- Проверить понимание. После чтения система задаёт несколько вопросов, ответы сохраняются отдельно.
- Записать результат в профиль. Для прогресса важнее серия сопоставимых измерений, чем один «рекорд».
Какие ошибки система может находить автоматически
Прочитано: «Мальчик побежал домой».
Прочитано: «по узкой тропинке».
Прочитано: «Кот долго сидел у окна».
Прочитано: «Он… он открыл дверь».
Ребёнок ошибся, остановился и сразу исправил слово.
Текст формально прочитан правильно, но слово потребовало заметно больше времени.
Первые три типа хорошо ложатся на классический edit distance между последовательностями слов. Повторы и самокоррекции требуют более аккуратной логики: нельзя автоматически считать каждое лишнее распознанное слово одинаково тяжёлой ошибкой.
Какие метрики сохранять
| Метрика | Что показывает | Комментарий |
|---|---|---|
| Общее время | Сколько длилось чтение | Лучше хранить исходное время и время активной речи отдельно. |
| Correct words | Количество правильно прочитанных слов | Базовая величина для сравнения с предыдущими попытками. |
| WCPM | Корректно прочитанные слова в минуту | Полезнее обычного WPM, потому что ошибки не повышают результат. |
| Accuracy | Доля правильно прочитанных слов | Позволяет отделить «быстро» от «быстро и правильно». |
| Пропуски | Сколько эталонных слов не найдено | Нужно отдельно отслеживать устойчиво пропускаемые окончания и служебные слова. |
| Замены | Сколько слов заменено другими | Особенно полезен список повторяющихся сложных слов. |
| Повторы | Возвраты и повторное чтение | Могут указывать на трудность, но сами по себе не являются диагнозом. |
| Паузы | Где чтение замедляется | Требуют достаточно надёжных word-level timestamps. |
| Понимание | Ответы по содержанию | Хранить отдельно от скорости и точности чтения. |
WhisperX и forced alignment: зачем нужен второй проход
WhisperX специально добавляет word-level timestamps с помощью отдельной фонемной модели выравнивания. Это полезно, когда нужно знать не только итоговую расшифровку, но и положение отдельных слов во времени.
Для задачи чтения вслух есть ещё один вариант — Montreal Forced Aligner. В отличие от свободного распознавания, forced alignment получает на вход известную транскрипцию и аудио и пытается определить, где во времени находятся слова и фонемы.
Локальная транскрипция, CPU/GPU, timestamps и удобный self-hosted сценарий.
ASR + ALIGN WhisperXWhisper/faster-whisper плюс фонемное выравнивание и word-level timestamps.
ALIGN Montreal Forced AlignerВыравнивание известного текста с аудио вплоть до слов и фонем.
MODELS MFA ModelsГотовые акустические модели, словари и G2P, включая ресурсы для русского языка.
Будет ли это работать на русском
Да, но русский язык нельзя считать «автоматически закрытым» только потому, что Whisper умеет русский. Для качественного word-level/phoneme alignment нужен совместимый языковой ресурс. У Montreal Forced Aligner есть отдельная русская acoustic model и Russian G2P/dictionary, предназначенные именно для forced alignment русского текста.
При этом детская речь отличается от взрослой: темп, артикуляция, ошибки и микрофоны будут другими. Поэтому любую выбранную модель нужно проверять именно на реальных детских записях, а не делать вывод по нескольким взрослым голосам.
Проверка понимания текста — задача для LLM
Здесь локальная языковая модель действительно очень полезна. После завершения измерительной части ей можно передать исходный текст и попросить провести короткую беседу.
Проверка прямой информации из текста.
Проверка причинно-следственных связей.
Понимание структуры повествования.
Более сложный вопрос без буквального ответа в одной строке.
Вопросы можно генерировать заранее и сохранять вместе с текстом. Для контрольного режима это даже лучше: разные ученики или повторные попытки будут сравниваться по одинаковым критериям.
Можно ли оценивать интонацию и произношение
Частично. Паузы и длительность слов технически измерять можно. Грубые проблемы с темпом тоже видны. Но «выразительность», правильное ударение и качество отдельных звуков гораздо сложнее. Исследования автоматической оценки чтения показывают хорошие перспективы для точности, скорости и автоматичности, тогда как просодия остаётся отдельной и более сложной задачей.
Если нужно именно тренировать произношение, следующая ступень — фонемное сравнение и pronunciation scoring. Это уже не задача обычной LLM и не то же самое, что ASR.
Как должен выглядеть результат для родителя
Повторить три сложных слова и дать новый текст той же сложности, а не перечитывать этот до идеального результата.
Цифры выше — пример интерфейса, а не возрастная норма. Именно так лучше проектировать продукт: показывать измеренный результат, ошибки и динамику, но не навешивать автоматический диагноз «читает плохо».
Что хранить в истории прогресса
Через несколько недель уже можно строить полезные закономерности: какие типы слов вызывают трудности, исчезают ли долгие паузы, растёт ли точность без потери понимания.
Почему локальная обработка здесь особенно уместна
Аудиозапись детского голоса — чувствительные данные. Local-first архитектура позволяет оставить записи, транскрипции и историю занятий на домашнем компьютере или сервере.
При этом нужно проверять всю цепочку. Если сама LLM локальная, но аудио отправляется в облачный speech-to-text, система уже не является полностью локальной.
Где автоматическая проверка будет ошибаться
- Шумный микрофон. ASR может принять шум или голос родителя за слова ребёнка.
- Очень тихая или неразборчивая речь. Ошибка распознавания может выглядеть как ошибка чтения.
- Самокоррекция. Нужно отличать ошибку, которую ребёнок сразу исправил, от устойчивой замены.
- Окончания и похожие формы слов. Морфология русского языка требует аккуратной нормализации.
- Имена и редкие слова. Они чаще дают ASR-ошибки и требуют словаря.
- Выразительность. Универсального надёжного «процента интонации» здесь нет.
- Диагностика. Автоматические метрики не заменяют педагога, логопеда или врача.
Как собрать первый рабочий прототип
- Сделать запись в браузере или приложении. Сохранять WAV/PCM вместе с ID текста и временем чтения.
- Подключить whisper.cpp. Получить локальную транскрипцию и базовые timestamps.
- Написать word diff. Python или JavaScript: эталон против ASR, Levenshtein/sequence alignment.
- Добавить forced alignment. Для русского удобно отдельно протестировать MFA и его russian_mfa ресурсы.
- Собрать JSON-отчёт. Сырые показатели хранить отдельно от красивого текста LLM.
- Подключить локальную LLM. Она задаёт вопросы по содержанию, объясняет ошибки и выбирает упражнения.
- Проверить вручную 30–50 записей. Сравнить автоматический результат с разметкой взрослого и выявить системные ошибки.
{
"text_id": "reading-012",
"duration_sec": 74.2,
"reference_words": 100,
"correct_words": 94,
"omissions": 2,
"substitutions": 3,
"insertions": 1,
"repetitions": 4,
"comprehension": {
"correct": 4,
"total": 5
},
"difficult_words": [
"прошуршали",
"серебристый",
"вздрогнул"
]
}
Частые вопросы
Можно ли всё сделать без Интернета?
Да. Запись, whisper.cpp, алгоритм сравнения, Montreal Forced Aligner и локальная LLM могут работать на собственном ПК. Интернет понадобится в основном для первоначальной загрузки моделей и программ.
Whisper сам покажет все ошибки чтения?
Нет. Он даёт транскрипцию. Ошибки нужно определять сравнением с известным эталонным текстом, а временную структуру желательно уточнять отдельным alignment.
Можно ли считать скорость чтения?
Да. Но лучше хранить не только обычные слова в минуту, а корректно прочитанные слова в минуту и точность, чтобы быстрые ошибки не улучшали результат.
Можно ли проверять русский язык?
Да. Whisper поддерживает русский, а в экосистеме Montreal Forced Aligner есть русские acoustic/G2P/dictionary ресурсы. Реальное качество всё равно нужно валидировать на детской речи.
Можно ли определить неправильное произношение звука?
Для надёжной оценки отдельных звуков нужен фонемный pronunciation scoring. Обычной текстовой транскрипции Whisper для этого недостаточно.
Можно ли по результатам определить дислексию?
Нет. Система может фиксировать измеряемые особенности чтения и динамику, но не должна ставить медицинские, логопедические или психологические диагнозы.
Источники и проекты
Продолжить про локальный ИИ для обучения
Локальный ИИ для обучения


