Spaces:
Running
Running
File size: 4,009 Bytes
f96eb1f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
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 <a href='https://boosty.to/aicave/donate'>AiCave</a>")
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) |