Files

118 lines
3.7 KiB
Python

#!/usr/bin/env python3
"""XL turbo (4B DiT) — новый вдохновляющий трек для Ника."""
import os
import sys
import time
for v in ['http_proxy', 'https_proxy', 'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY']:
os.environ.pop(v, None)
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, PROJECT_ROOT)
from loguru import logger
from acestep.handler import AceStepHandler
from acestep.inference import GenerationParams, GenerationConfig, generate_music
SAVE_DIR = os.path.join(PROJECT_ROOT, "output", "personal_new")
CAPTION = (
"An uplifting, cinematic pop-rock anthem with a powerful male vocal. "
"Building drums, bright synth pads, soaring electric guitar, emotional "
"and hopeful mood. Anthem-like chorus, sense of a new dawn and forward "
"motion, determined and inspiring."
)
LYRICS = """[Intro]
[Verse]
Рассвет на стекле, в окне уже не тьма
Я снова здесь, я снова в борьбе
Прошлые ошибки — лишь следы на пути
Я не сдамся, я иду вперёд
[Pre-Chorus]
Пусть руки дрожат, но в груди огонь
Я не сломан — я только в пути
[Chorus]
Восход, восход — я иду навстречу свету
Восход, восход — хоть и трудно порой
Я ещё здесь, я ещё в строю
И мой путь только начинается
[Verse]
Дорога длинная, впереди много гор
Но каждый восход делает сильнее меня
Я не один, я веду этот бой
За себя и за тех, кто со мной
[Chorus]
Восход, восход — я иду навстречу свету
Восход, восход — хоть и трудно порой
Я ещё здесь, я ещё в строю
И мой путь только начинается
[Bridge]
Не бойся рассвета, он снова придет
Не бойся пути — он твой
[Chorus]
Восход, восход — я иду навстречу свету
Восход, восход — хоть и трудно порой
Я ещё здесь, я ещё в строю
И мой путь только начинается
[Outro]"""
def main():
os.makedirs(SAVE_DIR, exist_ok=True)
logger.info("Инициализация DiT handler (acestep-v15-xl-turbo, cuda:0)...")
t0 = time.time()
dit = AceStepHandler()
status, ok = dit.initialize_service(
project_root=PROJECT_ROOT,
config_path="acestep-v15-xl-turbo",
device="cuda",
offload_to_cpu=True,
)
if not ok:
logger.error(f"DiT init failed: {status}")
sys.exit(1)
logger.info(f"DiT loaded за {time.time() - t0:.1f}s — {status}")
params = GenerationParams(
task_type="text2music",
thinking=False,
caption=CAPTION,
lyrics=LYRICS,
vocal_language="ru",
bpm=128,
keyscale="F major",
timesignature="",
duration=150,
inference_steps=8,
guidance_scale=1.0,
seed=-1,
)
config = GenerationConfig(batch_size=1, audio_format="wav")
logger.info("Генерация на GPU (замер времени)...")
t0 = time.time()
result = generate_music(dit, None, params, config, SAVE_DIR)
elapsed = time.time() - t0
if result.success:
logger.info(f"OK за {elapsed:.1f}s")
for a in result.audios:
logger.info(f" -> {a.get('path')}")
else:
logger.error(f"FAILED за {elapsed:.1f}s — {result.status_message}")
sys.exit(1)
if __name__ == "__main__":
main()