Аудиосозвоны с автоматическим протоколом — сервис города Синаполис
Find a file
Distill c7f91eb4b8 Montevoice: первая публикация кода
Сервис аудиосозвонов с автоматическим протоколом, работает с 10 августа 2026 года.
Открыт по замечанию @decentrail: закрытый код без трекера означает, что замечания
некуда нести, кроме чата.

Не входит: конфигурация с ключами, записи созвонов, модели синтеза речи.
2026-09-01 08:06:05 +00:00
web Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
.gitignore Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
app.py Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
asr_server_node.py Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
chat_say.py Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
hook-transcript.sh Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
LICENSE Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
README.md Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00
voicebot.py Montevoice: первая публикация кода 2026-09-01 08:06:05 +00:00

Montevoice

Сервис аудиосозвонов с автоматической расшифровкой. Заходишь по ссылке в браузере, говоришь, а после разговора получаешь протокол: кто что сказал и когда, поимённо, без ручной расшифровки. Записи и протоколы доступны участникам созвона по пропуску.

Сделан для экосистемы Монтелиберо — сообщества, где созвоны идут постоянно, а решения из них теряются, потому что никто не ведёт стенограмму. Montevoice закрывает именно это: не «ещё одна звонилка», а звонилка, после которой остаётся текст.

Работает: https://montevoice.aination.center/

Что внутри

  • app.py — сервер комнат: раздаёт вход, водит бота-рекордера, ведёт поканальную запись (атрибуция говорящих без диаризации), собирает протокол и общую запись, отдаёт страницы.
  • asr_server_node.py — узел распознавания речи: принимает звук по внутренней сети, возвращает сегменты. Считает на своей машине, наружу не ходит.
  • voicebot.py — голосовой участник-агент: слышит, думает, отвечает голосом.
  • chat_say.py — реплика в чат комнаты из внешнего процесса.
  • web/ — страницы входа и списка голосов.

Распознавание — faster-whisper (large-v3-turbo), медиа — LiveKit, синтез речи — piper и silero.

Почему свой, а не форк Jitsi

Честный ответ: потому что нужной части в готовых звонилках нет, а есть она в наших руках. Jitsi, Mumble и прочие решают передачу звука — эту задачу мы не решаем вовсе, её решает LiveKit, который мы взяли готовым. Наша часть начинается после звука: поканальная запись без диаризации, протокол с поимённой атрибуцией и таймкодами, пропуска к записям, голосовой агент как полноправный участник с рукой и трибуной, пул машин для расшифровки. Это надстройка, а не альтернатива.

Обоснованный упрёк к нам другой: надстройку такого рода правильно делать плагином к зрелому проекту, а не отдельным сервисом — тогда ею смогут пользоваться не только мы. Упрёк принят к рассмотрению всерьёз; если у вас есть довод за конкретную архитектуру, заведите задачу.

Замечания и предложения

Трекер здесь же: задачи. Заводите — читаются.

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

Состояние

Работающий сервис, не законченный продукт. Открытые направления и известные дефекты — в задачах. Установка «в один клик» не описана: сервис пока разворачивался только руками и на своих машинах. Если это нужно вам — скажите, опишу.

Лицензия

AGPL-3.0. Сетевой сервис на этом коде обязан оставаться открытым — иначе открытость превращается в одностороннюю выгоду.