talkis/README.ru.md
2026-10-02 10:48:19 +03:00

43 KiB
Raw Permalink Blame History

Иконка приложения Talkis

Talkis

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

Read in English · Сайт · Последний релиз

Talkis диктует запрос для разработки в редакторе кода

Что такое Talkis?

Talkis - десктопное приложение для преобразования речи в текст на Tauri, React, TypeScript и Rust. Оно работает как маленький плавающий виджет: записывает голос по горячей клавише, распознает речь, при необходимости улучшает текст через LLM и вставляет результат в активное приложение.

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

Включите «Сворачивать при запуске» в настройках, чтобы при следующем запуске основное окно Talkis оставалось скрытым. Горячие клавиши и значок в строке меню или трее продолжат работать; видимость виджета настраивается отдельно. Окно откроется, если нужно завершить первоначальную настройку или восстановить необходимые разрешения. По умолчанию эта опция выключена.

Talkis сделан для повседневной работы: IDE, чаты, заметки, CRM-поля, письма, файлы и транскрипты созвонов.

Главное

  • Диктовка в любое активное текстовое поле через глобальную горячую клавишу.
  • Режим закрепленной записи для длинной речи без удержания клавиш.
  • Автоматическая вставка очищенного текста после распознавания.
  • Работа через облако, собственный API-ключ или локальные STT- и текстовые LLM-модели.
  • Синхронный перевод системного звука через Talkis Cloud или проверенное Realtime API-подключение, с опциональной озвучкой перевода на macOS.
  • Перевод выделенного текста по отдельной настраиваемой глобальной горячей клавише.
  • Транскрибация аудио и видео из вкладки Файлы или через перетаскивание файла на виджет.
  • Запись созвонов на macOS, Windows и Linux с отдельными дорожками микрофона и системного аудио.
  • Локальная история голосовых записей, файловых транскрибаций, созвонов и синхронных переводов.
  • Чат с настроенной текстовой моделью для поиска и анализа записей Talkis, саммари созвонов, поиска задач и перевода текста.
  • Единый управляемый локальный STT runtime transcribe.cpp для Whisper, GigaAM, Qwen ASR, NVIDIA Parakeet и локальные summary через управляемый GGUF LLM runtime.
  • Нативные сборки для macOS, Windows и Linux.

Последние изменения

v0.4.10

  • В настройках можно скрыть плавающий виджет на рабочем столе, сохранив диктовку по горячим клавишам. Выбор сохраняется после перезапуска и учитывается при автоматическом восстановлении виджета, действиях из трея и повторном запуске программы.
  • Добавлена опция «Сворачивать при запуске» (по умолчанию выключена): со следующего запуска основное окно остаётся скрытым, а значок в строке меню или трее и горячие клавиши продолжают работать. Первоначальная настройка, восстановление обязательных разрешений и ошибка запуска показывают окно.
  • У обеих новых настроек оставлены компактные строки с переключателями без поясняющих описаний. При ошибке сохранения остаётся прежний выбор; изменение настроек моделей сохраняет параметры отображения окон.

v0.4.9

  • Запуск микрофона ограничен тремя секундами, а начало и завершение нативной диктовки вынесены из потока интерфейса: зависший аудиодрайвер после простоя или сна больше не должен блокировать управление Talkis. Для диктовки и созвонов сохранён резервный способ записи через WebView; синхронный перевод сообщает о превышении времени запуска.
  • Обычная диктовка обнаруживает ошибку драйвера или прекращение передачи звука, распознаёт записанную до обрыва речь и предупреждает, что последующие слова не записаны. Зависание при остановке драйвера также сохраняет уже записанное аудио, а следующая запись заново открывает микрофон.
  • Если нативный микрофон запускается слишком поздно, его поток и сеанс распознавания освобождаются. Для созвонов используется отдельный файл нативной дорожки, поэтому запоздалый ответ драйвера не перезапишет резервную запись.
  • Аварии Windows и ошибки Rust теперь оставляют сведения о сборке и процессе в ~/.talkis/talkis.log; события запуска и выхода помогают отличить закрытие программы от обрыва записи. Заявленное закрытие после сна на Windows 10 ещё требует проверки на затронутых компьютерах.
  • Восстановлена кнопка ручной записи на виджете Windows, уменьшено повторение ошибок опроса недоступного рабочего стола и снижен стандартный контекст локальной текстовой модели до 4096 токенов для экономии памяти при одновременном распознавании речи.

