Evandro c9f0147c0d fix: ensure Windows finds sidecar DLLs by setting PATH and CWD
The sidecar was crashing (exitCode: null) when invoked from Tauri
because Windows couldn't locate onnxruntime.dll in the sidecar directory.

Added setup_cmd() helper that:
- Adds the sidecar directory to the child process PATH
- Sets the child process CWD to the sidecar directory

This ensures Windows can find all required DLLs when Tauri invokes
the sidecar, matching the behavior of manual command-line execution.
2026-06-11 14:59:37 -03:00
2026-06-11 00:51:52 -03:00
2026-06-11 01:19:07 -03:00

Transcript Desktop

Aplicativo desktop de transcrição para Windows e Linux, construído com Tauri + Rust + TypeScript. O objetivo é oferecer ditado/transcrição offline-first com revisão obrigatória em modal antes de inserir texto em outro aplicativo.

Estado atual

Este repositório contém um MVP nativo funcional:

  • app Tauri 2 funcional;
  • modal editável em TypeScript sem framework pesado;
  • backend Rust modular;
  • catálogo e download do modelo cstr/parakeet-tdt-0.6b-v3-GGUF em Q8;
  • captura real de microfone em WAV via CPAL;
  • execução do sidecar CrispASR/Parakeet;
  • hotkey global Ctrl+Shift+Space;
  • inserção híbrida por clipboard + paste automático no Windows/X11 quando disponível;
  • fallback manual no Wayland;
  • tray/system tray básico;
  • CI, build e release via GitHub Actions.

Arquitetura

src/                  Frontend TypeScript/CSS
src-tauri/src/
  audio/              Captura de microfone e gravação WAV
  transcription/      Contratos, CrispASR sidecar e API compatível com OpenAI
  injection/          Clipboard, paste automático e fallback manual
  models/             Catálogo do modelo offline
  settings/           Configuração padrão
  tray.rs             Menu da bandeja do sistema
  ui_commands.rs      Comandos Tauri expostos ao frontend
  app_state.rs        Estado compartilhado mínimo

A regra de design é manter arquivos pequenos, responsabilidades claras e zero overengineering. O app começa com contratos e stubs explícitos para as partes nativas mais arriscadas.

Modelo offline principal

  • Repositório: cstr/parakeet-tdt-0.6b-v3-GGUF
  • Arquivo: parakeet-tdt-0.6b-v3-q8_0.gguf
  • Quantização: Q8_0
  • Tamanho registrado no catálogo: 745121600 bytes
  • Modelo base: NVIDIA Parakeet TDT 0.6B v3
  • Idioma: detecção automática; português incluído no conjunto suportado pelo modelo base.

O modelo não deve ser embutido no instalador principal. A estratégia recomendada é instalar o app leve e baixar o GGUF pelo gerenciador de modelos.

Sidecar CrispASR

O app chama por padrão o binário parakeet-main com:

parakeet-main -m <modelo.gguf> -f <audio.wav> -t <threads>

Para o modelo v3, o projeto CrispASR recomenda compilar o target parakeet-main no branch parakeet. O app limita automaticamente o número de threads a no máximo 4 para manter compatibilidade com PCs simples.

Enquanto o binário não estiver no PATH ou empacotado como sidecar, a transcrição local retorna erro claro após a gravação.

Compatibilidade Windows/Linux

  • Windows: clipboard + tentativa de Ctrl+V via SendKeys.
  • Linux X11: clipboard + tentativa de Ctrl+V via xdotool quando instalado.
  • Linux Wayland: suporte parcial por limitação de segurança dos compositors. O fallback seguro é copiar o texto e orientar o usuário a colar manualmente.

Comandos locais

npm install
npm run typecheck
npm run test -- --run
npm run build
cargo test --manifest-path src-tauri/Cargo.toml
npm run tauri:build

CI/CD

Workflows:

  • .github/workflows/ci.yml: valida PRs e pushes em main.
  • .github/workflows/build.yml: gera bundles Windows/Linux em push para main e manualmente.
  • .github/workflows/release.yml: publica GitHub Releases em tags v*.*.*.

A lógica fica em comandos npm/cargo para facilitar migração futura para GitLab CI.

Fontes técnicas usadas

S
Description
Ditado offline para Windows e Linux com Tauri, Rust e Whisper
Readme
497 MiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 66.5%
TypeScript 21.6%
JavaScript 9.1%
CSS 2.5%
HTML 0.3%