Refactor: moved the user dictionary implementation ported from VOICEVOX to style_bert_vits2/text_processing/japanese/user_dict/
This commit is contained in:
@@ -44,7 +44,7 @@ from style_bert_vits2.constants import (
|
|||||||
from style_bert_vits2.logging import logger
|
from style_bert_vits2.logging import logger
|
||||||
from style_bert_vits2.text_processing.japanese.g2p_utils import g2kata_tone, kata_tone2phone_tone
|
from style_bert_vits2.text_processing.japanese.g2p_utils import g2kata_tone, kata_tone2phone_tone
|
||||||
from style_bert_vits2.text_processing.japanese.normalizer import normalize_text
|
from style_bert_vits2.text_processing.japanese.normalizer import normalize_text
|
||||||
from text.user_dict import (
|
from style_bert_vits2.text_processing.japanese.user_dict import (
|
||||||
apply_word,
|
apply_word,
|
||||||
update_dict,
|
update_dict,
|
||||||
read_dict,
|
read_dict,
|
||||||
|
|||||||
@@ -5,21 +5,17 @@ from pathlib import Path
|
|||||||
# Style-Bert-VITS2 のバージョン
|
# Style-Bert-VITS2 のバージョン
|
||||||
VERSION = "2.3.1"
|
VERSION = "2.3.1"
|
||||||
|
|
||||||
# ユーザー辞書ディレクトリ
|
|
||||||
USER_DICT_DIR = Path("dict_data")
|
|
||||||
|
|
||||||
# Gradio のテーマ
|
# Gradio のテーマ
|
||||||
## Built-in theme: "default", "base", "monochrome", "soft", "glass"
|
## Built-in theme: "default", "base", "monochrome", "soft", "glass"
|
||||||
## See https://huggingface.co/spaces/gradio/theme-gallery for more themes
|
## See https://huggingface.co/spaces/gradio/theme-gallery for more themes
|
||||||
GRADIO_THEME = "NoCrypt/miku"
|
GRADIO_THEME = "NoCrypt/miku"
|
||||||
|
|
||||||
# 利用可能な言語
|
# デフォルトのユーザー辞書ディレクトリ
|
||||||
class Languages(str, Enum):
|
## style_bert_vits2.text_processing.japanese.user_dict モジュールのデフォルト値として利用される
|
||||||
JP = "JP"
|
## ライブラリとしての利用などで外部のユーザー辞書を指定したい場合は、user_dict 以下の各関数の実行時、引数に辞書データファイルのパスを指定する
|
||||||
EN = "EN"
|
DEFAULT_USER_DICT_DIR = Path(__file__).parent.parent / "dict_data"
|
||||||
ZH = "ZH"
|
|
||||||
|
|
||||||
# 推論パラメータのデフォルト値
|
# デフォルトの推論パラメータ
|
||||||
DEFAULT_STYLE = "Neutral"
|
DEFAULT_STYLE = "Neutral"
|
||||||
DEFAULT_STYLE_WEIGHT = 5.0
|
DEFAULT_STYLE_WEIGHT = 5.0
|
||||||
DEFAULT_SDP_RATIO = 0.2
|
DEFAULT_SDP_RATIO = 0.2
|
||||||
@@ -30,3 +26,10 @@ DEFAULT_LINE_SPLIT = True
|
|||||||
DEFAULT_SPLIT_INTERVAL = 0.5
|
DEFAULT_SPLIT_INTERVAL = 0.5
|
||||||
DEFAULT_ASSIST_TEXT_WEIGHT = 0.7
|
DEFAULT_ASSIST_TEXT_WEIGHT = 0.7
|
||||||
DEFAULT_ASSIST_TEXT_WEIGHT = 1.0
|
DEFAULT_ASSIST_TEXT_WEIGHT = 1.0
|
||||||
|
|
||||||
|
# 利用可能な言語
|
||||||
|
## JP-Extra モデル利用時は JP 以外の言語の音声合成はできない
|
||||||
|
class Languages(str, Enum):
|
||||||
|
JP = "JP"
|
||||||
|
EN = "EN"
|
||||||
|
ZH = "ZH"
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
## ユーザー辞書関連のコードについて
|
||||||
|
|
||||||
|
このフォルダに含まれるユーザー辞書関連のコードは、[VOICEVOX ENGINE](https://github.com/VOICEVOX/voicevox_engine) プロジェクトのコードを改変したものを使用しています。
|
||||||
|
VOICEVOX プロジェクトのチームに深く感謝し、その貢献を尊重します。
|
||||||
|
|
||||||
|
### 元のコード
|
||||||
|
|
||||||
|
- [voicevox_engine/user_dict/](https://github.com/VOICEVOX/voicevox_engine/tree/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/user_dict)
|
||||||
|
- [voicevox_engine/model.py](https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/model.py#L207)
|
||||||
|
|
||||||
|
### 改変の詳細
|
||||||
|
|
||||||
|
- ファイル名の書き換えおよびそれに伴う import 文の書き換え。
|
||||||
|
- VOICEVOX 固有の部分をコメントアウト。
|
||||||
|
- mutex を使用している部分をコメントアウト。
|
||||||
|
- 参照している pyopenjtalk の違いによるメソッド名の書き換え。
|
||||||
|
- UserDictWord の mora_count のデフォルト値を None に指定。
|
||||||
|
- `model.py` のうち、必要な Pydantic モデルのみを抽出。
|
||||||
|
|
||||||
|
### ライセンス
|
||||||
|
|
||||||
|
元の VOICEVOX ENGINE のリポジトリのコードは、LGPL v3 と、ソースコードの公開が不要な別ライセンスのデュアルライセンスの下で使用されています。
|
||||||
|
当プロジェクトにおけるこのモジュールも LGPL ライセンスの下にあります。
|
||||||
|
|
||||||
|
詳細については、プロジェクトのルートディレクトリにある [LGPL_LICENSE](/LGPL_LICENSE) ファイルをご参照ください。
|
||||||
|
また、元の VOICEVOX ENGINE プロジェクトのライセンスについては、[こちら](https://github.com/VOICEVOX/voicevox_engine/blob/master/LICENSE) をご覧ください。
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
# このファイルは、VOICEVOXプロジェクトのVOICEVOX engineからお借りしています。
|
"""
|
||||||
# 引用元:
|
このファイルは、VOICEVOX プロジェクトの VOICEVOX ENGINE からお借りしています。
|
||||||
# https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/user_dict/user_dict.py
|
引用元: https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/user_dict/user_dict.py
|
||||||
# ライセンス: LGPL-3.0
|
ライセンス: LGPL-3.0
|
||||||
# 詳しくは、このファイルと同じフォルダにあるREADME.mdを参照してください。
|
詳しくは、このファイルと同じフォルダにある README.md を参照してください。
|
||||||
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
import threading
|
|
||||||
import traceback
|
import traceback
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict, List, Optional
|
from typing import Dict, List, Optional
|
||||||
@@ -15,25 +16,21 @@ import numpy as np
|
|||||||
import pyopenjtalk
|
import pyopenjtalk
|
||||||
from fastapi import HTTPException
|
from fastapi import HTTPException
|
||||||
|
|
||||||
from .word_model import UserDictWord, WordTypes
|
from style_bert_vits2.constants import DEFAULT_USER_DICT_DIR
|
||||||
|
from style_bert_vits2.text_processing.japanese.user_dict.word_model import UserDictWord, WordTypes
|
||||||
# from ..utility.mutex_utility import mutex_wrapper
|
# from ..utility.mutex_utility import mutex_wrapper
|
||||||
# from ..utility.path_utility import engine_root, get_save_dir
|
# from ..utility.path_utility import engine_root, get_save_dir
|
||||||
from .part_of_speech_data import MAX_PRIORITY, MIN_PRIORITY, part_of_speech_data
|
from style_bert_vits2.text_processing.japanese.user_dict.part_of_speech_data import MAX_PRIORITY, MIN_PRIORITY, part_of_speech_data
|
||||||
from common.constants import USER_DICT_DIR
|
|
||||||
|
|
||||||
# root_dir = engine_root()
|
# root_dir = engine_root()
|
||||||
# save_dir = get_save_dir()
|
# save_dir = get_save_dir()
|
||||||
root_dir = Path(USER_DICT_DIR)
|
|
||||||
save_dir = Path(USER_DICT_DIR)
|
|
||||||
|
|
||||||
|
# if not save_dir.is_dir():
|
||||||
|
# save_dir.mkdir(parents=True)
|
||||||
|
|
||||||
if not save_dir.is_dir():
|
default_dict_path = DEFAULT_USER_DICT_DIR / "default.csv" # VOICEVOXデフォルト辞書ファイルのパス
|
||||||
save_dir.mkdir(parents=True)
|
user_dict_path = DEFAULT_USER_DICT_DIR / "user_dict.json" # ユーザー辞書ファイルのパス
|
||||||
|
compiled_dict_path = DEFAULT_USER_DICT_DIR / "user.dic" # コンパイル済み辞書ファイルのパス
|
||||||
default_dict_path = root_dir / "default.csv" # VOICEVOXデフォルト辞書ファイルのパス
|
|
||||||
user_dict_path = save_dir / "user_dict.json" # ユーザー辞書ファイルのパス
|
|
||||||
compiled_dict_path = save_dir / "user.dic" # コンパイル済み辞書ファイルのパス
|
|
||||||
|
|
||||||
|
|
||||||
# # 同時書き込みの制御
|
# # 同時書き込みの制御
|
||||||
@@ -54,7 +51,7 @@ def _write_to_json(user_dict: Dict[str, UserDictWord], user_dict_path: Path) ->
|
|||||||
"""
|
"""
|
||||||
converted_user_dict = {}
|
converted_user_dict = {}
|
||||||
for word_uuid, word in user_dict.items():
|
for word_uuid, word in user_dict.items():
|
||||||
word_dict = word.dict()
|
word_dict = word.model_dump()
|
||||||
word_dict["cost"] = _priority2cost(
|
word_dict["cost"] = _priority2cost(
|
||||||
word_dict["context_id"], word_dict["priority"]
|
word_dict["context_id"], word_dict["priority"]
|
||||||
)
|
)
|
||||||
@@ -1,12 +1,13 @@
|
|||||||
# このファイルは、VOICEVOXプロジェクトのVOICEVOX engineからお借りしています。
|
"""
|
||||||
# 引用元:
|
このファイルは、VOICEVOX プロジェクトの VOICEVOX ENGINE からお借りしています。
|
||||||
# https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/user_dict/part_of_speech_data.py
|
引用元: https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/user_dict/part_of_speech_data.py
|
||||||
# ライセンス: LGPL-3.0
|
ライセンス: LGPL-3.0
|
||||||
# 詳しくは、このファイルと同じフォルダにあるREADME.mdを参照してください。
|
詳しくは、このファイルと同じフォルダにある README.md を参照してください。
|
||||||
|
"""
|
||||||
|
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from .word_model import (
|
from style_bert_vits2.text_processing.japanese.user_dict.word_model import (
|
||||||
USER_DICT_MAX_PRIORITY,
|
USER_DICT_MAX_PRIORITY,
|
||||||
USER_DICT_MIN_PRIORITY,
|
USER_DICT_MIN_PRIORITY,
|
||||||
PartOfSpeechDetail,
|
PartOfSpeechDetail,
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
# このファイルは、VOICEVOXプロジェクトのVOICEVOX engineからお借りしています。
|
"""
|
||||||
# 引用元:
|
このファイルは、VOICEVOX プロジェクトの VOICEVOX ENGINE からお借りしています。
|
||||||
# https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/model.py#L207
|
引用元: https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/model.py#L207
|
||||||
# ライセンス: LGPL-3.0
|
ライセンス: LGPL-3.0
|
||||||
# 詳しくは、このファイルと同じフォルダにあるREADME.mdを参照してください。
|
詳しくは、このファイルと同じフォルダにある README.md を参照してください。
|
||||||
|
"""
|
||||||
|
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from re import findall, fullmatch
|
from re import findall, fullmatch
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
@@ -15,7 +15,7 @@ from text.japanese_mora_list import (
|
|||||||
mora_phonemes_to_mora_kata,
|
mora_phonemes_to_mora_kata,
|
||||||
)
|
)
|
||||||
|
|
||||||
from text.user_dict import update_dict
|
from style_bert_vits2.text_processing.japanese.user_dict import update_dict
|
||||||
|
|
||||||
# 最初にpyopenjtalkの辞書を更新
|
# 最初にpyopenjtalkの辞書を更新
|
||||||
update_dict()
|
update_dict()
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
このフォルダに含まれるユーザー辞書関連のコードは、[VOICEVOX engine](https://github.com/VOICEVOX/voicevox_engine)プロジェクトのコードを改変したものを使用しています。VOICEVOXプロジェクトのチームに深く感謝し、その貢献を尊重します。
|
|
||||||
|
|
||||||
**元のコード**:
|
|
||||||
|
|
||||||
- [voicevox_engine/user_dict/](https://github.com/VOICEVOX/voicevox_engine/tree/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/user_dict)
|
|
||||||
- [voicevox_engine/model.py](https://github.com/VOICEVOX/voicevox_engine/blob/f181411ec69812296989d9cc583826c22eec87ae/voicevox_engine/model.py#L207)
|
|
||||||
|
|
||||||
**改変の詳細**:
|
|
||||||
|
|
||||||
- ファイル名の書き換えおよびそれに伴うimport文の書き換え。
|
|
||||||
- VOICEVOX固有の部分をコメントアウト。
|
|
||||||
- mutexを使用している部分をコメントアウト。
|
|
||||||
- 参照しているpyopenjtalkの違いによるメソッド名の書き換え。
|
|
||||||
- UserDictWordのmora_countのデフォルト値をNoneに指定。
|
|
||||||
- Pydanticのモデルで必要な箇所のみを抽出。
|
|
||||||
|
|
||||||
**ライセンス**:
|
|
||||||
|
|
||||||
元のVOICEVOX engineのリポジトリのコードは、LGPL v3 と、ソースコードの公開が不要な別ライセンスのデュアルライセンスの下で使用されています。当プロジェクトにおけるこのモジュールもLGPLライセンスの下にあります。詳細については、プロジェクトのルートディレクトリにある[LGPL_LICENSE](/LGPL_LICENSE)ファイルをご参照ください。また、元のVOICEVOX engineプロジェクトのライセンスについては、[こちら](https://github.com/VOICEVOX/voicevox_engine/blob/master/LICENSE)をご覧ください。
|
|
||||||
Reference in New Issue
Block a user