v0.4.8

  • Обновление на Windows теперь завершает Talkis и все процессы локальных моделей до замены файлов, предотвращая ошибку Error opening file for writing ... talkis-stt.exe и частичную установку новой версии.
  • При запуске Talkis очищает оставшиеся Windows-sidecar-процессы и завершает несовместимый или зависший STT runtime, поэтому старые процессы больше не накапливаются на разных портах и не блокируют следующие обновления.
  • Локальная транскрибация теперь всегда передаёт в runtime выбранную локальную модель, даже если в API-адаптере осталось удалённое значение вроде gpt-4o-transcribe; backend дополнительно выбирает реально установленную локальную модель для мигрированных настроек.
  • Запись голоса больше не ждёт до 15 секунд запуска локального потокового runtime: после короткого ожидания микрофон начинает записывать сразу, а распознавание при необходимости выполняется обычным способом после отпускания клавиш.
  • Windows-проверка релиза теперь требует NSIS-хук очистки для установки и удаления и проверяет все имена встроенных процессов, чтобы защита обновления не могла случайно исчезнуть из сборки.

v0.4.7

  • Установка локальной STT-модели на Windows теперь начинает скачивание до запуска runtime, читает установленные модели прямо с диска, прогревает runtime в фоне, обходит системный прокси для локальных запросов и сохраняет вывод sidecar-процесса для диагностики.
  • Команды разработки на Windows автоматически находят Rust и C++-инструменты Visual Studio и используют единый статический runtime для приложения и sidecar-процессов локальных моделей, устраняя ошибки отсутствующего rustc и линковщика при bun run tauri dev.
  • Клик по плавающему виджету на Windows открывает Talkis, переключение режимов распознавания и перевода сохраняется корректно, а окно настроек использует нативный Windows-заголовок в стиле Talkis с надёжными системными кнопками.
  • Ошибки виджета теперь показываются в единой раскрываемой строке состояния под элементами управления, с действиями копирования и раскрытия; сочетания буфера обмена на Windows используют физические клавиши и работают при нелатинской раскладке.
  • Плавающий виджет стал постоянным: Talkis предотвращает случайное закрытие и автоматически возвращает скрытое, свёрнутое, уничтоженное или оказавшееся за пределами экрана окно, не забирая фокус у активного приложения.
  • Запись созвонов на macOS больше не добавляет устройство вывода в агрегат захвата и не открывает конкурирующий WebView-микрофон, если доступен нативный захват, поэтому громкость звонка и маршрутизация микрофона не меняются.
  • Исправлен отступ онбординга на Windows, из-за которого над мастером настройки отображалась часть главного экрана; после скачивания модели теперь явно показывается этап её активации.

v0.4.6

  • Исправлено аварийное закрытие Talkis на Windows без сообщения об ошибке при первой диктовке после длительного простоя или сна системы.
  • Нативный захват микрофона теперь использует один долгоживущий cpal/WASAPI owner-поток между сессиями записи и не обращается повторно к COM-перечислителю аудиоустройств после завершения создавшего его потока.
  • Ошибки жизненного цикла нативного рекордера записываются в лог и передаются существующему WebView fallback вместо необрабатываемого обрыва сценария диктовки.

v0.4.5

  • Облачная диктовка теперь ждёт точный итоговый batch-транскрипт всей записи и не показывает менее качественный realtime-текст, который мог отличаться от вставленного результата.
  • Короткие, тихие и шумные записи не вставляют шаблонные отказы модели, случайные фрагменты на другом языке и другие низкоуверенные галлюцинации.
  • Talkis Cloud остаётся выбранным после входа и повторного открытия раздела «Модели»: устаревшие локальные STT endpoint и ключ очищаются вместо скрытого переключения приложения в другой режим.
  • Баланс, расход и резерв облака во всём desktop-приложении отображаются целыми токенами.
  • Облачная транскрибация файлов с разделением по говорящим поддерживает длинные встречи через обновлённый серверный маршрут, а приложение отличает настоящий таймаут от других ошибок diarization и сохраняет исходную диагностическую ошибку.

