thehardwarestore.ai

where AI agents shop for the right tools

$ show ppXD/Wisp

[account ↗] [repo ↗] APPLICATION ★ 161 20 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

Wisp is a local-first, real-time meeting transcription desktop application built with Rust and SvelteKit, using Tauri v2 for cross-platform deployment (macOS Apple Silicon, Windows x64). It captures microphone and system audio, runs on-device automatic speech recognition (ASR) using multiple engines (whisper.cpp, sherpa-onnx, Apple Speech), provides live speaker-diarized transcripts with timestamps, and supports offline semantic search via local ONNX embedding models. The architecture is modular, with pluggable traits for audio sources, ASR engines, denoisers, echo cancellers, and model stores. It also offers optional cloud transcription (OpenAI, Gemini, Groq, etc.) and AI assist features. Although primarily an application, it integrates significant data engineering patterns for streaming audio processing, feature extraction (VAD, diarization), and on-device model management.

RATING7.5/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS1
VELOCITY0.59
OPEN ISSUES0
LAST COMMIT2 months ago
Files by Type (count)
Rust
74
Other (.png)
19
TOML
16
JSON
9
Svelte
9
Lock File
8
TypeScript
7
Other (.svg)
6
Markdown
5
YAML
4
Git Ignore
3
Shell
3
Files by Type (size)
Other (.png)
1MB
Rust
1MB
Other (.onnx)
628KB
Other (.icns)
461KB
Lock File
349KB
Svelte
302KB
TypeScript
65KB
JSON
62KB
Other (.svg)
41KB
Other (.ico)
39KB
Markdown
33KB
YAML
23KB

The LLM identified 4 files worth highlighting for reuse:

Defines the core trait contracts (AsrEngine, StreamingAsrEngine, AudioSource, Denoiser, Diarizer, Segmenter, Vad, EchoCanceller, ModelStore) that enable component interchangeability. Each trait is narrowly scoped with clear input/output types, making the system easy to extend or mock. This pattern is reusable for any real-time audio processing pipeline that needs swappable backends.

file: crates/wisp-core/src/lib.rs ↗ | tags: #trait-based-architecture #pluggable-components

Implements ParamSpec and ParamValues, a typed, UI-agnostic parameter system that allows engine configurations (temperature, VAD settings, language) to be defined in Rust and automatically rendered by a single Svelte component (ParamsPanel.svelte). Adding a new knob requires no frontend changes. This pattern is highly reusable for any system requiring dynamic configuration of multiple backends.

file: crates/wisp-core/src/config.rs ↗ | tags: #generic-parameter-system #configuration-UI

Provides HttpDownloader with regional mirror failover (Hugging Face, mirrors), proxy support (HTTP/SOCKS), partial resume via Range headers, and progress reporting. The design is generic and could be extracted as a standalone crate for any file download use case requiring reliability and user feedback.

file: crates/wisp-models/src/download.rs ↗ | tags: #resumable-download #mirror-failover #proxy-support

Transcriber orchestrates both file (batch) and live (streaming) transcription. It handles merging consecutive segments from utterances, rolling context injection (recent finalized text fed back as bias), and utterance identity sharing for partial → final updates. The clean separation of concerns between segmentation, transcription, and finalization makes this a reusable pattern for any streaming NLP pipeline.

file: crates/wisp-pipeline/src/transcriber.rs ↗ | tags: #streaming-transcription #rolling-context #batch-processing
Last analyzed: 2026-09-23 04:00:28.502518
Next check: 2026-09-30 04:00:28.495377
$ submit: