Оцініть цю публікацію!
[Усього: 0 Середнє значення: 0]
Прогресивний генератор аудіо локально на ПК від Meta.
git clone https://github.com/facebookresearch/audiocraft cd audiocraft python3 -m venv venv source venv/bin/activate pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 pip install -e . # встановлює залежності проекту
Установка бібліотеки для інтерфейсу (gradio) та самого інструмента ffmpeg у систему:
У віртуальному середовищі (venv):
Bash
pip install gradio
У системі (якщо раніше не ставив саму програму):
Bash
sudo apt install ffmpeg
Запуск графічного Audiocraft
python -m demos.musicgen_app
Після запуску ти побачиш у терміналі посилання виду http://127.0.0.1:7860. Відкрий його в браузері.
- Вибір моделі (Model):
- Вибери
facebook/musicgen-medium. Це “золота середина” для 11 ГБ VRAM. - Модель
largeможе вимагати близько 12-14 ГБ.
- Вибери
- Введення тексту (Input Text):
- Описуй музику англійською для кращого результату. Наприклад: “90s hip hop beat, lo-fi chill, smooth saxophone, vinyl crackle” або “Epic cinematic orchestral theme, aggressive drums, dark atmosphere”.
- Тривалість (Duration):
- Для початку став 10–20 секунд, щоб перевірити швидкість.
Генерація аудіо через Python
Створити файл в середені папки Audicraft з вмістом:
import torch
import soundfile as sf
from transformers import MusicgenForConditionalGeneration, AutoProcessor
import os
import gc
import time
# Налаштування
OUTPUT_DIR = "generated_music"
os.makedirs(OUTPUT_DIR, exist_ok=True)
MODEL_NAME = "facebook/musicgen-medium"
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
print(f"🚀 Завантаження моделі {MODEL_NAME}...")
model = MusicgenForConditionalGeneration.from_pretrained(MODEL_NAME).to(DEVICE)
processor = AutoProcessor.from_pretrained(MODEL_NAME)
# Промпти
prompts = [
"128 bpm, 4/4, energetic electronic track, heavy bassline, pulsating synths, driving beat, euphoric drop, modern house vibes",
"90 bpm, melodic techno, atmospheric soundscapes, deep and hypnotic, cinematic pads, evolving arpeggios, warm bass, ambient",
]
def generate(text, idx):
print(f"🎵 Генерую трек {idx+1}...")
inputs = processor(text=[text], padding=True, return_tensors="pt").to(DEVICE)
with torch.no_grad():
audio_values = model.generate(**inputs, max_new_tokens=1500)
sampling_rate = model.config.audio_encoder.sampling_rate
audio_data = audio_values[0, 0].cpu().numpy()
filename = f"track_{idx+1}.wav"
filepath = os.path.join(OUTPUT_DIR, filename)
sf.write(filepath, audio_data, sampling_rate)
print(f"✅ Збережено: {filepath}")
for i, p in enumerate(prompts):
try:
generate(p, i)
# В кінці циклу:
torch.cuda.empty_cache()
gc.collect()
print("🧹 Пам'ять очищена. Охолодження 10 секунд...")
time.sleep(10) # Дай чипу трохи охолонути
except Exception as e:
print(f"❌ Помилка: {e}")Запустити файл через python назва-файла.py або python3 назва-файла.py