Skip to content
riiquePublic

About

Sonora — digitação por voz para Windows (Tauri 2 + React + Rust)

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Sonora: fale em qualquer aplicativo e o texto chega pronto no campo em foco.

Qualificação Windows Versão 2.3.0 Windows Tauri 2

Como funciona  ·  Pipelines  ·  Comece agora  ·  Arquitetura  ·  Documentação


Sonora é um aplicativo desktop de digitação por voz para Windows. Aperte um atalho global, fale, aperte de novo: o áudio é transcrito por motores em nuvem, opcionalmente refinado, e o texto é colado no campo que estava em foco, em qualquer aplicativo.

A janela principal é o estúdio onde você revisa gravações e ajusta o equipamento. No dia a dia, quem trabalha é o gadget: uma pílula preta, sempre no topo, que só acende quando você está no ar.

Quiet by default. Information appears when needed.


Como funciona

Fluxo do ditado: atalho, fala, pipeline, texto colado no campo em foco e registro no histórico.
Ctrl + B Inicia e encerra a gravação, de qualquer aplicativo
Ctrl + Q Cancela sem gerar texto novo
Ctrl + Shift + B Comando de voz sobre o texto selecionado

Os atalhos podem ser reconfigurados em Ajustes › Geral, onde também dá para escolher entre apertar ou segurar para falar.


Novidades desta versão

  • Ultrarrápido com provedor à escolha: OpenRouter (Groq fixo) ou Groq direto com a sua chave, com o mesmo modelo Whisper, o mesmo vocabulário e o mesmo refino.
  • Refinar com IA no Ultrarrápido: uma passada rápida de IA aplica vocabulário, estilo do aplicativo e contexto autorizado ao texto do Whisper. Pode ser desligada em Ajustes › Transcrição.
  • Comando de voz (Ctrl+Shift+B): selecione um texto, aperte o atalho e diga o que fazer (“deixa mais formal”, “traduz para inglês”). Sem seleção, o Sonora escreve o que você pedir.
  • Segurar para falar: em Ajustes › Geral › Atalhos, escolha entre apertar para alternar ou segurar enquanto fala.
  • Snippets no meio da frase: “meu perfil é snippet meu github” expande só o trecho do snippet.
  • Vocabulário que aprende: ao corrigir a mesma palavra duas vezes no Histórico, o Sonora oferece guardá-la.
  • Histórico explica o que aconteceu: cada ditado mostra o que foi aplicado (IA, vocabulário, style, snippet, offline) e o custo; o topo mostra o total do mês.
  • Sem internet: com o modelo local baixado (whisper.cpp), o ditado é transcrito no computador quando todos os provedores falham.
  • Atualização automática: novas versões publicadas no GitHub são instaladas ao abrir o app.
  • Removido: o caminho legado de motores (Deepgram e motor duplo), que não era mais executado.

Publicar uma versão (atualização automática)

  1. Uma única vez: em Settings › Secrets and variables › Actions do repositório, crie TAURI_SIGNING_PRIVATE_KEY (conteúdo da chave privada do updater) e TAURI_SIGNING_PRIVATE_KEY_PASSWORD. A chave pública correspondente está em src-tauri/tauri.conf.json.
  2. Suba a versão em package.json, package-lock.json, src-tauri/tauri.conf.json, src-tauri/Cargo.toml e no topo deste README.
  3. Crie e envie a tag da versão, por exemplo git tag v2.1.1 && git push origin v2.1.1.

O workflow Release gera o instalador assinado e o latest.json; as instalações existentes encontram a versão nova sozinhas.


Novo na versão 2.0

Sua voz, mais simples. Um retrato curto, suas expressões e hábitos de fala, com medições e configurações nos detalhes. O botão do retrato fica à vista com a quantidade de palavras que falta e é habilitado quando você pode gerar uma nova versão.

Silêncio tratado no computador. Uma gravação claramente sem voz mostra “Nenhuma voz encontrada” na barra e encerra sem enviar áudio nem colar texto. Falas curtas e baixas são preservadas por uma verificação conservadora.

Troca de aplicativo. O ditado usa o campo em foco ao parar, com identificação estável entre a gravação e a entrega, e orienta em português quando o campo muda depois.

