Update README with professional styling and demo gif
This commit is contained in:
@@ -1,29 +1,118 @@
|
|||||||
# ACE-Step UI
|
<p align="center">
|
||||||
|
<img src="https://img.shields.io/badge/🎵-ACE--Step_UI-ff69b4?style=for-the-badge&labelColor=1a1a1a" alt="ACE-Step UI" height="60">
|
||||||
|
</p>
|
||||||
|
|
||||||
A local-first web UI for [ACE-Step 1.5](https://github.com/ace-step/ACE-Step) AI music generation.
|
<h1 align="center">ACE-Step UI</h1>
|
||||||
|
|
||||||

|
<p align="center">
|
||||||

|
<strong>A professional, local-first music generation studio for <a href="https://github.com/ace-step/ACE-Step">ACE-Step 1.5</a></strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="#features">Features</a> •
|
||||||
|
<a href="#demo">Demo</a> •
|
||||||
|
<a href="#installation">Installation</a> •
|
||||||
|
<a href="#usage">Usage</a> •
|
||||||
|
<a href="#configuration">Configuration</a> •
|
||||||
|
<a href="#credits">Credits</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://img.shields.io/badge/React-18.3-61DAFB?style=flat-square&logo=react" alt="React">
|
||||||
|
<img src="https://img.shields.io/badge/Express-4.x-000000?style=flat-square&logo=express" alt="Express">
|
||||||
|
<img src="https://img.shields.io/badge/TypeScript-5.x-3178C6?style=flat-square&logo=typescript" alt="TypeScript">
|
||||||
|
<img src="https://img.shields.io/badge/TailwindCSS-3.x-06B6D4?style=flat-square&logo=tailwindcss" alt="TailwindCSS">
|
||||||
|
<img src="https://img.shields.io/badge/SQLite-3-003B57?style=flat-square&logo=sqlite" alt="SQLite">
|
||||||
|
<img src="https://img.shields.io/badge/License-MIT-green?style=flat-square" alt="License">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="docs/demo.gif" alt="ACE-Step UI Preview" width="100%">
|
||||||
|
</p>
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Generate music with text prompts and lyrics
|
### 🎵 AI Music Generation
|
||||||
- Simple and Custom generation modes
|
| Feature | Description |
|
||||||
- Instrumental and vocal track support
|
|---------|-------------|
|
||||||
- Audio editor with waveform visualization
|
| **Full Song Generation** | Create complete songs with vocals and lyrics up to 4+ minutes |
|
||||||
- Stem extraction (vocals, drums, bass, other)
|
| **Instrumental Mode** | Generate instrumental tracks without vocals |
|
||||||
- Video generator with Pexels backgrounds
|
| **Custom Mode** | Fine-tune BPM, key, time signature, and duration |
|
||||||
- Local SQLite database (no cloud required)
|
| **Style Tags** | Define genre, mood, tempo, and instrumentation |
|
||||||
- Playlist management
|
| **Batch Generation** | Generate multiple variations at once |
|
||||||
- Beautiful gradient album covers (no internet needed)
|
| **Thinking Mode** | Let AI enhance your prompts automatically |
|
||||||
|
|
||||||
|
### 🎨 Advanced Parameters
|
||||||
|
| Feature | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| **Reference Audio** | Use any audio file as a style reference |
|
||||||
|
| **Audio Cover** | Transform existing audio with new styles |
|
||||||
|
| **Repainting** | Regenerate specific sections of a track |
|
||||||
|
| **Seed Control** | Reproduce exact generations for consistency |
|
||||||
|
| **Inference Steps** | Control quality vs speed tradeoff |
|
||||||
|
|
||||||
|
### 🎤 Lyrics & Prompts
|
||||||
|
| Feature | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| **Lyrics Editor** | Write and format lyrics with structure tags |
|
||||||
|
| **Format Assistant** | AI-powered caption and lyrics formatting |
|
||||||
|
| **Prompt Templates** | Quick-start with genre presets |
|
||||||
|
| **Reuse Prompts** | Clone settings from any previous generation |
|
||||||
|
|
||||||
|
### 🎧 Professional Interface
|
||||||
|
| Feature | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| **Spotify-Inspired UI** | Clean, modern design with dark/light mode |
|
||||||
|
| **Bottom Player** | Full-featured player with waveform and progress |
|
||||||
|
| **Library Management** | Browse, search, and organize all your tracks |
|
||||||
|
| **Likes & Playlists** | Organize favorites into custom playlists |
|
||||||
|
| **Real-time Progress** | Live generation progress with queue position |
|
||||||
|
| **LAN Access** | Use from any device on your local network |
|
||||||
|
|
||||||
|
### 🛠️ Built-in Tools
|
||||||
|
| Feature | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| **Audio Editor** | Trim, fade, and apply effects with AudioMass |
|
||||||
|
| **Stem Extraction** | Separate vocals, drums, bass, and other with Demucs |
|
||||||
|
| **Video Generator** | Create music videos with Pexels backgrounds |
|
||||||
|
| **Gradient Covers** | Beautiful procedural album art (no internet needed) |
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
| Layer | Technologies |
|
||||||
|
|-------|-------------|
|
||||||
|
| **Frontend** | React 18, TypeScript, TailwindCSS, Vite |
|
||||||
|
| **Backend** | Express.js, SQLite, better-sqlite3 |
|
||||||
|
| **AI Engine** | [ACE-Step 1.5](https://github.com/ace-step/ACE-Step) |
|
||||||
|
| **Audio Tools** | AudioMass, Demucs, FFmpeg |
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- **Node.js** 18+
|
| Requirement | Specification |
|
||||||
- **Python** 3.10+ (3.11 recommended)
|
|-------------|---------------|
|
||||||
- **NVIDIA GPU** with 8GB+ VRAM (12GB+ recommended)
|
| **Node.js** | 18 or higher |
|
||||||
- **FFmpeg** and **FFprobe** (for audio processing)
|
| **Python** | 3.10+ (3.11 recommended) |
|
||||||
- [uv](https://github.com/astral-sh/uv) package manager (recommended for Python)
|
| **NVIDIA GPU** | 8GB+ VRAM (12GB+ recommended) |
|
||||||
|
| **FFmpeg** | For audio processing |
|
||||||
|
| **uv** | Python package manager (recommended) |
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Start ACE-Step API (in ACE-Step directory)
|
||||||
|
cd /path/to/ACE-Step
|
||||||
|
uv run acestep-api --port 8001
|
||||||
|
|
||||||
|
# 2. Start ACE-Step UI (in another terminal)
|
||||||
|
cd ace-step-ui
|
||||||
|
./start.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Open **http://localhost:3000**
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -38,9 +127,7 @@ cd ACE-Step
|
|||||||
uv venv
|
uv venv
|
||||||
uv pip install -e .
|
uv pip install -e .
|
||||||
|
|
||||||
# Download the model (first run will download automatically, or manually):
|
# Models download automatically on first run (~5GB)
|
||||||
# The model will be downloaded to ~/.cache/huggingface/
|
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -48,14 +135,14 @@ cd ..
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone this repository
|
# Clone this repository
|
||||||
git clone https://github.com/your-org/ace-step-ui
|
git clone https://github.com/fspecii/ace-step-ui
|
||||||
cd ace-step-ui
|
cd ace-step-ui
|
||||||
|
|
||||||
# Run setup script
|
# Run setup script
|
||||||
./setup.sh
|
./setup.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Or manually:
|
**Or manually:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Install frontend dependencies
|
# Install frontend dependencies
|
||||||
@@ -70,48 +157,25 @@ cd ..
|
|||||||
cp server/.env.example server/.env
|
cp server/.env.example server/.env
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Configure (Optional)
|
|
||||||
|
|
||||||
Edit `server/.env` to customize:
|
|
||||||
|
|
||||||
```env
|
|
||||||
# Server port
|
|
||||||
PORT=3001
|
|
||||||
|
|
||||||
# ACE-Step API URL (default: http://localhost:8001)
|
|
||||||
ACESTEP_API_URL=http://localhost:8001
|
|
||||||
|
|
||||||
# Database location
|
|
||||||
DATABASE_PATH=./data/acestep.db
|
|
||||||
|
|
||||||
# Optional: Pexels API key for video backgrounds
|
|
||||||
# Get a free key at https://www.pexels.com/api/
|
|
||||||
PEXELS_API_KEY=your_key_here
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Step 1: Start ACE-Step API Server
|
### Step 1: Start ACE-Step API Server
|
||||||
|
|
||||||
In a terminal, start the ACE-Step API server:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /path/to/ACE-Step
|
cd /path/to/ACE-Step
|
||||||
uv run acestep-api --port 8001
|
uv run acestep-api --port 8001
|
||||||
```
|
```
|
||||||
|
|
||||||
Wait until you see "Application startup complete" before proceeding.
|
Wait for "Application startup complete" before proceeding.
|
||||||
|
|
||||||
### Step 2: Start ACE-Step UI
|
### Step 2: Start ACE-Step UI
|
||||||
|
|
||||||
In another terminal:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ace-step-ui
|
cd ace-step-ui
|
||||||
./start.sh
|
./start.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Or manually in two terminals:
|
**Or manually in two terminals:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Terminal 1 - Backend
|
# Terminal 1 - Backend
|
||||||
@@ -123,62 +187,142 @@ npm run dev
|
|||||||
|
|
||||||
### Step 3: Open the UI
|
### Step 3: Open the UI
|
||||||
|
|
||||||
Open http://localhost:3000 in your browser.
|
| Mode | URL |
|
||||||
|
|------|-----|
|
||||||
|
| Local | http://localhost:3000 |
|
||||||
|
| LAN | http://YOUR_IP:3000 |
|
||||||
|
|
||||||
On first launch, you'll be asked to set a username. This is stored locally.
|
On first launch, you'll be asked to set a username. This is stored locally.
|
||||||
|
|
||||||
## Generating Music
|
## Configuration
|
||||||
|
|
||||||
1. **Simple Mode**: Enter a description of the music you want
|
### Environment Variables
|
||||||
2. **Custom Mode**: Fine-tune parameters like BPM, key, duration, and add lyrics
|
|
||||||
3. Click "Create" to generate
|
|
||||||
|
|
||||||
Generated songs are saved locally and appear in your library.
|
Edit `server/.env`:
|
||||||
|
|
||||||
## Additional Features
|
```env
|
||||||
|
# Server
|
||||||
|
PORT=3001
|
||||||
|
NODE_ENV=development
|
||||||
|
|
||||||
|
# ACE-Step API
|
||||||
|
ACESTEP_API_URL=http://localhost:8001
|
||||||
|
|
||||||
|
# Database
|
||||||
|
DATABASE_PATH=./data/acestep.db
|
||||||
|
|
||||||
|
# Storage
|
||||||
|
AUDIO_DIR=./public/audio
|
||||||
|
|
||||||
|
# Optional: Pexels API for video backgrounds
|
||||||
|
PEXELS_API_KEY=your_key_here
|
||||||
|
```
|
||||||
|
|
||||||
|
### LAN Access
|
||||||
|
|
||||||
|
ACE-Step UI automatically supports LAN access. Start the servers and access from any device:
|
||||||
|
|
||||||
|
1. Find your computer's IP: `hostname -I` (Linux) or `ipconfig` (Windows)
|
||||||
|
2. Open `http://YOUR_IP:3000` on any device
|
||||||
|
|
||||||
|
## Generation Modes
|
||||||
|
|
||||||
|
### Simple Mode
|
||||||
|
Enter a description of the music you want. The AI handles the rest.
|
||||||
|
|
||||||
|
### Custom Mode
|
||||||
|
Fine-tune every parameter:
|
||||||
|
|
||||||
|
| Parameter | Description |
|
||||||
|
|-----------|-------------|
|
||||||
|
| **Title** | Song title |
|
||||||
|
| **Lyrics** | Full lyrics with structure tags `[Verse]`, `[Chorus]`, etc. |
|
||||||
|
| **Style** | Genre, mood, instruments, tempo descriptors |
|
||||||
|
| **Duration** | 30-240 seconds |
|
||||||
|
| **BPM** | 60-200 beats per minute |
|
||||||
|
| **Key** | Musical key (C major, A minor, etc.) |
|
||||||
|
| **Time Signature** | 4/4, 3/4, 6/8, etc. |
|
||||||
|
|
||||||
|
### Advanced Settings
|
||||||
|
|
||||||
|
| Setting | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| **Inference Steps** | Higher = better quality, slower (default: 60) |
|
||||||
|
| **Guidance Scale** | Prompt adherence strength (default: 15) |
|
||||||
|
| **Batch Size** | Number of variations to generate |
|
||||||
|
| **Thinking Mode** | AI prompt enhancement |
|
||||||
|
| **Random Seed** | For reproducible results |
|
||||||
|
|
||||||
|
## Built-in Tools
|
||||||
|
|
||||||
### Audio Editor
|
### Audio Editor
|
||||||
Click the waveform icon on any song to open the built-in audio editor for trimming, fading, and effects.
|
Click the edit icon on any song to open AudioMass:
|
||||||
|
- Cut, copy, paste audio
|
||||||
|
- Apply fades and effects
|
||||||
|
- Export in multiple formats
|
||||||
|
|
||||||
### Stem Extraction
|
### Stem Extraction
|
||||||
Extract vocals, drums, bass, and other stems from any song using the Demucs-powered stem separator.
|
Separate any song into:
|
||||||
|
- 🎤 Vocals
|
||||||
|
- 🥁 Drums
|
||||||
|
- 🎸 Bass
|
||||||
|
- 🎹 Other instruments
|
||||||
|
|
||||||
### Video Generator
|
### Video Generator
|
||||||
Create music videos with:
|
Create music videos with:
|
||||||
- Custom backgrounds from Pexels (requires API key)
|
- Pexels stock footage (requires API key)
|
||||||
- Gradient animations
|
- Gradient animations
|
||||||
- Lyrics display
|
- Lyrics overlay
|
||||||
- Album art overlay
|
- Album art display
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
### "ACE-Step API not reachable"
|
| Issue | Solution |
|
||||||
Make sure the ACE-Step API server is running on port 8001:
|
|-------|----------|
|
||||||
```bash
|
| **ACE-Step API not reachable** | Ensure `uv run acestep-api --port 8001` is running |
|
||||||
cd /path/to/ACE-Step
|
| **CUDA out of memory** | Close other GPU apps, reduce duration/batch size |
|
||||||
uv run acestep-api --port 8001
|
| **Songs show 0:00 duration** | Install FFmpeg: `sudo apt install ffmpeg` |
|
||||||
|
| **LAN access not working** | Check firewall allows ports 3000 and 3001 |
|
||||||
|
| **Liked songs not saving** | Refresh page, check browser console for errors |
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
ace-step-ui/
|
||||||
|
├── components/ # React components
|
||||||
|
│ ├── CreatePanel.tsx # Main generation form
|
||||||
|
│ ├── Player.tsx # Bottom audio player
|
||||||
|
│ ├── LibraryView.tsx # Song library
|
||||||
|
│ └── ...
|
||||||
|
├── server/
|
||||||
|
│ ├── src/
|
||||||
|
│ │ ├── routes/ # API endpoints
|
||||||
|
│ │ ├── services/ # Business logic
|
||||||
|
│ │ └── db/ # SQLite database
|
||||||
|
│ ├── public/
|
||||||
|
│ │ ├── audio/ # Generated audio files
|
||||||
|
│ │ └── demucs-web/ # Stem extraction UI
|
||||||
|
│ └── audio-editor/ # AudioMass editor
|
||||||
|
├── services/ # Frontend API client
|
||||||
|
├── context/ # React context providers
|
||||||
|
└── docs/ # Documentation & assets
|
||||||
```
|
```
|
||||||
|
|
||||||
### "CUDA out of memory"
|
## API Endpoints
|
||||||
- Close other GPU-intensive applications
|
|
||||||
- Try generating shorter clips (30-60 seconds)
|
|
||||||
- Reduce batch size if available
|
|
||||||
|
|
||||||
### Songs show 0:00 duration
|
| Method | Endpoint | Description |
|
||||||
This can happen if FFprobe is not installed. Install it:
|
|--------|----------|-------------|
|
||||||
```bash
|
| `POST` | `/api/generate` | Start music generation |
|
||||||
# Ubuntu/Debian
|
| `GET` | `/api/generate/status/:id` | Get job status |
|
||||||
sudo apt install ffmpeg
|
| `GET` | `/api/songs` | Get user's songs |
|
||||||
|
| `POST` | `/api/songs/:id/like` | Toggle like |
|
||||||
# macOS
|
| `GET` | `/api/playlists` | Get playlists |
|
||||||
brew install ffmpeg
|
| `POST` | `/api/playlists` | Create playlist |
|
||||||
```
|
|
||||||
New songs will automatically detect duration. For existing songs, they'll update when played.
|
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Run in development mode with hot reload
|
# Development mode with hot reload
|
||||||
./start.sh
|
./start.sh
|
||||||
|
|
||||||
# Build for production
|
# Build for production
|
||||||
@@ -186,12 +330,29 @@ npm run build
|
|||||||
cd server && npm run build
|
cd server && npm run build
|
||||||
```
|
```
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT
|
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
- [ACE-Step](https://github.com/ace-step/ACE-Step) - AI music generation model
|
- **[ACE-Step](https://github.com/ace-step/ACE-Step)** - AI music generation model
|
||||||
- [Demucs](https://github.com/facebookresearch/demucs) - Audio source separation
|
- **[AudioMass](https://github.com/pkalogiros/AudioMass)** - Web audio editor
|
||||||
- [Pexels](https://www.pexels.com) - Stock video backgrounds
|
- **[Demucs](https://github.com/facebookresearch/demucs)** - Audio source separation
|
||||||
|
- **[Pexels](https://www.pexels.com)** - Stock video backgrounds
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is open source under the [MIT License](LICENSE).
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions are welcome! Please feel free to:
|
||||||
|
|
||||||
|
1. Fork the repository
|
||||||
|
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
||||||
|
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
||||||
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
||||||
|
5. Open a Pull Request
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
Made with ❤️ for the open-source AI music community
|
||||||
|
</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user