ginipick commited on
Commit
3d177e8
ยท
verified ยท
1 Parent(s): 44e4ec9

Update ui/components.py

Browse files
Files changed (1) hide show
  1. 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, elem_id="ref_audio_input"),
523
- gr.update(visible=is_checked, elem_id="ref_audio_strength"),
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 # ๋ช…์‹œ์ ์œผ๋กœ interactive ์ถ”๊ฐ€
544
  )
545
  song_style = gr.Dropdown(
546
  choices=list(SONG_STYLES.keys()),
547
  value="๋“€์—ฃ (๋‚จ๋…€ ํ˜ผ์„ฑ)",
548
  label="๊ณก ์Šคํƒ€์ผ",
549
  scale=1,
550
- interactive=True # ๋ช…์‹œ์ ์œผ๋กœ interactive ์ถ”๊ฐ€
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
- # ===== ๋ชจ๋“  UI ์š”์†Œ๊ฐ€ ์ •์˜๋œ ํ›„ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์„ค์ • =====
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
- # AI ์ž‘์‚ฌ ๋ฒ„ํŠผ ์ด๋ฒคํŠธ
1248
- def generate_ai_lyrics_handler(lyric_prompt, genre_preset, song_style):
1249
  print(f"๐ŸŽค AI ์ž‘์‚ฌ ๋ฒ„ํŠผ ํด๋ฆญ: prompt='{lyric_prompt}'")
1250
  if not lyric_prompt or lyric_prompt.strip() == "":
1251
  print("โš ๏ธ ๋นˆ ํ”„๋กฌํ”„ํŠธ")
1252
- return lyrics.value # ํ˜„์žฌ ๊ฐ€์‚ฌ ์œ ์ง€
 
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, # manual_seeds
1337
- 0.5, # guidance_interval
1338
- 0.0, # guidance_interval_decay
1339
- 3.0, # min_guidance_scale
1340
- True, # use_erg_tag
1341
- False, # use_erg_lyric
1342
- True, # use_erg_diffusion
1343
- None, # oss_steps
1344
- 0.0, # guidance_scale_text
1345
- 0.0, # guidance_scale_lyric
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.change(
1358
  fn=update_tags_from_preset,
1359
  inputs=[genre_preset, prompt, song_style],
1360
  outputs=[prompt]
1361
  )
1362
 
1363
  # ๊ณก ์Šคํƒ€์ผ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ
1364
- song_style.change(
1365
  fn=update_tags_from_preset,
1366
  inputs=[genre_preset, prompt, song_style],
1367
  outputs=[prompt]
1368
  )
1369
 
1370
  # ํ’ˆ์งˆ ํ”„๋ฆฌ์…‹ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ
1371
- quality_preset.change(
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=generate_ai_lyrics_handler,
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
  )