Nova identidade. Sonora na interface, no executável e nos instaladores. Seus dados e perfis existentes continuam disponíveis.

→ Mudanças, compatibilidade e atualização da instalação anterior


Pipelines

Os quatro pipelines, do mais rápido ao mais preciso: Ultrarrápido, Rápido e preciso, Preciso e Ultrapreciso.

Escolha o equilíbrio entre velocidade e precisão em Configurações. Cada pipeline aceita um modelo customizado via Google AI Studio ou OpenRouter.

Modo Fluxo Sanitizer Fallback típico
Ultrarrápido Whisper via OpenRouter STT (Groq) ou Groq direto — —
Rápido e preciso Gemini (Files API ou inline) — Whisper (configurável)
Preciso Whisper ∥ upload → refine Gemini — Whisper ou Gemini puro
Ultrapreciso Whisper ∥ upload → sanitizer → Gemini JSON Texto sanitizado ou Whisper

No Ultrarrápido, escolha entre whisper-large-v3-turbo e whisper-large-v3, pelo OpenRouter (Groq fixo) ou direto na Groq com a sua chave. No OpenRouter, Chat Completions multimodal e Speech-to-Text dedicado são roteados separadamente.

Prompt universal. Os modelos Gemini multimodais recebem uma única systemInstruction que trata, trecho a trecho, conversa comum, programação e conteúdo acadêmico. Não é preciso escolher um tipo de conteúdo antes de falar.

FileTagging. Um botão em Configurações converte referências faladas e inequívocas a arquivos em menções como @src/components/Header.tsx. O Sonora prepara a menção no texto; a integração com o IDE ou chat fica a cargo do aplicativo de destino.


O que vem junto

Captura

  • Microfone por atalho global ou pelo botão na interface
  • Normalização sensível a ruído: ganho adaptativo limitado, pausas sem amplificar o ruído de sala, limiter em −3 dBFS e original preservado como .original.wav
  • Captura incremental com limite de 15 minutos e recuperação de áudio interrompido
  • Upload de arquivos de áudio (WAV, MP3 e outros)

Entrega

  • Cola automática no campo focado (clipboard + paste simulado)
  • Verificação do campo de destino antes do paste
  • Se a entrega falhar, o resultado continua no Histórico
  • No gadget, uma falha oferece Regenerar com o áudio já salvo, sem abrir o Histórico

Histórico

  • Local, sem limite artificial, paginado e incremental
  • Modo, modelos, estágios, textos intermediários, fallback e latências de cada ditado
  • Copiar, editar, excluir, retranscrever e avaliar a pronúncia
  • Áudio revelável no Explorer, em uma pasta que você escolhe

Vocabulário e controle

  • Vocabulário estruturado: grafia canônica, aliases, categoria e literais strict
  • Telemetria apenas local: latência por estágio, RTF estimado e throughput
  • Diagnóstico local, backup com áudio opcional e arquivamento
  • Seleção rápida de destino e Style

Comece agora

Requisitos

  • Node.js 24 com npm
  • Rust 1.97.1 via rustup
  • Chaves de API, conforme o pipeline:
Provedor Usado em
OpenRouter Obrigatório no Ultrarrápido; também aceita modelos multimodais com áudio e modelos dedicados de transcrição
Google Gemini Rápido e preciso, Preciso, Ultrapreciso e avaliação de pronúncia
Groq Preciso, Ultrapreciso, sanitizer e fallback manual

Desenvolvimento

npm install
npm run tauri dev     # app completo
npm run dev           # só a interface, sem o backend nativo

Build de produção

npm run tauri build
O cargo não está no PATH (Windows / PowerShell)?
$env:PATH = "$env:USERPROFILE\.cargo\bin;" + $env:PATH
npm run tauri build
Artefato Caminho
Executável src-tauri/target/release/sonora.exe
Instaladores src-tauri/target/release/bundle/nsis/ e bundle/msi/

Detalhes em BUILD.md.

