thomson99 commited on
Commit
9ebc77b
·
verified ·
1 Parent(s): 3c10da9

Upload 3 files

Browse files
Files changed (3) hide show
  1. README.md +96 -7
  2. app.py +183 -0
  3. requirements.txt +8 -0
README.md CHANGED
@@ -1,14 +1,103 @@
1
  ---
2
- title: MusicGen
3
- emoji: 🌖
4
- colorFrom: red
5
- colorTo: yellow
6
  sdk: gradio
7
- sdk_version: 5.12.0
8
  app_file: app.py
9
  pinned: false
10
- license: apache-2.0
11
- short_description: 'تطبيق ذكاء اصطناعي لتوليد مقاطع موسيقية فريدة '
12
  ---
13
 
14
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Arabic AI Music Generator
3
+ emoji: 🎵
4
+ colorFrom: blue
5
+ colorTo: purple
6
  sdk: gradio
7
+ sdk_version: "4.19.2"
8
  app_file: app.py
9
  pinned: false
 
 
10
  ---
11
 
12
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
13
+
14
+ # 🎵 مولد الموسيقى الذكي | Arabic AI Music Generator
15
+
16
+ تطبيق ذكاء اصطناعي لتوليد مقاطع موسيقية فريدة باستخدام نموذج MusicGen من Meta.
17
+
18
+ ## ✨ المميزات
19
+
20
+ - 🎼 توليد موسيقى بأنماط متعددة
21
+ - 🎹 دعم مجموعة متنوعة من الآلات الموسيقية
22
+ - 🎭 تحكم في المزاج والأسلوب
23
+ - 🎛️ ضبط معلمات التوليد
24
+ - 🌟 واجهة مستخدم سهلة وجذابة
25
+
26
+ ## 🎯 الأنماط الموسيقية المتوفرة
27
+
28
+ 1. موسيقى كلاسيكية
29
+ 2. موسيقى عربية
30
+ 3. بوب
31
+ 4. روك
32
+ 5. جاز
33
+ 6. إلكترونية
34
+ 7. هادئة
35
+ 8. حماسية
36
+ 9. حزينة
37
+ 10. سعيدة
38
+
39
+ ## 🎸 الآلات الموسيقية
40
+
41
+ - بيانو
42
+ - جيتار
43
+ - عود
44
+ - كمان
45
+ - طبول
46
+ - ساكسفون
47
+ - ناي
48
+ - سينثيسايزر
49
+
50
+ ## 🚀 التثبيت المحلي
51
+
52
+ 1. قم بتثبيت المتطلبات:
53
+ ```bash
54
+ pip install -r requirements.txt
55
+ ```
56
+
57
+ 2. قم بتشغيل التطبيق:
58
+ ```bash
59
+ python app.py
60
+ ```
61
+
62
+ ## 📝 كيفية الاستخدام
63
+
64
+ 1. اختر نمط الموسيقى المطلوب
65
+ 2. حدد المزاج المناسب
66
+ 3. اختر الآلات الموسيقية
67
+ 4. اضبط معلمات التوليد (تعقيد اللحن، قوة الإيقاع، ثراء التناغم)
68
+ 5. انقر على زر "توليد"
69
+ 6. استمع للنتيجة وقم بحفظها إذا أعجبتك
70
+
71
+ ## 🛠️ المتطلبات التقنية
72
+
73
+ - Python 3.8+
74
+ - CUDA (للتسريع باستخدام GPU)
75
+ - 8GB RAM على الأقل
76
+ - مساحة تخزين 5GB
77
+
78
+ ## 🎵 خصائص الصوت المولد
79
+
80
+ - مدة المقطع: 8 ثوانٍ
81
+ - معدل العينات: 44.1 كيلوهرتز
82
+ - جودة صوت عالية
83
+ - تحسين تلقائي لمستوى الصوت
84
+
85
+ ## 🌟 استخدام التطبيق على Hugging Face
86
+
87
+ يمكنك استخدام التطبيق مباشرة على منصة Hugging Face Spaces دون الحاجة للتثبيت المحلي.
88
+
89
+ ## 📋 الترخيص
90
+
91
+ هذا المشروع مرخص تحت رخصة MIT.
92
+
93
+ ## 🤝 المساهمة
94
+
95
+ نرحب بمساهماتكم! يمكنكم:
96
+ - إضافة أنماط موسيقية جديدة
97
+ - تحسين جودة الصوت
98
+ - تطوير واجهة المستخدم
99
+ - إضافة ميزات جديدة
100
+
101
+ ## 📞 التواصل
102
+
103
+ إذا كان لديك أي استفسار أو اقتراح، لا تتردد في التواصل معنا!
app.py ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+ from audiocraft.models import MusicGen
4
+ from audiocraft.data.audio import audio_write
5
+ import numpy as np
6
+ import tempfile
7
+ import os
8
+
9
+ # تهيئة النموذج
10
+ device = "cuda" if torch.cuda.is_available() else "cpu"
11
+ model = MusicGen.get_pretrained('facebook/musicgen-small', device=device)
12
+ model.set_generation_params(duration=8) # مدة الموسيقى الافتراضية بالثواني
13
+
14
+ # قائمة الأنماط الموسيقية
15
+ MUSIC_STYLES = {
16
+ "موسيقى كلاسيكية": "classical orchestra music, peaceful and harmonious",
17
+ "موسيقى عربية": "traditional arabic music with oud and percussion",
18
+ "بوب": "upbeat pop music with catchy melody",
19
+ "روك": "electric guitar rock music with drums",
20
+ "جاز": "smooth jazz with saxophone and piano",
21
+ "إلكترونية": "electronic dance music with synthesizer",
22
+ "هادئة": "calm ambient music with soft melodies",
23
+ "حماسية": "energetic music with strong beats",
24
+ "حزينة": "emotional sad music with piano",
25
+ "سعيدة": "happy cheerful music with positive vibes"
26
+ }
27
+
28
+ # قائمة الآلات الموسيقية
29
+ INSTRUMENTS = {
30
+ "بيانو": "piano",
31
+ "جيتار": "guitar",
32
+ "عود": "oud",
33
+ "كمان": "violin",
34
+ "طبول": "drums",
35
+ "ساكسفون": "saxophone",
36
+ "ناي": "flute",
37
+ "سينثيسايزر": "synthesizer"
38
+ }
39
+
40
+ def generate_music(style, mood, instruments, melody_complexity=0.7, rhythm_strength=0.7, harmony_richness=0.7):
41
+ """
42
+ توليد مقطع موسيقي باستخدام المعلمات المحددة
43
+ """
44
+ try:
45
+ # بناء النص الوصفي للموسيقى
46
+ style_prompt = MUSIC_STYLES[style]
47
+ instruments_prompt = ", ".join([INSTRUMENTS[i] for i in instruments])
48
+
49
+ # إنشاء النص الوصفي الكامل
50
+ prompt = f"{style_prompt} with {instruments_prompt}, "
51
+ prompt += f"{'complex' if melody_complexity > 0.7 else 'simple'} melody, "
52
+ prompt += f"{'strong' if rhythm_strength > 0.7 else 'soft'} rhythm, "
53
+ prompt += f"{'rich' if harmony_richness > 0.7 else 'basic'} harmony"
54
+
55
+ # توليد الموسيقى
56
+ model.set_generation_params(
57
+ use_sampling=True,
58
+ top_k=250,
59
+ top_p=0.0,
60
+ temperature=1.0,
61
+ cfg_coef=3.0,
62
+ duration=8
63
+ )
64
+
65
+ output = model.generate([prompt], progress=True)
66
+
67
+ # تحويل الموسيقى إلى ملف صوتي
68
+ with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as temp_file:
69
+ audio_write(
70
+ temp_file.name,
71
+ output[0].cpu(),
72
+ model.sample_rate,
73
+ strategy="loudness",
74
+ loudness_compressor=True
75
+ )
76
+ return temp_file.name, prompt
77
+
78
+ except Exception as e:
79
+ return None, f"حدث خطأ: {str(e)}"
80
+
81
+ # إنشاء واجهة المستخدم
82
+ with gr.Blocks(title="مولد الموسيقى الذكي 🎵", theme=gr.themes.Soft()) as iface:
83
+ gr.Markdown("""
84
+ # 🎵 مولد الموسيقى الذكي
85
+
86
+ قم بتوليد مقاطع موسيقية فريدة باستخدام الذكاء الاصطناعي!
87
+
88
+ ### 📝 التعليمات:
89
+ 1. اختر نمط الموسيقى
90
+ 2. حدد المزاج المطلوب
91
+ 3. اختر الآلات الموسيقية
92
+ 4. اضبط معلمات التوليد
93
+ 5. انقر على "توليد" وانتظر النتيجة
94
+ """)
95
+
96
+ with gr.Row():
97
+ with gr.Column():
98
+ style_dropdown = gr.Dropdown(
99
+ choices=list(MUSIC_STYLES.keys()),
100
+ value=list(MUSIC_STYLES.keys())[0],
101
+ label="نمط الموسيقى"
102
+ )
103
+
104
+ mood_radio = gr.Radio(
105
+ choices=["سعيد", "حزين", "هادئ", "حماسي"],
106
+ value="سعيد",
107
+ label="المزاج"
108
+ )
109
+
110
+ instruments_dropdown = gr.Dropdown(
111
+ choices=list(INSTRUMENTS.keys()),
112
+ value=[list(INSTRUMENTS.keys())[0]],
113
+ multiselect=True,
114
+ label="الآلات الموسيقية"
115
+ )
116
+
117
+ with gr.Row():
118
+ melody_slider = gr.Slider(
119
+ minimum=0.1,
120
+ maximum=1.0,
121
+ value=0.7,
122
+ step=0.1,
123
+ label="تعقيد اللحن"
124
+ )
125
+
126
+ rhythm_slider = gr.Slider(
127
+ minimum=0.1,
128
+ maximum=1.0,
129
+ value=0.7,
130
+ step=0.1,
131
+ label="قوة الإيقاع"
132
+ )
133
+
134
+ harmony_slider = gr.Slider(
135
+ minimum=0.1,
136
+ maximum=1.0,
137
+ value=0.7,
138
+ step=0.1,
139
+ label="ثراء التناغم"
140
+ )
141
+
142
+ generate_btn = gr.Button("توليد 🎵", variant="primary")
143
+
144
+ with gr.Column():
145
+ audio_output = gr.Audio(
146
+ label="الموسيقى المولدة",
147
+ type="filepath"
148
+ )
149
+
150
+ prompt_output = gr.Textbox(
151
+ label="النص الوصفي المستخدم",
152
+ interactive=False
153
+ )
154
+
155
+ with gr.Row():
156
+ gr.Markdown("""
157
+ ### 💡 نصائح:
158
+ - جرب مزج أنماط مختلفة من الموسيقى
159
+ - استخدم آلات موسيقية متنوعة
160
+ - اضبط المعلمات للحصول على النتيجة المطلوبة
161
+
162
+ ### ℹ️ معلومات:
163
+ - يستخدم هذا التطبيق نموذج MusicGen من Meta
164
+ - مدة المقطع الموسيقي 8 ثوانٍ
165
+ - جودة الصوت 44.1 كيلوهرتز
166
+ """)
167
+
168
+ # ربط الأحداث
169
+ generate_btn.click(
170
+ generate_music,
171
+ inputs=[
172
+ style_dropdown,
173
+ mood_radio,
174
+ instruments_dropdown,
175
+ melody_slider,
176
+ rhythm_slider,
177
+ harmony_slider
178
+ ],
179
+ outputs=[audio_output, prompt_output]
180
+ )
181
+
182
+ # تشغيل التطبيق
183
+ iface.launch()
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ torch>=2.0.0
2
+ torchaudio>=2.0.0
3
+ audiocraft>=1.0.0
4
+ gradio>=4.19.2
5
+ numpy>=1.24.0
6
+ scipy>=1.11.0
7
+ transformers>=4.36.0
8
+ accelerate>=0.25.0