Навигация

MOD-TRANSCRIPTION — Транскрипция и управление разговорами

Лицензия: Платный

Модуль превращает звук в управляемый текст. Разговор (звонок, запись встречи, загруженный аудиофайл) заводится карточкой со ссылкой на аудио в объектном хранилище контура, ставится в очередь, и фоновый воркер прогоняет его через ASR-движок. Результат — не «простыня», а транскрипт из сегментов: у каждого свои таймкоды начала и конца, метка говорящего и текст. Сегменты читаются инкрементально (from_idx отдаёт только новые), поэтому длинную расшифровку можно тянуть по мере готовности, а не ждать целиком.

Движок распознавания выбирается конфигурацией: self-host Whisper в контуре или облачный OpenAI-совместимый endpoint — код у них общий, различаются только адрес, модель и ключ. Если движок не настроен, модуль честно отказывает, а не возвращает пустую заглушку. Тот же принцип у summary: текст сводки и ключевые фразы генерирует ИИ-слой ядра (TRANSCRIPTION_AI_URL), сам модуль LLM не запускает; каждая ключевая фраза обязана ссылаться на реальный номер сегмента, чтобы сводку можно было перепроверить по таймкоду, а при ненастроенном ИИ-слое приходит честный отказ.

Диаризация в модуле держится на метках говорящих в сегментах. В живом режиме метку присылает агент встречи вместе с окном аудио на внутренний эндпоинт /transcribe-chunk (закрыт общим секретом X-Internal-Token); для готовых записей OpenAI-совместимый движок меток не отдаёт, и говорящих размечают вручную — переименовать, слить двух в одного, привязать к сотруднику или контакту CRM. Поиск по разговорам — полнотекстовый Postgres с русской морфологией и подсветкой совпадения; семантический режим объявлен, но не реализован и отвечает честной ошибкой вместо выдуманной выдачи. Жизненный цикл задач транскрипции (в очереди / выполняется / готово / ошибка) транслируется в live-канал transcription через SSE.

Хранение разговоров ограничено: удаление разговора мягкое (с confirm=true), а очистка по сроку хранения — необратимая и тоже требует подтверждения, вычищая вместе с разговором транскрипт, summary, говорящих и задания.

Возможности

  • Разговор как карточка: источник, ссылка на аудио, привязка к сущности (entity_ref), язык
  • Асинхронная очередь транскрипции: постановка идемпотентна, обработка фоновым воркером
  • Транскрипт сегментами: таймкоды начала и конца, метка говорящего, текст
  • Инкрементальное чтение транскрипта: from_idx отдаёт только новые сегменты, total и next_idx для продолжения
  • Синхронное распознавание короткого фрагмента (base64, ~10 МБ) тем же движком — для длинного аудио остаётся асинхронный конвейер
  • Выбор ASR-движка конфигурацией: self-host Whisper в контуре или облачный OpenAI-совместимый endpoint
  • Честный отказ при ненастроенном движке — без пустых заглушек
  • Живая транскрипция: агент встречи шлёт окна аудио с меткой говорящего на внутренний эндпоинт, закрытый общим секретом
  • Разметка говорящих: переименование по всем сегментам, слияние двух говорящих, привязка к сотруднику или контакту CRM
  • Summary и ключевые фразы через ИИ-слой ядра, каждая фраза со ссылкой на номер сегмента; честный отказ, если ИИ-слой не настроен
  • Полнотекстовый поиск по разговорам с русской морфологией и подсветкой; семантический режим не реализован и отвечает честной ошибкой
  • Административная выдача всех транскриптов встреч с пагинацией и фильтром по статусу
  • Мягкое удаление разговора и необратимая очистка по сроку хранения — обе с обязательным confirm=true
  • Live-события жизненного цикла заданий транскрипции по SSE (канал transcription)

Основные MCP-инструменты

ИнструментНазначение
transcription__describe_entitiesМетаданные сущностей модуля без самих данных
transcription__describe_blocksБлоки холста для библиотеки MOD-CANVAS (список пуст)
transcription__get_rolesРолевая модель модуля транскрипции
transcription__get_canvas_presetsПресеты холстов (JSON-DSL) по роли
transcription__subscribe_eventsКаналы live-событий и путь SSE-потока
transcription__conversation.createСоздать разговор для транскрипции аудио-источника
transcription__conversation.getМетаданные разговора
transcription__conversation.listСписок и фильтр разговоров с пагинацией
transcription__conversation.deleteМягко удалить разговор и транскрипт (нужен confirm=true)
transcription__conversation.searchПолнотекстовый поиск по разговорам; семантический режим не реализован
transcription__transcription.enqueueПоставить транскрипцию разговора в очередь (идемпотентно)
transcription__transcription.getСтатус задачи транскрипции по заданию или разговору
transcription__transcript.getТранскрипт разговора: статус, язык, текст, сегменты; инкрементально через from_idx
transcription__transcript.list_allВсе транскрипты встреч (админ-поверхность): пагинация и фильтр по статусу
transcription__transcribe_audioСинхронно распознать короткий аудио-фрагмент (base64) тем же движком
transcription__speaker.listГоворящие разговора: наблюдаемые в сегментах, переименованные, привязанные
transcription__speaker.renameПереименовать говорящего во всех сегментах разговора
transcription__speaker.mergeСлить двух говорящих: сегменты переносятся на целевого
transcription__speaker.assignПривязать говорящего к сотруднику или контакту CRM
transcription__summary.generateСгенерировать summary и ключевые фразы через ИИ-слой ядра, со ссылками на сегменты
transcription__summary.getПолучить готовое summary и ключевые фразы
transcription__retention.purgeНЕОБРАТИМО удалить разговоры старше срока хранения (нужен confirm=true)

Блоки холста

Собственных блоков холста у модуля нет: describe_blocks намеренно возвращает пустой список. MOD-TRANSCRIPTION — headless-инфраструктура распознавания речи, её результаты показываются виджетами модуля видеовстреч.

Связанные модули

  • MOD-MEETINGS-VIDEO — записи видеовстреч как источник аудио и место показа транскриптов
  • MOD-TEL — телефония: записи звонков, которые ставятся на расшифровку
  • MOD-STT-WHISPER — локальное распознавание речи в контуре
  • MOD-CALL-COACHING — оценка звонков по расшифрованному тексту
  • MOD-MEETING-SCRIPTS — сценарии совещаний и протоколы поверх транскрипта
  • MOD-CRM — карточки, к которым привязываются разговоры и говорящие
Открыть чат-бот