Primeiro ditado

  1. Abra Configurações e salve as chaves de API do pipeline que vai usar.
  2. Escolha um pipeline: Ultrarrápido, Rápido e preciso, Preciso ou Ultrapreciso.
  3. Clique no campo de texto onde o texto deve chegar e aperte Ctrl + B.
  4. Fale. Aperte Ctrl + B de novo para parar: o texto é colado no campo e entra no Histórico.
  5. Mudou de ideia? Ctrl + Q cancela sem gerar texto.

Note

A gravação pelo microfone cola no campo focado; o upload de arquivo não cola automaticamente. Arquivos de áudio acima de ~50 MB são rejeitados.


Seus dados

Tudo fica no seu computador, em %APPDATA%\com.haumeavoice.app\: histórico, configurações, chaves e áudios.

  • As chaves de API são protegidas pelo DPAPI da sua conta Windows; a interface recebe apenas referências opacas.
  • Escritas são atômicas, e itens removidos podem ser recuperados.
  • O contexto do navegador só é coletado mediante solicitação vigente, conforme as fontes habilitadas.
  • Não há analytics externo.

O identificador interno de dados mantém o nome legado para preservar sua instalação. Para migrar para a pasta Sonora com backup e verificação, siga o procedimento Windows.


Arquitetura

A orquestração vive em módulos dedicados (transcription/, gemini/, contratos e vocabulário), e a tela de Configurações é centrada nos pipelines de produto ativos.

src-tauri/src/
├── audio.rs                 captura do microfone, WAV, clipboard e paste
├── transcription/           modos de produto, legado e telemetria
├── gemini/                  Files API, STT, refine e pronúncia
├── pipeline_contract.rs     TranscriptionMode, configuração e estágios
├── vocabulary.rs            termos estruturados
├── sanitizer_json.rs        parse da saída JSON do sanitizer
├── groq.rs                  Whisper e sanitizer
└── history.rs · settings.rs

src/views/
├── ConfiguracoesView.tsx    pipelines, FileTagging e vocabulário
├── HistoricoView.tsx        lista, detalhes e ações
└── TranscricaoView.tsx      upload de arquivo
Tela Para quê
Início Status, contadores e gravação
Transcrição Upload de arquivo
Histórico Ditados, métricas, retranscrição e pronúncia
Atalhos Reconfigurar gravar e cancelar
Configurações Pipelines, chaves, vocabulário e avançado
Gadget Pílula compacta, sempre no topo
Camada Tecnologia
Shell Tauri 2
Interface React 18 · TypeScript · Vite 5 · Tailwind CSS 3
Backend Rust: captura, STT, IPC e sistema operacional
Áudio cpal (WASAPI no Windows)
STT e LLM Groq Whisper · Google Gemini · OpenRouter · whisper.cpp local (offline)
Clipboard e paste arboard · enigo

Testes

cd src-tauri && cargo test

O CI no Windows roda lint, testes de frontend e de UI, build, cargo fmt, clippy e cargo test a cada push. Para a verificação manual, use o checklist.

Correções da auditoria 1.0.34
  • Chaves protegidas por DPAPI da conta Windows; somente referências opacas chegam à interface.
  • Escritas atômicas, histórico incremental paginado e recuperação de itens removidos.
  • Captura incremental com limite de 15 minutos, recuperação de áudio interrompido e cancelamento do processamento de ditados.
  • Coleta de contexto do navegador somente por solicitação vigente, conforme as fontes habilitadas.
  • Verificação do campo de destino antes do paste; resultado e falha de entrega permanecem disponíveis no Histórico.
  • Diagnóstico local, backup com áudio opcional, arquivamento e seleção rápida de destino e Style.
  • Dependências corrigidas, permissões separadas por janela e CI Windows com verificações de contratos.

Qualificação e limites em auditoria implementada.


Documentação

Sonora 2.0 Mudanças, compatibilidade e migração da instalação
Build Gerar executável e instaladores
Recuperação e release Procedimentos de dados e distribuição
Auditoria implementada Qualificação e limites da auditoria
Migração da transcrição Relatório técnico dos pipelines
Checklist manual Roteiro de verificação
Design O sistema visual “Estúdio no ar”

Licença

Consulte o repositório para a licença aplicável. Chaves de API e dados de uso são de responsabilidade de quem usa o app.


Feito para quem prefere falar a digitar.

About

Sonora — digitação por voz para Windows (Tauri 2 + React + Rust)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages