Skip to content
/ crispy Public

Free offline noise suppression, transcription & meeting recording -- runs locally, no cloud

License

Notifications You must be signed in to change notification settings

sleep3r/crispy

Repository files navigation

Crispy Logo

Real-time AI noise suppression, transcription, and meeting recording

Privacy-first Β· Lightning-fast Β· Completely offline

Crispy Screenshot

Features β€’ Quick Start β€’ How It Works β€’ Development


What is Crispy?

Crispy is a powerful desktop application that enhances your audio in real-time with AI-powered noise suppression, automatic transcription, and intelligent meeting recordingβ€”all without sending your data to the cloud.

Built with Tauri v2 (Rust backend + React/TypeScript frontend), Crispy processes everything locally on your machine, ensuring your conversations remain private while delivering professional-quality audio.

✨ Features

πŸŽ™οΈ Noise Suppression

  • RNN Noise (nnnoiseless): real-time neural denoiser, 48 kHz, built-in model
  • None / Test noise: passthrough or debug mode
  • Adaptive volume control to maintain consistent levels
  • Zero-latency monitoring for immediate feedback
  • Routes clean audio to any application (Zoom, Discord, Teams, etc.)

πŸ“ Smart Transcription

  • Automatic transcription of all your recordings
  • Chat with AI about your transcriptions using OpenAI/Poe.com
  • Model metadata trackingβ€”always know which model was used
  • Chat history saved locally per recording

🎬 Meeting Recording

  • Dual-source capture: Microphone + application audio (e.g., browser, Zoom)
  • Stereo output: Mixed dual-mono for perfect playback
  • Auto-resampling: Handles different sample rates (44.1kHz β†’ 48kHz)
  • One-click recording from system tray

πŸ”’ Privacy-First Design

  • 100% offline processing - no internet required for noise suppression
  • Local storage - recordings, transcriptions, and settings stay on your machine
  • Optional cloud AI - only for chat features, with your explicit API keys

🎨 Beautiful UX

  • System tray popup for quick controls
  • Dark mode ready with a clean, modern interface
  • Settings persistence across dev/release builds

πŸš€ Quick Start

Prerequisites

  • macOS 13.0+ (Ventura or later) for ScreenCaptureKit support
  • Node.js 18+ and npm
  • Rust (latest stable)
  • Xcode Command Line Tools: xcode-select --install

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/crispy.git
    cd crispy
  2. Install dependencies:

    make install
  3. Install BlackHole 2ch (recommended):

    BlackHole is a virtual audio driver for routing processed audio to other apps.

    # Download from:
    https://existential.audio/blackhole/
  4. Run in development:

    make dev
  5. Build for production:

    make build

    The app bundle will be in target/aarch64-apple-darwin/release/bundle/

    Note: If you get invalid value '1' for '--ci' error, unset the CI variable:

    unset CI && make build

First-Time Setup

  1. Grant microphone permissions when prompted
  2. Grant screen recording permissions (required for app audio capture)
  3. Select your microphone in Settings β†’ General
  4. Select BlackHole 2ch as output device (or any virtual audio device)
  5. Choose a noise suppression model in the footer (General screen): None, Test noise, or RNN Noise (48 kHz mic recommended)
  6. Optionally configure LLM in Settings β†’ LLM Chat (for transcription chat)

πŸ—οΈ How It Works

Audio Pipeline

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Microphone β”‚ -> β”‚ Noise Model  β”‚ -> β”‚  Monitor    β”‚ -> β”‚  BlackHole   β”‚ -> Apps
β”‚  (Physical) β”‚    β”‚ RNNoise/None β”‚    β”‚  + Record   β”‚    β”‚  (Virtual)   β”‚    (Zoom, etc.)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                              β”‚
                                              v
                                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                        β”‚   WAV File  β”‚
                                        β”‚  + App Audioβ”‚
                                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technology Stack

