update english speaking skill pipeline

This commit is contained in:
shuler7 2026-05-05 10:58:38 +03:00
parent cdb8ed46ff
commit 76de04fcae
3 changed files with 24 additions and 43 deletions

View file

@ -5,10 +5,10 @@ description: >
Используй этот скилл когда пользователь: Используй этот скилл когда пользователь:
- Загружает фото/скан рукописного сочинения ЕГЭ по русскому языку - Загружает фото/скан рукописного сочинения ЕГЭ по русскому языку
- Просит проверить сочинение ЕГЭ, выставить баллы, оценить работу - Просит проверить сочинение ЕГЭ, выставить баллы, оценить работу
- Загружает аудиозапись ответов по разделу "Аудирование" ЕГЭ по английскому - Загружает аудиозапись ответов по разделу "Говорение" ЕГЭ по английскому
- Упоминает "ЕГЭ", "сочинение", "критерии К1-К12", "аудирование английский" - Упоминает "ЕГЭ", "сочинение", "критерии К1-К12", "говорение английский"
- Просит разобрать ошибки в сочинении по критериям ФИПИ - Просит разобрать ошибки в сочинении по критериям ФИПИ
Скилл умеет: OCR рукописного текста через vision, STT аудиозаписей через recognition.py, Скилл умеет: OCR рукописного текста через vision, STT аудиозаписей через faster-whisper,
оценку по критериям ФИПИ 2026. Работает с любой multimodal LLM (Qwen, GPT-4o и др.). оценку по критериям ФИПИ 2026. Работает с любой multimodal LLM (Qwen, GPT-4o и др.).
--- ---
@ -19,7 +19,7 @@ description: >
| Модуль | Вход — только распознавание | Вход — распознавание + оценка | | Модуль | Вход — только распознавание | Вход — распознавание + оценка |
|--------|----------------------------|-------------------------------| |--------|----------------------------|-------------------------------|
| Сочинение (русский) | Сканы бланков | Сканы + исходный текст + тема | | Сочинение (русский) | Сканы бланков | Сканы + исходный текст + тема |
| Аудирование (английский) | Аудиозапись | Аудиозапись + задания (текст, ключевые фразы, вопросы, план, фотографии) | | Говорение (английский) | Аудиозапись | Аудиозапись + задания (текст, ключевые фразы, вопросы, план, фотографии) |
--- ---
@ -110,56 +110,38 @@ description: >
--- ---
## Модуль 2: Аудирование ЕГЭ по английскому ## Модуль 2: Говорение ЕГЭ по английскому
### Логика запуска ### Логика запуска
**Если прислали только аудиозапись:** **Если прислали только аудиозапись:**
Распознать ответы ученика через recognition.py и вывести их списком. Прослушай аудиозапись и выведи транскрипт
**Если прислали аудиозапись и задания:** **Если прислали аудиозапись и задания:**
→ Распознать ответы ученика через recognition.py и вывести их списком. → Прослушай аудиозапись и проверь ответ ученика по критериям
→ Сверить полученные ответы для конкретных заданий по критериям и сообщить баллы.
**Все задания присылаются отдельными аудиофайлами - их может быть несколько, может быть 1 - это нормально** **Все задания присылаются отдельными аудиофайлами - их может быть несколько, может быть 1 - это нормально**
**Если прислали не все задания - проверь то, что прислали, и ничего больше** **Если прислали не все задания - проверь то, что прислали, и ничего больше**
--- ---
**Шаг 1 — Сохранить аудиофайл** **Шаг 1 — Запустить recognition.py**
```python
import os, time
ext = os.path.splitext(original_filename)[1] or ".mp3"
tmp_path = f"/tmp/ege_audio_{int(time.time())}{ext}"
with open(tmp_path, "wb") as f:
f.write(audio_bytes)
```
**Шаг 2 — Запустить recognition.py**
```bash ```bash
python3 ~/.zeroclaw/workspace/skills/ege-checker/recognition.py <tmp_path> python3 ~/.zeroclaw/workspace/skills/ege-checker/recognition.py <tmp_path>
``` ```
**Шаг 3 — Удалить временный файл** **Шаг 2 - Загрузить критерии**
```python Прочитай `references/english-speaking-criteria.md` — критерии 1-4 задания с баллами (ЕГЭ 2026).
if os.path.exists(tmp_path):
os.remove(tmp_path)
```
**Шаг 4 - Загрузить критерии** **Шаг 3 — Оценить задания по критериям**
Прочитай `references/english-listening-criteria.md` — критерии 1-4 задания с баллами (ЕГЭ 2026).
**Шаг 5 — Оценить задания по критериям**
Для каждого критерия: Для каждого критерия:
- Объясни снятие баллов — что именно не выполнено и почему - Объясни снятие баллов — что именно не выполнено и почему
- Выставь балл - Выставь балл
**Шаг 6 — Итоговый вывод** **Шаг 4 — Итоговый вывод**
Список: задание - распознанный ответ - выставленный балл - обьяснение оценки Список: задание - распознанный ответ - выставленный балл - обьяснение оценки
Если есть нераспознанные — явно отметить. Если есть нераспознанные — явно отметить.

View file

@ -1,5 +1,5 @@
""" """
recognition.py модуль распознавания аудиофайла с ответами ученика ЕГЭ (аудирование, английский язык). recognition.py модуль распознавания аудиофайла с ответами ученика ЕГЭ (говорение, английский язык).
Зависимости: Зависимости:
pip install faster-whisper pip install faster-whisper
@ -26,9 +26,9 @@ DEFAULT_MODEL = "medium"
WHISPER_PROMPT = ( WHISPER_PROMPT = (
"Student answers to EGE English speaking exam. " "Student answers to EGE English speaking exam. "
"Task one: read aloud. " "Task one: read aloud. "
"Task two: ask five direct questions. " "Task two: ask four direct questions. "
"Task three: describe a photo. " "Task three: answer five questions. "
"Task four: compare two photos." "Task four: monologue - compare two photos. "
) )
@ -182,7 +182,7 @@ if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Распознавание аудиоответов ЕГЭ (аудирование, английский язык)" description="Распознавание аудиоответов ЕГЭ (говорение, английский язык)"
) )
parser.add_argument("audio", help="Путь к аудиофайлу") parser.add_argument("audio", help="Путь к аудиофайлу")
parser.add_argument( parser.add_argument(

View file

@ -9,7 +9,7 @@
| Задание | Тип | Макс. баллов | | Задание | Тип | Макс. баллов |
|---------|-----|-------------| |---------|-----|-------------|
| 1 | Чтение вслух | 1 | | 1 | Чтение текста | 1 |
| 2 | Диалог-расспрос (вопросы) | 4 | | 2 | Диалог-расспрос (вопросы) | 4 |
| 3 | Диалог-интервью (ответы) | 5 | | 3 | Диалог-интервью (ответы) | 5 |
| 4 | Монологическое высказывание | 10 | | 4 | Монологическое высказывание | 10 |
@ -17,12 +17,12 @@
--- ---
## Задание 1 — Чтение вслух (01 балл) ## Задание 1 — Чтение текста (01 балл)
| Балл | Критерий | | Балл | Критерий |
|------|----------| |------|----------|
| 1 | Речь воспринимается легко: необоснованные паузы отсутствуют; фразовое ударение и интонационные контуры, произношение слов без нарушений нормы. Допускается не более 5 фонетических ошибок, в том числе 12 ошибки, искажающие смысл | | 1 | Слова употреблены без ошибок. Допускается не более 5 фонетических ошибок, в том числе 12 ошибки, искажающие смысл |
| 0 | Речь воспринимается с трудом из-за большого количества неестественных пауз, запинок, неверной расстановки ударений и ошибок в произношении слов, ИЛИ сделано более 5 фонетических ошибок, ИЛИ сделано 3 и более фонетические ошибки, искажающие смысл | | 0 | Есть ошибки в употреблении слов, ИЛИ сделано более 5 фонетических ошибок, ИЛИ сделано 3 и более фонетические ошибки, искажающие смысл |
--- ---
@ -94,14 +94,13 @@
## Алгоритм проверки агентом ## Алгоритм проверки агентом
### Что нужно для оценки ### Что нужно для оценки
1. Аудиозапись ответа ученика (транскрибируется через recognition.py) 1. Аудиозапись ответа ученика
2. Задание (текст - 1 задание, 4 ключевых фразы - 2 задание, 5 вопросов интервьювера - 3 задание, 2 фотографии и план монолога - 4 задание) 2. Задание (текст для 1 задания, 4 ключевых фразы для 2 задания, 5 вопросов интервьювера для 3 задания, 2 фотографии и план монолога для 4 задания)
### Логика оценки по заданиям ### Логика оценки по заданиям
**Задание 1 (чтение вслух):** **Задание 1 (чтение вслух):**
- Считать фонетические ошибки по транскрипту - Проверить правильность транскрипта и отсутствие фонетических, грамматических ошибок
- Отметить паузы и запинки если есть
- Вынести 0 или 1 балл с обоснованием - Вынести 0 или 1 балл с обоснованием
**Задание 2 (вопросы):** **Задание 2 (вопросы):**