tomasz-svd / audio_engine.py
webnowa's picture
Create audio_engine.py
b4616fd verified
Raw
History Blame Contribute Delete
1.3 kB
# audio_engine.py
import random
from pydub import AudioSegment
# Dostępne loopy (musisz wrzucić je do folderu assets/loops/)
LOOPS = {
"energetyczny TikTok": [
"assets/loops/tiktok_beat1.mp3",
"assets/loops/tiktok_beat2.mp3",
"assets/loops/tiktok_beat3.mp3"
],
"premium elegancki": [
"assets/loops/premium_pad1.mp3",
"assets/loops/premium_pad2.mp3"
],
"luźny, młodzieżowy": [
"assets/loops/chill1.mp3",
"assets/loops/chill2.mp3"
],
"poważny, biznesowy": [
"assets/loops/corporate1.mp3",
"assets/loops/corporate2.mp3"
]
}
def generate_music(style: str, length_sec: int = 15):
"""
Generuje muzykę na podstawie stylu.
Miksuje loopy i przycina do zadanej długości.
"""
if style not in LOOPS:
style = "energetyczny TikTok"
chosen_loop = random.choice(LOOPS[style])
base = AudioSegment.from_file(chosen_loop)
# powtarzamy loop do wymaganej długości
output = AudioSegment.silent(duration=0)
while len(output) < length_sec * 1000:
output += base
# przycinamy dokładnie
output = output[:length_sec * 1000]
# zapis
out_path = "generated_music.mp3"
output.export(out_path, format="mp3")
return out_path