Ключевые тезисы.
4.
размера модели
44.1.
кГц захвата аудио
480×360.
размер окна
Стек
Теги
CosVoice (VoiceTranscriber) — кроссплатформенное десктопное приложение для локального распознавания речи и автоматической вставки текста в активное поле ввода. Tauri + React фронтенд с Rust-бэкендом, локальная обработка через Whisper.cpp (GGML-модели OpenAI Whisper), глобальная горячая клавиша Option+Space для быстрого вызова из любого приложения. Никаких облаков и сторонних сервисов — звук и расшифровка остаются на устройстве.
Проблема и контекст
Облачные сервисы распознавания речи (Google Speech-to-Text, Azure Speech, OpenAI Whisper API) удобны, но имеют три серьёзных ограничения для серьёзной работы: они зависят от интернета, требуют отправки аудио на чужой сервер (что критично для конфиденциальных данных и юридических документов), и стоят денег за каждую минуту. Встроенные системные решения (macOS Dictation) часто плохо работают с русским языком и не дают контроля над моделью. CosVoice использует Whisper.cpp — оптимизированный порт OpenAI Whisper на C++ с GGML-моделями — для полностью локальной обработки, с возможностью выбора размера модели (tiny / base / small / medium) под баланс качества и скорости.
Что построено
Главный экран с кнопкой записи и живым индикатором состояния (recording → processing → injecting → result), результат расшифровки с действиями (копировать, вставить, новая запись), панель настроек с выбором размера модели и автовставкой. Под капотом: AudioRecorder на cpal захватывает микрофон 44.1 кГц, складывает в WAV-буфер, Transcriber передаёт буфер в Whisper.cpp через whisper-rs, TextInjector через macOS Accessibility API вставляет распознанный текст в активное поле любого приложения. Глобальная горячая клавиша Option+Space (через tauri-plugin-global-shortcut) делает приложение мгновенно доступным.
Архитектура
Frontend — React 19.1 + TypeScript на Vite 7. Минималистичный дизайн: окно 480×360 без декораций, AlwaysOnTop, градиент indigo-purple, реагирующий на статус. Интерфейс на русском. Backend — Rust + Tauri 2.10: AudioRecorder (`audio.rs`) на cpal 0.15, Transcriber (`transcribe.rs`) на whisper-rs 0.14 с автозагрузкой моделей из HuggingFace, TextInjector (`inject.rs`) через системные API, AppState (`state.rs`) для координации компонентов. Используется hound 3.5 для работы с WAV-файлами. Tauri-плагины: global-shortcut, dialog, opener, tray-icon.
Ключевые особенности
- Полностью локальная обработка — звук и расшифровка не покидают устройства
- Поддержка русского языка — Whisper хорошо понимает русскую речь даже на маленьких моделях
- Четыре размера модели (tiny / base / small / medium) — пользователь выбирает баланс качества и скорости
- Глобальная горячая клавиша Option+Space — мгновенный доступ из любого приложения
- Автовставка распознанного текста в активное поле через macOS Accessibility API
- Системный трей и сворачивание окна — приложение не мешает рабочему процессу
- Поддержка транскрипции аудиофайлов через ffmpeg (опционально)
Статус
Версия 0.1.0, ранняя alpha (Initial commit 2026-05-11). Платформа — macOS 12.0+. Активная разработка через GitHub Project #23. Доменная область чёткая, концепция работает, базовый UX готов, дальнейший roadmap — расширение поддерживаемых платформ (Linux, Windows), VAD (Voice Activity Detection) для автоостановки записи, словарь технических терминов, инкрементальная транскрипция в реальном времени.
Когда ты диктуешь в облако, ты диктуешь не только себе.