43 KiB
Talkis
Открытый десктопный голосовой ввод для людей, которые каждый день пишут в рабочих приложениях.
Read in English · Сайт · Последний релиз
Что такое 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
.cmdshim. - Исправлена линковка 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 |
Показать остальные демо прямо здесь
Диктовка письма
Заметки
Запись созвона
Транскрибация файла
Локальные модели и API-ключи
Как это работает
- Поставьте фокус в поле, куда нужно вставить текст.
- Удерживайте
Shift + Command + Spaceна macOS. - Говорите естественно.
- Отпустите горячую клавишу.
- 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-1gpt-4o-transcribegpt-4o-mini-transcribe
Локальные модели
Установите и запустите управляемые Talkis локальные модели из настроек. Локальный режим может держать на компьютере и транскрибацию, и summary транскриптов: STT-модели обрабатывают аудио, а отдельная локальная текстовая LLM отвечает за summary и обработку промптом.
Управляемые локальные рантаймы:
- Whisper, GigaAM GGUF, NVIDIA Parakeet GGUF и Qwen ASR GGUF через единый
transcribe.cppruntime, endpoint по умолчаниюhttp://127.0.0.1:8000 - Summary через встроенный OpenAI-совместимый
talkis-llmruntime с 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 не содержит вредоносного ПО»:
- В диалоге нажмите «Готово» (не «Переместить в Корзину»).
- Откройте Системные настройки → Конфиденциальность и безопасность, пролистайте вниз до строки «Talkis заблокирован…» и нажмите «Всё равно открыть».
- Подтвердите паролем или Touch ID и ещё раз нажмите «Открыть».
Либо одной командой в Терминале (после переноса в «Программы»):
xattr -dr com.apple.quarantine /Applications/Talkis.app
Windows — синее окно «Система Windows защитила ваш компьютер»:
- Нажмите «Подробнее».
- Нажмите «Выполнить в любом случае».
При первом запуске выдайте нужные разрешения:
- доступ к микрофону для записи;
- 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во время разработки.
Документация продукта и архитектуры
- Архитектура режимов Облако/API/Локально — технический маршрут диктовки, файлов, созвонов, переводов, LLM и истории.
- Бизнес-требования Talkis — возможности пользователя, ожидаемое поведение, ограничения и критерии готовности.
- Принципы аудиопайплайна — обязательные инженерные правила для записи, STT, файлов и call-capture.
- Локальный STT runtime — устройство и контракт управляемого локального распознавания.
Разработка
Требования:
- 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.