import gradio as gr import torch import scipy.io.wavfile import numpy as np import tempfile from audiocraft.models import MusicGen, AudioGen print("🔄 Chargement des modèles...") music_model = MusicGen.get_pretrained("facebook/musicgen-small") audio_model = AudioGen.get_pretrained("facebook/audiogen-medium") def generate_music(prompt, duration=10): music_model.set_generation_params(duration=duration) wav = music_model.generate([prompt]) wav_np = wav[0, 0].cpu().numpy() with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f: scipy.io.wavfile.write(f.name, music_model.sample_rate, (wav_np * 32767).astype(np.int16)) return f.name def generate_sound(prompt, duration=5): audio_model.set_generation_params(duration=duration) wav = audio_model.generate([prompt]) wav_np = wav[0, 0].cpu().numpy() with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f: scipy.io.wavfile.write(f.name, audio_model.sample_rate, (wav_np * 32767).astype(np.int16)) return f.name with gr.Blocks(title="🎙️ Studio Audio IA") as demo: gr.Markdown("## 🎙️ Studio Audio IA") with gr.Tab("🎵 Musique"): p1 = gr.Textbox(label="Prompt") d1 = gr.Slider(5, 30, value=10, step=5, label="Durée (s)") b1 = gr.Button("Générer") o1 = gr.Audio(label="Résultat") b1.click(generate_music, inputs=[p1, d1], outputs=o1) with gr.Tab("🔊 Bruitages"): p2 = gr.Textbox(label="Prompt") d2 = gr.Slider(2, 15, value=5, label="Durée (s)") b2 = gr.Button("Générer") o2 = gr.Audio(label="Résultat") b2.click(generate_sound, inputs=[p2, d2], outputs=o2) demo.launch(server_name="0.0.0.0", server_port=7860, share=False)