AI-Powered Audio Search & Discovery Engine β Semantic search for your entire audio library using advanced embeddings and vector similarity.
WISDOM-PRO is a full-stack application that revolutionizes how you search through your audio library. Instead of relying on file names or manual tags, it uses cutting-edge AI embeddings (via CLAP model) to understand audio semantically and find sounds based on their meaning and characteristics.
- π Semantic Audio Search β Find sounds by describing what you're looking for, not just filenames
- π― Intelligent Embeddings β Powered by CLAP (Contrastive Language-Audio Pre-training)
- π High-Performance Indexing β Fast vector similarity search with Turbovec
- π¨ Modern UI β Responsive React frontend with Tailwind CSS
- π RESTful API β FastAPI backend with CORS support
- πΎ Persistent Storage β Metadata and vector index persistence
- ποΈ Demo Audio Library β Auto-generates sample sound loops on startup
WISDOM-PRO/
βββ frontend/ # React + TypeScript + Vite
β βββ src/
β βββ package.json
β βββ vite.config.ts
β
βββ backend/ # Python + FastAPI
β βββ main.py # FastAPI application & endpoints
β βββ model.py # AudioEmbedder class (CLAP + fallback)
β βββ index_manager.py # Turbovec index management
β βββ requirements.txt
β
βββ audio_library/ # Default audio storage directory
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React 19 + TypeScript + Vite | Modern, responsive UI |
| Styling | Tailwind CSS + Lucide Icons | Beautiful design system |
| Backend | FastAPI + Uvicorn | High-performance async API |
| AI/ML | CLAP (Transformers) + PyTorch | Audio/text embeddings |
| Search | Turbovec | Fast vector similarity search |
| Audio | librosa, soundfile, scipy | Audio processing & synthesis |
- Python 3.9+
- Node.js 18+
- npm or pnpm
git clone https://github.com/AadhityaS-2124/WISDOM-PRO.git
cd WISDOM-PRO# Navigate to backend
cd backend
# Create virtual environment (optional but recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt# Navigate to frontend
cd frontend
# Install dependencies
npm installcd backend
python main.py
# Server will start at http://127.0.0.1:8000cd frontend
npm run dev
# Frontend will start at http://localhost:5173# Frontend
cd frontend
npm run build
# Backend
# Deploy using gunicorn or similar for productionPOST /search
Content-Type: application/json
{
"query": "bright energetic hi-hat",
"k": 5
}Response:
{
"results": [
{
"name": "bright_hihat_closed.wav",
"path": "/path/to/audio",
"duration": 0.08,
"samplerate": 44100,
"channels": 1,
"score": 0.92
}
]
}GET /tracksResponse:
{
"tracks": [
{
"name": "vintage_kick_loop.wav",
"duration": 0.3,
"samplerate": 44100,
"channels": 1
}
]
}POST /add-asset
Content-Type: application/json
{
"file_path": "/path/to/audio.wav"
}POST /ingest
Content-Type: application/json
{
"directory": "/path/to/audio/folder"
}GET /audio-file?path=/path/to/audio.wavWISDOM-PRO automatically generates a demo audio library on first startup with these sound loops:
- π₯ Vintage Kick Drum β Classic 150Hz sweep-to-40Hz kick
- π― Retro Snare β Bandpass-filtered noise burst
- β¨ Bright Hi-Hat β High-frequency closed hi-hat
- πΈ Heavy Vintage Synth Bass β Low sawtooth bassline
- πΉ Melodic Lead Synth β Square wave arpeggio
- π Lush Ambient Pad β Chorus chord with detuning
All samples are procedurally generated using NumPy and Scipy at 44.1kHz quality.
- Audio β Embedding: Each audio file is processed by the CLAP model to generate a 512-dimensional vector
- Text β Embedding: User queries are converted to embeddings using the same space
- Similarity Search: Turbovec indexes these vectors and finds closest matches using cosine similarity
- Ranking: Results are ranked by score and returned to the frontend
If CLAP model fails to load, the system gracefully falls back to:
- Filename-based tokenization with vocabulary projection
- Acoustic feature analysis (zero-crossing rate, spectral centroid)
- Deterministic hashing for consistent pseudo-random projections
Edit WORKSPACE_DIR in backend/main.py:
WORKSPACE_DIR = "d:\\Wisdom Pro" # Windows
WORKSPACE_DIR = "/home/user/wisdom-pro" # Linux/MacAUDIO_LIBRARY_DIR = os.path.join(WORKSPACE_DIR, "audio_library")uvicorn.run(app, host="127.0.0.1", port=8000)| Operation | Time | Notes |
|---|---|---|
| CLAP Model Load | ~5-10s | Background task, async |
| Audio Embedding | ~0.5-1s | Per file |
| Text Embedding | ~0.1-0.2s | Per query |
| Index Search | <10ms | Turbovec optimized |
| Directory Ingest | ~1-2s per file | Parallel capable |
- β Path Validation β Workspace boundary checks prevent directory traversal
- β
CORS Enabled β Configurable origins (currently
*for development) - β Type Safety β Pydantic models for request validation
- β Error Handling β Graceful HTTP exceptions
# Update CORS for production
app.add_middleware(
CORSMiddleware,
allow_origins=["https://yourdomain.com"],
allow_credentials=True,
allow_methods=["GET", "POST"],
allow_headers=["Content-Type"],
)# Backend tests
cd backend
python test_embed.py
python test_search.py
# Frontend tests
cd frontend
npm run lint
npm run buildContributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Author: @AadhityaS-2124
- CLAP Model by LAION β laion/clap-htsat-unfused
- Turbovec β Fast vector indexing library
- FastAPI β Modern async Python web framework
- React + Vite β Next-generation frontend tooling
β If you find this project useful, please consider giving it a star!
Made with β€οΈ by AadhityaS-2124