No description https://animul.ai
  • Python 57%
  • Svelte 25.1%
  • TypeScript 6.7%
  • Shell 6.4%
  • CSS 3.7%
  • Other 1.1%
Find a file
2026-02-04 13:33:11 -07:00
backend FIX: better processing of input files for vLLM 2026-02-04 13:28:16 -07:00
docs No AAC. Knobs for tweaking model usage 2026-01-05 12:27:22 -07:00
frontend Change default prompt in browser 2026-02-01 15:00:26 -07:00
scripts Change supported audio types in example 2026-02-04 13:30:55 -07:00
.gitignore git ignores 2025-12-28 12:00:30 -07:00
CHANGELOG.txt v1.0.1 2026-02-04 13:33:11 -07:00
LICENSE-apache.txt Apache License 2.0 2025-12-28 12:00:09 -07:00
README.md Update link to newer model 2026-02-01 14:57:11 -07:00

AniMUL Server

Web application for analyzing audio files using AI. Powered by the AniMUL model, a fine-tune of Qwen3-Omni trained on the Earth Species Project's NatureLM-audio-training dataset.

🌐 Live Application: https://animul.ai

📦 Source Code: https://spacecruft.org/deepcrayon/AniMUL-server

🎯 Features

  • Audio Analysis: Upload audio files and receive detailed AI-generated descriptions
  • Nature Sound Recognition: Specialized in identifying and describing nature sounds
  • Streaming Responses: Real-time analysis display as results are generated
  • Multiple Formats: Support for WAV, MP3, FLAC, OGG, M4A, WebM, AAC
  • Modern UI: Responsive dark-themed interface with drag-and-drop upload

🏗️ Architecture

┌─────────────────────────────────────────────────────────────────┐
│                     User's Browser                               │
│                   (Svelte 5 Frontend)                            │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              Web Server (Apache + FastAPI)                       │
│  • Static file serving (Svelte build)                           │
│  • REST API for audio analysis                                  │
│  • Streaming responses (SSE)                                    │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              vLLM Server                                         │
│  • AniMUL model (fine-tuned from Qwen3-Omni)                    │
│  • OpenAI-compatible API                                        │
└─────────────────────────────────────────────────────────────────┘

🚀 Quick Start

Prerequisites

  • Python 3.11+
  • Node.js 20+
  • Access to a vLLM server with the AniMUL model

Development Setup

# Clone the repository
git clone https://spacecruft.org/deepcrayon/AniMUL-server.git
cd AniMUL-server

# Backend setup
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp src/server/.env.example src/server/.env
# Edit .env with your vLLM server settings

# Frontend setup
cd ../frontend
npm install

# Start development servers
# Terminal 1: Backend
cd backend && source .venv/bin/activate && uvicorn server.main:app --reload

# Terminal 2: Frontend
cd frontend && npm run dev

Visit http://localhost:5173 to use the application.

📁 Project Structure

AniMUL-server/
├── backend/                 # FastAPI backend
│   ├── src/server/
│   │   ├── api/            # API routes and schemas
│   │   ├── services/       # vLLM client
│   │   ├── utils/          # Audio utilities
│   │   └── tests/          # Unit tests
│   └── pyproject.toml
├── frontend/               # Svelte 5 frontend
│   ├── src/
│   │   ├── lib/           # Components and API client
│   │   └── routes/        # SvelteKit pages
│   └── package.json
├── docs/                   # Documentation
│   ├── QUICKSTART.md      # Development setup guide
│   ├── DEPLOYMENT.md      # Production deployment guide
│   └── PLAN.md            # Architecture and planning
└── scripts/               # Deployment scripts
    ├── deploy-production.sh
    ├── apache/            # Apache configuration
    └── systemd/           # Systemd service files

📖 Documentation

🔧 Technology Stack

Component Technology Version
Frontend Svelte 5 + SvelteKit ^5.0.0
Backend FastAPI ^0.124.0
Python Python ^3.11
Model Server vLLM Latest
Web Server Apache 2.4.x

🤖 About the AniMUL Model

AniMUL is a fine-tuned version of Qwen3-Omni, specifically trained on the Earth Species Project's NatureLM-audio-training dataset. This specialized training enables the model to:

  • Accurately identify and describe nature sounds (birdsong, animal calls, environmental sounds)
  • Provide detailed acoustic descriptions
  • Recognize species-specific vocalizations
  • Describe complex soundscapes with multiple audio sources

Model: deepcrayon/AniMUL-v1

🌐 API Endpoints

Endpoint Method Description
/api/health GET Health check
/api/analyze POST Analyze audio file
/api/analyze/stream POST Analyze with streaming response
/api/models GET List available models
/api/formats GET List supported audio formats

🧪 Testing

# Backend tests
cd backend
pytest --cov

# Frontend type checking
cd frontend
npm run check

🚢 Deployment

For production deployment on Debian with Apache:

# Run deployment script
./scripts/deploy-production.sh

See DEPLOYMENT.md for detailed instructions.

🙏 Acknowledgments

📄 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Copyright © 2025, 2026 Jeff Moe