v0.4.4

  • Существующий чат с моделью переведён из режима разработки в продуктовую навигацию на macOS, Windows и Linux.
  • В системный трей добавлен прямой переход в «Чат», а маршрут ?tab=chat теперь доступен в production-сборке.
  • Чат умеет искать локальные записи Talkis со ссылками на источники, делать саммари последних созвонов и транскриптов, находить задачи, переводить текст и работать через настроенную облачную, API- или локальную текстовую модель.
  • Сообщения чата остаются на устройстве, а существующая история dev-чата сохраняется после продуктового обновления.

v0.4.3

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

v0.4.2

  • Добавлен пошаговый первый запуск: выдача разрешений, скачивание и активация локальной STT-модели, затем проверка диктовки настроенной глобальной горячей клавишей.
  • Логика захвата горячей клавиши диктовки переиспользуется в онбординге и настройках; живой предпросмотр клавиш оставлен в онбординге, сохранены применение без перезапуска и проверка конфликтов.
  • Карточки локальных моделей приведены к общему паттерну для онбординга и настроек; активную локальную текстовую модель теперь можно отключить без удаления скачанного файла.
  • Добавлен управляемый переводчик OPUS-MT с английского на русский, выбор обратной языковой пары как fallback и удаление reasoning-блоков модели из результата перевода выделенного текста.
  • Усилена маршрутизация микрофона для диктовки и записи созвонов, batch-only локальные STT-модели больше не наследуют API streaming, а пустая запись не оставляет онбординг в состоянии обработки.

v0.4.1

  • Добавлена GigaAM v3 E2E RNNT как управляемая локальная модель распознавания русской речи; файловая транскрибация использует короткие фрагменты в пределах 25-секундного окна модели.
  • Исправлен локальный перевод выделенного текста: многофразный ввод теперь переводится проверяемым CTranslate2 batch без потери текста после первого предложения.
  • Установка локальных моделей автоматически повторяется при кратких сетевых сбоях Hugging Face, а карточка модели сохраняет установленное состояние во время обновления runtime.
  • Текст созвона теперь появляется в реальном времени прямо в блоке результата, а отдельные дорожки микрофона и системного звука продолжают сохраняться для восстановления и финального уточнения.
  • Добавлен постоянный системный трей с действиями «Открыть Talkis» и «Выйти»; при выходе также завершаются управляемые локальные sidecar-процессы.
  • Windows-релиз теперь обязательно проверяет основной файл приложения и все встроенные sidecar-файлы как x86-64 PE, а рядом со стабильным установщиком публикуется контрольная сумма SHA-256.

v0.4.0

  • Добавлен синхронный перевод системного звука через Talkis Cloud или проверенные OpenAI/Gemini Realtime API-адаптеры; локальный режим по-прежнему доступен для остальной функциональности, но realtime-перевод требует Cloud или API.
  • Добавлена опциональная озвучка перевода на macOS с исключением звука Talkis из захвата и приглушением оригинальной дорожки для защиты от аудиопетли.
  • Добавлена потоковая диктовка для поддерживаемых локальных и API STT-моделей: промежуточный текст появляется во время речи, финальный результат при необходимости уточняется batch-запросом.
  • Захват горячих клавиш диктовки и перевода выделенного текста переведён на единый transactional flow: применение после отпускания аккорда, проверка конфликтов, rollback, защита от устаревших запросов и регистрация без перезапуска.
  • Улучшена плавающая плашка текста: увеличена ширина потокового режима, уплотнены реплики, добавлены тёмная тема, перенос мышью, немедленная замена новым запросом и автозакрытие через десять секунд после финального результата.
  • Исправлены перевод выделенного текста, восстановление разрешений после перезапуска, обрезание виджета, меню истории у нижней границы, воспроизведение аудио синхронного перевода и сохранение настроек размера/streaming.
  • В файловых транскриптах первый обнаруженный говорящий отображается как Вы, остальные как Гость N; редактирование имён больше не теряет курсор и обновляет все реплики говорящего.
  • В записи созвона сохраняются и синхронно воспроизводятся отдельные дорожки микрофона и системного звука, чтобы в истории были слышны обе стороны разговора.
  • Экспериментальный dev-чат получил универсальный поиск по локальной истории: лексическое и offline-семантическое ранжирование работает без embeddings, а совместимый embedding backend может дополнительно повысить полноту поиска.
  • Добавлен стабильно подписываемый macOS dev app runner, чтобы TCC-разрешения сохранялись между локальными пересборками при наличии Apple Development сертификата.

