Patel Traders commited on
Commit
b9a91fb
·
verified ·
1 Parent(s): 01ead53

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -72
app.py CHANGED
@@ -1,71 +1,66 @@
1
- # --- 🔱 हनुमान AI: अजेय मानवीय स्वर (Suno Bark) ---
2
  # मार्गदर्शक: दिव्य पटेल जी | भारत 🇮🇳
3
- # मॉडल: suno/bark-small (पूर इंसा आवाज़, 10 अलग-अलग्वों े साथ)
4
- # विशेषता: कोईोटिक आव ीं, Edge TTS हीं।
5
 
6
  import gradio as gr
7
  import torch
8
- from transformers import AutoProcessor, BarkModel
9
- import scipy.io.wavfile as wavfile
10
  import os
11
  from datetime import datetime
12
 
13
- # 🛡️ गति के लिए CPU थ्रेड्स सेट करना
14
- torch.set_num_threads(2)
15
  os.environ["OMP_NUM_THREADS"] = "2"
 
16
 
17
- MODEL_ID = "suno/bark-small"
18
 
19
- print(f"🔱 हनुमान AI: असलइंसनी आवाज़ का मॉडल '{MODEL_ID}' लोड हो रहा है...")
20
 
21
- # 🛠️ मॉडल को सुरक्षित रूप से लोड करना ताकि RAM न भरे
22
  try:
23
- processor = AutoProcessor.from_pretrained(MODEL_ID)
24
- model = BarkModel.from_pretrained(
25
  MODEL_ID,
26
- torch_dtype=torch.float32,
27
- low_cpu_mem_usage=True
28
- ).to("cpu")
29
- print("🔱 हनुमान AI: इंसानी आवाज़ का मॉडल पूर्णतः सक्रिय है!")
 
30
  except Exception as e:
31
  print(f"🔱 गंभीर त्रुटि: {e}")
32
- processor, model = None, None
33
 
 
34
  if not os.path.exists("outputs"):
35
  os.makedirs("outputs")
36
 
37
- def hanuman_human_tts(text, lang_choice, speaker_id):
38
- """Suno Bark का उपयोग करके 100% इंानी ाज़ बनाने वाला इंजन"""
39
- if not text.strip() or model is None or processor is None:
40
- return None
 
 
 
41
 
42
  try:
43
- # भा चयन
44
- lang_prefix = "hi" if lang_choice == "Hindi (हिदी)" else "en"
 
 
 
 
 
 
45
 
46
- # 🎙️ अलग-अलग इंसानी आाज़ चयन (0 9 तक)
47
- # उदाहरण: 'v2/hi_speaker_0' (हिंदी पुरुष), 'v2/hi_speaker_1' (हिंदी महिला) आदि।
48
- voice_preset = f"v2/{lang_prefix}_speaker_{int(speaker_id)}"
49
-
50
- # टेक्स्ट को प्रोसेस क��ना
51
- inputs = processor(text, voice_preset=voice_preset, return_tensors="pt").to("cpu")
52
-
53
- # ⚡ आवाज़ उत्पन्न करना (Generative Audio)
54
- # CPU पर इसे सोचने में कुछ सेकंड लग सकते हैं, यह सामान्य है।
55
- audio_array = model.generate(**inputs, max_new_tokens=256)
56
 
57
- # डियो क नम्पी (Numpy) में दलना
58
- audio_numpy = audio_array.cpu().numpy().squeeze()
59
- sample_rate = model.generation_config.sample_rate
60
-
61
- # ऑडियो फाइल को सुरक्षित करना
62
- filename = f"outputs/human_speech_{datetime.now().strftime('%Y%m%d_%H%M%S')}.wav"
63
- wavfile.write(filename, sample_rate, audio_numpy)
64
-
65
- return filename
66
  except Exception as e:
67
- print(f"🔱 तकनीकी बाधा: {e}")
68
- return None
69
 
70
  # --- 🔱 दिव्य भगवा यूआई ---
71
  divine_ui = """
@@ -81,8 +76,8 @@ divine_ui = """
81
  .bhagwa-header p { font-size: 16px !important; opacity: 0.95; font-weight: 500; }
82
  </style>
83
  <div class="bhagwa-header">
