An open API service indexing awesome lists of open source software.

https://github.com/greydgl/musicai


https://github.com/greydgl/musicai

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

          

MusicAI - AI Music Generation & Evaluation System
==================================================

A comprehensive web-based system for generating and evaluating AI-generated music using Meta's MusicGen model with structured evaluation criteria.

REPOSITORY
----------
https://github.com/GreyDGL/MusicAI

OVERVIEW
--------
MusicAI combines state-of-the-art music generation with professional evaluation tools, enabling collaborative research and assessment of AI-generated music quality.

FEATURES
--------

Music Generation:
- Real MusicGen Integration: Uses Meta's MusicGen model for high-quality music generation
- Multiple Model Sizes: Small (300MB), Medium (1.5GB), Large (3.3GB), and Melody variants
- Customizable Parameters: Duration (1-30s), Temperature, Guidance Scale
- Text-to-Music: Generate music from natural language descriptions
- CLI Support: Generate music via command line or web interface

Music Evaluation System:
- Structured Criteria: Professional evaluation framework with 6 key aspects:
* Melodic Content (clarity, development, thematic material)
* Instrumentation/Timbre (authenticity, clarity, synthetic elements)
* Rhythmic Structure (groove, timing, forward motion)
* Mood/Emotional Alignment (prompt matching, emotional impact)
* Audio Quality (artifacts, balance, clarity)
* Overall Rating
- Visual Waveform Display: Interactive audio visualization with WaveSurfer.js
- Star Rating System: 1-5 scale for quantitative assessment
- Detailed Comments: Free-form feedback for qualitative insights

Collaboration & Sync:
- Git-Based Syncing: Share evaluations through GitHub
- Database Synchronization: All evaluations stored in SQLite database
- Multi-User Support: Multiple evaluators can work on the same dataset
- Export Functionality: Export all data as JSON for analysis

Dashboard & Analytics:
- Overview Statistics: Total files, evaluations, average ratings
- Rating Distribution: Visual charts showing rating patterns
- Top-Rated Music: Leaderboard of best-performing generations
- Recent Activity: Track latest evaluations and generations

PREREQUISITES
-------------
- Python 3.8 or higher
- Git
- 4GB+ RAM (8GB+ recommended for Medium/Large models)
- macOS, Linux, or Windows
- ~10GB free disk space (for model downloads)

INSTALLATION
------------

Automated Installation (Recommended):
1. Clone the repository:
git clone https://github.com/GreyDGL/MusicAI.git
cd MusicAI

2. Run installation script:
./install.sh (macOS/Linux)
OR
python install.py (Windows)

3. Start the application:
python app.py

Manual Installation:
1. Clone repository:
git clone https://github.com/GreyDGL/MusicAI.git
cd MusicAI

2. Create virtual environment:
python -m venv venv
source venv/bin/activate (macOS/Linux)
OR
venv\Scripts\activate (Windows)

3. Install dependencies:
pip install -r requirements.txt
pip install -r requirements_musicgen.txt

4. Start application:
python app.py

USAGE
-----

Web Interface:
1. Start the application: python app.py
2. Open browser: http://localhost:8080
3. Navigate through tabs:
- Generate: Create new music from text prompts
- Evaluate: Listen and evaluate music files
- Dashboard: View statistics and analytics
- Export: Download evaluation data

Command Line Interface:
# Generate music
python musicgen_cli.py "A peaceful piano melody"

# With options
python musicgen_cli.py "Epic orchestral music" --duration 15 --model medium

# List available models
python musicgen_cli.py --list-models

Git Synchronization:
# Get latest updates
git pull origin main

# Save your work
git add .
git commit -m "Added evaluations for jazz pieces"
git push origin main

PROJECT STRUCTURE
-----------------
MusicAI/
├── app.py # Main Flask application
├── models.py # Database models (SQLAlchemy)
├── config.py # Configuration settings
├── musicgen_api.py # MusicGen integration
├── musicgen_cli.py # CLI for music generation
├── requirements.txt # Python dependencies
├── requirements_musicgen.txt # MusicGen dependencies
├── install.sh # Installation script
├── cleanup.sh # Cleanup utility
├── run.sh # Launch script
├── music/ # Generated music storage
├── instance/ # Instance-specific files
│ └── database.db # SQLite database
├── static/ # Frontend assets
│ ├── css/
│ │ └── style.css
│ └── js/
│ └── main.js
└── templates/ # HTML templates
├── base.html
├── index.html # Dashboard
├── generate.html # Generation interface
└── evaluate.html # Evaluation interface

CONFIGURATION
-------------

config.py Settings:
- PORT: Application port (default: 8080)
- MUSIC_FOLDER: Music storage location
- DATABASE_URL: Database connection
- MAX_DURATION: Maximum generation duration
- DEFAULT_MODEL: Default MusicGen model size

Model Performance:
+--------+-------+-----------+-----------------+---------+
| Model | Size | RAM Usage | Generation Time | Quality |
+--------+-------+-----------+-----------------+---------+
| Small | 300MB | ~2GB | 10-20s | Good |
| Medium | 1.5GB | ~6GB | 20-40s | Better |
| Large | 3.3GB | ~12GB | 30-60s | Best |
+--------+-------+-----------+-----------------+---------+

EXAMPLE PROMPTS
---------------
- "Upbeat jazz piano with walking bass line"
- "Cinematic orchestral piece with strings and brass"
- "Lo-fi hip hop beat for studying"
- "Classical guitar with Spanish influences"
- "Ambient electronic with nature sounds"
- "90s rock anthem with power chords"
- "Smooth R&B with soul vocals feel"
- "Traditional Japanese music with koto and flute"

TROUBLESHOOTING
---------------

Common Issues:
- Port already in use: Change PORT in config.py
- Memory errors: Use smaller model or reduce duration
- Model download fails: Check internet connection and disk space
- Can't find Python: Use python3 instead of python
- Permission denied: Run with appropriate permissions or check file ownership

Reset & Cleanup:
# Clean up and reset
./cleanup.sh

# Remove models cache
rm -rf ~/.cache/huggingface/hub/

COLLABORATION GUIDE
-------------------

For Project Owner:
1. Create GitHub repository
2. Push initial code
3. Add collaborators in Settings → Manage access
4. Share repository URL

For Collaborators:
1. Accept GitHub invitation
2. Clone repository
3. Make evaluations
4. Commit and push changes
5. Pull updates regularly

DEVELOPMENT
-----------

API Endpoints:
- GET / - Dashboard
- GET /generate - Generation page
- GET /evaluate - Evaluation page
- POST /api/generate - Generate music
- POST /api/evaluate - Submit evaluation
- GET /api/music/list - List music files
- GET /api/music//stream - Stream audio
- GET /api/export/evaluations - Export data

Database Schema:
- MusicFile: Stores generated music metadata
- Evaluation: Stores evaluation data and ratings

LICENSE
-------
This project uses open-source components including Meta's MusicGen model.

ACKNOWLEDGMENTS
---------------
- Meta AI for MusicGen model
- Flask community for web framework
- Bootstrap for UI components
- WaveSurfer.js for audio visualization

SUPPORT
-------
For issues or questions, please open an issue at: https://github.com/GreyDGL/MusicAI/issues