v0.3.12

  • Исправлена Windows frontend release-сборка: Vite теперь запускается через JavaScript entrypoint пакета, без зависимости от platform-specific .cmd shim.
  • Исправлена линковка Windows release bundle: сборка использует static MSVC CRT, который ожидает встроенный C++ translation runtime.
  • Этот release candidate должен пройти Release Preflight на macOS, Windows и Linux до создания tag.

v0.3.11

  • Исправлен Windows release workflow: sidecars, подготовленные во время release checks, теперь переиспользуются без повторного запуска подготовки.
  • Подготовка sidecar стала идемпотентной: копирование пропускается, если source и destination binaries уже совпадают.

v0.3.10

  • Усилена нормализация Windows-путей в Vite wrapper, который используется release-сборками.
  • GitHub Actions release-сборка разделена на явные шаги sidecar, frontend и native bundle, чтобы Windows packaging failures были видны без доступа к raw logs.

v0.3.9

  • Исправлена Windows release-сборка: Vite wrapper теперь вычисляет корень проекта через fileURLToPath, без некорректных путей вида /D:/... на GitHub Actions Windows runners.
  • Повторно публикуются изменения v0.3.8 с исправлением Windows bundle, чтобы release workflow собрал артефакты для macOS, Windows и Linux.

Демонстрация

В репозиторий добавлены те же GIF-демо, которые используются на сайте Talkis.

Демо Что показывает
Диктовка кода Короткий запрос для разработки, вставленный в редактор
Диктовка письма Превращение речи в деловое письмо
Диктовка заметки Быстрые заметки и задачи
Запись созвона Отдельный сценарий записи разговора из виджета
Транскрибация файла Обработка аудио или видеофайла
Выбор моделей Локальные модели и собственный API
Показать остальные демо прямо здесь

Диктовка письма

Talkis диктует письмо

Заметки

Talkis диктует заметку

Запись созвона

Talkis записывает транскрипт созвона

Транскрибация файла

Talkis транскрибирует аудио или видеофайл

Локальные модели и API-ключи

Talkis выбирает локальную модель или собственный API-ключ

Как это работает

  1. Поставьте фокус в поле, куда нужно вставить текст.
  2. Удерживайте Shift + Command + Space на macOS.
  3. Говорите естественно.
  4. Отпустите горячую клавишу.
  5. Talkis распознает, очистит и вставит текст.

Горячая клавиша, микрофон, язык, источник моделей, стиль обработки текста и тема приложения настраиваются в настройках.

Режимы работы

Возможность Облако API Локально
Диктовка, файлы и история Да Да Да
Потоковая диктовка Нет; только итоговый batch Для проверенных моделей Для streaming-моделей
Перевод выделенного текста Да Да Да
Разделение по говорящим При доступной capability Через локальный diarization комплект Через локальный diarization комплект
Синхронный перевод Да Проверенные OpenAI/Gemini Realtime Нет
Summary и обработка промптом Да При настроенной LLM При выбранной локальной LLM

Полная маршрутизация данных, runtime-процессы, ограничения и точки отказа описаны в архитектуре режимов Облако/API/Локально. Проверяемое пользовательское поведение собрано в общих бизнес-требованиях.

Talkis Cloud

Войдите в Talkis Cloud и используйте распознавание без управления API-ключами. Запросы идут через proxy.talkis.ru. Облачная диктовка показывает состояния записи и обработки, а затем вставляет только итоговый batch-транскрипт всей записи; realtime-текст в Cloud-режиме намеренно недоступен. Для синхронного перевода proxy по-прежнему выдаёт авторизованному приложению короткоживущий Realtime credential; ключ провайдера не сохраняется в desktop-приложении.

