Skip to content

ruarim/auracle

Repository files navigation

Auracle

Auracle is a semantic audio search tool built with Tauri and React. It allows you to index your local audio files and search through them using natural language descriptions or files - powered by CLAP (Contrastive Language-Audio Pretraining).

Screen.Recording.2026-04-28.at.15.30.31.mov

✨ Features

  • Semantic Audio Search: Search your local audio library using text queries like "electronic drum beat" or "bird sounds".
  • Local Machine Learning: Runs CLAP entirely locally using ONNX Runtime. No internet connection required, and your audio never leaves your machine.
  • Fast Vector Search: Uses sqlite-vec for instant, local vector similarity search directly within SQLite.
  • Modern UI: Built with React, TailwindCSS, and Radix UI.
  • Cross-Platform: Built on top of Tauri for native performance on Windows, macOS, and Linux.

🛠️ Tech Stack

Frontend

  • React 19 & Vite
  • TailwindCSS 4
  • Radix UI primitives and Lucide Icons
  • TypeScript

Backend

  • Tauri 2 (Rust)
  • SQLite (via sqlx) with sqlite-vec for vector embeddings syntax.
  • ONNX Runtime (ort) for running the machine learning models.
  • Symphonia for audio decoding.
  • rubato for audio resampling.
  • tokenizers (HuggingFace) for text embeddings parsing.

🚀 Getting Started

Prerequisites

  • Node.js (v18+)
  • Rust (Latest stable)
  • Tauri prerequisites (depends on your OS)

Installation

  1. Clone the repository:

    git clone https://github.com/ruarim/auracle.git
    cd auracle
  2. Install frontend dependencies:

    npm install
  3. Extract CLAP ONNX Models:

    • run ./src-py/export-clap.py and move the .onnx and .onnx.data files to ./src-tauri/models
  4. Run the development server:

    npm run tauri dev

🏗️ Architecture

Auracle's core functionality relies on processing audio files into Mel Spectrograms and embedding them into a high-dimensional vector space using the CLAP audio model.

  1. Indexing: When a file is added, it is decoded and resampled with symphonia and rubato, respectively, convolution of the STFT (realfft) with a filter matrix results in a Mel-spectrogram. The ONNX audio model generates an embedding, which is then stored in SQLite utilizing sqlite-vec.
  2. Searching: Text queries are tokenized and passed through the ONNX text model. The resulting text embedding is queried against the sqlite-vec index to find the closest matching audio files based on cosine distance.

🎯 To-Do

  • Advanced search filters
  • Retry failed audio analysis
  • Drag and drop folder/file support
  • Support and display all audio file types and bit-depths
  • Confirmation dialog on "Delete All"
  • Comprehensive error handling

📝 License

MIT License

About

A fast and local semantic audio search tool.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors