AI Music Composer: Tự tạo nhạc nền Lofi/EDM "không bản quyền" với MusicGen và Python

AI Hunter

Member
AI Music Composer: Tự tạo nhạc nền Lofi/EDM "không bản quyền" với MusicGen và Python

Bạn vừa dựng xong một video tuyệt đẹp, nhưng up lên YouTube thì bị tắt tiếng vì dính bản quyền nhạc?
Bạn cần một đoạn nhạc Lofi chill để học bài, nhưng không tìm thấy bài nào ưng ý?

AI Music Composer Tự tạo nhạc nền LofiEDM không bản quyền với MusicGen và Python.jpg

Đừng lo, năm 2026 rồi, hãy để AI làm nhạc sĩ cho bạn.
Bài viết này sẽ hướng dẫn bạn sử dụng **MusicGen** - mô hình tạo nhạc mã nguồn mở cực mạnh của Meta. Chỉ cần gõ: *"Nhạc Pop vui tươi, tiếng guitar acoustic chủ đạo"* là bạn có ngay file MP3.

1. Tại sao lại là MusicGen?​

  • Chất lượng cao: MusicGen tạo ra âm thanh 32kHz, nghe rất "sạch" và chuyên nghiệp.
  • Điều khiển bằng văn bản: Bạn muốn nhạc buồn? Nhạc Epic? Nhạc 8-bit game? Chỉ cần ra lệnh (Prompt).
  • Mã nguồn mở: Miễn phí hoàn toàn. Bạn có thể chạy trên Google Colab hoặc máy cá nhân có GPU.

2. Chuẩn bị môi trường​

Chúng ta sẽ sử dụng thư viện `transformers` của Hugging Face để tải model.
*Lưu ý: Bạn nên có GPU (NVIDIA) để quá trình tạo nhạc diễn ra nhanh. Nếu dùng CPU sẽ khá chậm.*

Bash:
# Cài đặt thư viện
pip install git+https://github.com/huggingface/transformers.git
pip install scipy torch

3. Triển khai Code (Python)​


Tạo file ai_composer.py.

Bước 1: Load Model​

Chúng ta dùng phiên bản `musicgen-small` cho nhẹ (khoảng 2GB VRAM). Nếu máy khỏe (8GB VRAM trở lên), bạn hãy đổi thành `musicgen-medium` hoặc `musicgen-large` để nhạc hay hơn.

Python:
from transformers import AutoProcessor, MusicgenForConditionalGeneration
import scipy.io.wavfile
import torch

# Kiểm tra GPU
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"🎵 Đang khởi động Studio trên thiết bị: {device}")

# Tải model và processor
print("⏳ Đang tải nhạc cụ (Model)...")
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small").to(device)

Bước 2: Sáng tác nhạc (Generation)​

Hàm này nhận vào một mô tả (prompt) và độ dài mong muốn (tính bằng tokens).
*Mẹo: 256 tokens ≈ 5 giây nhạc.*

Python:
def generate_music(prompt, duration_seconds=10, filename="output.wav"):
    print(f"🎹 Đang sáng tác: '{prompt}'...")
   
    # Chuẩn bị input
    inputs = processor(
        text=[prompt],
        padding=True,
        return_tensors="pt",
    ).to(device)

    # Tính toán số lượng token dựa trên thời gian
    # MusicGen sinh ra khoảng 50 token mỗi giây
    max_tokens = int(duration_seconds * 50)

    # Sinh âm thanh
    audio_values = model.generate(**inputs, max_new_tokens=max_tokens)
   
    # Lưu file
    sampling_rate = model.config.audio_encoder.sampling_rate
    # Lấy sample đầu tiên (vì chúng ta chỉ đưa vào 1 prompt)
    audio_data = audio_values[0, 0].cpu().numpy()
   
    scipy.io.wavfile.write(filename, rate=sampling_rate, data=audio_data)
    print(f"✅ Đã xong! File nhạc lưu tại: {filename}")

# --- CHẠY THỬ ---
if __name__ == "__main__":
    # Prompt 1: Nhạc Lofi
    generate_music(
        prompt="lofi hip hop beat, chill, relaxing, rain sounds in background",
        duration_seconds=15,
        filename="lofi_chill.wav"
    )

    # Prompt 2: Nhạc EDM
    generate_music(
        prompt="upbeat EDM, heavy bass, synthesizer, dance party, high energy",
        duration_seconds=15,
        filename="edm_dance.wav"
    )

4. Kết quả và Mẹo Prompt​

Chất lượng nhạc phụ thuộc rất nhiều vào cách bạn mô tả. Hãy thử công thức sau:
[Thể loại] + [Nhạc cụ chính] + [Cảm xúc/Không khí] + [Tốc độ]

Ví dụ:
  • "80s pop track with synth drums and guitar, happy and driving"
  • "Cinematic orchestral soundtrack, epic, dramatic, war drums"
  • "Piano solo, sad, slow tempo, emotional"

5. Nâng cao: Audio Continuation (Tiếp nối nhạc)​

MusicGen còn có khả năng "nghe" một đoạn nhạc ngắn của bạn (ví dụ: 5s huýt sáo) và viết tiếp phần còn lại theo phong cách đó. Đây là tính năng cực mạnh cho các nhạc sĩ bí ý tưởng. (Bạn có thể tìm hiểu thêm về tham số `audio_values` trong hàm generate).

Kết luận​

Với MusicGen, mỗi người đều có thể trở thành một nhà sản xuất âm nhạc. Không còn nỗi lo bản quyền, giới hạn duy nhất chỉ là trí tưởng tượng của bạn. Hãy thử tạo ngay một bản intro cho kênh Youtube của mình xem sao!
 
Back
Top