Fix: a bug that prevented speech synthesis in app.py
This commit is contained in:
1
app.py
1
app.py
@@ -15,6 +15,7 @@ from webui import (
|
||||
create_train_app,
|
||||
)
|
||||
|
||||
|
||||
# Get path settings
|
||||
with Path("configs/paths.yml").open("r", encoding="utf-8") as f:
|
||||
path_config: dict[str, str] = yaml.safe_load(f.read())
|
||||
|
||||
@@ -149,9 +149,11 @@ def save_last_download(latest_release):
|
||||
# 以降はAPIの設定
|
||||
|
||||
# 最初に pyopenjtalk の辞書を更新
|
||||
## pyopenjtalk_worker の起動も同時に行われる
|
||||
update_dict()
|
||||
|
||||
# 単語分割に使う BERT モデル/トークナイザーを事前にロードしておく
|
||||
# 事前に BERT モデル/トークナイザーをロードしておく
|
||||
## ここでロードしなくても必要になった際に自動ロードされるが、時間がかかるため事前にロードしておいた方が体験が良い
|
||||
## server_editor.py は日本語にしか対応していないため、日本語の BERT モデル/トークナイザーのみロードする
|
||||
bert_models.load_model(Languages.JP)
|
||||
bert_models.load_tokenizer(Languages.JP)
|
||||
@@ -301,7 +303,7 @@ def synthesis(request: SynthesisRequest):
|
||||
)
|
||||
sr, audio = model.infer(
|
||||
text=text,
|
||||
language=request.language.value,
|
||||
language=request.language,
|
||||
sdp_ratio=request.sdpRatio,
|
||||
noise=request.noise,
|
||||
noisew=request.noisew,
|
||||
@@ -361,7 +363,7 @@ def multi_synthesis(request: MultiSynthesisRequest):
|
||||
tone = [t for _, t in phone_tone]
|
||||
sr, audio = model.infer(
|
||||
text=text,
|
||||
language=req.language.value,
|
||||
language=req.language,
|
||||
sdp_ratio=req.sdpRatio,
|
||||
noise=req.noise,
|
||||
noisew=req.noisew,
|
||||
|
||||
@@ -34,11 +34,28 @@ from style_bert_vits2.constants import (
|
||||
Languages,
|
||||
)
|
||||
from style_bert_vits2.logging import logger
|
||||
from style_bert_vits2.nlp import bert_models
|
||||
from style_bert_vits2.nlp.japanese import pyopenjtalk_worker as pyopenjtalk
|
||||
from style_bert_vits2.tts_model import Model, ModelHolder
|
||||
|
||||
ln = config.server_config.language
|
||||
|
||||
|
||||
# pyopenjtalk_worker を起動
|
||||
## Gradio はマルチスレッドだが、initialize() 内部で利用されている signal はマルチスレッドから設定できない
|
||||
## さらに起動には若干時間がかかるため、事前に起動しておいた方が体験が良い
|
||||
pyopenjtalk.initialize()
|
||||
|
||||
# 事前に BERT モデル/トークナイザーをロードしておく
|
||||
## ここでロードしなくても必要になった際に自動ロードされるが、時間がかかるため事前にロードしておいた方が体験が良い
|
||||
bert_models.load_model(Languages.JP)
|
||||
bert_models.load_tokenizer(Languages.JP)
|
||||
bert_models.load_model(Languages.EN)
|
||||
bert_models.load_tokenizer(Languages.EN)
|
||||
bert_models.load_model(Languages.ZH)
|
||||
bert_models.load_tokenizer(Languages.ZH)
|
||||
|
||||
|
||||
def raise_validation_error(msg: str, param: str):
|
||||
logger.warning(f"Validation error: {msg}")
|
||||
raise HTTPException(
|
||||
|
||||
@@ -105,7 +105,12 @@ def initialize(port: int = WORKER_PORT) -> None:
|
||||
def signal_handler(signum: int, frame: Any):
|
||||
terminate()
|
||||
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
try:
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
except ValueError:
|
||||
# signal only works in main thread
|
||||
pass
|
||||
|
||||
|
||||
# top-level declaration
|
||||
|
||||
@@ -19,12 +19,28 @@ from style_bert_vits2.constants import (
|
||||
)
|
||||
from style_bert_vits2.logging import logger
|
||||
from style_bert_vits2.models.infer import InvalidToneError
|
||||
from style_bert_vits2.nlp import bert_models
|
||||
from style_bert_vits2.nlp.japanese import pyopenjtalk_worker as pyopenjtalk
|
||||
from style_bert_vits2.nlp.japanese.g2p_utils import g2kata_tone, kata_tone2phone_tone
|
||||
from style_bert_vits2.nlp.japanese.normalizer import normalize_text
|
||||
from style_bert_vits2.tts_model import ModelHolder
|
||||
|
||||
languages = [l.value for l in Languages]
|
||||
|
||||
# pyopenjtalk_worker を起動
|
||||
## Gradio はマルチスレッドだが、initialize() 内部で利用されている signal はマルチスレッドから設定できない
|
||||
## さらに起動には若干時間がかかるため、事前に起動しておいた方が体験が良い
|
||||
pyopenjtalk.initialize()
|
||||
|
||||
# 事前に BERT モデル/トークナイザーをロードしておく
|
||||
## ここでロードしなくても必要になった際に自動ロードされるが、時間がかかるため事前にロードしておいた方が体験が良い
|
||||
bert_models.load_model(Languages.JP)
|
||||
bert_models.load_tokenizer(Languages.JP)
|
||||
bert_models.load_model(Languages.EN)
|
||||
bert_models.load_tokenizer(Languages.EN)
|
||||
bert_models.load_model(Languages.ZH)
|
||||
bert_models.load_tokenizer(Languages.ZH)
|
||||
|
||||
languages = [l.value for l in Languages]
|
||||
|
||||
initial_text = "こんにちは、初めまして。あなたの名前はなんていうの?"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user