Frontend

  • React 18 + TypeScript
  • Tailwind CSS v4 (modern design system)
  • Tauri API for native integration
  • Real-time event streaming

Backend (Rust)

  • Audio: CPAL (cross-platform audio), Hound (WAV I/O), Rubato (resampling)
  • Noise Suppression: nnnoiseless (RNNoise port, in ./rnnnoise), frame-based 48 kHz
  • Transcription: transcribe-rs + ONNX Runtime (Whisper, Parakeet, Moonshine)
  • App Audio Capture: ScreenCaptureKit (macOS 12.3+)
  • LLM Integration: async-openai SDK for chat streaming
  • Persistence: JSON-based settings + metadata

macOS Integration

  • System tray with webview popup
  • Window positioning via tauri-plugin-positioner
  • Native permissions (Microphone, Screen Recording)

πŸ“¦ Installation for Users

See detailed installation instructions: INSTALL.md

Quick start:

  1. Download Crispy.app and move to /Applications/
  2. Right-click on the icon β†’ Open (not double-click!)
  3. Confirm opening in the dialog

This bypasses macOS Gatekeeper for unsigned apps. After the first launch, you can open normally.


πŸ“– Usage Guide

Basic Workflow

  1. Start monitoring: Your mic is processed in real-time and routed to the output device
  2. Start recording: Click record in settings or use the system tray
  3. Stop recording: Audio is saved to ~/Documents/Crispy/Recordings/
  4. View transcription: Auto-generated for each recording (if model selected)
  5. Chat with AI: Ask questions about your transcription using LLM

Recording with App Audio

To record both your mic and application audio (e.g., Zoom calls):

  1. Go to Settings β†’ Recording β†’ App Audio Capture
  2. Select the application (Chrome, Zoom, etc.)
  3. Start recordingβ€”both sources will be mixed in stereo

Transcription

  1. Download a model: Settings β†’ Transcription β†’ Download models
  2. Activate a model: Select it from the dropdown
  3. Record: Transcription happens automatically after recording stops
  4. View results: Click any recording to see the transcription window

LLM Chat (Optional)

Configure in Settings β†’ LLM Chat:

  • Endpoint: https://api.openai.com/v1 (or https://api.poe.com/v1)
  • API Key: Your OpenAI/Poe API key
  • Model: gpt-4, claude-3-5-sonnet, etc.

Once configured, chat with AI about your transcriptions to summarize, translate, or extract insights.

πŸ› οΈ Development

Project Structure

crispy/
β”œβ”€β”€ src/                    # React/TypeScript frontend
β”‚   β”œβ”€β”€ components/        # UI components
β”‚   β”œβ”€β”€ hooks/             # React hooks (settings, models)
β”‚   └── main.tsx           # Entry point
β”œβ”€β”€ src-tauri/             # Rust backend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ main.rs        # Tauri app setup, audio pipeline, NS/TS models
β”‚   β”‚   β”œβ”€β”€ recording.rs   # Recording logic, ScreenCaptureKit
β”‚   β”‚   β”œβ”€β”€ commands/      # Tauri commands (models, ns_models, transcription, …)
β”‚   β”‚   └── managers/      # Transcription + model managers
β”‚   β”œβ”€β”€ build.rs           # Build script (Swift linking)
β”‚   └── Cargo.toml         # Rust dependencies
└── Makefile               # Build targets and commands

Useful Commands

make help                 # Show all available commands
make dev                  # Run in development mode
make build                # Build release binary
make clean                # Clean build artifacts
make install              # Install dependencies

Debugging

Enable Rust logs:

RUST_LOG=debug make dev

Check audio devices:

// In Rust backend
println!("Available devices: {:?}", devices);

🀝 Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

πŸ“„ License

MIT License - see LICENSE for details


Built with ❀️ using Rust, React, and Tauri

About

Free offline noise suppression, transcription & meeting recording -- runs locally, no cloud

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 2

  •  
  •