84
- <h1>🔱 हनुमान AI - असली मानवीय स्वर</h1>
85
- <p>Pioneered by Divy Patel | भारत 🇮🇳 | Suno Bark तकनीक</p>
86
  </div>
87
  """
88
 
@@ -91,41 +86,30 @@ with gr.Blocks() as demo:
91
 
92
  with gr.Row():
93
  with gr.Column(scale=1):
94
- text_input = gr.Textbox(
95
- label="अपना संदेश िखें",
96
- placeholder="यहाँ वह टेक्स्ट लिखें िसे आप इंसानी ाज़ में ुलवाना चाहते हैं...",
97
  lines=5
98
  )
99
-
100
- with gr.Row():
101
- lang_selector = gr.Radio(
102
- choices=["Hindi (हिंदी)", "English (अंग्रेजी)"],
103
- label="भाषा चुनें",
104
- value="Hindi (हिंदी)"
105
- )
106
- speaker_selector = gr.Slider(
107
- minimum=0, maximum=9, step=1, value=0,
108
- label="आवाज़ का प्रकार (0 से 9 अलग-अलग इंसान)"
109
- )
110
-
111
- submit_btn = gr.Button("इंसानी आवाज़ उत्पन्न करें", variant="primary")
112
 
113
  with gr.Column(scale=1):
114
- audio_output = gr.Audio(label="हनुमान AI ानवीय स्वर", type="filepath")
115
  gr.Markdown("""
116
- ### 🚩 दिव्य निर्देश:
117
- 1. अपना टेक्ट लिखें (कृपया एक बार में 1-2 वाक्ी लिखें क्योंकि CPU पर जनरेट होने में समय लगता है)
118
- 2. भाचुनें।
119
- 3. **0 9 के बीच स्लइडर घुमाएँ** (हर प अलग इसान की आवाज़ है - कुछ पुुष, कुछ महिलाएँ)
120
- 4. बटन दबाएँ और प्रतीक्षा करें। यह मॉडल इंसानों की तरह सोचकर आवाज़ बनाता है!
121
  """)
122
 
123
  # इवेंट बाइंडिंग
124
  submit_btn.click(
125
- fn=hanuman_human_tts,
126
- inputs=[text_input, lang_selector, speaker_selector],
127
- outputs=audio_output
128
  )
129
 
 
130
  if __name__ == "__main__":
131
- demo.launch()
 
1
+ # --- 🔱 हनुमान AI: अजेय वीडि जनेशन (CogVideoX-2b) ---
2
  # मार्गदर्शक: दिव्य पटेल जी | भारत 🇮🇳
3
+ # मॉडल: THUDM/CogVideoX-2b (अतयंआधुिक और 16GB रैमरक्षित)
4
+ # विशेषता: CPU बिक्रैश ुए वीडियो निर्माण
5
 
6
  import gradio as gr
7
  import torch
8
+ from diffusers import CogVideoXPipeline
9
+ from diffusers.utils import export_to_video
10
  import os
11
  from datetime import datetime
12
 
13
+ # 🛡️ CPU को ओवलोड से बचाने के लिए थ्रेड्स की सेटिंग
 
14
  os.environ["OMP_NUM_THREADS"] = "2"
15
+ torch.set_num_threads(2)
16
 
17
+ MODEL_ID = "THUDM/CogVideoX-2b"
18
 
19
+ print(f"🔱 हनुमान AI: डियो मह-अस्त्र '{MODEL_ID}' लोड हो रहा है...")
20
 
21
+ # 🛠️ रै ऑप्टिमाइजेशन: मॉडल को सुरक्षित रूप से लोड करना
22
  try:
23
+ # 16GB रैम में फिट करने के लिए bfloat16 का उपयोग आवश्यक है
24
+ pipe = CogVideoXPipeline.from_pretrained(
25
  MODEL_ID,
26
+ torch_dtype=torch.bfloat16
27
+ )
28
+ # मेमोरी बचाने के लिए अजेय अस्त्र (Attention Slicing)
29
+ pipe.enable_attention_slicing()
30
+ print("🔱 हनुमान AI: वीडियो अस्त्र पूर्णतः सक्रिय है!")
31
  except Exception as e:
32
  print(f"🔱 गंभीर त्रुटि: {e}")
33
+ pipe = None
34
 
35
+ # आउटपुट फोल्डर बनाना
36
  if not os.path.exists("outputs"):
37
  os.makedirs("outputs")
38
 
39
+ def hanuman_video_engine(prompt):
40
+ """CogVideoX का उपयोग करके टेक्स्टीडियो बनाने वाला अजेय इंजन"""
41
+ if pipe is None:
42
+ return None, "🔱 सिस्टम त्रुटि: वीडियो मॉडल लोड नहीं हो सका। कृपया रैम की जाँच करें।"
43
+
44
+ if not prompt or len(prompt.strip()) == 0:
45
+ return None, "कृपया कोई संदेश (Prompt) लिखें।"
46
 
47
  try:
48
+ # ⚡ CPU के लिए विशेसुर्षित सेटिंग्स
49
+ # num_inference_steps और num_frames को कम रखा गया ै ताकि CPU पर क्रैश न हो और जल्दी बने
50
+ video_frames = pipe(
51
+ prompt=prompt,
52
+ num_inference_steps=15, # CPU पर इसे 15 से ज्यादा न रखें
53
+ num_frames=16, # 16 फ्रेम का एक छोटा वीडियो
54
+ guidance_scale=6.0
55
+ ).frames[0]
56
 
57
+ # वीडियो क MP4 फॉर्मेट सुरक्षि रना
58
+ filename = f"outputs/divy_video_{datetime.now().strftime('%Y%m%d_%H%M%S')}.mp4"
59
+ export_to_video(video_frames, filename, fps=8)
 
 
 
 
 
 
 
60
 
61
+ return filename, "🔱 वीडियो सफलतापूर्वक बन गय है!"
 
 
 
 
 
 
 
 
62
  except Exception as e:
63
+ return None, f"🔱 तकनीकी बाधा: {str(e)}"
 
64
 
65
  # --- 🔱 दिव्य भगवा यूआई ---
66
  divine_ui = """
 
