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 ý?
Đừ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.
*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.*
Tạo file
*Mẹo: 256 tokens ≈ 5 giây nhạc.*
[Thể loại] + [Nhạc cụ chính] + [Cảm xúc/Không khí] + [Tốc độ]
Ví dụ:
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 ý?
Đừ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"