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(
|
||||
model_name,
|
||||
model_path,
|
||||
text,
|
||||
language,
|
||||
reference_audio_path,
|
||||
@@ -54,7 +56,7 @@ def tts_fn(
|
||||
use_tone,
|
||||
speaker,
|
||||
):
|
||||
assert model_holder.current_model is not None
|
||||
model_holder.load_model_gr(model_name, model_path)
|
||||
|
||||
wrong_tone_message = ""
|
||||
kata_tone: Optional[list[tuple[str, int]]] = None
|
||||
@@ -418,6 +420,8 @@ if __name__ == "__main__":
|
||||
tts_button.click(
|
||||
tts_fn,
|
||||
inputs=[
|
||||
model_name,
|
||||
model_path,
|
||||
text_input,
|
||||
language,
|
||||
ref_audio_path,
|
||||
|
||||
@@ -209,6 +209,18 @@ class ModelHolder:
|
||||
raise ValueError(f"Model `{model_name}` is not found")
|
||||
if model_path not in self.model_files_dict[model_name]:
|
||||
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(
|
||||
model_path=model_path,
|
||||
config_path=os.path.join(self.root_dir, model_name, "config.json"),
|
||||
|
||||
Reference in New Issue
Block a user