Skip to content

Repository files navigation

Локальный сервис транскрибации

Многопользовательский сервис принимает .webm, локально запускает noScribe, а затем по желанию определяет видимую подпись активного говорящего на полных кадрах встречи через настраиваемый OpenAI-compatible сервис. По умолчанию используется RouterAI.

Возможности текущей версии

  • регистрация и вход по почте и паролю без подтверждения адреса;
  • отдельный список заданий для каждого пользователя;
  • потоковая загрузка .webm с другого компьютера на сервер;
  • очередь с одним активным процессом noScribe;
  • выбор языка, модели и количества говорящих;
  • статусы queued, running, completed, failed;
  • дата и время создания, запуска и завершения задания;
  • просмотр и скачивание готового HTML и manifest v2;
  • автоматический запуск в виде Windows-службы.
  • определение подписи плитки с зелёной рамкой во всём кадре, включая демонстрацию экрана;
  • быстрый режим по уникальным меткам S00/S01 и точный режим для каждой реплики;
  • явное согласие перед отправкой кадров (аудио и текст не передаются);
  • отдельный неизменяемый исходный HTML и новый HTML/JSON с атрибуцией;
  • сохранение рассчитанных подписей между входами: основной просмотр открывает HTML с именами, исходный вариант с S00/S01 доступен отдельно;
  • админка: общая статистика, расходы внешних моделей, каталог и настройки.
  • личная статистика внешних моделей для каждого пользователя;
  • выбор имени и URL провайдера, загрузка /models либо ручной ввод моделей.

Используемое ПО

Для локальной транскрибации сервис использует открытое приложение noScribe. noScribe не входит в этот репозиторий и должна быть отдельно установлена на сервере вместе с необходимыми моделями. Наш сервис запускает ее CLI и предоставляет сетевой интерфейс, очередь заданий и хранение результатов.

Быстрый запуск

uv sync --dev
Copy-Item .env.example .env
uv run transcription-service --host 127.0.0.1 --port 8000

Откройте http://127.0.0.1:8000.

Первого администратора создайте интерактивной командой:

uv run transcription-service --create-admin admin@example.com

Запуск в локальной сети

Слушайте все сетевые интерфейсы:

uv run transcription-service --host 0.0.0.0 --port 8000

Разрешайте порт в Windows Firewall только для профиля Private. На другом устройстве откройте http://<IP-компьютера>:8000, зарегистрируйтесь по электронной почте и паролю и войдите. Подтверждение почты в текущей локальной версии не требуется.

Конфигурация

Готовый пример находится в .env.example. Полное описание каждого параметра, допустимых значений и особенностей Windows-путей находится в docs/configuration.md.

По умолчанию используется:

  • C:\Program Files (x86)\noScribe\noScribe.exe;
  • язык ru;
  • модель precise;
  • один последовательный worker;
  • локальный каталог ./data.

Сервис вызывает noScribe через Windows ConPTY, без GUI, с HTML-выходом и таймкодами. На втором этапе быстрый режим выбирает репрезентативные кадры для каждой уникальной голосовой метки noScribe и заменяет её во всех репликах. Точный режим отдельно проверяет кадры каждой реплики. Vision-модель ищет зелёную рамку активного говорящего и читает подпись плитки буквально; при конфликте кадров результат остаётся unknown для ручной проверки.

Доступ к заданиям защищен пользовательской сессией в HttpOnly cookie. Пароли сохраняются только как scrypt-хеши, а каждый пользователь видит только собственные задания. Срок сессии задается через TRANSCRIPTION_SESSION_TTL_DAYS; после настройки HTTPS включите TRANSCRIPTION_COOKIE_SECURE=true.

Проверка

uv run pytest
uv run ruff check .

Проверить установленный noScribe:

& 'C:\Program Files (x86)\noScribe\noScribe.exe' --help
& 'C:\Program Files (x86)\noScribe\noScribe.exe' --help-models

Автотесты используют fake runner и не отправляют запись в реальные модели. Для полного smoke-теста загрузите короткий несекретный .webm через интерфейс.

Данные и диагностика

  • SQLite: data/jobs.sqlite3.
  • Артефакты: data/jobs/<job-id>/.
  • Журнал noScribe: noscribe.log внутри каталога задания; он может содержать чувствительный текст и не отдается API.
  • Если health показывает noscribe: unavailable, проверьте путь и вывод --help-models.

Архитектура всех четырех частей описана в docs/architecture.md.

Полная инструкция по установке как Windows-службы, настройке брандмауэра и загрузке файлов с другого компьютера находится в docs/windows-server-deployment.md.

Обновление установленной Windows-службы с проверками, резервной копией и журналом:

.\deploy\windows-service\update-project.cmd

Документация

About

Транслитирация записи телемоста

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages