Spaces:
Build error
Build error
| # 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 | |