Fix: conflict of current_model in model_holder for multiple requests
This commit is contained in:
6
app.py
6
app.py
@@ -36,6 +36,8 @@ languages = [l.value for l in Languages]
|
|||||||
|
|
||||||
|
|
||||||
def tts_fn(
|
def tts_fn(
|
||||||
|
model_name,
|
||||||
|
model_path,
|
||||||
text,
|
text,
|
||||||
language,
|
language,
|
||||||
reference_audio_path,
|
reference_audio_path,
|
||||||
@@ -54,7 +56,7 @@ def tts_fn(
|
|||||||
use_tone,
|
use_tone,
|
||||||
speaker,
|
speaker,
|
||||||
):
|
):
|
||||||
assert model_holder.current_model is not None
|
model_holder.load_model_gr(model_name, model_path)
|
||||||
|
|
||||||
wrong_tone_message = ""
|
wrong_tone_message = ""
|
||||||
kata_tone: Optional[list[tuple[str, int]]] = None
|
kata_tone: Optional[list[tuple[str, int]]] = None
|
||||||
@@ -418,6 +420,8 @@ if __name__ == "__main__":
|
|||||||
tts_button.click(
|
tts_button.click(
|
||||||
tts_fn,
|
tts_fn,
|
||||||
inputs=[
|
inputs=[
|
||||||
|
model_name,
|
||||||
|
model_path,
|
||||||
text_input,
|
text_input,
|
||||||
language,
|
language,
|
||||||
ref_audio_path,
|
ref_audio_path,
|
||||||
|
|||||||
@@ -209,6 +209,18 @@ class ModelHolder:
|
|||||||
raise ValueError(f"Model `{model_name}` is not found")
|
raise ValueError(f"Model `{model_name}` is not found")
|
||||||
if model_path not in self.model_files_dict[model_name]:
|
if model_path not in self.model_files_dict[model_name]:
|
||||||
raise ValueError(f"Model file `{model_path}` is not found")
|
raise ValueError(f"Model file `{model_path}` is not found")
|
||||||
|
if (
|
||||||
|
self.current_model is not None
|
||||||
|
and self.current_model.model_path == model_path
|
||||||
|
):
|
||||||
|
# Already loaded
|
||||||
|
speakers = list(self.current_model.spk2id.keys())
|
||||||
|
styles = list(self.current_model.style2id.keys())
|
||||||
|
return (
|
||||||
|
gr.Dropdown(choices=styles, value=styles[0]),
|
||||||
|
gr.Button(interactive=True, value="音声合成"),
|
||||||
|
gr.Dropdown(choices=speakers, value=speakers[0]),
|
||||||
|
)
|
||||||
self.current_model = Model(
|
self.current_model = Model(
|
||||||
model_path=model_path,
|
model_path=model_path,
|
||||||
config_path=os.path.join(self.root_dir, model_name, "config.json"),
|
config_path=os.path.join(self.root_dir, model_name, "config.json"),
|
||||||
|
|||||||
Reference in New Issue
Block a user