import os import gradio as gr from glm_huggingface import run_glm from open_ai import run_openai from prompt_loader import get_prompt from dotenv import load_dotenv load_dotenv() if os.getenv("OPENAI_API_KEY",False): print ("using OPENAI_API_KEY") run_llm=run_openai else: print ("using glm from huggingface") run_llm=run_glm PROMPT_STYLE = get_prompt("PROMPT_STYLE") PROMPT_TEXT = get_prompt("PROMPT_TEXT") PROMPT_TEXT2 = get_prompt("PROMPT_TEXT2") SYSPROMPT_STYLE = get_prompt("SYSPROMPT_STYLE") SYSPROMPT_TEXT = get_prompt("SYSPROMPT_TEXT") def get_song_output(artist, song_text): try: # Get style music from artist style_glm = run_openai(f"Describe {artist}", sys_prompt=SYSPROMPT_STYLE) if style_glm: style = style_glm else: style = '' except Exception as e: print(f"ERROR infer llm: {e}") style = '' try: text_glm = run_openai(f"{PROMPT_TEXT}\n{style}\n#Text song:\n{song_text}\n{PROMPT_TEXT2}", sys_prompt=SYSPROMPT_TEXT) if text_glm: text = text_glm else: text = '' except Exception as e: print(f"ERROR infer llm: {e}") text = '' return style, text # Define translatable strings english_strings = { "title": "SUNO style generator and sound format", "performer_label": "Performer Name", "song_text_label": "Song Text", "language_english": "English", "language_russian": "Russian", "generate_button": "Generate", "style_label": "Style", "song_result_label": "Song Text" } russian_strings = { "title": "Название: SUNO стайл генератор и звуковой формат", "performer_label": "Имя исполнителя: ", "song_text_label": "Текст песни: ", "language_english": "Английский: ", "language_russian": "Русский: ", "generate_button": "Сгенерировать: ", "style_label": "Стиль: ", "song_result_label": "Текст песни: " } current_language = "English" with gr.Blocks() as demo: with gr.Row(elem_id="header", equal_height=True): # Левая колонка (логотип 100x100) with gr.Column(scale=0, min_width=100): gr.Image( value="splash.webp", width=100, height=100, show_label=False, interactive=False, show_download_button=False, show_fullscreen_button=False, elem_id="logo" ) # Правая колонка (markdown на всю ширину) with gr.Column(scale=1): gr.Markdown(f"# {english_strings['title']}\nby AiCave") with gr.Row(): with gr.Column(): # Input fields name_input = gr.Textbox(label=english_strings["performer_label"],lines=5, max_lines=10) text_input = gr.Textbox(label=english_strings["song_text_label"], lines=25, max_lines=25) # language_radio = gr.Radio(["English", "Russian"], label=english_strings["language_english"] + "/" + english_strings["language_russian"]) generate_button = gr.Button(english_strings["generate_button"]) with gr.Column(): # Output fields style_output = gr.Textbox(label=english_strings["style_label"],lines=5, max_lines=10,show_copy_button=True) song_output = gr.Textbox(label=english_strings["song_result_label"], lines=28, max_lines=28,show_copy_button=True) # Generate button click event - calls the get_song_output function generate_button.click( fn=get_song_output, inputs=[name_input, text_input], outputs=[style_output, song_output] ) demo.css = """ #header { align-items: center; padding: 0px 0px; border-bottom: 0px solid #ddd; } """ if __name__ == "__main__": demo.launch(quiet = False)