import gradio as gr from transformers import pipeline import scipy.io.wavfile import os # Stelle sicher, dass der static-Ordner existiert os.makedirs('static', exist_ok=True) print("Lade MusicGen Modell... (Dies kann einige Minuten dauern)") synthesiser = pipeline( "text-to-audio", "facebook/musicgen-small", model_kwargs={"attn_implementation": "eager"} ) print("Modell erfolgreich geladen!") # Funktion zur Musikgenerierung def generate_music(description): try: print(f"Generiere Musik für: '{description}'") music = synthesiser(description, forward_params={"do_sample": True}) # Datei speichern output_path = "static/generated_music.wav" scipy.io.wavfile.write( output_path, rate=music["sampling_rate"], data=music["audio"] ) print("Musik erfolgreich generiert!") return output_path # Rückgabe des Dateipfads except Exception as e: print(f"Fehler bei der Musikgenerierung: {str(e)}") return f"Fehler: {str(e)}" # Gradio-Interface description = "Gib eine Beschreibung ein, um Musik zu generieren:" title = "MusicGen: Text-to-Audio Generator" examples = [["A relaxing piece of piano music for a calm evening."]] interface = gr.Interface( fn=generate_music, inputs=gr.Textbox(label="Musikbeschreibung", placeholder="Z.B. Ein fröhliches Lied mit Gitarren."), outputs=gr.Audio(label="Generierte Musik", type="filepath"), title=title, description=description, examples=examples ) # App starten if __name__ == "__main__": interface.launch()