Spaces:
Running
on
Zero
Running
on
Zero
Update ui/components.py
Browse files- ui/components.py +37 -36
ui/components.py
CHANGED
@@ -452,14 +452,16 @@ def create_text2music_ui(
|
|
452 |
choices=list(QUALITY_PRESETS.keys()),
|
453 |
value="Standard",
|
454 |
label="ํ์ง ํ๋ฆฌ์
",
|
455 |
-
scale=2
|
|
|
456 |
)
|
457 |
multi_seed_mode = gr.Dropdown(
|
458 |
choices=list(MULTI_SEED_OPTIONS.keys()),
|
459 |
value="Single",
|
460 |
label="๋ค์ค ์์ฑ ๋ชจ๋",
|
461 |
scale=2,
|
462 |
-
info="์ฌ๋ฌ ๋ฒ ์์ฑํ์ฌ ์ต๊ณ ํ์ง ์ ํ"
|
|
|
463 |
)
|
464 |
|
465 |
preset_description = gr.Textbox(
|
@@ -519,8 +521,8 @@ def create_text2music_ui(
|
|
519 |
|
520 |
def toggle_ref_audio_visibility(is_checked):
|
521 |
return (
|
522 |
-
gr.update(visible=is_checked
|
523 |
-
gr.update(visible=is_checked
|
524 |
)
|
525 |
|
526 |
audio2audio_enable.change(
|
@@ -540,14 +542,14 @@ def create_text2music_ui(
|
|
540 |
value="Custom",
|
541 |
label="์ฅ๋ฅด ํ๋ฆฌ์
",
|
542 |
scale=1,
|
543 |
-
interactive=True
|
544 |
)
|
545 |
song_style = gr.Dropdown(
|
546 |
choices=list(SONG_STYLES.keys()),
|
547 |
value="๋์ฃ (๋จ๋
ํผ์ฑ)",
|
548 |
label="๊ณก ์คํ์ผ",
|
549 |
scale=1,
|
550 |
-
interactive=True
|
551 |
)
|
552 |
enable_smart_enhancement = gr.Checkbox(
|
553 |
label="์ค๋งํธ ํฅ์",
|
@@ -562,6 +564,7 @@ def create_text2music_ui(
|
|
562 |
max_lines=4,
|
563 |
value=TAG_DEFAULT,
|
564 |
placeholder="์ฝค๋ง๋ก ๊ตฌ๋ถ๋ ํ๊ทธ๋ค...",
|
|
|
565 |
)
|
566 |
|
567 |
with gr.Group():
|
@@ -572,7 +575,8 @@ def create_text2music_ui(
|
|
572 |
lyric_prompt = gr.Textbox(
|
573 |
label="์์ฌ ์ฃผ์ ",
|
574 |
placeholder="์: ์ฒซ์ฌ๋์ ์ค๋ , ์ด๋ณ์ ์ํ, ํฌ๋ง์ฐฌ ๋ด์ผ...",
|
575 |
-
scale=3
|
|
|
576 |
)
|
577 |
generate_lyrics_btn = gr.Button("๐ค AI ์์ฌ", variant="secondary", scale=1)
|
578 |
|
@@ -581,7 +585,8 @@ def create_text2music_ui(
|
|
581 |
label="Lyrics",
|
582 |
max_lines=13,
|
583 |
value=LYRIC_DEFAULT,
|
584 |
-
placeholder="๊ฐ์ฌ๋ฅผ ์
๋ ฅํ์ธ์. [verse], [chorus] ๋ฑ์ ๊ตฌ์กฐ ํ๊ทธ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค."
|
|
|
585 |
)
|
586 |
|
587 |
with gr.Accordion("Basic Settings", open=False):
|
@@ -1222,9 +1227,8 @@ def create_text2music_ui(
|
|
1222 |
outputs=extend_outputs + [extend_input_params_json],
|
1223 |
)
|
1224 |
|
1225 |
-
# =====
|
1226 |
|
1227 |
-
# ํ๊ทธ ์
๋ฐ์ดํธ ํจ์
|
1228 |
def update_tags_from_preset(preset_name, current_tags, song_style):
|
1229 |
"""์ฅ๋ฅด ํ๋ฆฌ์
์ ํ์ ํ๊ทธ ์
๋ฐ์ดํธ"""
|
1230 |
print(f"๐ต update_tags_from_preset called: preset={preset_name}, style={song_style}")
|
@@ -1244,18 +1248,19 @@ def create_text2music_ui(
|
|
1244 |
print(f"โ
Updated tags: {result[:50]}...")
|
1245 |
return result
|
1246 |
|
1247 |
-
|
1248 |
-
|
1249 |
print(f"๐ค AI ์์ฌ ๋ฒํผ ํด๋ฆญ: prompt='{lyric_prompt}'")
|
1250 |
if not lyric_prompt or lyric_prompt.strip() == "":
|
1251 |
print("โ ๏ธ ๋น ํ๋กฌํํธ")
|
1252 |
-
|
|
|
1253 |
|
1254 |
generated = generate_lyrics_with_ai(lyric_prompt, genre_preset, song_style)
|
1255 |
return generated
|
1256 |
|
1257 |
-
# ๋๋ค ๋ฐ์ดํฐ ์์ฑ ํจ์
|
1258 |
def generate_random_music_data(genre_preset, song_style):
|
|
|
1259 |
print("๐ฒ Random ๋ฒํผ ํด๋ฆญ")
|
1260 |
# ๋๋ค ์ฅ๋ฅด ์ ํ
|
1261 |
if genre_preset == "Custom":
|
@@ -1307,7 +1312,6 @@ def create_text2music_ui(
|
|
1307 |
None, # ref_audio_input
|
1308 |
)
|
1309 |
|
1310 |
-
# ์ค์๊ฐ ํ๋ฆฌ๋ทฐ ๊ธฐ๋ฅ
|
1311 |
def generate_preview(prompt, lyrics, genre_preset, song_style):
|
1312 |
"""10์ด ํ๋ฆฌ๋ทฐ ์์ฑ"""
|
1313 |
print("๐ต Preview ๋ฒํผ ํด๋ฆญ")
|
@@ -1323,26 +1327,25 @@ def create_text2music_ui(
|
|
1323 |
enhanced_prompt = enhance_prompt_with_genre(prompt, genre_preset, song_style)
|
1324 |
|
1325 |
try:
|
1326 |
-
# ์ค์ ๊ตฌํ์์๋ ๋น ๋ฅธ ์์ฑ ๋ชจ๋ ์ฌ์ฉ
|
1327 |
result = enhanced_process_func(
|
1328 |
preview_params["audio_duration"],
|
1329 |
enhanced_prompt,
|
1330 |
-
lyrics[:200],
|
1331 |
preview_params["infer_step"],
|
1332 |
preview_params["guidance_scale"],
|
1333 |
preview_params["scheduler_type"],
|
1334 |
preview_params["cfg_type"],
|
1335 |
preview_params["omega_scale"],
|
1336 |
-
None,
|
1337 |
-
0.5,
|
1338 |
-
0.0,
|
1339 |
-
3.0,
|
1340 |
-
True,
|
1341 |
-
False,
|
1342 |
-
True,
|
1343 |
-
None,
|
1344 |
-
0.0,
|
1345 |
-
0.0,
|
1346 |
multi_seed_mode="Single",
|
1347 |
song_style=song_style
|
1348 |
)
|
@@ -1350,39 +1353,37 @@ def create_text2music_ui(
|
|
1350 |
except Exception as e:
|
1351 |
return f"ํ๋ฆฌ๋ทฐ ์์ฑ ์คํจ: {str(e)}"
|
1352 |
|
1353 |
-
# ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ
|
1354 |
print("๐ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ ์ค...")
|
1355 |
|
1356 |
# ์ฅ๋ฅด ํ๋ฆฌ์
๋ณ๊ฒฝ ์ด๋ฒคํธ
|
1357 |
-
genre_preset.
|
1358 |
fn=update_tags_from_preset,
|
1359 |
inputs=[genre_preset, prompt, song_style],
|
1360 |
outputs=[prompt]
|
1361 |
)
|
1362 |
|
1363 |
# ๊ณก ์คํ์ผ ๋ณ๊ฒฝ ์ด๋ฒคํธ
|
1364 |
-
song_style.
|
1365 |
fn=update_tags_from_preset,
|
1366 |
inputs=[genre_preset, prompt, song_style],
|
1367 |
outputs=[prompt]
|
1368 |
)
|
1369 |
|
1370 |
# ํ์ง ํ๋ฆฌ์
๋ณ๊ฒฝ ์ด๋ฒคํธ
|
1371 |
-
quality_preset.
|
1372 |
fn=lambda x: QUALITY_PRESETS.get(x, {}).get("description", ""),
|
1373 |
inputs=[quality_preset],
|
1374 |
outputs=[preset_description]
|
1375 |
-
)
|
1376 |
-
|
1377 |
-
quality_preset.change(
|
1378 |
-
fn=update_quality_preset, # ์ ์ญ ํจ์ ์ง์ ์ฌ์ฉ
|
1379 |
inputs=[quality_preset],
|
1380 |
outputs=[infer_step, guidance_scale, scheduler_type, omega_scale, use_erg_diffusion, use_erg_tag]
|
1381 |
)
|
1382 |
|
1383 |
# AI ์์ฌ ๋ฒํผ ์ด๋ฒคํธ
|
1384 |
generate_lyrics_btn.click(
|
1385 |
-
fn=
|
1386 |
inputs=[lyric_prompt, genre_preset, song_style],
|
1387 |
outputs=[lyrics]
|
1388 |
)
|
|
|
452 |
choices=list(QUALITY_PRESETS.keys()),
|
453 |
value="Standard",
|
454 |
label="ํ์ง ํ๋ฆฌ์
",
|
455 |
+
scale=2,
|
456 |
+
interactive=True
|
457 |
)
|
458 |
multi_seed_mode = gr.Dropdown(
|
459 |
choices=list(MULTI_SEED_OPTIONS.keys()),
|
460 |
value="Single",
|
461 |
label="๋ค์ค ์์ฑ ๋ชจ๋",
|
462 |
scale=2,
|
463 |
+
info="์ฌ๋ฌ ๋ฒ ์์ฑํ์ฌ ์ต๊ณ ํ์ง ์ ํ",
|
464 |
+
interactive=True
|
465 |
)
|
466 |
|
467 |
preset_description = gr.Textbox(
|
|
|
521 |
|
522 |
def toggle_ref_audio_visibility(is_checked):
|
523 |
return (
|
524 |
+
gr.update(visible=is_checked),
|
525 |
+
gr.update(visible=is_checked),
|
526 |
)
|
527 |
|
528 |
audio2audio_enable.change(
|
|
|
542 |
value="Custom",
|
543 |
label="์ฅ๋ฅด ํ๋ฆฌ์
",
|
544 |
scale=1,
|
545 |
+
interactive=True
|
546 |
)
|
547 |
song_style = gr.Dropdown(
|
548 |
choices=list(SONG_STYLES.keys()),
|
549 |
value="๋์ฃ (๋จ๋
ํผ์ฑ)",
|
550 |
label="๊ณก ์คํ์ผ",
|
551 |
scale=1,
|
552 |
+
interactive=True
|
553 |
)
|
554 |
enable_smart_enhancement = gr.Checkbox(
|
555 |
label="์ค๋งํธ ํฅ์",
|
|
|
564 |
max_lines=4,
|
565 |
value=TAG_DEFAULT,
|
566 |
placeholder="์ฝค๋ง๋ก ๊ตฌ๋ถ๋ ํ๊ทธ๋ค...",
|
567 |
+
interactive=True
|
568 |
)
|
569 |
|
570 |
with gr.Group():
|
|
|
575 |
lyric_prompt = gr.Textbox(
|
576 |
label="์์ฌ ์ฃผ์ ",
|
577 |
placeholder="์: ์ฒซ์ฌ๋์ ์ค๋ , ์ด๋ณ์ ์ํ, ํฌ๋ง์ฐฌ ๋ด์ผ...",
|
578 |
+
scale=3,
|
579 |
+
interactive=True
|
580 |
)
|
581 |
generate_lyrics_btn = gr.Button("๐ค AI ์์ฌ", variant="secondary", scale=1)
|
582 |
|
|
|
585 |
label="Lyrics",
|
586 |
max_lines=13,
|
587 |
value=LYRIC_DEFAULT,
|
588 |
+
placeholder="๊ฐ์ฌ๋ฅผ ์
๋ ฅํ์ธ์. [verse], [chorus] ๋ฑ์ ๊ตฌ์กฐ ํ๊ทธ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.",
|
589 |
+
interactive=True
|
590 |
)
|
591 |
|
592 |
with gr.Accordion("Basic Settings", open=False):
|
|
|
1227 |
outputs=extend_outputs + [extend_input_params_json],
|
1228 |
)
|
1229 |
|
1230 |
+
# ===== ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์ ์ ์ =====
|
1231 |
|
|
|
1232 |
def update_tags_from_preset(preset_name, current_tags, song_style):
|
1233 |
"""์ฅ๋ฅด ํ๋ฆฌ์
์ ํ์ ํ๊ทธ ์
๋ฐ์ดํธ"""
|
1234 |
print(f"๐ต update_tags_from_preset called: preset={preset_name}, style={song_style}")
|
|
|
1248 |
print(f"โ
Updated tags: {result[:50]}...")
|
1249 |
return result
|
1250 |
|
1251 |
+
def generate_ai_lyrics_wrapper(lyric_prompt, genre_preset, song_style):
|
1252 |
+
"""AI ์์ฌ ๋ฒํผ ์ด๋ฒคํธ ํธ๋ค๋ฌ"""
|
1253 |
print(f"๐ค AI ์์ฌ ๋ฒํผ ํด๋ฆญ: prompt='{lyric_prompt}'")
|
1254 |
if not lyric_prompt or lyric_prompt.strip() == "":
|
1255 |
print("โ ๏ธ ๋น ํ๋กฌํํธ")
|
1256 |
+
gr.Warning("์์ฌ ์ฃผ์ ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!")
|
1257 |
+
return gr.update() # ํ์ฌ ๊ฐ์ฌ ์ ์ง
|
1258 |
|
1259 |
generated = generate_lyrics_with_ai(lyric_prompt, genre_preset, song_style)
|
1260 |
return generated
|
1261 |
|
|
|
1262 |
def generate_random_music_data(genre_preset, song_style):
|
1263 |
+
"""๋๋ค ๋ฐ์ดํฐ ์์ฑ"""
|
1264 |
print("๐ฒ Random ๋ฒํผ ํด๋ฆญ")
|
1265 |
# ๋๋ค ์ฅ๋ฅด ์ ํ
|
1266 |
if genre_preset == "Custom":
|
|
|
1312 |
None, # ref_audio_input
|
1313 |
)
|
1314 |
|
|
|
1315 |
def generate_preview(prompt, lyrics, genre_preset, song_style):
|
1316 |
"""10์ด ํ๋ฆฌ๋ทฐ ์์ฑ"""
|
1317 |
print("๐ต Preview ๋ฒํผ ํด๋ฆญ")
|
|
|
1327 |
enhanced_prompt = enhance_prompt_with_genre(prompt, genre_preset, song_style)
|
1328 |
|
1329 |
try:
|
|
|
1330 |
result = enhanced_process_func(
|
1331 |
preview_params["audio_duration"],
|
1332 |
enhanced_prompt,
|
1333 |
+
lyrics[:200],
|
1334 |
preview_params["infer_step"],
|
1335 |
preview_params["guidance_scale"],
|
1336 |
preview_params["scheduler_type"],
|
1337 |
preview_params["cfg_type"],
|
1338 |
preview_params["omega_scale"],
|
1339 |
+
None,
|
1340 |
+
0.5,
|
1341 |
+
0.0,
|
1342 |
+
3.0,
|
1343 |
+
True,
|
1344 |
+
False,
|
1345 |
+
True,
|
1346 |
+
None,
|
1347 |
+
0.0,
|
1348 |
+
0.0,
|
1349 |
multi_seed_mode="Single",
|
1350 |
song_style=song_style
|
1351 |
)
|
|
|
1353 |
except Exception as e:
|
1354 |
return f"ํ๋ฆฌ๋ทฐ ์์ฑ ์คํจ: {str(e)}"
|
1355 |
|
1356 |
+
# ===== ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ =====
|
1357 |
print("๐ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ ์ค...")
|
1358 |
|
1359 |
# ์ฅ๋ฅด ํ๋ฆฌ์
๋ณ๊ฒฝ ์ด๋ฒคํธ
|
1360 |
+
genre_preset.select(
|
1361 |
fn=update_tags_from_preset,
|
1362 |
inputs=[genre_preset, prompt, song_style],
|
1363 |
outputs=[prompt]
|
1364 |
)
|
1365 |
|
1366 |
# ๊ณก ์คํ์ผ ๋ณ๊ฒฝ ์ด๋ฒคํธ
|
1367 |
+
song_style.select(
|
1368 |
fn=update_tags_from_preset,
|
1369 |
inputs=[genre_preset, prompt, song_style],
|
1370 |
outputs=[prompt]
|
1371 |
)
|
1372 |
|
1373 |
# ํ์ง ํ๋ฆฌ์
๋ณ๊ฒฝ ์ด๋ฒคํธ
|
1374 |
+
quality_preset.select(
|
1375 |
fn=lambda x: QUALITY_PRESETS.get(x, {}).get("description", ""),
|
1376 |
inputs=[quality_preset],
|
1377 |
outputs=[preset_description]
|
1378 |
+
).then(
|
1379 |
+
fn=update_quality_preset,
|
|
|
|
|
1380 |
inputs=[quality_preset],
|
1381 |
outputs=[infer_step, guidance_scale, scheduler_type, omega_scale, use_erg_diffusion, use_erg_tag]
|
1382 |
)
|
1383 |
|
1384 |
# AI ์์ฌ ๋ฒํผ ์ด๋ฒคํธ
|
1385 |
generate_lyrics_btn.click(
|
1386 |
+
fn=generate_ai_lyrics_wrapper,
|
1387 |
inputs=[lyric_prompt, genre_preset, song_style],
|
1388 |
outputs=[lyrics]
|
1389 |
)
|