Real-time
~150–300ms end-to-end latency. See text as you speak, with Voice Activity Detection (Silero VAD v5) sending only speech segments.
powered by WebSocket
No cloud. No tracking. Everything runs locally. Models are downloaded from HuggingFace once and then run 100% offline via ONNX Runtime.
Real-time
~150–300ms end-to-end latency. See text as you speak, with Voice Activity Detection (Silero VAD v5) sending only speech segments.
100% Private
Self-hosted Rust server. No API keys, no cloud. Your audio never leaves your network. Optional local WAV/OGG recording.
Multi-platform
Flutter client for Android, iOS, Desktop and Web. Rust server runs anywhere — Docker, bare metal, VPS.
Multi language
Multi-language target selection (en/es/fr/de/pt). English via Parakeet, translation via Canary.
┌─────────────────┐ WebSocket ┌──────────────────┐│ Flutter Client │ ◄─────────────────────────►│ Rust Server ││ (Dart/Silero) │ PCM 16-bit / JSON │ (transcribe-rs) │└─────────────────┘ └──────────────────┘ │ │ │ Silero VAD v5 │ ONNX Model │ (ONNX Runtime) │ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ │ AudioService │ │ Canary 180M │ │ + vad package │ │ Flash / │ │ (ML-based) │ │ Parakeet TDT │ └─────────────────┘ └──────────────────┘Best for a Linux server or homelab. Models and recordings are persisted in volumes.
services: sinsajo-server: image: lutgaru/sinsajo-server:latest ports: ["8765:8765"] volumes: - sinsajo_models:/app/models - sinsajo_records:/app/records restart: unless-stoppedvolumes: sinsajo_models: sinsajo_records:docker compose up -d# -> ws://localhost:8765 (auto-downloads ~2-3GB model on first run)Same image, single command — no compose file needed.
docker pull lutgaru/sinsajo-server:latestdocker run -p 8765:8765 \ -v sinsajo_models:/app/models \ -v sinsajo_records:/app/records \ lutgaru/sinsajo-server:latestNo Docker needed. Download the binary for your platform and run it.
# GitHub Releases -> server/v* assets# - sinsajo-server (linux x86_64)# - sinsajo-server.exe (windows x86_64)./sinsajo-server --model ParakeetTDT --autodownload-model --port 8765# or on Windows: .\sinsajo-server.exe --model ParakeetTDT --autodownload-modelGrab it from server-latest — no compile, just run.
For any architecture that meets the minimum requirements (Rust 1.70+, ~500MB RAM per Int8 model).
git clone https://github.com/lutgaru/Sinsajo.gitcd Sinsajo/servercargo run --release -- --model ParakeetTDT --autodownload-model# or: cargo build --release && ./target/release/sinsajo-server --helpSee Server Guide for CLI flags and GPU acceleration.
Fastest way to try it — nothing to install.
ws://YOUR_SERVER_IP:8765)Requires HTTPS for microphone access (GitHub Pages provides it).
For Android phones/tablets. Share via link or QR.
app-release.apk from client-latestAPKs are built on every client/v* tag via GitHub Actions — not stored in git.
For any platform that meets client requirements (Flutter 3.x). Compile for Android, iOS, Linux, macOS, Windows or Web.
git clone https://github.com/lutgaru/Sinsajo.gitcd Sinsajo/sinsajo_clientflutter pub get# optional: edit lib/providers/transcription_provider.dart -> kWsUrlflutter run # run on connected deviceflutter build apk # Androidflutter build web --base-href /Sinsajo/app/See Client Guide.
| Metric | Value |
|---|---|
| Latency | ~150–300ms chunk → text |
| CPU | ~20–40% (1 core) |
| RAM | ~500MB (Int8 quantized) |
| Accuracy | ~95% clean Spanish |
| Bandwidth | ~256KB/s (PCM, VAD reduces ~60%) |
Configure target language
Pick output language in-app. Canary translates, Parakeet is English-only. Server advertises supported languages via model_info.
Save recordings
Enable save_audio in Settings — server saves WAV/OGG per session to records/ for export.
Tune VAD
Adjust thresholds in audio_service.dart for quiet rooms or noisy environments.