benjamin5607 commited on
Commit
67b756e
Β·
verified Β·
1 Parent(s): bc8d2c4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -32
app.py CHANGED
@@ -29,11 +29,11 @@ async def band_consulting(user_input, member_name, lang_code):
29
  lang_map = {"ko":"Korean","en":"English","ja":"Japanese","pt":"Portuguese","es":"Spanish","ar":"Arabic","zh":"Chinese","fr":"French"}
30
  target_lang = lang_map.get(lang_code, "Korean")
31
 
32
- system_instruction = f"당신은 {member_name}μž…λ‹ˆλ‹€. λ°˜λ“œμ‹œ {target_lang}둜만 λ‹΅λ³€ν•˜μ„Έμš”. μŒμ„±μ€ 5쀄 이내 μš”μ•½, 상세 μ„€λͺ…은 [TAB]에, μŒμ•… ν”„λ‘¬ν”„νŠΈλŠ” [MUSIC: ν”„λ‘¬ν”„νŠΈ]에 λ„£μœΌμ„Έμš”."
 
33
 
34
  url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={GENAI_KEY}"
35
 
36
- # β˜… 차단 λ°©μ§€: λͺ¨λ“  μ•ˆμ „ μΉ΄ν…Œκ³ λ¦¬ BLOCK_NONE μ„€μ •
37
  payload = {
38
  "contents": [{"parts": [{"text": f"{system_instruction}\n질문: {user_input}"}]}],
39
  "safetySettings": [
@@ -41,47 +41,42 @@ async def band_consulting(user_input, member_name, lang_code):
41
  {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
42
  {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
43
  {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
44
- ],
45
- "generationConfig": {
46
- "temperature": 0.7,
47
- "maxOutputTokens": 1024
48
- }
49
  }
50
 
51
- response = requests.post(url, json=payload)
52
- res_data = response.json()
53
 
54
- # 'candidates'κ°€ 없을 경우λ₯Ό μœ„ν•œ μ˜ˆμ™Έ 처리 κ°•ν™”
55
- if 'candidates' not in res_data or not res_data['candidates']:
56
- # 필터링될 경우λ₯Ό λŒ€λΉ„ν•œ κΈ°λ³Έ λ‹΅λ³€ μ„ΈνŠΈ
57
- fallback_text = f"이봐 리더, μ§€κΈˆ λ‚΄ 영감이 μž μ‹œ 차단됐어. λ‹€μ‹œ λ¬Όμ–΄λ΄μ€„λž˜? [TAB] λ‹€μ‹œ μ‹œλ„ν•΄μ£Όμ„Έμš”. [MUSIC: powerful rock riff]"
58
- ai_text_raw = fallback_text
59
  else:
60
- ai_text_raw = res_data['candidates'][0]['content']['parts'][0]['text']
61
-
62
- tab_match = re.search(r'\[TAB\](.*?)(\[|$)', ai_text_raw, re.DOTALL)
63
- music_match = re.search(r'\[MUSIC:(.*?)\]', ai_text_raw, re.IGNORECASE)
64
- tab_display = tab_match.group(1).strip() if tab_match else "상세 악보 μ—†μŒ"
65
-
66
- clean_text = re.sub(r'\[TAB\].*?(\[|$)', '', ai_text_raw, flags=re.DOTALL)
67
- clean_text = re.sub(r'\[MUSIC:.*?\]', '', clean_text).strip()
68
-
69
- # 5쀄 μš”μ•½
70
- clean_text = "\n".join(clean_text.split("\n")[:5])
71
 
 
72
  voice_path = f"/tmp/v_{member_name.split()[0]}.mp3"
73
  await edge_tts.Communicate(clean_text, MEMBERS.get(member_name, "ko-KR-SunHiNeural")).save(voice_path)
74
 
75
- music_path = None
76
- if music_match and music_synthesiser:
77
- p = music_match.group(1).strip()
78
- music_output = music_synthesiser(p, forward_params={"max_new_tokens": 512})
79
- music_path = f"/tmp/m_{member_name.split()[0]}.wav"
80
- scipy.io.wavfile.write(music_path, music_output["sampling_rate"], music_output["audio"][0].T)
 
81
 
82
  return clean_text, voice_path, music_path, tab_display
83
  except Exception as e:
84
- return f"System Reset Needed: {str(e)}", None, None, "Error"
85
 
86
  with gr.Blocks() as demo:
87
  i1 = gr.Textbox(); i2 = gr.Textbox(); i3 = gr.Textbox()
 
29
  lang_map = {"ko":"Korean","en":"English","ja":"Japanese","pt":"Portuguese","es":"Spanish","ar":"Arabic","zh":"Chinese","fr":"French"}
30
  target_lang = lang_map.get(lang_code, "Korean")
31
 
32
+ # ν”„λ‘¬ν”„νŠΈμ— 'κ°„κ²°ν•˜κ²Œ' λŒ€λ‹΅ν•˜λΌλŠ” λͺ…령을 더 λͺ…ν™•νžˆ 전달
33
+ system_instruction = f"당신은 {member_name}μž…λ‹ˆλ‹€. {target_lang}둜만 λ‹΅λ³€ν•˜μ„Έμš”. μŒμ„±μ€ 5쀄 μ΄λ‚΄λ‘œ 맀우 짧게 μš”μ•½ν•˜κ³ , μƒμ„Έν•œ μ‘°μ–Έκ³Ό μ•…λ³΄λŠ” λ°˜λ“œμ‹œ [TAB] μ•ˆμ— λ„£μœΌμ„Έμš”. μŒμ•… ν”„λ‘¬ν”„νŠΈλŠ” [MUSIC: μ˜μ–΄ν”„λ‘¬ν”„νŠΈ]둜 μž‘μ„±ν•˜μ„Έμš”."
34
 
35
  url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={GENAI_KEY}"
36
 
 
37
  payload = {
38
  "contents": [{"parts": [{"text": f"{system_instruction}\n질문: {user_input}"}]}],
39
  "safetySettings": [
 
41
  {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
42
  {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
43
  {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
44
+ ]
 
 
 
 
45
  }
46
 
47
+ res = requests.post(url, json=payload).json()
 
48
 
49
+ # β˜… 차단 λ°œμƒ μ‹œ μžλ™μœΌλ‘œ 'μ•ˆμ „ν•œ' μŒμ•… ν”„λ‘¬ν”„νŠΈμ™€ 닡변을 κ°•μ œλ‘œ μƒμ„±ν•΄μ„œ λ„˜κ²¨μ€Œ
50
+ if 'candidates' not in res or not res['candidates']:
51
+ clean_text = "이봐 리더, 이번 μ œμ•ˆμ€ λ‚΄ 예술적 영감이 필터링될 μ •λ„λ‘œ κ°•λ ¬ν•œκ±Έ? λ½μŠ€νƒ€λ‹΅κ²Œ 쑰금만 μˆœν™”ν•΄μ„œ λ‹€μ‹œ λ¬Όμ–΄λ΄μ€˜!"
52
+ tab_display = "상세 쑰언이 ν•„ν„°λ§λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ§ˆλ¬Έμ„ 쑰금 λ‹€λ₯΄κ²Œ ν•΄λ³΄μ„Έμš”."
53
+ music_p = "fast heavy metal drum and bass, energetic rock style" # μ•ˆμ „ν•œ κΈ°λ³Έ ν”„λ‘¬ν”„νŠΈ
54
  else:
55
+ ai_text_raw = res['candidates'][0]['content']['parts'][0]['text']
56
+ # 데이터 μΆ”μΆœ 둜직 (κΈ°μ‘΄κ³Ό 동일)
57
+ tab_match = re.search(r'\[TAB\](.*?)(\[|$)', ai_text_raw, re.DOTALL)
58
+ music_match = re.search(r'\[MUSIC:(.*?)\]', ai_text_raw, re.IGNORECASE)
59
+ tab_display = tab_match.group(1).strip() if tab_match else "No Score Available"
60
+ clean_text = re.sub(r'\[TAB\].*?(\[|$)', '', ai_text_raw, flags=re.DOTALL)
61
+ clean_text = re.sub(r'\[MUSIC:.*?\]', '', clean_text).strip()
62
+ clean_text = "\n".join(clean_text.split("\n")[:5])
63
+ music_p = music_match.group(1).strip().lower() if music_match else "rock guitar riff"
 
 
64
 
65
+ # μŒμ„± 생성
66
  voice_path = f"/tmp/v_{member_name.split()[0]}.mp3"
67
  await edge_tts.Communicate(clean_text, MEMBERS.get(member_name, "ko-KR-SunHiNeural")).save(voice_path)
68
 
69
+ # μŒμ•… 생성 (차단 μœ„ν—˜ 단어 필터링)
70
+ if any(x in music_p for x in ['laugh', 'vocal', 'voice', 'human', 'sing', 'person']):
71
+ music_p = "intense synthesizer rock riff, high energy"
72
+
73
+ music_output = music_synthesiser(music_p, forward_params={"max_new_tokens": 512})
74
+ music_path = f"/tmp/m_{member_name.split()[0]}.wav"
75
+ scipy.io.wavfile.write(music_path, music_output["sampling_rate"], music_output["audio"][0].T)
76
 
77
  return clean_text, voice_path, music_path, tab_display
78
  except Exception as e:
79
+ return f"System Overload: {str(e)}", None, None, "Error"
80
 
81
  with gr.Blocks() as demo:
82
  i1 = gr.Textbox(); i2 = gr.Textbox(); i3 = gr.Textbox()