Модель переобучена на пересобранном датасете (15 классов, люб. дубляж); модели в Git LFS обновлены, документация
docker / build (push) Successful in 1m49s

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
DenozordecandClaude Sonnet 5.5 committed 2026-10-29 20:27:26 +07:00
1 parent 05537ac9e9
commit 111e854789
11 files changed
+8886 -5415

No files matched your search

+2 -2
View File
@@ -3,10 +3,10 @@
| Документ | Содержание |
|---|---|
| [architecture.md](architecture.md) | Схема пайплайна, multi-task модель (тип + BIO-спан + 18+), почему извлечение вместо классификации |
| [dataset.md](dataset.md) | Схема labels.csv, семантика 14 классов, словарь алиасов, находки аудита и как они обработаны |
| [dataset.md](dataset.md) | Схема labels.csv, семантика 15 классов, словарь алиасов, находки аудита и как они обработаны |
| [training-windows.md](training-windows.md) | Пошаговое обучение на Windows с GPU (RTX 5070 Ti / Blackwell), гиперпараметры, troubleshooting, переобучение на свежем датасете |
| [inference.md](inference.md) | CLI, Python API, JSON-контракт (таблица полей), обработка HTML, ограничения |
| [api-reference.md](api-reference.md) | **Справочник ответа сервиса**: все 14 значений `translation_type`, все поля дорожки и релиза, принцип работы. Читать вместо `data/labels.csv` |
| [api-reference.md](api-reference.md) | **Справочник ответа сервиса**: все 15 значений `translation_type`, все поля дорожки и релиза, принцип работы. Читать вместо `data/labels.csv` |
| [integration.md](integration.md) | Интеграция из Rust и TypeScript: HTTP-сервис (путь А) и ONNX без Python (путь Б), трейдоффы |
| [docker.md](docker.md) | Docker-образ сервиса, переменные окружения (в т.ч. FlareSolverr), API, модели в контейнере, CI/CD в Gitea, развёртывание на VPS |
+8 -8
View File
@@ -67,7 +67,7 @@
| Поле | Тип | Значения / описание |
|---|---|---|
| `segment` | string | текст дорожки, по которому сделано предсказание |
| `translation_type` | string | **один из 14 классов** — [таблица ниже](#translation_type-14-классов) |
| `translation_type` | string | **один из 15 классов** — [таблица ниже](#translation_type-15-классов) |
| `type_confidence` | float 0..1 | вероятность выбранного класса |
| `studio_span` | string \| null | фрагмент текста, распознанный как автор/студия |
| `studio` | string \| null | каноническое имя автора из словаря алиасов; неизвестное имя возвращается как в тексте; `null` — автора нет |
@@ -86,10 +86,10 @@
Поле `lang` описывает только язык дорожки; `role` и `lang` не зависят от `translation_type`.
### translation_type: 14 классов (15 после переобучения на пересобранных данных)
### translation_type: 15 классов
> После пересборки датасета (см. [dataset.md](dataset.md)) добавляется класс `люб. дубляж` — любительский
> дубляж; модели, обученные раньше, его не возвращают и по-прежнему отдают 14 классов из списка ниже.
> Текущая модель знает 15 классов: к 14 из списка ниже добавлен `люб. дубляж` — любительский дубляж
> (см. [dataset.md](dataset.md)); модели, обученные раньше, его не возвращают и отдают 14 классов.
> Источник истины для конкретной модели — `GET /health` → `classes`; клиенту безопасно сопоставлять по подстроке
> (`дубляж` → дубляж), как описано ниже: `люб. дубляж` её содержит.
@@ -98,7 +98,7 @@
```json
["авт. двухголосый", "авт. многоголосый", "авт. одноголосый", "двухголосый", "люб. двухголосый",
"люб. многоголосый", "люб. одноголосый", "многоголосый", "неизвестно", "одноголосый",
"люб. дубляж", "люб. многоголосый", "люб. одноголосый", "многоголосый", "неизвестно", "одноголосый",
"проф. двухголосый", "проф. дубляж", "проф. многоголосый", "проф. одноголосый"]
```
@@ -114,7 +114,7 @@
| Значение | Кто озвучивал | Вид |
|---|---|---|
| `проф. дубляж` | профессиональная студия | дубляж (речь актёров заменяет оригинал; в страницах «Дублированный») |
| `люб. дубляж` | любительская озвучка | дубляж/псевдодубляж; только в моделях, обученных после пересборки датасета |
| `люб. дубляж` | любительская озвучка | дубляж/псевдодубляж; в текущей модели есть; в моделях, обученных раньше, его нет |
| `проф. многоголосый` | профессиональная студия | закадровый, три и более голоса |
| `проф. двухголосый` | профессиональная студия | закадровый, два голоса |
| `проф. одноголосый` | профессиональная студия | закадровый, один голос |
@@ -145,7 +145,7 @@
```ts
type Track = {
segment: string; // никогда null
translation_type: string; // один из 14 классов, никогда null
translation_type: string; // один из 15 классов, никогда null
type_confidence: number; // 0..1
studio_span: string | null; // null — автора в тексте нет
studio: string | null; // null вместе со studio_span
@@ -217,7 +217,7 @@ Cloudflare: FlareSolverr нестабилен.
4. **Контекст аудио.** К тексту дорожки подмешивается подходящая строка «Аудио» страницы
(кодек, каналы, битрейт, язык, 18+) в виде хвоста `[RUS AC3 6ch 448kbps 18+]`.
5. **Модель-классификатор** (`DubTagger` на основе ruBert-base, `models/best`) делает за один проход
несколько предсказаний: `translation_type` (14 классов), спан автора (разметка BIO по токенам),
несколько предсказаний: `translation_type` (15 классов), спан автора (разметка BIO по токенам),
флаг 18+ и язык (`ENG`/`RUS`/`UKR`).
6. **Постобработка.** Автор канонизируется словарём алиасов; 18+ ставится также по строке «Аудио»;
язык: строка «Аудио» → нейросеть → слова в тексте; строка «Аудио» подбирается к дорожке по имени
+2 -2
View File
@@ -62,7 +62,7 @@ model.predict_file("page.txt")
## JSON-контракт
Полный справочник значений (14 классов `translation_type`, `lang`, `role`, `audio`, агрегат релиза, принцип работы) — в [api-reference.md](api-reference.md); ниже краткий пример.
Полный справочник значений (15 классов `translation_type`, `lang`, `role`, `audio`, агрегат релиза, принцип работы) — в [api-reference.md](api-reference.md); ниже краткий пример.
```json
{
@@ -84,7 +84,7 @@ model.predict_file("page.txt")
| Поле | Тип | Описание |
|---|---|---|
| `segment` | string | текст дорожки, по которому сделано предсказание (префикс снят) |
| `translation_type` | string | один из 14 классов (см. docs/dataset.md) |
| `translation_type` | string | один из 15 классов (см. docs/dataset.md) |
| `type_confidence` | float | softmax-вероятность класса |
| `studio_span` | string \| null | фрагмент текста, распознанный как имя автора |
| `studio` | string \| null | каноническое имя автора по словарю алиасов; null — автора в тексте нет |