MusicGenAi / app.py
Rooni's picture
Update app.py
7156f5b verified
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()