Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor: OpenJTalkドメインの隔離 #881

Closed
3 tasks done
tarepan opened this issue Dec 16, 2023 · 2 comments · Fixed by #926
Closed
3 tasks done

Refactor: OpenJTalkドメインの隔離 #881

tarepan opened this issue Dec 16, 2023 · 2 comments · Fixed by #926

Comments

@tarepan
Copy link
Contributor

tarepan commented Dec 16, 2023

内容

要望: OpenJTalk ドメインをモジュールに隔離してリファクタリング

現在の VOICEVOX ENGINE は日本語テキストからアクセント句系列を生成するために OpenJTalk を利用する。
この OpenJTalk は OpenJTalk 特有の Linguistic / Phonetic 表現を有する。
そのため model.py モジュールで定義される VOICEVOX ENGINE ドメインのクラスとは異なる、OpenJTalk ドメインのクラスが定義されている(例: Utterance)。

異なるドメイン同士はモジュールを隔離し、その間をアダプターで結合すると機能的凝集を達成できる。
しかし現在の vocevox_engine は OpenJTalk ドメインのクラスが tts_engine_base.py へ漏れ出している。

accent_phrases=[
AccentPhrase(
moras=full_context_label_moras_to_moras(accent_phrase.moras),
accent=accent_phrase.accent,

また漏れ出している状況下で同名クラスが両ドメインに定義されている(例: full_context_label.Moramodel.Mora

class Mora(BaseModel):

ゆえに都度ドメインを意識・確認する必要があり、メンテ性に改善の余地がある。

このような背景から、OpenJTalk ドメインをモジュールに隔離してリファクタリングすることを提案します。

Pros 良くなる点

  • ドメイン隔離による認知負荷の軽減・メンテ性向上
  • 機能的凝集による見通しの改善

Cons 悪くなる点

  • 無し

実現方法

コードの移動と改名を伴うため、複数ステップ/PR を経て実現する。

  • step1: SynthesisEngineBase.create_accent_phrases() 内のドメインアダプターを関数化・テスト追加
  • step2: 新関数・extract_full_context_label()呼び出し・関連 utilities の full_context_label.py 移植
  • step3: OpenJTalk ドメインクラス名の変更(prefix 付与)

VOICEVOXのバージョン

0.14.10

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux
@github-actions github-actions bot added OS 依存:linux Linux に依存した現象 OS 依存:mac macOS に依存した現象 OS 依存:win Windows に依存した現象 labels Dec 16, 2023
@Hiroshiba
Copy link
Member

良さそうに感じました!!

なんとなくですが、OpenJTalk側のMoraとかはLabelをつけてMoraLabelにする手もあるかもと思いました。
PhonemeはPhonemeLabelではなくLabelでも良さそう感もあります。ちょっと自信ないですが。。
(こうしてほしいというより、こういう考え方もあるかも、くらいの温度感です!)

@tarepan
Copy link
Contributor Author

tarepan commented Dec 17, 2023

上記 suggest ref #880

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants