Patel Traders commited on
Commit
99b0007
·
verified ·
1 Parent(s): d9fb9cd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +131 -18
app.py CHANGED
@@ -1,18 +1,131 @@
1
- {{- bos_token -}}
2
- {%- if messages[0]["role"] == "system" -%}
3
- {{- raise_exception("System role not supported") -}}
4
- {%- endif -%}
5
- {%- for message in messages -%}
6
- {%- if message["role"] == "user" != (loop.index0 % 2 == 0) -%}
7
- {{- raise_exception("Conversation roles must alternate user/assistant/user/assistant/...") -}}
8
- {%- endif -%}
9
- {%- if message["role"] == "assistant" -%}
10
- {%- set role = "model" -%}
11
- {%- else -%}
12
- {%- set role = message["role"] -%}
13
- {%- endif -%}
14
- {{- "<start_of_turn>" + role + "\n" + message["content"] | trim + "<end_of_turn>\n" -}}
15
- {%- endfor -%}
16
- {%- if add_generation_prompt -%}
17
- {{- "<start_of_turn>model\n" -}}
18
- {%- endif -%}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 = """
72
+ <style>
73
+ .gradio-container { background-color: #fffaf0 !important; }
74
+ .bhagwa-header {
75
+ background: linear-gradient(135deg, #ff8833, #b33c00);
76
+ padding: 30px; border-radius: 20px; color: white;
77
+ text-align: center; box-shadow: 0 10px 25px rgba(179, 60, 0, 0.4);
78
+ margin-bottom: 25px;
79
+ }
80
+ .bhagwa-header h1 { color: white !important; font-size: 32px !important; margin: 0; text-shadow: 0 4px 8px rgba(0,0,0,0.5); }
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
+
89
+ with gr.Blocks() as demo:
90
+ gr.HTML(divine_ui)
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()