Собственный API-ключ

Можно использовать OpenAI-совместимый STT endpoint и отдельный LLM endpoint для очистки текста. Во вкладке Модели также есть карточки API-адаптеров для поддерживаемых провайдеров.

Потоковая диктовка и синхронный перевод включаются только после успешной проверки точной конфигурации провайдера, модели, endpoint и ключа.

Поддерживаемые имена STT-моделей:

  • whisper-1
  • gpt-4o-transcribe
  • gpt-4o-mini-transcribe

Локальные модели

Установите и запустите управляемые Talkis локальные модели из настроек. Локальный режим может держать на компьютере и транскрибацию, и summary транскриптов: STT-модели обрабатывают аудио, а отдельная локальная текстовая LLM отвечает за summary и обработку промптом.

Управляемые локальные рантаймы:

  • Whisper, GigaAM GGUF, NVIDIA Parakeet GGUF и Qwen ASR GGUF через единый transcribe.cpp runtime, endpoint по умолчанию http://127.0.0.1:8000
  • Summary через встроенный OpenAI-совместимый talkis-llm runtime с GGUF-моделями, например Qwen2.5 Instruct
  • Speaker diarization, endpoint по умолчанию http://127.0.0.1:8003

Если порт по умолчанию занят, Talkis запускает управляемый рантайм на свободном fallback-порту и сохраняет фактический endpoint в настройках.

Установка

Скачайте последнюю сборку из GitHub Releases:

Если ОС блокирует первый запуск

Talkis пока распространяется без платной подписи кода, поэтому Gatekeeper (macOS) и SmartScreen (Windows) показывают предупреждение о «непроверённом» приложении. Это не вирус: исходный код открыт (AGPL-3.0), сборки собираются публичным GitHub Actions из этого репозитория. Как открыть:

macOS — «Не удалось проверить, что приложение Talkis не содержит вредоносного ПО»:

  1. В диалоге нажмите «Готово» (не «Переместить в Корзину»).
  2. Откройте Системные настройки → Конфиденциальность и безопасность, пролистайте вниз до строки «Talkis заблокирован…» и нажмите «Всё равно открыть».
  3. Подтвердите паролем или Touch ID и ещё раз нажмите «Открыть».

Либо одной командой в Терминале (после переноса в «Программы»):

xattr -dr com.apple.quarantine /Applications/Talkis.app

Windows — синее окно «Система Windows защитила ваш компьютер»:

  1. Нажмите «Подробнее».
  2. Нажмите «Выполнить в любом случае».

При первом запуске выдайте нужные разрешения:

  • доступ к микрофону для записи;
  • Accessibility на macOS для автоматической вставки текста;
  • Screen and System Audio Recording на macOS для записи созвонов.

Транскрибация файлов

Вкладка Файлы поддерживает транскрибацию аудио и видео до 8 ГБ. Файлы обрабатываются через нативный path-based pipeline, поэтому большие файлы не загружаются в память WebView.

Talkis использует встроенный ffmpeg sidecar для видео, неподдерживаемых аудиоформатов, чанкинга и подготовки diarization. Готовые 16 kHz mono PCM WAV файлы могут пропускать конвертацию для локального STT.

Разделение по говорящим доступно через Talkis Cloud или через локальный Whisper плюс локальный diarization runtime - в зависимости от выбранного режима.

Запись созвонов

Запись созвона собирает две дорожки:

  • Вы из микрофона.
  • Созвон из системного аудио.

Системный звук захватывается через Core Audio на macOS, WASAPI loopback на Windows и PipeWire monitor stream на Linux. На Linux нужен запущенный PipeWire и активное устройство вывода.

Запись появляется в истории сразу после запуска, а аудиодорожки и черновик текста регулярно сохраняются во время разговора. При streaming-модели текущий текст виден во вкладке Транскрибация; после остановки Talkis уточняет его по сохранённым дорожкам. Если приложение было аварийно закрыто, при следующем запуске оно восстанавливает доступное аудио и последнюю сохранённую версию текста. GigaAM и другие batch-модели распознают разговор после остановки записи.

