Spaces:
Running
on
Zero
Running
on
Zero
Update ui/components.py
Browse files- ui/components.py +103 -202
ui/components.py
CHANGED
@@ -1227,238 +1227,139 @@ def create_text2music_ui(
|
|
1227 |
outputs=extend_outputs + [extend_input_params_json],
|
1228 |
)
|
1229 |
|
1230 |
-
# ===== ์ด๋ฒคํธ ํธ๋ค๋ฌ
|
|
|
1231 |
|
1232 |
-
|
1233 |
-
|
1234 |
-
print(f"๐ต
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
# ์คํ์ผ ํ๊ทธ ์ถ๊ฐ
|
1242 |
-
if song_style in SONG_STYLES:
|
1243 |
-
style_tags = SONG_STYLES[song_style]
|
1244 |
-
result = f"{base_tags}, {style_tags}"
|
1245 |
-
else:
|
1246 |
-
result = base_tags
|
1247 |
-
|
1248 |
-
print(f"โ
Updated tags: {result[:50]}...")
|
1249 |
-
return result
|
1250 |
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
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 |
-
|
1263 |
-
|
1264 |
-
print("
|
1265 |
-
|
1266 |
-
|
1267 |
-
genre = random.choice(list(GENRE_PRESETS.keys()))
|
1268 |
else:
|
1269 |
-
|
1270 |
-
|
1271 |
-
# ๋๋ค ์ฃผ์ ๋ฆฌ์คํธ
|
1272 |
-
themes = [
|
1273 |
-
"๋์์ ๋ฐค", "์ฒซ์ฌ๋์ ์ถ์ต", "์ฌ๋ฆ๋ ์ ํด๋ณ", "๊ฐ์์ ์ ์ทจ",
|
1274 |
-
"ํฌ๋ง์ฐฌ ๋ด์ผ", "์์ ๋ก์ด ์ํผ", "๋ณ๋น ์๋ ์ถค", "์ฒญ์ถ์ ์ด์ ",
|
1275 |
-
"๋น ์ค๋ ๋ ์ ๊ฐ์ฑ", "๊ฟ์ ํฅํ ๋์ ", "์ด๋ณ ํ์ ์ฑ์ฅ", "์๋ก์ด ์์"
|
1276 |
-
]
|
1277 |
-
|
1278 |
-
# ๋๋ค ์ค์
|
1279 |
-
duration = random.choice([30, 60, 90, 120, 180])
|
1280 |
-
theme = random.choice(themes)
|
1281 |
-
|
1282 |
-
# AI๋ก ๊ฐ์ฌ ์์ฑ
|
1283 |
-
lyrics_text = generate_lyrics_with_ai(theme, genre, song_style)
|
1284 |
-
|
1285 |
-
# ํ๊ทธ ์์ฑ
|
1286 |
-
tags = GENRE_PRESETS.get(genre, "")
|
1287 |
-
if song_style in SONG_STYLES:
|
1288 |
-
tags = f"{tags}, {SONG_STYLES[song_style]}"
|
1289 |
-
|
1290 |
-
# ๋๋ค ํ๋ผ๋ฏธํฐ ์ค์
|
1291 |
-
return (
|
1292 |
-
duration, # audio_duration
|
1293 |
-
tags, # prompt
|
1294 |
-
lyrics_text, # lyrics
|
1295 |
-
150, # infer_step
|
1296 |
-
15.0, # guidance_scale
|
1297 |
-
"euler", # scheduler_type
|
1298 |
-
"apg", # cfg_type
|
1299 |
-
10.0, # omega_scale
|
1300 |
-
str(random.randint(1, 10000)), # manual_seeds
|
1301 |
-
0.5, # guidance_interval
|
1302 |
-
0.0, # guidance_interval_decay
|
1303 |
-
3.0, # min_guidance_scale
|
1304 |
-
True, # use_erg_tag
|
1305 |
-
False, # use_erg_lyric
|
1306 |
-
True, # use_erg_diffusion
|
1307 |
-
None, # oss_steps
|
1308 |
-
0.0, # guidance_scale_text
|
1309 |
-
0.0, # guidance_scale_lyric
|
1310 |
-
False, # audio2audio_enable
|
1311 |
-
0.5, # ref_audio_strength
|
1312 |
-
None, # ref_audio_input
|
1313 |
-
)
|
1314 |
-
|
1315 |
-
def generate_preview(prompt, lyrics, genre_preset, song_style):
|
1316 |
-
"""10์ด ํ๋ฆฌ๋ทฐ ์์ฑ"""
|
1317 |
-
print("๐ต Preview ๋ฒํผ ํด๋ฆญ")
|
1318 |
-
preview_params = {
|
1319 |
-
"audio_duration": 10,
|
1320 |
-
"infer_step": 50,
|
1321 |
-
"guidance_scale": 12.0,
|
1322 |
-
"scheduler_type": "euler",
|
1323 |
-
"cfg_type": "apg",
|
1324 |
-
"omega_scale": 5.0,
|
1325 |
-
}
|
1326 |
-
|
1327 |
-
enhanced_prompt = enhance_prompt_with_genre(prompt, genre_preset, song_style)
|
1328 |
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
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 |
-
)
|
1352 |
-
return result[0] if result else None
|
1353 |
-
except Exception as e:
|
1354 |
-
return f"ํ๋ฆฌ๋ทฐ ์์ฑ ์คํจ: {str(e)}"
|
1355 |
-
|
1356 |
-
# ===== ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ =====
|
1357 |
-
print("๐ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ ์ค...")
|
1358 |
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
outputs=[prompt]
|
1364 |
)
|
1365 |
|
1366 |
-
#
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1372 |
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
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=
|
1387 |
inputs=[lyric_prompt, genre_preset, song_style],
|
1388 |
-
outputs=
|
1389 |
)
|
1390 |
|
1391 |
-
# Random ๋ฒํผ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1392 |
random_bnt.click(
|
1393 |
-
fn=
|
1394 |
inputs=[genre_preset, song_style],
|
1395 |
outputs=[
|
1396 |
-
audio_duration,
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
omega_scale,
|
1404 |
-
manual_seeds,
|
1405 |
-
guidance_interval,
|
1406 |
-
guidance_interval_decay,
|
1407 |
-
min_guidance_scale,
|
1408 |
-
use_erg_tag,
|
1409 |
-
use_erg_lyric,
|
1410 |
-
use_erg_diffusion,
|
1411 |
-
oss_steps,
|
1412 |
-
guidance_scale_text,
|
1413 |
-
guidance_scale_lyric,
|
1414 |
-
audio2audio_enable,
|
1415 |
-
ref_audio_strength,
|
1416 |
-
ref_audio_input,
|
1417 |
-
],
|
1418 |
)
|
1419 |
|
1420 |
-
# Preview ๋ฒํผ
|
1421 |
preview_bnt.click(
|
1422 |
-
fn=
|
1423 |
inputs=[prompt, lyrics, genre_preset, song_style],
|
1424 |
-
outputs=
|
1425 |
)
|
1426 |
|
1427 |
-
# ๋ฉ์ธ ์์ฑ ๋ฒํผ
|
1428 |
text2music_bnt.click(
|
1429 |
fn=enhanced_process_func,
|
1430 |
inputs=[
|
1431 |
-
audio_duration,
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
omega_scale,
|
1439 |
-
manual_seeds,
|
1440 |
-
guidance_interval,
|
1441 |
-
guidance_interval_decay,
|
1442 |
-
min_guidance_scale,
|
1443 |
-
use_erg_tag,
|
1444 |
-
use_erg_lyric,
|
1445 |
-
use_erg_diffusion,
|
1446 |
-
oss_steps,
|
1447 |
-
guidance_scale_text,
|
1448 |
-
guidance_scale_lyric,
|
1449 |
-
audio2audio_enable,
|
1450 |
-
ref_audio_strength,
|
1451 |
-
ref_audio_input,
|
1452 |
-
lora_name_or_path,
|
1453 |
-
multi_seed_mode,
|
1454 |
-
enable_smart_enhancement,
|
1455 |
-
genre_preset,
|
1456 |
-
song_style
|
1457 |
],
|
1458 |
-
outputs=outputs + [input_params_json]
|
1459 |
)
|
1460 |
|
1461 |
-
print("โ
๋ชจ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ
|
1462 |
|
1463 |
|
1464 |
def create_main_demo_ui(
|
|
|
1227 |
outputs=extend_outputs + [extend_input_params_json],
|
1228 |
)
|
1229 |
|
1230 |
+
# ===== ๊ฐ๋จํ๊ณ ์ง์ ์ ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ =====
|
1231 |
+
print("๐ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ ์ค...")
|
1232 |
|
1233 |
+
# 1. ์ฅ๋ฅด ํ๋ฆฌ์
๋ณ๊ฒฝ
|
1234 |
+
def on_genre_change(genre, style):
|
1235 |
+
print(f"๐ต Genre changed to: {genre}")
|
1236 |
+
if genre == "Custom":
|
1237 |
+
return TAG_DEFAULT
|
1238 |
+
tags = GENRE_PRESETS.get(genre, TAG_DEFAULT)
|
1239 |
+
if style and style in SONG_STYLES:
|
1240 |
+
tags = f"{tags}, {SONG_STYLES[style]}"
|
1241 |
+
return tags
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1242 |
|
1243 |
+
genre_preset.change(
|
1244 |
+
fn=on_genre_change,
|
1245 |
+
inputs=[genre_preset, song_style],
|
1246 |
+
outputs=prompt
|
1247 |
+
)
|
|
|
|
|
|
|
|
|
|
|
1248 |
|
1249 |
+
# 2. ์คํ์ผ ๋ณ๊ฒฝ
|
1250 |
+
def on_style_change(genre, style):
|
1251 |
+
print(f"๐ค Style changed to: {style}")
|
1252 |
+
if genre == "Custom":
|
1253 |
+
base_tags = TAG_DEFAULT
|
|
|
1254 |
else:
|
1255 |
+
base_tags = GENRE_PRESETS.get(genre, TAG_DEFAULT)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1256 |
|
1257 |
+
if style and style in SONG_STYLES:
|
1258 |
+
return f"{base_tags}, {SONG_STYLES[style]}"
|
1259 |
+
return base_tags
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1260 |
|
1261 |
+
song_style.change(
|
1262 |
+
fn=on_style_change,
|
1263 |
+
inputs=[genre_preset, song_style],
|
1264 |
+
outputs=prompt
|
|
|
1265 |
)
|
1266 |
|
1267 |
+
# 3. ํ์ง ํ๋ฆฌ์
|
1268 |
+
def on_quality_change(preset):
|
1269 |
+
print(f"โก Quality preset changed to: {preset}")
|
1270 |
+
if preset in QUALITY_PRESETS:
|
1271 |
+
p = QUALITY_PRESETS[preset]
|
1272 |
+
return (
|
1273 |
+
p["description"],
|
1274 |
+
p["infer_step"],
|
1275 |
+
p["guidance_scale"],
|
1276 |
+
p["scheduler_type"],
|
1277 |
+
p["omega_scale"],
|
1278 |
+
p["use_erg_diffusion"],
|
1279 |
+
p["use_erg_tag"]
|
1280 |
+
)
|
1281 |
+
return ("", 150, 15.0, "euler", 10.0, True, True)
|
1282 |
|
1283 |
+
quality_preset.change(
|
1284 |
+
fn=on_quality_change,
|
1285 |
+
inputs=quality_preset,
|
1286 |
+
outputs=[preset_description, infer_step, guidance_scale, scheduler_type, omega_scale, use_erg_diffusion, use_erg_tag]
|
|
|
|
|
|
|
|
|
|
|
1287 |
)
|
1288 |
|
1289 |
+
# 4. AI ์์ฌ
|
1290 |
+
def generate_lyrics_click(prompt_text, genre, style):
|
1291 |
+
print(f"๐ค AI ์์ฌ ๋ฒํผ ํด๋ฆญ! Prompt: '{prompt_text}'")
|
1292 |
+
if not prompt_text:
|
1293 |
+
return "์์ฌ ์ฃผ์ ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!"
|
1294 |
+
return generate_lyrics_with_ai(prompt_text, genre, style)
|
1295 |
+
|
1296 |
generate_lyrics_btn.click(
|
1297 |
+
fn=generate_lyrics_click,
|
1298 |
inputs=[lyric_prompt, genre_preset, song_style],
|
1299 |
+
outputs=lyrics
|
1300 |
)
|
1301 |
|
1302 |
+
# 5. Random ๋ฒํผ
|
1303 |
+
def random_click(genre, style):
|
1304 |
+
print("๐ฒ Random ๋ฒํผ ํด๋ฆญ!")
|
1305 |
+
|
1306 |
+
if genre == "Custom":
|
1307 |
+
genre = random.choice(list(GENRE_PRESETS.keys()))
|
1308 |
+
|
1309 |
+
themes = ["๋์์ ๋ฐค", "์ฒซ์ฌ๋", "์ฌ๋ฆ ํด๋ณ", "๊ฐ์ ์ ์ทจ", "ํฌ๋ง", "์์ ", "๋ณ๋น", "์ฒญ์ถ"]
|
1310 |
+
theme = random.choice(themes)
|
1311 |
+
duration = random.choice([30, 60, 90, 120])
|
1312 |
+
|
1313 |
+
# ํ๊ทธ
|
1314 |
+
tags = GENRE_PRESETS.get(genre, TAG_DEFAULT)
|
1315 |
+
if style in SONG_STYLES:
|
1316 |
+
tags = f"{tags}, {SONG_STYLES[style]}"
|
1317 |
+
|
1318 |
+
# ๊ฐ์ฌ ์์ฑ
|
1319 |
+
new_lyrics = generate_lyrics_with_ai(theme, genre, style)
|
1320 |
+
|
1321 |
+
return [
|
1322 |
+
duration, tags, new_lyrics, 150, 15.0, "euler", "apg", 10.0,
|
1323 |
+
str(random.randint(1, 10000)), 0.5, 0.0, 3.0, True, False, True,
|
1324 |
+
None, 0.0, 0.0, False, 0.5, None
|
1325 |
+
]
|
1326 |
+
|
1327 |
random_bnt.click(
|
1328 |
+
fn=random_click,
|
1329 |
inputs=[genre_preset, song_style],
|
1330 |
outputs=[
|
1331 |
+
audio_duration, prompt, lyrics, infer_step, guidance_scale,
|
1332 |
+
scheduler_type, cfg_type, omega_scale, manual_seeds,
|
1333 |
+
guidance_interval, guidance_interval_decay, min_guidance_scale,
|
1334 |
+
use_erg_tag, use_erg_lyric, use_erg_diffusion, oss_steps,
|
1335 |
+
guidance_scale_text, guidance_scale_lyric, audio2audio_enable,
|
1336 |
+
ref_audio_strength, ref_audio_input
|
1337 |
+
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1338 |
)
|
1339 |
|
1340 |
+
# 6. Preview ๋ฒํผ
|
1341 |
preview_bnt.click(
|
1342 |
+
fn=lambda p, l, g, s: print(f"๐ต Preview clicked! Genre: {g}, Style: {s}"),
|
1343 |
inputs=[prompt, lyrics, genre_preset, song_style],
|
1344 |
+
outputs=None
|
1345 |
)
|
1346 |
|
1347 |
+
# 7. ๋ฉ์ธ ์์ฑ ๋ฒํผ
|
1348 |
text2music_bnt.click(
|
1349 |
fn=enhanced_process_func,
|
1350 |
inputs=[
|
1351 |
+
audio_duration, prompt, lyrics, infer_step, guidance_scale,
|
1352 |
+
scheduler_type, cfg_type, omega_scale, manual_seeds,
|
1353 |
+
guidance_interval, guidance_interval_decay, min_guidance_scale,
|
1354 |
+
use_erg_tag, use_erg_lyric, use_erg_diffusion, oss_steps,
|
1355 |
+
guidance_scale_text, guidance_scale_lyric, audio2audio_enable,
|
1356 |
+
ref_audio_strength, ref_audio_input, lora_name_or_path,
|
1357 |
+
multi_seed_mode, enable_smart_enhancement, genre_preset, song_style
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1358 |
],
|
1359 |
+
outputs=outputs + [input_params_json]
|
1360 |
)
|
1361 |
|
1362 |
+
print("โ
๋ชจ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ ์๋ฃ!")
|
1363 |
|
1364 |
|
1365 |
def create_main_demo_ui(
|