Формат транскрипта со спикерами #15

Closed
opened 2026-08-12 15:05:36 +03:00 by ddmitry · 1 comment
Owner

Часть карты: Карта: диаризация спикеров в транскрипте (#8)

Question

Как выглядит markdown-транскрипт с говорящими?

Нужен дешёвый черновик на реальном фрагменте, чтобы было на что реагировать, а
не спор об абстракциях. Открытые вопросы:

  • как подписывать говорящих: Speaker 1:, S1:, что-то ещё; куда девать
    остаточные кластеры на несколько секунд;
  • как ломаются абзацы: сейчас formatter.py группирует по паузе 2 с и максимуму
    60 с (_PAUSE_THRESHOLD_S, _MAX_PARAGRAPH_S). Бэклог откладывал эту ручку до
    диаризации — здесь она, скорее всего, и решается: на смене говорящего абзац
    ломается естественно;
  • что попадает в шапку: число найденных говорящих, распределение времени по ним,
    предупреждение о низкой чистоте, если выбран вариант с пометкой;
  • остаётся ли транскрипт удобным для последующей обработки ИИ — это заявленный
    в PRD сценарий;
  • как выглядит фрагмент с перекрывающейся речью.

Черновик собирается на уже посчитанных данных, без реализации в CLI, и
прикладывается к тикету ссылкой.

Ответ — выбранный формат с примером.

Часть карты: [Карта: диаризация спикеров в транскрипте](https://git.dementev.space/ddmitry/local-transcriber/issues/8) (#8) ## Question Как выглядит markdown-транскрипт с говорящими? Нужен дешёвый черновик на реальном фрагменте, чтобы было на что реагировать, а не спор об абстракциях. Открытые вопросы: - как подписывать говорящих: `Speaker 1:`, `S1:`, что-то ещё; куда девать остаточные кластеры на несколько секунд; - как ломаются абзацы: сейчас `formatter.py` группирует по паузе 2 с и максимуму 60 с (`_PAUSE_THRESHOLD_S`, `_MAX_PARAGRAPH_S`). Бэклог откладывал эту ручку до диаризации — здесь она, скорее всего, и решается: на смене говорящего абзац ломается естественно; - что попадает в шапку: число найденных говорящих, распределение времени по ним, предупреждение о низкой чистоте, если выбран вариант с пометкой; - остаётся ли транскрипт удобным для последующей обработки ИИ — это заявленный в PRD сценарий; - как выглядит фрагмент с перекрывающейся речью. Черновик собирается на уже посчитанных данных, без реализации в CLI, и прикладывается к тикету ссылкой. Ответ — выбранный формат с примером.
ddmitry added the wayfinder:prototype label 2026-08-12 15:05:36 +03:00
ddmitry added a new dependency 2026-08-12 15:07:20 +03:00
ddmitry self-assigned this 2026-08-14 14:21:29 +03:00
Author
Owner

Решение

Выбран компактный линейный формат реплик:

[09:07] Speaker 1: Мы же у них не разворачиваемся…

[09:18] Speaker 2: Мне гораздо проще накатывать обновления…

Правила формата:

  • печатается только таймкод начала реплики, до целых секунд; конец диапазона и доли секунды не выводятся;
  • метка Speaker N остаётся без Markdown-выделения: перевод строки, метка и двоеточие уже задают структуру для читателя и LLM;
  • смена говорящего всегда начинает новую реплику;
  • внутри речи одного говорящего сохраняются разрывы по паузе 2 секунды и максимуму 60 секунд;
  • малые кластеры не отбрасываются: они получают обычный номер, а в шапке появляется предупреждение о малой длительности;
  • перекрывающаяся речь не получает отдельного синтаксиса: порядок реплик сохраняется, но формат не изображает точность, которой диаризация не гарантирует;
  • в шапке достаточно числа голосовых кластеров и предупреждений, без таблицы распределения времени.

Прототип с тремя вариантами сохранён как первичный источник решения. Реализация в CLI остаётся за границей карты.

## Решение Выбран компактный линейный формат реплик: ```markdown [09:07] Speaker 1: Мы же у них не разворачиваемся… [09:18] Speaker 2: Мне гораздо проще накатывать обновления… ``` Правила формата: - печатается только таймкод начала реплики, до целых секунд; конец диапазона и доли секунды не выводятся; - метка `Speaker N` остаётся без Markdown-выделения: перевод строки, метка и двоеточие уже задают структуру для читателя и LLM; - смена говорящего всегда начинает новую реплику; - внутри речи одного говорящего сохраняются разрывы по паузе 2 секунды и максимуму 60 секунд; - малые кластеры не отбрасываются: они получают обычный номер, а в шапке появляется предупреждение о малой длительности; - перекрывающаяся речь не получает отдельного синтаксиса: порядок реплик сохраняется, но формат не изображает точность, которой диаризация не гарантирует; - в шапке достаточно числа голосовых кластеров и предупреждений, без таблицы распределения времени. [Прототип с тремя вариантами](https://git.dementev.space/ddmitry/local-transcriber/src/commit/352296b84a2a8e32456ee82cd66abaf37866b7ae/.scratch/transcript-format-prototype.html) сохранён как первичный источник решения. Реализация в CLI остаётся за границей карты.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: ddmitry/local-transcriber#15