Принятый ADR по диаризации и спека, по которым можно писать код: закрыты движок,
единица привязки спикера к тексту, калибровка кластеризации, формат вывода, UX и
поведение на OpenVINO-пути. Реализация лежит за границей карты и заводится
отдельно.
Notes
Домен:local-transcriber — локальная транскрипция аудио и видео, без
облака и ключей. Язык документации, комментариев и сообщений коммитов — русский,
идентификаторы кода — английские.
Что прочитать перед работой над любым тикетом:
CONTEXT.md — каноническая терминология;
docs/benchmarks/2026-08-12-diarization-feasibility.md — разведочный замер,
с которого началась карта;
спецификация — согласованная форма первой реализации;
docs/adr/006-onnx-asr-backend.md — почему ONNX-путь стал дефолтным и какая
планка доказательности принята в проекте (три записи, независимая оценка);
docs/agents/issue-tracker.md — как устроены операции карты в этом трекере.
Навыки:/grilling и /domain-modeling по умолчанию, /research для
research-тикетов, /prototype для prototype-тикетов, /brainstorm-with-docs при сведении решений в ADR и спеку.
Стандарты этой карты:
одна удачная цифра на одной записи решением не считается; планка — три записи,
как в ADR-006;
Ryzen 7 8845H годится для итераций; приёмка стоимости выполнена на доступном
слабом Intel baseline — Core i7-6820HQ. Конкретный Core i5 11-го поколения
остаётся непроверенным, потому что такого устройства нет;
новые термины сразу заносятся в CONTEXT.md, а не копятся.
Проверить границы диаризации на слух — разметка пригодна для грубой оценки смешения, но не как эталон границ: есть ложный остаточный кластер, редкие пропуски и неполные перекрытия.
Производительность диаризации на целевом Intel Core i5 — на доступном Core i7-6820HQ с урезанным питанием последовательная обработка часа занимает около 23 минут; стоимость приемлема для явной опциональной функции, конкретный i5 не проверен.
Выбрать единицу привязки спикера к тексту — диаризацию делаем как opt-in-функцию; говорящий назначается слову с временной привязкой, а независимые проходы ASR и диаризации сводятся после завершения обоих.
Формат транскрипта со спикерами — линейные реплики [MM:SS] Speaker N: текст; таймкод только в начале и до секунд, смена говорящего ломает абзац, малые кластеры сохраняются с предупреждением.
• Модели диаризации в батч-режиме: время жизни и память — один batch-owned объект создаётся после prescan, последовательно переиспользуется для всех файлов и освобождается при завершении команды; условной выгрузки нет.
• Нужен ли кеш результата диаризации — постоянного кеша нет: разметка говорящих живёт только в текущем прогоне, итоговый артефакт — Markdown; --force пересчитывает всё, --verbose не создаёт диагностических файлов.
• UX диаризации: флаг, число участников, зависимость и поведение на OpenVINO — первая версия включается через --diarize/--speakers N, sherpa-onnx ставится обязательно, модели скачиваются лениво; все backend должны отдавать слова с временной привязкой. Ошибки конкретного файла сохраняют обычный Markdown с явным предупреждением; hardware-aware default отложен в #23.
Консолидация проекта на ONNX Runtime целиком — переход на сборку с
DirectML или OpenVINO EP вместо OpenVINO GenAI. Отдельная работа: она зависит
от того, что покажет research о жизненном цикле движков, требует замеров на
Intel-железе и переоценки всех профилей. В этой карте остаётся только узкое
решение о поведении диаризации на --device openvino-*.
Сопоставление Speaker N с именами участников. Бэклог сознательно держит
это вне ядра CLI: работа поверх готового транскрипта, максимум рецепт в README.
Реализация диаризации в CLI — код, тесты и README ведутся в отдельной задаче.
## Destination
Принятый ADR по диаризации и спека, по которым можно писать код: закрыты движок,
единица привязки спикера к тексту, калибровка кластеризации, формат вывода, UX и
поведение на OpenVINO-пути. Реализация лежит за границей карты и заводится
отдельно.
## Notes
**Домен:** `local-transcriber` — локальная транскрипция аудио и видео, без
облака и ключей. Язык документации, комментариев и сообщений коммитов — русский,
идентификаторы кода — английские.
**Что прочитать перед работой над любым тикетом:**
- `CONTEXT.md` — каноническая терминология;
- `docs/benchmarks/2026-08-12-diarization-feasibility.md` — разведочный замер,
с которого началась карта;
- [ADR-007](https://git.dementev.space/ddmitry/local-transcriber/src/commit/b8347004da998489382d8d2add8a3dc49b7629b9/docs/adr/007-word-level-speaker-diarization.md) — принятое архитектурное решение;
- [спецификация](https://git.dementev.space/ddmitry/local-transcriber/src/commit/b8347004da998489382d8d2add8a3dc49b7629b9/docs/specs/2026-08-14-speaker-diarization.md) — согласованная форма первой реализации;
- `docs/adr/006-onnx-asr-backend.md` — почему ONNX-путь стал дефолтным и какая
планка доказательности принята в проекте (три записи, независимая оценка);
- `docs/agents/issue-tracker.md` — как устроены операции карты в этом трекере.
**Навыки:** `/grilling` и `/domain-modeling` по умолчанию, `/research` для
research-тикетов, `/prototype` для prototype-тикетов,
`/brainstorm-with-docs` при сведении решений в ADR и спеку.
**Стандарты этой карты:**
- одна удачная цифра на одной записи решением не считается; планка — три записи,
как в ADR-006;
- Ryzen 7 8845H годится для итераций; приёмка стоимости выполнена на доступном
слабом Intel baseline — Core i7-6820HQ. Конкретный Core i5 11-го поколения
остаётся непроверенным, потому что такого устройства нет;
- новые термины сразу заносятся в `CONTEXT.md`, а не копятся.
## Decisions so far
<!-- индекс: одна строка на закрытый тикет -->
- [Куда движутся ONNX Runtime и OpenVINO: сравнение жизненного цикла](https://git.dementev.space/ddmitry/local-transcriber/issues/9) — ORT CPU остаётся переносимым baseline; Intel-путь устойчивее через нативный OpenVINO, а WinML/MIGraphX/CoreML/WebGPU требуют model-specific offload и golden tests.
- [Проверить границы диаризации на слух](https://git.dementev.space/ddmitry/local-transcriber/issues/12) — разметка пригодна для грубой оценки смешения, но не как эталон границ: есть ложный остаточный кластер, редкие пропуски и неполные перекрытия.
- [Калибровка диаризации: порог кластеризации и модель эмбеддингов на русской речи](https://git.dementev.space/ddmitry/local-transcriber/issues/10) — дефолт: WeSpeaker ResNet34 LM + порог 0,89; явное число участников — страховка, CAMPPlus zh/en оставлен кандидатом только для режима с известным числом спикеров.
- [Чистота ASR-сегментов: подтвердить долю загрязнённых на трёх записях](https://git.dementev.space/ddmitry/local-transcriber/issues/11) — смешение воспроизводится на разговорах на двоих, но реже: 6–7% сегментов и 12–17% времени против 27% и 51% на встрече втроём.
- [Производительность диаризации на целевом Intel Core i5](https://git.dementev.space/ddmitry/local-transcriber/issues/13) — на доступном Core i7-6820HQ с урезанным питанием последовательная обработка часа занимает около 23 минут; стоимость приемлема для явной опциональной функции, конкретный i5 не проверен.
- [Выбрать единицу привязки спикера к тексту](https://git.dementev.space/ddmitry/local-transcriber/issues/14) — диаризацию делаем как opt-in-функцию; говорящий назначается слову с временной привязкой, а независимые проходы ASR и диаризации сводятся после завершения обоих.
- [Формат транскрипта со спикерами](https://git.dementev.space/ddmitry/local-transcriber/issues/15) — линейные реплики `[MM:SS] Speaker N: текст`; таймкод только в начале и до секунд, смена говорящего ломает абзац, малые кластеры сохраняются с предупреждением.
• [Модели диаризации в батч-режиме: время жизни и память](https://git.dementev.space/ddmitry/local-transcriber/issues/19) — один batch-owned объект создаётся после prescan, последовательно переиспользуется для всех файлов и освобождается при завершении команды; условной выгрузки нет.
• [Нужен ли кеш результата диаризации](https://git.dementev.space/ddmitry/local-transcriber/issues/20) — постоянного кеша нет: разметка говорящих живёт только в текущем прогоне, итоговый артефакт — Markdown; `--force` пересчитывает всё, `--verbose` не создаёт диагностических файлов.
• [Параллельный запуск ASR и диаризации: политика и бюджет CPU](https://git.dementev.space/ddmitry/local-transcriber/issues/21) — первая реализация последовательна: ASR → диаризация → сведение → Markdown; `--threads` целиком применяется к каждому активному CPU-проходу. Параллельность отложена до стабилизации в [отдельную задачу](https://git.dementev.space/ddmitry/local-transcriber/issues/22) с порогом выигрыша 20%.
• [UX диаризации: флаг, число участников, зависимость и поведение на OpenVINO](https://git.dementev.space/ddmitry/local-transcriber/issues/16) — первая версия включается через `--diarize`/`--speakers N`, `sherpa-onnx` ставится обязательно, модели скачиваются лениво; все backend должны отдавать слова с временной привязкой. Ошибки конкретного файла сохраняют обычный Markdown с явным предупреждением; hardware-aware default отложен в [#23](https://git.dementev.space/ddmitry/local-transcriber/issues/23).
- [Свести решения карты в ADR и спеку](https://git.dementev.space/ddmitry/local-transcriber/issues/17) — решения оформлены в ADR-007, спецификацию и доменный словарь; реализация вынесена в [отдельную задачу](https://git.dementev.space/ddmitry/local-transcriber/issues/24).
## Not yet specified
## Out of scope
- **Реализация и приёмка новых AMD, Apple и browser-путей** — lifecycle и модельные возможности разведаны в [«Куда движутся ONNX Runtime и OpenVINO: сравнение жизненного цикла»](https://git.dementev.space/ddmitry/local-transcriber/issues/9), но интеграция и бенчмарки не нужны для ADR/спеки диаризации на целевом Intel-пути.
- **Консолидация проекта на ONNX Runtime целиком** — переход на сборку с
DirectML или OpenVINO EP вместо OpenVINO GenAI. Отдельная работа: она зависит
от того, что покажет research о жизненном цикле движков, требует замеров на
Intel-железе и переоценки всех профилей. В этой карте остаётся только узкое
решение о поведении диаризации на `--device openvino-*`.
- **Сопоставление `Speaker N` с именами участников.** Бэклог сознательно держит
это вне ядра CLI: работа поверх готового транскрипта, максимум рецепт в README.
- **Реализация диаризации в CLI** — код, тесты и README ведутся в [отдельной задаче](https://git.dementev.space/ddmitry/local-transcriber/issues/24).
Задача [«Калибровка диаризации: порог кластеризации и модель эмбеддингов на русской речи»](https://git.dementev.space/ddmitry/local-transcriber/issues/10) закрыта. Решение зафиксировано в `Decisions so far`: автоматический дефолт — WeSpeaker ResNet34 LM с порогом 0,89; явное число участников используется как страховка.
Артефакты закрытой задачи №10 опубликованы в draft PR #18. PR охватывает текущий материал карты и остаётся черновиком, пока карта №8 открыта.
Артефакты закрытой задачи №10 опубликованы в draft PR [#18](https://git.dementev.space/ddmitry/local-transcriber/pulls/18). PR охватывает текущий материал карты и остаётся черновиком, пока карта №8 открыта.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Destination
Принятый ADR по диаризации и спека, по которым можно писать код: закрыты движок,
единица привязки спикера к тексту, калибровка кластеризации, формат вывода, UX и
поведение на OpenVINO-пути. Реализация лежит за границей карты и заводится
отдельно.
Notes
Домен:
local-transcriber— локальная транскрипция аудио и видео, безоблака и ключей. Язык документации, комментариев и сообщений коммитов — русский,
идентификаторы кода — английские.
Что прочитать перед работой над любым тикетом:
CONTEXT.md— каноническая терминология;docs/benchmarks/2026-08-12-diarization-feasibility.md— разведочный замер,с которого началась карта;
docs/adr/006-onnx-asr-backend.md— почему ONNX-путь стал дефолтным и какаяпланка доказательности принята в проекте (три записи, независимая оценка);
docs/agents/issue-tracker.md— как устроены операции карты в этом трекере.Навыки:
/grillingи/domain-modelingпо умолчанию,/researchдляresearch-тикетов,
/prototypeдля prototype-тикетов,/brainstorm-with-docsпри сведении решений в ADR и спеку.Стандарты этой карты:
как в ADR-006;
слабом Intel baseline — Core i7-6820HQ. Конкретный Core i5 11-го поколения
остаётся непроверенным, потому что такого устройства нет;
CONTEXT.md, а не копятся.Decisions so far
Куда движутся ONNX Runtime и OpenVINO: сравнение жизненного цикла — ORT CPU остаётся переносимым baseline; Intel-путь устойчивее через нативный OpenVINO, а WinML/MIGraphX/CoreML/WebGPU требуют model-specific offload и golden tests.
Проверить границы диаризации на слух — разметка пригодна для грубой оценки смешения, но не как эталон границ: есть ложный остаточный кластер, редкие пропуски и неполные перекрытия.
Калибровка диаризации: порог кластеризации и модель эмбеддингов на русской речи — дефолт: WeSpeaker ResNet34 LM + порог 0,89; явное число участников — страховка, CAMPPlus zh/en оставлен кандидатом только для режима с известным числом спикеров.
Чистота ASR-сегментов: подтвердить долю загрязнённых на трёх записях — смешение воспроизводится на разговорах на двоих, но реже: 6–7% сегментов и 12–17% времени против 27% и 51% на встрече втроём.
Производительность диаризации на целевом Intel Core i5 — на доступном Core i7-6820HQ с урезанным питанием последовательная обработка часа занимает около 23 минут; стоимость приемлема для явной опциональной функции, конкретный i5 не проверен.
Выбрать единицу привязки спикера к тексту — диаризацию делаем как opt-in-функцию; говорящий назначается слову с временной привязкой, а независимые проходы ASR и диаризации сводятся после завершения обоих.
Формат транскрипта со спикерами — линейные реплики
[MM:SS] Speaker N: текст; таймкод только в начале и до секунд, смена говорящего ломает абзац, малые кластеры сохраняются с предупреждением.• Модели диаризации в батч-режиме: время жизни и память — один batch-owned объект создаётся после prescan, последовательно переиспользуется для всех файлов и освобождается при завершении команды; условной выгрузки нет.
• Нужен ли кеш результата диаризации — постоянного кеша нет: разметка говорящих живёт только в текущем прогоне, итоговый артефакт — Markdown;
--forceпересчитывает всё,--verboseне создаёт диагностических файлов.• Параллельный запуск ASR и диаризации: политика и бюджет CPU — первая реализация последовательна: ASR → диаризация → сведение → Markdown;
--threadsцеликом применяется к каждому активному CPU-проходу. Параллельность отложена до стабилизации в отдельную задачу с порогом выигрыша 20%.• UX диаризации: флаг, число участников, зависимость и поведение на OpenVINO — первая версия включается через
--diarize/--speakers N,sherpa-onnxставится обязательно, модели скачиваются лениво; все backend должны отдавать слова с временной привязкой. Ошибки конкретного файла сохраняют обычный Markdown с явным предупреждением; hardware-aware default отложен в #23.Not yet specified
Out of scope
DirectML или OpenVINO EP вместо OpenVINO GenAI. Отдельная работа: она зависит
от того, что покажет research о жизненном цикле движков, требует замеров на
Intel-железе и переоценки всех профилей. В этой карте остаётся только узкое
решение о поведении диаризации на
--device openvino-*.Speaker Nс именами участников. Бэклог сознательно держитэто вне ядра CLI: работа поверх готового транскрипта, максимум рецепт в README.
Задача «Калибровка диаризации: порог кластеризации и модель эмбеддингов на русской речи» закрыта. Решение зафиксировано в
Decisions so far: автоматический дефолт — WeSpeaker ResNet34 LM с порогом 0,89; явное число участников используется как страховка.Артефакты закрытой задачи №10 опубликованы в draft PR #18. PR охватывает текущий материал карты и остаётся черновиком, пока карта №8 открыта.