97 lines
3.8 KiB
Markdown
97 lines
3.8 KiB
Markdown
# 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
|
|
|
|
```text
|
|
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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
- Tauri 2 commands: https://v2.tauri.app/develop/calling-rust
|
|
- Tauri 2 system tray: https://v2.tauri.app/learn/system-tray
|
|
- Tauri 2 sidecars: https://v2.tauri.app/develop/sidecar
|
|
- Tauri GitHub pipelines: https://v2.tauri.app/distribute/pipelines/github
|
|
- Tauri Linux prerequisites: https://v2.tauri.app/start/prerequisites
|
|
- NVIDIA Parakeet v3 model card: https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3/blob/main/README.md
|
|
- cstr Parakeet GGUF: https://huggingface.co/cstr/parakeet-tdt-0.6b-v3-GGUF
|