Skip to content

Repository files navigation

ghost

Локальный суфлёр для живого разговора. Слушает звук собеседника и ваш микрофон, распознаёт речь на месте (whisper.cpp) и показывает поверх экрана короткую подсказку — что можно сказать в ответ. Разговор пишется в сессию для последующего разбора.

Всё считается и хранится локально: на внешнюю сторону уходят только запросы к выбранной языковой модели.

Возможности

  • Прозрачный оверлей поверх любого приложения, своя попиксельная альфа.
  • Распознавание речи на месте, отдельно по двум каналам (собеседник / вы).
  • Автоматический режим: реплики распознаются и уходят в модель сами; ставится на паузу, не прерывая записи.
  • Явные начало и конец сессии: звук (стерео) и построчный журнал ложатся в sessions/<id>/ вместе со снимком настроек meta.json.
  • Переразбор записанных сессий текущими настройками — для подбора порогов распознавания и нарезки офлайн (examples/разбор.rs).
  • Оценка «подсказка мимо» — единственная разметка качества в записи.
  • Различение голосов собеседников, глоссарий терминов как затравка для распознавания, сверка произнесённого вслух с подсказкой.

Требования для сборки (Windows)

  • Rust (stable), MSVC toolchain.
  • LLVM / libclang — для bindgen в whisper-rs-sys.
  • CMake — для сборки whisper.cpp.
  • Vulkan SDK — бэкенд ggml для распознавания на видеокарте.

Пути к этим инструментам задаются в .cargo/config.toml. Скопируйте образец и поправьте под свою машину:

copy .cargo\config.example.toml .cargo\config.toml

Из-за предела MAX_PATH в 260 символов каталог сборки вынесен в короткий путь (target-dir = "C:/gt"); при желании то же самое задаётся переменной CARGO_TARGET_DIR.

Сборка и запуск

cargo build --release

или build.cmd — он же снимает запущенный процесс и обновляет ghost.exe рядом с репозиторием.

Перед первым запуском:

  1. copy .env.example .env и впишите ROUTERAI_KEY — ключ доступа к провайдеру модели.
  2. Положите модели в models/ (в репозиторий они не входят):
    • ggml-large-v3-turbo-q5_0.bin — whisper (whisper.cpp / Hugging Face);
    • spk-resnet34.onnx — различение голосов (необязательно, без неё оно просто выключается).
  3. При первом запуске рядом появится config.toml со значениями по умолчанию (образец — config.example.toml). Правьте руками или в окне настроек.

Переразбор записи

cargo run --release --example разбор -- sessions/<id>

Прогоняет обе дорожки записи тем же распознаванием и нарезкой, что и вживую, но с текущими настройками — чтобы подбирать пороги на уже случившихся разговорах, а не на следующем живом.

Тесты

cargo test --release

Названия тестов — предложения на русском: отчёт читается как список зафиксированного поведения. Подробнее — в TESTS.md.

Релизы

Сборка релиза под Windows собирается автоматически при пуше тега вида v1.2.3 (см. .github/workflows/release.yml). Готовый ghost.exe прикладывается к GitHub Release. Модели в сборку не входят — их нужно положить в models/ отдельно.

About

Локальный суфлёр для живого разговора: распознавание речи на месте, прозрачный оверлей, запись и разбор сессий

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages