ONYX-APP commited on
Commit
bec5c4e
·
verified ·
1 Parent(s): 3f4e3e0

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +7 -10
main.py CHANGED
@@ -8,7 +8,7 @@ from stable_audio_tools.inference.generation import generate_diffusion_cond_inpa
8
  import requests
9
  import os
10
  import io
11
- import scipy.io.wavfile # استيراد سبيبي للحفظ
12
  from fastapi.responses import StreamingResponse
13
  from huggingface_hub import login
14
 
@@ -52,15 +52,17 @@ def translate_and_enhance(arabic_text, instrument):
52
  user_content = f"Translate and enhance: {arabic_text}. Focus on {instrument}."
53
 
54
  try:
55
- response = requests.post(api_url, json={"messages": [{"role": "system", "content": system_prompt}, {"role": "user", "content": user_content}]}, headers=headers, timeout=30)
 
56
  if response.status_code == 200:
57
  result = response.json()
58
  return result['choices'][0]['message']['content']
59
  else:
60
  return f"A high-quality {instrument} track, {arabic_text}"
61
  except Exception as e:
62
- print(f"Translation error: {e}")
63
- return f"A high-quality {instrument} music piece, style of {arabic_text}"
 
64
 
65
  @app.post("/generate-music")
66
  async def generate_music(request: MusicRequest):
@@ -68,6 +70,7 @@ async def generate_music(request: MusicRequest):
68
  if model is None:
69
  raise HTTPException(status_code=500, detail="Model not loaded on server.")
70
 
 
71
  enhanced_prompt = translate_and_enhance(request.prompt, request.instrument)
72
 
73
  conditioning = [{
@@ -88,17 +91,11 @@ async def generate_music(request: MusicRequest):
88
  )
89
 
90
  output = rearrange(output, "b d n -> d (b n)")
91
- # تحويل البيانات لـ float32 ثم int16
92
  output = output.to(torch.float32).div(torch.max(torch.abs(output))).clamp(-1, 1).mul(32767).to(torch.int16).cpu()
93
 
94
- # --- التعديل هون ---
95
  buffer = io.BytesIO()
96
- # استخدام scipy بدل torchaudio لتجنب مشكلة الـ backend
97
- # ملاحظة: scipy بتتوقع (التردد، مصفوفة البيانات)
98
- # ولازم نحول التنسور لـ numpy array
99
  scipy.io.wavfile.write(buffer, sample_rate, output.numpy().T)
100
  buffer.seek(0)
101
- # ------------------
102
 
103
  return StreamingResponse(buffer, media_type="audio/wav")
104
  except Exception as e:
 
8
  import requests
9
  import os
10
  import io
11
+ import scipy.io.wavfile
12
  from fastapi.responses import StreamingResponse
13
  from huggingface_hub import login
14
 
 
52
  user_content = f"Translate and enhance: {arabic_text}. Focus on {instrument}."
53
 
54
  try:
55
+ # تعديل: قللنا الـ timeout لـ 5 ثواني بس كرمال ما يروح الوقت والـ Space يفصل
56
+ response = requests.post(api_url, json={"messages": [{"role": "system", "content": system_prompt}, {"role": "user", "content": user_content}]}, headers=headers, timeout=5)
57
  if response.status_code == 200:
58
  result = response.json()
59
  return result['choices'][0]['message']['content']
60
  else:
61
  return f"A high-quality {instrument} track, {arabic_text}"
62
  except Exception as e:
63
+ # إذا صار timeout بالترجمة، منكمل فوراً بالنص الأصلي لنوفر وقت
64
+ print(f"Translation skipped (Timeout/Error) to save time.")
65
+ return f"A professional {instrument} music, style of {arabic_text}"
66
 
67
  @app.post("/generate-music")
68
  async def generate_music(request: MusicRequest):
 
70
  if model is None:
71
  raise HTTPException(status_code=500, detail="Model not loaded on server.")
72
 
73
+ # الترجمة هلأ صارت أسرع بكتير بالاستجابة
74
  enhanced_prompt = translate_and_enhance(request.prompt, request.instrument)
75
 
76
  conditioning = [{
 
91
  )
92
 
93
  output = rearrange(output, "b d n -> d (b n)")
 
94
  output = output.to(torch.float32).div(torch.max(torch.abs(output))).clamp(-1, 1).mul(32767).to(torch.int16).cpu()
95
 
 
96
  buffer = io.BytesIO()
 
 
 
97
  scipy.io.wavfile.write(buffer, sample_rate, output.numpy().T)
98
  buffer.seek(0)
 
99
 
100
  return StreamingResponse(buffer, media_type="audio/wav")
101
  except Exception as e: