Nikolaygod777 commited on
Commit
74faf6c
·
verified ·
1 Parent(s): 348ac11

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -19
app.py CHANGED
@@ -1,55 +1,65 @@
1
  import gradio as gr
2
  import torch
 
 
3
  from diffusers import StableVideoDiffusionPipeline
4
  from transformers import MusicgenForConditionalGeneration, MusicgenProcessor
5
 
6
- # Загрузка модели для генерации видео (Stable Video Diffusion)
7
  device = "cuda" if torch.cuda.is_available() else "cpu"
 
 
8
  video_pipe = StableVideoDiffusionPipeline.from_pretrained(
9
  "stabilityai/stable-video-diffusion-img2vid",
10
  torch_dtype=torch.float16 if device == "cuda" else torch.float32
11
  ).to(device)
12
 
13
- # Загрузка модели для генерации музыки (MusicGen)
14
  music_model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
15
  music_processor = MusicgenProcessor.from_pretrained("facebook/musicgen-small")
16
 
17
  # Функция генерации видео
18
  def generate_video(prompt):
19
- video_frames = video_pipe(prompt, num_inference_steps=25).frames
20
- return video_frames
 
 
 
 
 
 
 
21
 
22
  # Функция генерации музыки
23
  def generate_music(prompt):
24
- inputs = music_processor(text=[prompt], return_tensors="pt") # Исправленный вызов
25
  audio_output = music_model.generate(**inputs) # Генерация аудио
26
-
27
- # Декодируем аудио
28
- audio_array = audio_output.detach().cpu().numpy().squeeze()
29
-
30
- # Сохранение в файл
31
  audio_path = "generated_audio.wav"
32
- sf.write(audio_path, audio_array, samplerate=16000) # Запись в WAV
33
-
34
  return audio_path
35
-
36
 
37
  # Интерфейс Gradio
38
  with gr.Blocks() as demo:
39
- gr.Markdown("# OnlyReels.AI 🎥🎵")
40
-
41
  with gr.Row():
42
  prompt_input = gr.Textbox(label="Введите описание видео и музыки", placeholder="Пример: Киберпанк-город ночью, синтезаторная музыка")
43
-
44
  with gr.Row():
45
  btn_video = gr.Button("🎬 Сгенерировать видео")
46
  btn_music = gr.Button("🎵 Сгенерировать музыку")
47
-
48
  video_output = gr.Video(label="Сгенерированное видео")
49
  music_output = gr.Audio(label="Сгенерированная музыка")
50
-
51
  btn_video.click(fn=generate_video, inputs=prompt_input, outputs=video_output)
52
  btn_music.click(fn=generate_music, inputs=prompt_input, outputs=music_output)
53
 
54
  # Запуск интерфейса
55
- demo.launch(share=True)
 
1
  import gradio as gr
2
  import torch
3
+ import soundfile as sf
4
+ import numpy as np
5
  from diffusers import StableVideoDiffusionPipeline
6
  from transformers import MusicgenForConditionalGeneration, MusicgenProcessor
7
 
8
+ # Определяем устройство (GPU, если доступен)
9
  device = "cuda" if torch.cuda.is_available() else "cpu"
10
+
11
+ # Загружаем модель для генерации видео (Stable Video Diffusion)
12
  video_pipe = StableVideoDiffusionPipeline.from_pretrained(
13
  "stabilityai/stable-video-diffusion-img2vid",
14
  torch_dtype=torch.float16 if device == "cuda" else torch.float32
15
  ).to(device)
16
 
17
+ # Загружаем модель для генерации музыки (MusicGen)
18
  music_model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
19
  music_processor = MusicgenProcessor.from_pretrained("facebook/musicgen-small")
20
 
21
  # Функция генерации видео
22
  def generate_video(prompt):
23
+ # Stable Video Diffusion требует изображение, а не текст ❗
24
+ init_image = video_pipe.text_to_image(prompt, num_inference_steps=25).images[0] # Генерация стартового кадра
25
+ video_frames = video_pipe(init_image, num_inference_steps=25).frames # Генерация видео
26
+
27
+ # Сохранение видео
28
+ video_path = "generated_video.mp4"
29
+ video_pipe.save_video(video_frames, video_path, fps=15)
30
+
31
+ return video_path
32
 
33
  # Функция генерации музыки
34
  def generate_music(prompt):
35
+ inputs = music_processor(text=[prompt], return_tensors="pt") # Правильная передача текста
36
  audio_output = music_model.generate(**inputs) # Генерация аудио
37
+
38
+ # Декодирование аудиовыхода
39
+ audio_array = audio_output[0].cpu().detach().numpy().squeeze()
40
+
41
+ # Сохранение аудио в файл
42
  audio_path = "generated_audio.wav"
43
+ sf.write(audio_path, audio_array, samplerate=16000) # Правильная запись WAV
44
+
45
  return audio_path
 
46
 
47
  # Интерфейс Gradio
48
  with gr.Blocks() as demo:
49
+ gr.Markdown("# OnlyReels.AI 🎥🎵 - Генерация видео с музыкой")
50
+
51
  with gr.Row():
52
  prompt_input = gr.Textbox(label="Введите описание видео и музыки", placeholder="Пример: Киберпанк-город ночью, синтезаторная музыка")
53
+
54
  with gr.Row():
55
  btn_video = gr.Button("🎬 Сгенерировать видео")
56
  btn_music = gr.Button("🎵 Сгенерировать музыку")
57
+
58
  video_output = gr.Video(label="Сгенерированное видео")
59
  music_output = gr.Audio(label="Сгенерированная музыка")
60
+
61
  btn_video.click(fn=generate_video, inputs=prompt_input, outputs=video_output)
62
  btn_music.click(fn=generate_music, inputs=prompt_input, outputs=music_output)
63
 
64
  # Запуск интерфейса
65
+ demo.launch()