76
  .bhagwa-header p { font-size: 16px !important; opacity: 0.95; font-weight: 500; }
77
  </style>
78
  <div class="bhagwa-header">
79
+ <h1>🔱 हनुमान AI - वीडि जनेटर (CogVideoX)</h1>
80
+ <p>Pioneered by Divy Patel | भारत 🇮🇳 | अजेय वीडियो तकनीक</p>
81
  </div>
82
  """
83
 
 
86
 
87
  with gr.Row():
88
  with gr.Column(scale=1):
89
+ prompt_input = gr.Textbox(
90
+ label="वीडिो किवरण (Prompt)",
91
+ placeholder="यहाँ लिखें ि आप कैसा वीडियोाना चाहते हैं (सर्वोत्तम परिणाम के लिए अंग्रेजी का प्रयोग करें)...",
92
  lines=5
93
  )
94
+ submit_btn = gr.Button("वीडियो निर्माण प्रारंभ करें", variant="primary")
95
+ status_text = gr.Textbox(label="सिस्टम स्थिति", interactive=False)
 
 
 
 
 
 
 
 
 
 
 
96
 
97
  with gr.Column(scale=1):
98
+ video_output = gr.Video(label="हनुमान AI द्व िर्मित वीडि")
99
  gr.Markdown("""
100
+ ### 🚩 दिव्य निर्देश एवं चेतावनी:
101
+ 1. अपना रॉमप्ट बायी ओर लिखें।
102
+ 2. **चेतावनी:** चूँकि यह एक भारी वीडियो मॉडल है और आप फ्री CPU कउपयोग कर रहे हैं, इसलिए एक छोटा वीडियो (2-3 सेकंड) ब मे **10 से 30 मिनट** का समय लग सकता है
103
+ 3. कृपया बटन दबाने के बा धै्य रखेर पेज न करें
 
104
  """)
105
 
106
  # इवेंट बाइंडिंग
107
  submit_btn.click(
108
+ fn=hanuman_video_engine,
109
+ inputs=[prompt_input],
110
+ outputs=[video_output, status_text]
111
  )
112
 
113
+ # 🛠️ Queue को इनेबल करना अत्यंत आवश्यक है ताकि लंबा समय लगने पर Gradio क्रैश न हो (Timeout Fix)
114
  if __name__ == "__main__":
115
+ demo.queue().launch()