Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from transformers import AutoProcessor, MusicgenForConditionalGeneration | |
| import torch | |
| # Загружаем предварительно обученный процессор и модель | |
| processor = AutoProcessor.from_pretrained("facebook/musicgen-small") | |
| model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small") | |
| def generate_music(prompt): | |
| # Преобразуем текстовый запрос в формат, подходящий для модели | |
| inputs = processor( | |
| text=[prompt], | |
| padding=True, | |
| return_tensors="pt", | |
| ) | |
| # Генерируем музыку на основе текстового запроса | |
| with torch.no_grad(): # Отключаем расчет градиентов для экономии памяти | |
| audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256) | |
| # В зависимости от формата выходных данных модели, нужно преобразовать их в аудио | |
| # В этом примере предполагается, что audio_values - это тензор с аудиоданными | |
| audio = audio_values.cpu().numpy().flatten() # Преобразуем в одномерный массив | |
| # Сохраняем аудио в файл | |
| # Это пример, вам необходимо использовать правильный формат и библиотеку для сохранения аудио | |
| # Например, используя soundfile или scipy.io.wavfile для сохранения в WAV | |
| import soundfile as sf | |
| audio_file_path = "generated_music.wav" | |
| sf.write(audio_file_path, audio, samplerate=16000) # Предполагаемая частота дискретизации | |
| return audio_file_path | |
| with gr.Blocks() as demo: | |
| with gr.Row(): | |
| prompt_input = gr.Textbox(lines=3, placeholder="Введите описание музыки...", label="Текстовый запрос") | |
| with gr.Row(): | |
| generate_button = gr.Button("Создать") | |
| with gr.Row(): | |
| output_audio = gr.Audio(label="Сгенерированная музыка") | |
| generate_button.click(fn=generate_music, inputs=prompt_input, outputs=output_audio) | |
| demo.launch() |