Перейти к основному содержимому

Jitsi: роадмап транскрипции и конспектов (будущая фаза)

Статус — будущее, non-blocking. Транскрипция и конспект встреч в MVP не реализуются. Этот документ фиксирует только шов (seam): что уже готово в модели/событиях, чтобы фаза не потребовала переделки. Ничто в текущем контракте от этого не зависит.

Готовый шов

  • Событие pin.messenger.call-recording-available.v1 уже несёт достаточный контекст для запуска STT-пайплайна: FileId, SessionId, SessionKind, DealId?, MediaType, DurationSeconds. Это — естественный триггер post-hoc транскрипции.
  • В CallRecordingEntity зарезервированы поля-швы TranscriptFileId и SummaryFileId (логические ссылки на file storage). Они не наполняются сейчас.
  • Артефакты транскрипта/конспекта будут жить в отдельной будущей сущности CallMeetingInsightEntity (AggregateRoot, 1:1 к записи), а не колонками записи: у STT/суммаризации иной жизненный цикл (асинхронный, переобрабатываемый, несколько языков/артефактов).

Два возможных пути (при реализации)

Post-hoc STT (предпочтительно)

Транскрипция после звонка, по событию call-recording-available:

  • Идеальный артефакт — audio-only .mka (Matroska audio) от multitrack-recorder (JMR_FORMAT = "mka", content-type audio/x-matroska): отдельные аудио-дорожки участников дают лучшее качество диаризации, чем видеомикс jibri. Для этого пути в записи добавится modality/track-only захват.
  • Отдельный пайплайн (вне messenger) потребляет событие → STT → кладёт транскрипт/конспект в file storage → создаёт CallMeetingInsightEntity → (опц.) карточка в таймлайн сделки crm.

Live-транскрипция (альтернатива)

Транскрипция во время звонка через Jitsi:

  • jigasi (сейчас реплик 0, jitsi-deployment.md) как транскрайбер, или backend-транскрипция jicofo: transcription.url-template = "wss://…/{{MEETING_ID}}" в reference.conf (сейчас закомментировано) + событие transcriptionChunkReceived на клиенте.
  • Требует разворачивания дополнительных компонентов и STT-провайдера — тяжелее post-hoc пути; рассматривается только при явном требовании «живых субтитров».

Что НЕ делаем сейчас

  • Не разворачиваем jigasi/multitrack-recorder/transcriber (nomad/{transcriber,multitrack-recorder}.hcl — референс на будущее).
  • Не наполняем TranscriptFileId/SummaryFileId, не создаём CallMeetingInsightEntity.
  • Не расширяем событие call-recording-available (оно уже самодостаточно как триггер).

Обратные ссылки

Автоссылки: где используется этот документ.

Связанные документы

  • Сущность записи и раздел роадмапа: call-recording.md; событие-триггер: call-recording-available.md; пайплайн записи: recording-pipeline.md.
  • Источник (референс): thirdparty/jitsi/infra-provisioning/nomad/{multitrack-recorder.hcl,transcriber.hcl,jigasi-haproxy.hcl}, thirdparty/jitsi/jicofo/.../reference.conf (transcription.url-template).
  • Решение: ADR-0062.