Синхронный перевод

Включите кнопку во вкладке Перевод, выберите целевой язык и запускайте перевод из плавающего виджета. В режиме Cloud используется proxy Talkis, в режиме API — проверенный OpenAI или Gemini Realtime adapter. Локальный режим не предоставляет синхронный перевод, но локальная диктовка, перевод выделенного текста, транскрибация файлов, summary и остальные локальные функции продолжают работать.

Потоковая плашка объединяет последовательные части одной реплики и сохраняет завершённую сессию в локальной истории. На macOS OpenAI-backed сессия также может озвучивать перевод, приглушая оригинальный звук.

Приватность

  • В облачном режиме запросы идут через proxy.talkis.ru.
  • В режиме собственного ключа запросы идут напрямую в настроенные endpoints.
  • В локальном режиме транскрибация остается на вашем компьютере.
  • API-ключи и device token хранятся локально в настройках приложения.
  • История голосовых записей и файловых транскрибаций хранится локально.
  • Talkis не хранит аудио на своих серверах дольше самого API-вызова.

Диагностика

  • Текст не вставляется: проверьте macOS System Settings -> Privacy & Security -> Accessibility и убедитесь, что Talkis включен.
  • В распознавании появляются неожиданные иностранные символы: выберите фиксированный язык, например ru или en, вместо auto.
  • Локальный STT возвращает ошибки модели: откройте Модели -> Локально, убедитесь, что модель установлена и выбрана, затем переустановите ее, если runtime сообщает о потерянных файлах.
  • Запись созвона не стартует на macOS: выдайте разрешения Microphone и Screen and System Audio Recording, затем перезапустите Talkis.
  • Нужна подробная диагностика: откройте ~/.talkis/talkis.log или запустите bun run logs во время разработки.

Документация продукта и архитектуры

Разработка

Требования:

  • Bun 1.2.x
  • Rust stable
  • системные зависимости Tauri v2

Установка зависимостей и запуск:

bun install
bun run prepare:sidecars
bun run tauri dev

Полезные команды:

bun x tsc --noEmit
cargo check --manifest-path src-tauri/Cargo.toml
bun run check:release
bun run tauri build
bun run build:release:macos
bun run logs

На Ubuntu/Debian сначала установите нативные зависимости Tauri и сборки sidecar-ов:

sudo apt update
sudo apt install -y libwebkit2gtk-4.1-dev libayatana-appindicator3-dev libxdo-dev libasound2-dev librsvg2-dev patchelf clang libclang-dev cmake

Структура проекта

src/                  React и TypeScript frontend
src/windows/widget/   Плавающий widget window
src/windows/settings/ Окно настроек и вкладки
src/lib/              Store, auth, permissions, logging, shared clients
src-tauri/src/        Rust backend, Tauri commands, audio, paste, STT
src-tauri/icons/      Иконки приложения
docs/                 Архитектура, бизнес-требования, release docs, audio rules, demo media
scripts/              Release и sidecar preparation scripts

Перед изменениями в аудио, транскрибации, локальном STT, файловой обработке или call-capture прочитайте docs/audio-pipeline-principles.md.

Технологии

  • Tauri v2
  • React 19
  • TypeScript
  • Rust
  • cpal native microphone recording
  • OpenAI-compatible STT и LLM APIs
  • Managed local STT sidecars
  • Bundled ffmpeg sidecar

Как помочь проекту

Issues и pull requests приветствуются. Перед изменением аудио-поведения прочитайте документ про audio pipeline и сохраняйте достаточно логов для отладки recorder stats, ffmpeg timing, выбора STT endpoint, прогресса чанков и уровней call-capture.

Конвенции проекта:

  • Тексты интерфейса - на русском.
  • Код и комментарии - на английском.
  • Package manager - Bun.
  • Настройки сохраняются сразу после изменения.
  • Release workflow описан в rules/release.rule.md.

Лицензия

Talkis распространяется по лицензии GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).

Эта лицензия сохраняет десктопное приложение open-source и также требует доступности исходного кода для измененных версий, которые предоставляются пользователям по сети, что важно для связанной поверхности Talkis Cloud/API.