Updated README.md
This commit is contained in:
165
README.md
165
README.md
@@ -69,7 +69,7 @@ Telegram ботом, которому отправили видео).
|
||||
название движка распознания (поддерживается только `whisper`). Каждый
|
||||
сегмент обязан содержать ключи `start` (время начала сегмента), `end`
|
||||
(время конца сегмента), `text` (текст сегмента). Затем должен идти ключ
|
||||
`custom`, где указываются значения, специфичные для движка (они будут
|
||||
`engine`, где указываются значения, специфичные для движка (они будут
|
||||
использованы только на следующем шаге, а затем будут удалены).
|
||||
```json
|
||||
{
|
||||
@@ -253,5 +253,164 @@ Telegram ботом, которому отправили видео).
|
||||
- `payload` - для `voice` может быть только `null`
|
||||
5. **Построить список ссылок на видео**
|
||||
- Если видео нет, то шаг пропускается. Вместо него файл `audio_events.json`
|
||||
копируется в `events.json` и происходит переход на следующий шаг.
|
||||
-
|
||||
копируется в `events.json` и происходит переход на 7 шаг.
|
||||
- Используя оконный метод, описанный выше, модели отправляются
|
||||
сформированные события, а она формирует список ссылок на видео, которые
|
||||
нужно разрешить. Окна передаются по такому же алгоритму, как уже было
|
||||
описано выше для шага №4, но данные передаются вот такими объектами:
|
||||
```json
|
||||
{
|
||||
"id": 4,
|
||||
"timestamp": 3.0,
|
||||
"duration": 5.0,
|
||||
"text": "Осмысленный текст, полученный на 4-ом шаге."
|
||||
}
|
||||
```
|
||||
То есть для каждого объекта, входящего в `past`, `present` или `future`,
|
||||
передаются только данные, описанные выше. Промпт должен налагать
|
||||
дополнительные ограничения. Во-первых, непосредственно обрабатывать можно
|
||||
только соыбтия из списка `present`, а события, перечисляемые в `past` и
|
||||
`future` используются только для контекста - работать с ними нельзя. Ключ
|
||||
`context` работать точно так же, как на 4-ом шаге - модель может
|
||||
использовать его по своему усмотрению, но формат рекомендуется жестко
|
||||
сформулировать в промпте.
|
||||
- При построении списка ссылок модель модель возвращать данные в следующем
|
||||
формате:
|
||||
```json
|
||||
{
|
||||
"unresolved": [
|
||||
{
|
||||
"ids": [0, 1, 2],
|
||||
"type": "vis",
|
||||
"text": "Для типа `vis`: описание того что должно быть на видео в этот момент"
|
||||
},
|
||||
{
|
||||
"ids": [19, 20, 21, 22, 23],
|
||||
"type": "ocr",
|
||||
"text": "Для типа `ocr`: текст, который нужно распознать с экрана (здесь должно быть названо, например, какой термин)"
|
||||
},
|
||||
{
|
||||
"ids": [0, 1, 2],
|
||||
"type": "vis",
|
||||
"text": "Для типа `vis`: описание того что должно быть на видео в этот момент"
|
||||
}
|
||||
],
|
||||
"context": {
|
||||
"for_future_call": "Сегменты 6, 7 выброшены, потому что..."
|
||||
}
|
||||
}
|
||||
```
|
||||
- `unresolved` - список событий, которые нужно будет разрешить на
|
||||
следующем шаге. Каждый объект содержит в точности три ключа: `ids`
|
||||
(идентификаторы событий, на протяжении которых нужно искать то, что
|
||||
описано), `type` (тип того, что нужно найти, см. далее), `text`
|
||||
(описание того, что нужно найти). Тип может быть либо `vis` (нужно
|
||||
определить, соответствует ли кадр из видео описанию `text`, и, если
|
||||
соответствует, то вставить его в итоговый файл лекции), либо `ocr`
|
||||
(нужно распознать текст, наводка на который даётся в `text`).
|
||||
- `context` - контекст, который должен быть передан модели при
|
||||
следующем вызове.
|
||||
- После выполнения этого шага модель должна сформировать файл
|
||||
`unresolved.json`
|
||||
6. **Разрешить ссылки на видео**
|
||||
- После этого шага должен быть получен файл `events.json`, используя который
|
||||
будет построена структура итогового документа.
|
||||
- TODO, пока что это не реализовано
|
||||
- Итоговый файл `events.json`, должен иметь следующую структуру. ID никак
|
||||
не связаны с предудущими шагами.
|
||||
```json
|
||||
{
|
||||
"events": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": "voice",
|
||||
"timestamp": 0.0,
|
||||
"duration": 7.0,
|
||||
"text": "Здесь уже должны быть осмысленные законченные фразы",
|
||||
"payload": null
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"type": "vis",
|
||||
"timestamp": 4.0,
|
||||
"duration": 0.0,
|
||||
"text": "Описание содержимого изображения, путь к которому хранится в `payload`",
|
||||
"payload": "runtime/23865928/images/4123.jpg"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"type": "ocr",
|
||||
"timestamp": 6.0,
|
||||
"duration": 0.0,
|
||||
"text": "Описание текста, который должен был быть распознан",
|
||||
"payload": "Текст, распознанный с кадра из видео, без перефразирований"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"type": "voice",
|
||||
"timestamp": 7.0,
|
||||
"duration": 3.0,
|
||||
"text": "Для типа `voice` ключ `payload` всегда `null`",
|
||||
"payload": null
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
7. **Построить структуру итогового документа**
|
||||
- После этого шага должен быть получен файл `structure.json` следующего
|
||||
вида:
|
||||
```json
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"type": "heading",
|
||||
"level": 2,
|
||||
"text": "Заголовок второго уровня"
|
||||
},
|
||||
{
|
||||
"type": "paragraph",
|
||||
"text": "Текст параграфа."
|
||||
},
|
||||
{
|
||||
"type": "heading",
|
||||
"level": 3,
|
||||
"text": "Заголовок третьего уровня"
|
||||
},
|
||||
{
|
||||
"type": "unordered",
|
||||
"items": [
|
||||
"Элемент неупорядоченного списка",
|
||||
"Ещё один элемент неупорядоченного списка"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "ordered",
|
||||
"items": [
|
||||
"1-ый элемент упорядоченного списка",
|
||||
"2-ой элемент упорядоченного списка"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "definition",
|
||||
"term": "Кошка",
|
||||
"text": "Домашнее животное, которое мяукает и царапается"
|
||||
},
|
||||
{
|
||||
"type": "important",
|
||||
"text": "Важное замечание, которое нужно выделить на уровне структуры документа"
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"event_id": 54
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
- Для получения файла `structure.json` модели передаются соыбытия из
|
||||
`events.json`, используя метод окна (описан ранее).
|
||||
8. **Собрать финальный Markdown файл**
|
||||
- Для сборки Markdown файла используются элементы, полученные на предыдщем
|
||||
шаге, и хранимые в файле `structure.json`
|
||||
- В итоге создаётся файл `output.md`, который может включать в себя ссылки
|
||||
на изображения из директории `images/` (относительно директории
|
||||
промежуточных данных)
|
||||
Reference in New Issue
Block a user