fomext commited on
Commit
dde3768
·
verified ·
1 Parent(s): 75cbb3c

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dockerfile +37 -0
  2. app.py +44 -0
  3. requirements.txt +5 -0
Dockerfile ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10
2
+
3
+ # System deps
4
+ RUN apt-get update && apt-get install -y \
5
+ ffmpeg \
6
+ git \
7
+ libgl1 \
8
+ libglib2.0-0 \
9
+ && rm -rf /var/lib/apt/lists/*
10
+
11
+ # User
12
+ RUN useradd -m -u 1000 user
13
+ USER user
14
+ ENV PATH=/home/user/.local/bin:$PATH
15
+ WORKDIR /app
16
+
17
+ # Upgrade pip
18
+ RUN pip install --upgrade pip setuptools wheel
19
+
20
+ # Install torch FIRST (CPU)
21
+ RUN pip install \
22
+ torch==2.1.0+cpu \
23
+ torchaudio==2.1.0+cpu \
24
+ --index-url https://download.pytorch.org/whl/cpu
25
+
26
+ # 🔥 INSTALL AUDIOCRAFT FROM GITHUB (CRITICAL)
27
+ RUN pip install \
28
+ git+https://github.com/facebookresearch/audiocraft.git@v1.3.0
29
+
30
+ # App deps
31
+ COPY --chown=user requirements.txt .
32
+ RUN pip install --no-cache-dir -r requirements.txt
33
+
34
+ # Copy app
35
+ COPY --chown=user . /app
36
+
37
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+
3
+ import audiocraft
4
+ print("Audiocraft version:", audiocraft.__version__)
5
+
6
+ from audiocraft.models import MusicGen
7
+ from audiocraft.data.audio import audio_write
8
+ import uuid
9
+ import os
10
+
11
+ app = FastAPI()
12
+
13
+ MODEL_NAME = "musicgen-medium"
14
+ OUTPUT_DIR = "outputs"
15
+ os.makedirs(OUTPUT_DIR, exist_ok=True)
16
+
17
+ print("Loading MusicGen model...")
18
+ model = MusicGen.get_pretrained(MODEL_NAME)
19
+ model.set_generation_params(
20
+ duration=30, # seconds
21
+ temperature=1.0,
22
+ top_k=250,
23
+ top_p=0.0
24
+ )
25
+
26
+ @app.post("/generate")
27
+ async def generate(prompt: str):
28
+ wav = model.generate([prompt])[0]
29
+
30
+ filename = f"{uuid.uuid4().hex}"
31
+ path = os.path.join(OUTPUT_DIR, filename)
32
+
33
+ audio_write(
34
+ path,
35
+ wav.cpu(),
36
+ model.sample_rate,
37
+ strategy="loudness",
38
+ loudness_compressor=True
39
+ )
40
+
41
+ return {
42
+ "prompt": prompt,
43
+ "file": f"{filename}.wav"
44
+ }
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ fastapi
2
+ uvicorn
3
+ numpy
4
+ scipy
5
+ soundfile