Update app.py
Browse files
app.py
CHANGED
@@ -5,7 +5,7 @@ import requests
|
|
5 |
import tempfile
|
6 |
from languages import languages
|
7 |
|
8 |
-
def generate_audio(input_text, voice, output_format, base_url_input, api_key_input, request: gr.Request):
|
9 |
# 获取 URL 参数
|
10 |
query_params = request.query_params
|
11 |
# 优先使用 URL 参数中的 base_url 和 api_key
|
@@ -13,7 +13,7 @@ def generate_audio(input_text, voice, output_format, base_url_input, api_key_inp
|
|
13 |
api_key = query_params.get("api_key", api_key_input)
|
14 |
# 准备请求负载
|
15 |
payload = {
|
16 |
-
"model":
|
17 |
"input": input_text,
|
18 |
"voice": voice.lower(),
|
19 |
"format": output_format
|
@@ -38,8 +38,8 @@ def generate_audio(input_text, voice, output_format, base_url_input, api_key_inp
|
|
38 |
# 返回文件路径
|
39 |
return temp_file.name
|
40 |
|
41 |
-
def on_generate_click(input_text_value, voice_value, output_format_value, base_url_value, api_key_value, request: gr.Request):
|
42 |
-
audio_path = generate_audio(input_text_value, voice_value, output_format_value, base_url_value, api_key_value, request)
|
43 |
return audio_path
|
44 |
|
45 |
def update_settings_from_url(request: gr.Request):
|
@@ -61,6 +61,7 @@ def update_language(language_choice):
|
|
61 |
gr.update(value=f"# {labels['title']}"), # title_markdown
|
62 |
gr.update(value=labels['intro']), # intro_text
|
63 |
gr.update(label=labels['input_text_label'], placeholder=labels['input_text_placeholder']), # input_text
|
|
|
64 |
gr.update(label=labels['voice_label']), # voice
|
65 |
gr.update(label=labels['output_format_label']), # output_format
|
66 |
gr.update(value=labels['generate_button_label']), # generate_button
|
@@ -94,6 +95,8 @@ with gr.Blocks(css=None, theme="Zarkel/IBM_Carbon_Theme", title="TTS Web") as de
|
|
94 |
intro_text = gr.Markdown(languages["中文"]["intro"]) # 初始加载中文的介绍
|
95 |
# 输入文本
|
96 |
input_text = gr.Textbox(label="输入文本", placeholder="请输入要合成的文本")
|
|
|
|
|
97 |
# 选择声音
|
98 |
voice = gr.Radio(choices=["Alloy", "Echo", "Fable", "Onyx", "Nova", "Shimmer"], label="声音", value="Alloy")
|
99 |
# 选择输出格式
|
@@ -128,6 +131,7 @@ with gr.Blocks(css=None, theme="Zarkel/IBM_Carbon_Theme", title="TTS Web") as de
|
|
128 |
title_markdown,
|
129 |
intro_text, # 添加 intro_text 的更新
|
130 |
input_text,
|
|
|
131 |
voice,
|
132 |
output_format,
|
133 |
generate_button,
|
@@ -159,8 +163,8 @@ with gr.Blocks(css=None, theme="Zarkel/IBM_Carbon_Theme", title="TTS Web") as de
|
|
159 |
# 按钮点击事件
|
160 |
generate_button.click(
|
161 |
on_generate_click,
|
162 |
-
inputs=[input_text, voice, output_format, base_url_input, api_key_input],
|
163 |
outputs=[audio_output]
|
164 |
)
|
165 |
|
166 |
-
demo.launch(server_name="0.0.0.0", server_port=7860)
|
|
|
5 |
import tempfile
|
6 |
from languages import languages
|
7 |
|
8 |
+
def generate_audio(input_text, model, voice, output_format, base_url_input, api_key_input, request: gr.Request):
|
9 |
# 获取 URL 参数
|
10 |
query_params = request.query_params
|
11 |
# 优先使用 URL 参数中的 base_url 和 api_key
|
|
|
13 |
api_key = query_params.get("api_key", api_key_input)
|
14 |
# 准备请求负载
|
15 |
payload = {
|
16 |
+
"model": model, # 使用选择的模型
|
17 |
"input": input_text,
|
18 |
"voice": voice.lower(),
|
19 |
"format": output_format
|
|
|
38 |
# 返回文件路径
|
39 |
return temp_file.name
|
40 |
|
41 |
+
def on_generate_click(input_text_value, model_value, voice_value, output_format_value, base_url_value, api_key_value, request: gr.Request):
|
42 |
+
audio_path = generate_audio(input_text_value, model_value, voice_value, output_format_value, base_url_value, api_key_value, request)
|
43 |
return audio_path
|
44 |
|
45 |
def update_settings_from_url(request: gr.Request):
|
|
|
61 |
gr.update(value=f"# {labels['title']}"), # title_markdown
|
62 |
gr.update(value=labels['intro']), # intro_text
|
63 |
gr.update(label=labels['input_text_label'], placeholder=labels['input_text_placeholder']), # input_text
|
64 |
+
gr.update(label=labels['model_label']), # model
|
65 |
gr.update(label=labels['voice_label']), # voice
|
66 |
gr.update(label=labels['output_format_label']), # output_format
|
67 |
gr.update(value=labels['generate_button_label']), # generate_button
|
|
|
95 |
intro_text = gr.Markdown(languages["中文"]["intro"]) # 初始加载中文的介绍
|
96 |
# 输入文本
|
97 |
input_text = gr.Textbox(label="输入文本", placeholder="请输入要合成的文本")
|
98 |
+
# 选择模型
|
99 |
+
model = gr.Radio(choices=["tts-1", "tts-1-hd"], label="模型", value="tts-1")
|
100 |
# 选择声音
|
101 |
voice = gr.Radio(choices=["Alloy", "Echo", "Fable", "Onyx", "Nova", "Shimmer"], label="声音", value="Alloy")
|
102 |
# 选择输出格式
|
|
|
131 |
title_markdown,
|
132 |
intro_text, # 添加 intro_text 的更新
|
133 |
input_text,
|
134 |
+
model, # 更新模型组件
|
135 |
voice,
|
136 |
output_format,
|
137 |
generate_button,
|
|
|
163 |
# 按钮点击事件
|
164 |
generate_button.click(
|
165 |
on_generate_click,
|
166 |
+
inputs=[input_text, model, voice, output_format, base_url_input, api_key_input, gr.Request()],
|
167 |
outputs=[audio_output]
|
168 |
)
|
169 |
|
170 |
+
demo.launch(server_name="0.0.0.0", server_port=7860)
|