diff --git a/.dockerignore b/.dockerignore index 95ef322..7ff74da 100644 --- a/.dockerignore +++ b/.dockerignore @@ -30,7 +30,8 @@ LICENSE /bert/deberta-v3-large/ Data/ -dict/ +dict_data/user_dic.json +dict_data/user_dic.dic docs/ inputs/ mos_results/ diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d9a3015..77cdca5 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## v2.3 (2024-02-25) + +### 大きな変更 + +#### ユーザー辞書機能 +あらかじめ辞書に固有名詞を追加することができ、それが学習時・音声合成時の読み取得部分に適応されます。辞書の追加・編集は次のエディタ経由で行ってください。 + +辞書部分の[実装](/text/user_dict/) は、中のREADMEにある通り、[VOICEVOX Editor](https://github.com/VOICEVOX/voicevox) のものを使っており、この部分のコードライセンスはLGPL-3. + +#### 音声合成専用エディタ + +音声合成専用エディタを追加。今までのWebUIでできた機能のほか、次のような機能が使えます(つまり既存の日本語音声合成ソフトウェアのエディタを真似ました): +- セリフ単位でキャラや設定を変更しながら原稿を作り、それを一括で生成したり、原稿を保存等したり読み込んだり +- GUIよる分かりやすいアクセント調整 +- ユーザー辞書への単語追加や編集 + +`Editor.bat`をダブルクリックか`python server_editor.py --inbrowser`で起動します。エディター部分は[こちらの別リポジトリ](https://github.com/litagin02/Style-Bert-VITS2-Editor)になります。フロントエンド初心者なのでプルリクや改善案等をお待ちしています。 + +### 改善 +- 学習時にデコーダー部分を凍結するオプションの追加。品質がもしかしたら上がるかもしれません。 +- + ## v2.2 (2024-02-09) ### 変更・機能追加 diff --git a/server_editor.py b/server_editor.py index afadaec..f859315 100644 --- a/server_editor.py +++ b/server_editor.py @@ -16,6 +16,7 @@ import zipfile from datetime import datetime from io import BytesIO from pathlib import Path +import yaml import numpy as np import pyopenjtalk @@ -151,6 +152,12 @@ origins = [ "http://127.0.0.1:8000", ] +# Get path settings +with open(Path("configs/paths.yml"), "r", encoding="utf-8") as f: + path_config: dict[str, str] = yaml.safe_load(f.read()) + # dataset_root = path_config["dataset_root"] + assets_root = path_config["assets_root"] + parser = argparse.ArgumentParser() parser.add_argument("--model_dir", type=str, default="model_assets/") parser.add_argument("--device", type=str, default="cuda") @@ -158,6 +165,9 @@ parser.add_argument("--port", type=int, default=8000) parser.add_argument("--inbrowser", action="store_true") parser.add_argument("--line_length", type=int, default=None) parser.add_argument("--line_count", type=int, default=None) +parser.add_argument( + "--dir", "-d", type=str, help="Model directory", default=assets_root +) args = parser.parse_args() device = args.device @@ -296,7 +306,11 @@ def multi_synthesis(request: MultiSynthesisRequest): ) audios = [] for i, req in enumerate(lines): - # Loade model + if args.line_length is not None and len(req.text) > args.line_length: + raise HTTPException( + status_code=400, + detail=f"1行の文字数は{args.line_length}文字以下にしてください。", + ) try: model = model_holder.load_model( model_name=req.model, model_path_str=req.modelFile diff --git a/text/user_dict/README.md b/text/user_dict/README.md index c7190ea..d09d80a 100644 --- a/text/user_dict/README.md +++ b/text/user_dict/README.md @@ -1,15 +1,18 @@ -このモジュールは、[voicevox_engine](https://github.com/VOICEVOX/voicevox_engine)を使わせていただいています。 +このフォルダのコードは、[voicevox_engine](https://github.com/VOICEVOX/voicevox_engine)のものを使わせていただいています。 引用元: -https://github.com/VOICEVOX/voicevox_engine/tree/709527be089c0410c08e989df95a4a1d78439423/voicevox_engine/user_dict +https://github.com/VOICEVOX/voicevox_engine/tree/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/user_dict + +https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/model.py#L207 改変部分は以下のとおりです。 - ファイル名の書き換え、それに伴うimport文の書き換え -- VOICEVOX固有の他のモジュールへの依存のコメントアウト +- VOICEVOX固有の部分のコメントアウト - mutexを使用している部分のコメントアウト - 参照しているpyopenjtalkの違いによるメソッド名書き換え - UserDictWordのmora_countのデフォルト値をNoneに指定 +- Pydanticのモデルは必要な箇所のみを抽出 ライセンス: LGPL