From 8ca086628552a3767e74e41a7156601588487e19 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 16 Dec 2023 07:47:03 +0000 Subject: [PATCH 01/12] =?UTF-8?q?Refactor:=20=E3=82=B3=E3=83=B3=E3=83=86?= =?UTF-8?q?=E3=82=AD=E3=82=B9=E3=83=88=20docstring/=E3=82=B3=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88/=E5=9E=8B=E3=83=92=E3=83=B3=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tts_pipeline/full_context_label.py | 156 +++++++++--------- 1 file changed, 82 insertions(+), 74 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 5ca599276..569b17e46 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -1,7 +1,7 @@ import re from dataclasses import dataclass from itertools import chain -from typing import Dict, List, Optional +from typing import Self import pyopenjtalk @@ -14,11 +14,11 @@ class Phoneme: Attributes ---------- - contexts: Dict[str, str] + contexts: dict[str, str] 音素の元 """ - contexts: Dict[str, str] + contexts: dict[str, str] @classmethod def from_label(cls, label: str): @@ -111,13 +111,13 @@ class Mora: Attributes ---------- - consonant : Optional[Phoneme] + consonant : Phoneme | None 子音 vowel : Phoneme 母音 """ - consonant: Optional[Phoneme] + consonant: Phoneme | None vowel: Phoneme def set_context(self, key: str, value: str): @@ -141,7 +141,7 @@ def phonemes(self): 音素群を返す Returns ------- - phonemes : List[Phoneme] + phonemes : list[Phoneme] 母音しかない場合は母音のみ、子音もある場合は子音、母音の順番でPhonemeのリストを返す """ if self.consonant is not None: @@ -155,7 +155,7 @@ def labels(self): ラベル群を返す Returns ------- - labels : List[str] + labels : list[str] Moraに含まれるすべてのラベルを返す """ return [p.label for p in self.phonemes] @@ -168,62 +168,69 @@ class AccentPhrase: 同じアクセントのMoraを複数保持する Attributes ---------- - moras : List[Mora] + moras : list[Mora] 音韻のリスト accent : int アクセント """ - moras: List[Mora] + moras: list[Mora] accent: int is_interrogative: bool @classmethod - def from_phonemes(cls, phonemes: List[Phoneme]): - """ - PhonemeのリストからAccentPhraseクラスを作成する - Parameters - ---------- - phonemes : List[Phoneme] - phonemeのリストを渡す + def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: + """音素系列をコンテキスト値で区切り AccentPhrase インスタンスを生成する""" - Returns - ------- - accent_phrase : AccentPhrase - AccentPhraseクラスを返す - """ - moras: List[Mora] = [] + # NOTE:「音素サブ系列」は単一モーラを構成する音素系列である。音素系列をコンテキスト値で区切り生成される。 + + moras: list[Mora] = [] # 音素サブ行列から生成されたモーラ系列 + mora_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ - mora_phonemes: List[Phoneme] = [] for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): - # workaround for Hihosiba/voicevox_engine#57 - # (py)openjtalk によるアクセント句内のモーラへの附番は 49 番目まで - # 49 番目のモーラについて、続く音素のモーラ番号を単一モーラの特定に使えない + # モーラ抽出を打ち切る(ワークアラウンド、VOICEVOX/voicevox_engine#57) + # (py)openjtalk コンテキスト a2 属性(モーラ番号)の最大値が 49 であるため、49番目以降のモーラでは音素のモーラ番号を区切りに使えない if int(phoneme.contexts["a2"]) == 49: break + # 区切りとなるコンテキスト値が出現するまで音素サブ系列の一員として一時保存する mora_phonemes.append(phoneme) + # 確定した音素サブ系列を処理する + # コンテキスト a2 属性の定義: "position of the current mora identity in the current accent phrase (forward) 1 ~ 49" # noqa: B950 if ( next_phoneme is None or phoneme.contexts["a2"] != next_phoneme.contexts["a2"] ): + # 音素サブ系列長に基づいて子音と母音を得る if len(mora_phonemes) == 1: consonant, vowel = None, mora_phonemes[0] elif len(mora_phonemes) == 2: consonant, vowel = mora_phonemes[0], mora_phonemes[1] else: raise ValueError(mora_phonemes) + # 子音と母音からモーラを生成して保存する mora = Mora(consonant=consonant, vowel=vowel) moras.append(mora) + # 音素サブ行列コンテナを初期化する mora_phonemes = [] + # アクセント位置を決定する + # コンテキスト f2 属性の定義: "accent type in the current accent phrase 1 ~ 49" accent = int(moras[0].vowel.contexts["f2"]) - # workaround for Hihosiba/voicevox_engine#55 - # アクセント位置とするキー f2 の値がアクセント句内のモーラ数を超える場合がある + # f2 の値がアクセント句内のモーラ数を超える場合はクリップ(ワークアラウンド、VOICEVOX/voicevox_engine#55 を参照) accent = accent if accent <= len(moras) else len(moras) + + # 疑問文か否か判定する(末尾モーラ母音のコンテキスト値に基づく) + # コンテキスト f3 属性の定義: "whether the current accent phrase interrogative or not (0: not interrogative, 1: interrogative)" # noqa: B950 is_interrogative = moras[-1].vowel.contexts["f3"] == "1" - return cls(moras=moras, accent=accent, is_interrogative=is_interrogative) + + # AccentPhrase インスタンスを生成する + accent_phrase = cls( + moras=moras, accent=accent, is_interrogative=is_interrogative + ) + + return accent_phrase def set_context(self, key: str, value: str): """ @@ -244,7 +251,7 @@ def phonemes(self): 音素群を返す Returns ------- - phonemes : List[Phoneme] + phonemes : list[Phoneme] AccentPhraseに間接的に含まれる全てのPhonemeを返す """ return list(chain.from_iterable(m.phonemes for m in self.moras)) @@ -255,7 +262,7 @@ def labels(self): ラベル群を返す Returns ------- - labels : List[str] + labels : list[str] AccentPhraseに間接的に含まれる全てのラベルを返す """ return [p.label for p in self.phonemes] @@ -288,41 +295,43 @@ class BreathGroup: アクセントの異なるアクセント句を複数保持する Attributes ---------- - accent_phrases : List[AccentPhrase] + accent_phrases : list[AccentPhrase] アクセント句のリスト """ - accent_phrases: List[AccentPhrase] + accent_phrases: list[AccentPhrase] @classmethod - def from_phonemes(cls, phonemes: List[Phoneme]): - """ - PhonemeのリストからBreathGroupクラスを作成する - Parameters - ---------- - phonemes : List[Phoneme] - phonemeのリストを渡す + def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: + """音素系列をコンテキスト値で区切り BreathGroup インスタンスを生成する""" + + # NOTE:「音素サブ系列」は単一アクセント句を構成する音素系列である。音素系列をコンテキスト値で区切り生成される。 + + accent_phrases: list[AccentPhrase] = [] # 音素サブ行列から生成されたアクセント句系列 + accent_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ - Returns - ------- - breath_group : BreathGroup - BreathGroupクラスを返す - """ - accent_phrases: List[AccentPhrase] = [] - accent_phonemes: List[Phoneme] = [] for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): + # 区切りとなるコンテキスト値が出現するまで音素サブ系列の一員として一時保存する accent_phonemes.append(phoneme) + # 確定した音素サブ系列を処理する + # コンテキスト i3 属性の定義: "position of the current breath group identity by breath group (forward)" # noqa: B950 + # コンテキスト f5 属性の定義: "position of the current accent phrase identity in the current breath group by the accent phrase (forward)" # noqa: B950 if ( next_phoneme is None or phoneme.contexts["i3"] != next_phoneme.contexts["i3"] or phoneme.contexts["f5"] != next_phoneme.contexts["f5"] ): + # 音素サブ系列からアクセント句を生成して保存する accent_phrase = AccentPhrase.from_phonemes(accent_phonemes) accent_phrases.append(accent_phrase) + # 音素サブ行列コンテナを初期化する accent_phonemes = [] - return cls(accent_phrases=accent_phrases) + # BreathGroup インスタンスを生成する + breath_group = cls(accent_phrases=accent_phrases) + + return breath_group def set_context(self, key: str, value: str): """ @@ -343,7 +352,7 @@ def phonemes(self): 音素群を返す Returns ------- - phonemes : List[Phoneme] + phonemes : list[Phoneme] BreathGroupに間接的に含まれる全てのPhonemeを返す """ return list( @@ -358,7 +367,7 @@ def labels(self): ラベル群を返す Returns ------- - labels : List[str] + labels : list[str] BreathGroupに間接的に含まれる全てのラベルを返す """ return [p.label for p in self.phonemes] @@ -371,46 +380,45 @@ class Utterance: 発声の区切りと無音を複数保持する Attributes ---------- - breath_groups : List[BreathGroup] + breath_groups : list[BreathGroup] 発声の区切りのリスト - pauses : List[Phoneme] + pauses : list[Phoneme] 無音のリスト """ - breath_groups: List[BreathGroup] - pauses: List[Phoneme] + breath_groups: list[BreathGroup] + pauses: list[Phoneme] @classmethod - def from_phonemes(cls, phonemes: List[Phoneme]): - """ - Phonemeの完全なリストからUtteranceクラスを作成する - Parameters - ---------- - phonemes : List[Phoneme] - phonemeのリストを渡す + def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: + """音素系列をポーズで区切り Utterance インスタンスを生成する""" - Returns - ------- - utterance : Utterance - Utteranceクラスを返す - """ - pauses: List[Phoneme] = [] + # NOTE:「音素サブ系列」は単一 BreathGroup を構成する音素系列である。音素系列をポーズで区切り生成される。 + + pauses: list[Phoneme] = [] # ポーズ音素のリスト + breath_groups: list[BreathGroup] = [] # 音素サブ行列から生成された BreathGroup のリスト + group_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ - breath_groups: List[BreathGroup] = [] - group_phonemes: List[Phoneme] = [] for phoneme in phonemes: + # ポーズが出現するまで音素サブ系列の一員として一時保存する if not phoneme.is_pause(): group_phonemes.append(phoneme) + # 確定した音素サブ系列を処理する else: + # ポーズ音素を保存する pauses.append(phoneme) - if len(group_phonemes) > 0: + # 音素サブ系列から BreathGroup を生成して保存する breath_group = BreathGroup.from_phonemes(group_phonemes) breath_groups.append(breath_group) + # 音素サブ行列コンテナを初期化する group_phonemes = [] - return cls(breath_groups=breath_groups, pauses=pauses) + # Utterance インスタンスを生成する + utterance = cls(breath_groups=breath_groups, pauses=pauses) + + return utterance def set_context(self, key: str, value: str): """ @@ -431,7 +439,7 @@ def phonemes(self): 音素群を返す Returns ------- - phonemes : List[Phoneme] + phonemes : list[Phoneme] Utteranceクラスに直接的・間接的に含まれる、全てのPhonemeを返す """ accent_phrases = list( @@ -496,7 +504,7 @@ def phonemes(self): ), ) - phonemes: List[Phoneme] = [] + phonemes: list[Phoneme] = [] for i in range(len(self.pauses)): if self.pauses[i] is not None: phonemes += [self.pauses[i]] @@ -512,7 +520,7 @@ def labels(self): ラベル群を返す Returns ------- - labels : List[str] + labels : list[str] Utteranceクラスに直接的・間接的に含まれる全てのラベルを返す """ return [p.label for p in self.phonemes] From 174da2e22793b39d72c69be46281e0e7778f6c61 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:11:22 +0900 Subject: [PATCH 02/12] =?UTF-8?q?contexts=E3=81=AE=EF=BC=91=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E3=81=AE=E3=81=93=E3=81=A8=E3=82=92context=E3=81=A8?= =?UTF-8?q?=E5=91=BC=E3=82=93=E3=81=A7=E3=81=84=E3=82=8B=E3=81=A3=E3=81=BD?= =?UTF-8?q?=E3=81=84=E3=81=AE=E3=81=A7=E5=90=88=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tts_pipeline/full_context_label.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 569b17e46..555a003bf 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -81,11 +81,11 @@ def label(self): @property def phoneme(self): """ - 音素クラスの中で、発声に必要な要素を返す + 音素クラスの中で、発声に必要なcontextを返す Returns ------- phoneme : str - 発声に必要な要素を返す + 発声に必要なcontextを返す """ return self.contexts["p3"] @@ -180,24 +180,24 @@ class AccentPhrase: @classmethod def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: - """音素系列をコンテキスト値で区切り AccentPhrase インスタンスを生成する""" + """音素系列をcontextで区切り AccentPhrase インスタンスを生成する""" - # NOTE:「音素サブ系列」は単一モーラを構成する音素系列である。音素系列をコンテキスト値で区切り生成される。 + # NOTE:「音素サブ系列」は単一モーラを構成する音素系列である。音素系列をcontextで区切り生成される。 moras: list[Mora] = [] # 音素サブ行列から生成されたモーラ系列 mora_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): # モーラ抽出を打ち切る(ワークアラウンド、VOICEVOX/voicevox_engine#57) - # (py)openjtalk コンテキスト a2 属性(モーラ番号)の最大値が 49 であるため、49番目以降のモーラでは音素のモーラ番号を区切りに使えない + # context a2(モーラ番号)の最大値が 49 であるため、49番目以降のモーラでは音素のモーラ番号を区切りに使えない if int(phoneme.contexts["a2"]) == 49: break - # 区切りとなるコンテキスト値が出現するまで音素サブ系列の一員として一時保存する + # 区切りとなるcontextが出現するまで音素サブ系列の一員として一時保存する mora_phonemes.append(phoneme) # 確定した音素サブ系列を処理する - # コンテキスト a2 属性の定義: "position of the current mora identity in the current accent phrase (forward) 1 ~ 49" # noqa: B950 + # context a2 の定義: "position of the current mora identity in the current accent phrase (forward) 1 ~ 49" # noqa: B950 if ( next_phoneme is None or phoneme.contexts["a2"] != next_phoneme.contexts["a2"] @@ -216,13 +216,13 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: mora_phonemes = [] # アクセント位置を決定する - # コンテキスト f2 属性の定義: "accent type in the current accent phrase 1 ~ 49" + # context f2 の定義: "accent type in the current accent phrase 1 ~ 49" accent = int(moras[0].vowel.contexts["f2"]) # f2 の値がアクセント句内のモーラ数を超える場合はクリップ(ワークアラウンド、VOICEVOX/voicevox_engine#55 を参照) accent = accent if accent <= len(moras) else len(moras) - # 疑問文か否か判定する(末尾モーラ母音のコンテキスト値に基づく) - # コンテキスト f3 属性の定義: "whether the current accent phrase interrogative or not (0: not interrogative, 1: interrogative)" # noqa: B950 + # 疑問文か否か判定する(末尾モーラ母音のcontextに基づく) + # context f3 の定義: "whether the current accent phrase interrogative or not (0: not interrogative, 1: interrogative)" # noqa: B950 is_interrogative = moras[-1].vowel.contexts["f3"] == "1" # AccentPhrase インスタンスを生成する @@ -303,20 +303,20 @@ class BreathGroup: @classmethod def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: - """音素系列をコンテキスト値で区切り BreathGroup インスタンスを生成する""" + """音素系列をcontextで区切り BreathGroup インスタンスを生成する""" - # NOTE:「音素サブ系列」は単一アクセント句を構成する音素系列である。音素系列をコンテキスト値で区切り生成される。 + # NOTE:「音素サブ系列」は単一アクセント句を構成する音素系列である。音素系列をcontextで区切り生成される。 accent_phrases: list[AccentPhrase] = [] # 音素サブ行列から生成されたアクセント句系列 accent_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): - # 区切りとなるコンテキスト値が出現するまで音素サブ系列の一員として一時保存する + # 区切りとなるcontextが出現するまで音素サブ系列の一員として一時保存する accent_phonemes.append(phoneme) # 確定した音素サブ系列を処理する - # コンテキスト i3 属性の定義: "position of the current breath group identity by breath group (forward)" # noqa: B950 - # コンテキスト f5 属性の定義: "position of the current accent phrase identity in the current breath group by the accent phrase (forward)" # noqa: B950 + # context i3 の定義: "position of the current breath group identity by breath group (forward)" # noqa: B950 + # context f5 の定義: "position of the current accent phrase identity in the current breath group by the accent phrase (forward)" # noqa: B950 if ( next_phoneme is None or phoneme.contexts["i3"] != next_phoneme.contexts["i3"] From a4cd1bf5006216bcbf7628f0d57b8785d9ceecbc Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:14:31 +0900 Subject: [PATCH 03/12] =?UTF-8?q?=E3=80=8C=E9=9F=B3=E7=B4=A0=E3=82=B5?= =?UTF-8?q?=E3=83=96=E7=B3=BB=E5=88=97=E3=80=8D=E3=81=AE=E3=83=89=E3=83=A1?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E7=94=A8=E8=AA=9E=E3=82=92=E5=85=83=E3=81=AE?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E3=81=AB=E5=B1=95=E9=96=8B=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tts_pipeline/full_context_label.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 555a003bf..f32734628 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -182,10 +182,10 @@ class AccentPhrase: def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: """音素系列をcontextで区切り AccentPhrase インスタンスを生成する""" - # NOTE:「音素サブ系列」は単一モーラを構成する音素系列である。音素系列をcontextで区切り生成される。 + # NOTE:「モーラごとの音素系列」は単一モーラを構成する音素系列である。音素系列をcontextで区切り生成される。 moras: list[Mora] = [] # 音素サブ行列から生成されたモーラ系列 - mora_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ + mora_phonemes: list[Phoneme] = [] # モーラごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): # モーラ抽出を打ち切る(ワークアラウンド、VOICEVOX/voicevox_engine#57) @@ -193,16 +193,16 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: if int(phoneme.contexts["a2"]) == 49: break - # 区切りとなるcontextが出現するまで音素サブ系列の一員として一時保存する + # 区切りとなるcontextが出現するまでモーラごとの音素系列の一員として一時保存する mora_phonemes.append(phoneme) - # 確定した音素サブ系列を処理する + # 確定したモーラごとの音素系列を処理する # context a2 の定義: "position of the current mora identity in the current accent phrase (forward) 1 ~ 49" # noqa: B950 if ( next_phoneme is None or phoneme.contexts["a2"] != next_phoneme.contexts["a2"] ): - # 音素サブ系列長に基づいて子音と母音を得る + # モーラごとの音素系列長に基づいて子音と母音を得る if len(mora_phonemes) == 1: consonant, vowel = None, mora_phonemes[0] elif len(mora_phonemes) == 2: @@ -305,16 +305,16 @@ class BreathGroup: def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: """音素系列をcontextで区切り BreathGroup インスタンスを生成する""" - # NOTE:「音素サブ系列」は単一アクセント句を構成する音素系列である。音素系列をcontextで区切り生成される。 + # NOTE:「アクセント句ごとの音素系列」は単一アクセント句を構成する音素系列である。音素系列をcontextで区切り生成される。 accent_phrases: list[AccentPhrase] = [] # 音素サブ行列から生成されたアクセント句系列 - accent_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ + accent_phonemes: list[Phoneme] = [] # アクセント句ごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): - # 区切りとなるcontextが出現するまで音素サブ系列の一員として一時保存する + # 区切りとなるcontextが出現するまでアクセント句ごとの音素系列の一員として一時保存する accent_phonemes.append(phoneme) - # 確定した音素サブ系列を処理する + # 確定したアクセント句ごとの音素系列を処理する # context i3 の定義: "position of the current breath group identity by breath group (forward)" # noqa: B950 # context f5 の定義: "position of the current accent phrase identity in the current breath group by the accent phrase (forward)" # noqa: B950 if ( @@ -322,7 +322,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: or phoneme.contexts["i3"] != next_phoneme.contexts["i3"] or phoneme.contexts["f5"] != next_phoneme.contexts["f5"] ): - # 音素サブ系列からアクセント句を生成して保存する + # アクセント句ごとの音素系列からアクセント句を生成して保存する accent_phrase = AccentPhrase.from_phonemes(accent_phonemes) accent_phrases.append(accent_phrase) # 音素サブ行列コンテナを初期化する @@ -393,23 +393,23 @@ class Utterance: def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: """音素系列をポーズで区切り Utterance インスタンスを生成する""" - # NOTE:「音素サブ系列」は単一 BreathGroup を構成する音素系列である。音素系列をポーズで区切り生成される。 + # NOTE:「BreathGroupごとの音素系列」は単一 BreathGroup を構成する音素系列である。音素系列をポーズで区切り生成される。 pauses: list[Phoneme] = [] # ポーズ音素のリスト breath_groups: list[BreathGroup] = [] # 音素サブ行列から生成された BreathGroup のリスト - group_phonemes: list[Phoneme] = [] # 音素サブ系列を一時保存するコンテナ + group_phonemes: list[Phoneme] = [] # BreathGroupごとの音素系列を一時保存するコンテナ for phoneme in phonemes: - # ポーズが出現するまで音素サブ系列の一員として一時保存する + # ポーズが出現するまでBreathGroupごとの音素系列の一員として一時保存する if not phoneme.is_pause(): group_phonemes.append(phoneme) - # 確定した音素サブ系列を処理する + # 確定したBreathGroupごとの音素系列を処理する else: # ポーズ音素を保存する pauses.append(phoneme) if len(group_phonemes) > 0: - # 音素サブ系列から BreathGroup を生成して保存する + # BreathGroupごとの音素系列から BreathGroup を生成して保存する breath_group = BreathGroup.from_phonemes(group_phonemes) breath_groups.append(breath_group) # 音素サブ行列コンテナを初期化する From a867aa371ab4746a120e4e665792e4057434a450 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:16:13 +0900 Subject: [PATCH 04/12] =?UTF-8?q?=E9=9F=B3=E7=B4=A0=E3=82=B5=E3=83=96"?= =?UTF-8?q?=E8=A1=8C=E5=88=97"=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E3=82=8B=E3=81=A8=E3=81=93=E3=81=8C=E3=81=84=E3=81=8F=E3=81=A4?= =?UTF-8?q?=E3=81=8B=E3=81=82=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index f32734628..16bafa64f 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -184,7 +184,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # NOTE:「モーラごとの音素系列」は単一モーラを構成する音素系列である。音素系列をcontextで区切り生成される。 - moras: list[Mora] = [] # 音素サブ行列から生成されたモーラ系列 + moras: list[Mora] = [] # モーラごとの音素系列から生成されたモーラ系列 mora_phonemes: list[Phoneme] = [] # モーラごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): @@ -212,7 +212,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # 子音と母音からモーラを生成して保存する mora = Mora(consonant=consonant, vowel=vowel) moras.append(mora) - # 音素サブ行列コンテナを初期化する + # モーラごとの音素系列コンテナを初期化する mora_phonemes = [] # アクセント位置を決定する @@ -307,7 +307,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # NOTE:「アクセント句ごとの音素系列」は単一アクセント句を構成する音素系列である。音素系列をcontextで区切り生成される。 - accent_phrases: list[AccentPhrase] = [] # 音素サブ行列から生成されたアクセント句系列 + accent_phrases: list[AccentPhrase] = [] # アクセント句ごとの音素系列から生成されたアクセント句系列 accent_phonemes: list[Phoneme] = [] # アクセント句ごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): @@ -325,7 +325,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # アクセント句ごとの音素系列からアクセント句を生成して保存する accent_phrase = AccentPhrase.from_phonemes(accent_phonemes) accent_phrases.append(accent_phrase) - # 音素サブ行列コンテナを初期化する + # アクセント句ごとの音素系列コンテナを初期化する accent_phonemes = [] # BreathGroup インスタンスを生成する @@ -396,7 +396,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # NOTE:「BreathGroupごとの音素系列」は単一 BreathGroup を構成する音素系列である。音素系列をポーズで区切り生成される。 pauses: list[Phoneme] = [] # ポーズ音素のリスト - breath_groups: list[BreathGroup] = [] # 音素サブ行列から生成された BreathGroup のリスト + breath_groups: list[BreathGroup] = [] # BreathGroupごとの音素系列から生成された BreathGroup のリスト group_phonemes: list[Phoneme] = [] # BreathGroupごとの音素系列を一時保存するコンテナ for phoneme in phonemes: @@ -412,7 +412,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # BreathGroupごとの音素系列から BreathGroup を生成して保存する breath_group = BreathGroup.from_phonemes(group_phonemes) breath_groups.append(breath_group) - # 音素サブ行列コンテナを初期化する + # BreathGroupごとの音素系列コンテナを初期化する group_phonemes = [] # Utterance インスタンスを生成する From 081434077c81ab26ae8e44758a5997a3c1e9be1f Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:21:47 +0900 Subject: [PATCH 05/12] =?UTF-8?q?=E3=80=8C=E3=80=9C=E3=81=94=E3=81=A8?= =?UTF-8?q?=E3=81=AE=E9=9F=B3=E7=B4=A0=E7=B3=BB=E5=88=97=E3=80=8D=E5=91=A8?= =?UTF-8?q?=E3=82=8A=E3=81=AE=E6=96=87=E3=82=92=E3=81=BE=E3=81=A8=E3=82=81?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 16bafa64f..25c2e1a7a 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -182,9 +182,9 @@ class AccentPhrase: def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: """音素系列をcontextで区切り AccentPhrase インスタンスを生成する""" - # NOTE:「モーラごとの音素系列」は単一モーラを構成する音素系列である。音素系列をcontextで区切り生成される。 + # NOTE:「モーラごとの音素系列」は音素系列をcontextで区切り生成される。 - moras: list[Mora] = [] # モーラごとの音素系列から生成されたモーラ系列 + moras: list[Mora] = [] # モーラ系列 mora_phonemes: list[Phoneme] = [] # モーラごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): @@ -305,9 +305,9 @@ class BreathGroup: def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: """音素系列をcontextで区切り BreathGroup インスタンスを生成する""" - # NOTE:「アクセント句ごとの音素系列」は単一アクセント句を構成する音素系列である。音素系列をcontextで区切り生成される。 + # NOTE:「アクセント句ごとの音素系列」は音素系列をcontextで区切り生成される。 - accent_phrases: list[AccentPhrase] = [] # アクセント句ごとの音素系列から生成されたアクセント句系列 + accent_phrases: list[AccentPhrase] = [] # アクセント句系列 accent_phonemes: list[Phoneme] = [] # アクセント句ごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): @@ -393,10 +393,10 @@ class Utterance: def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: """音素系列をポーズで区切り Utterance インスタンスを生成する""" - # NOTE:「BreathGroupごとの音素系列」は単一 BreathGroup を構成する音素系列である。音素系列をポーズで区切り生成される。 + # NOTE:「BreathGroupごとの音素系列」は音素系列をポーズで区切り生成される。 pauses: list[Phoneme] = [] # ポーズ音素のリスト - breath_groups: list[BreathGroup] = [] # BreathGroupごとの音素系列から生成された BreathGroup のリスト + breath_groups: list[BreathGroup] = [] # BreathGroup のリスト group_phonemes: list[Phoneme] = [] # BreathGroupごとの音素系列を一時保存するコンテナ for phoneme in phonemes: From 7c326a3ff76cf13546553c677625fc0e978debd6 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:22:26 +0900 Subject: [PATCH 06/12] =?UTF-8?q?=E4=B8=80=E5=93=A1=E3=81=AF=E4=BA=BA?= =?UTF-8?q?=E3=81=AB=E5=AF=BE=E3=81=97=E3=81=A6=E3=81=AE=E8=A8=80=E8=91=89?= =?UTF-8?q?=E3=81=AA=E3=81=AE=E3=81=A7=E7=BD=AE=E3=81=8D=E6=8F=9B=E3=81=88?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 25c2e1a7a..bbb01cc97 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -193,7 +193,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: if int(phoneme.contexts["a2"]) == 49: break - # 区切りとなるcontextが出現するまでモーラごとの音素系列の一員として一時保存する + # 区切りとなるcontextが出現するまでモーラごとの音素系列に一時保存する mora_phonemes.append(phoneme) # 確定したモーラごとの音素系列を処理する @@ -311,7 +311,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: accent_phonemes: list[Phoneme] = [] # アクセント句ごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): - # 区切りとなるcontextが出現するまでアクセント句ごとの音素系列の一員として一時保存する + # 区切りとなるcontextが出現するまでアクセント句ごとの音素系列に一時保存する accent_phonemes.append(phoneme) # 確定したアクセント句ごとの音素系列を処理する @@ -400,7 +400,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: group_phonemes: list[Phoneme] = [] # BreathGroupごとの音素系列を一時保存するコンテナ for phoneme in phonemes: - # ポーズが出現するまでBreathGroupごとの音素系列の一員として一時保存する + # ポーズが出現するまでBreathGroupごとの音素系列に一時保存する if not phoneme.is_pause(): group_phonemes.append(phoneme) From bfdf585610bdfc0ae098689e9c455c7e01ecda50 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:24:23 +0900 Subject: [PATCH 07/12] =?UTF-8?q?=E7=A2=BA=E5=AE=9A=E3=81=97=E3=81=A6?= =?UTF-8?q?=E2=86=92=E7=A2=BA=E5=AE=9A=E3=81=95=E3=81=9B=E3=81=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index bbb01cc97..67c429993 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -196,7 +196,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # 区切りとなるcontextが出現するまでモーラごとの音素系列に一時保存する mora_phonemes.append(phoneme) - # 確定したモーラごとの音素系列を処理する + # 一時的な音素系列を確定させて処理する # context a2 の定義: "position of the current mora identity in the current accent phrase (forward) 1 ~ 49" # noqa: B950 if ( next_phoneme is None @@ -314,7 +314,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # 区切りとなるcontextが出現するまでアクセント句ごとの音素系列に一時保存する accent_phonemes.append(phoneme) - # 確定したアクセント句ごとの音素系列を処理する + # 一時的な音素系列を確定させて処理する # context i3 の定義: "position of the current breath group identity by breath group (forward)" # noqa: B950 # context f5 の定義: "position of the current accent phrase identity in the current breath group by the accent phrase (forward)" # noqa: B950 if ( @@ -404,7 +404,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: if not phoneme.is_pause(): group_phonemes.append(phoneme) - # 確定したBreathGroupごとの音素系列を処理する + # 一時的な音素系列を確定させて処理する else: # ポーズ音素を保存する pauses.append(phoneme) From 24c071400852489d8af4b4dfa573ef23a8911955 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:26:20 +0900 Subject: [PATCH 08/12] =?UTF-8?q?=E5=A4=89=E6=95=B0=E5=90=8D=E3=81=8B?= =?UTF-8?q?=E3=82=89=E8=87=AA=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 67c429993..fa60342a4 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -322,7 +322,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: or phoneme.contexts["i3"] != next_phoneme.contexts["i3"] or phoneme.contexts["f5"] != next_phoneme.contexts["f5"] ): - # アクセント句ごとの音素系列からアクセント句を生成して保存する + # アクセント句を生成して保存する accent_phrase = AccentPhrase.from_phonemes(accent_phonemes) accent_phrases.append(accent_phrase) # アクセント句ごとの音素系列コンテナを初期化する @@ -409,7 +409,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # ポーズ音素を保存する pauses.append(phoneme) if len(group_phonemes) > 0: - # BreathGroupごとの音素系列から BreathGroup を生成して保存する + # 音素系列から BreathGroup を生成して保存する breath_group = BreathGroup.from_phonemes(group_phonemes) breath_groups.append(breath_group) # BreathGroupごとの音素系列コンテナを初期化する From 4fbdb3df9418ba868b304c09793ce8da598cf570 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:28:32 +0900 Subject: [PATCH 09/12] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=81=8B?= =?UTF-8?q?=E3=82=89=E8=87=AA=E6=98=8E=E3=80=82=E8=A8=80=E3=81=84=E3=81=9F?= =?UTF-8?q?=E3=81=84=E3=81=93=E3=81=A8=E3=81=AF=E3=80=8C=E6=AC=A1=E3=81=AB?= =?UTF-8?q?=E5=90=91=E3=81=91=E3=81=A6=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88?= =?UTF-8?q?=E3=80=8D=E3=81=AA=E3=81=AF=E3=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index fa60342a4..2608e4e22 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -212,7 +212,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # 子音と母音からモーラを生成して保存する mora = Mora(consonant=consonant, vowel=vowel) moras.append(mora) - # モーラごとの音素系列コンテナを初期化する + # 次に向けてリセット mora_phonemes = [] # アクセント位置を決定する @@ -325,7 +325,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # アクセント句を生成して保存する accent_phrase = AccentPhrase.from_phonemes(accent_phonemes) accent_phrases.append(accent_phrase) - # アクセント句ごとの音素系列コンテナを初期化する + # 次に向けてリセット accent_phonemes = [] # BreathGroup インスタンスを生成する @@ -412,7 +412,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # 音素系列から BreathGroup を生成して保存する breath_group = BreathGroup.from_phonemes(group_phonemes) breath_groups.append(breath_group) - # BreathGroupごとの音素系列コンテナを初期化する + # 次に向けてリセット group_phonemes = [] # Utterance インスタンスを生成する From 95959eb0a77643743ed1c6add89e55585cd9bd65 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:32:19 +0900 Subject: [PATCH 10/12] =?UTF-8?q?=E5=A4=A7=E4=BA=8B=E3=81=AA=E3=81=AE?= =?UTF-8?q?=E3=81=AFcontext=E3=81=AE=E5=87=BA=E7=8F=BE=E3=81=A7=E3=81=AF?= =?UTF-8?q?=E3=81=AA=E3=81=8F=E3=80=81=E5=8C=BA=E5=88=87=E3=82=8A=E3=81=BE?= =?UTF-8?q?=E3=81=A7=E3=81=A8=E3=81=84=E3=81=86=E3=81=93=E3=81=A8=E3=80=82?= =?UTF-8?q?=E3=80=9C=E3=81=94=E3=81=A8=E3=81=AE=E3=81=AF=E3=81=AA=E3=81=8F?= =?UTF-8?q?=E3=81=A6=E3=82=82=E4=BC=9D=E3=82=8F=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 2608e4e22..95900e544 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -193,7 +193,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: if int(phoneme.contexts["a2"]) == 49: break - # 区切りとなるcontextが出現するまでモーラごとの音素系列に一時保存する + # 区切りまで音素系列を一時保存する mora_phonemes.append(phoneme) # 一時的な音素系列を確定させて処理する @@ -311,7 +311,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: accent_phonemes: list[Phoneme] = [] # アクセント句ごとの音素系列を一時保存するコンテナ for phoneme, next_phoneme in zip(phonemes, phonemes[1:] + [None]): - # 区切りとなるcontextが出現するまでアクセント句ごとの音素系列に一時保存する + # 区切りまで音素系列を一時保存する accent_phonemes.append(phoneme) # 一時的な音素系列を確定させて処理する @@ -400,7 +400,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: group_phonemes: list[Phoneme] = [] # BreathGroupごとの音素系列を一時保存するコンテナ for phoneme in phonemes: - # ポーズが出現するまでBreathGroupごとの音素系列に一時保存する + # ポーズが出現するまで音素系列を一時保存する if not phoneme.is_pause(): group_phonemes.append(phoneme) From 139b6082fd209dbaf52554a196a0cad588aeb392 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:44:04 +0900 Subject: [PATCH 11/12] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AE?= =?UTF-8?q?=E7=90=86=E8=A7=A3=E3=82=92=E5=8A=A9=E3=81=91=E3=82=84=E3=81=99?= =?UTF-8?q?=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E7=AB=AF=E7=9A=84=E3=81=AB?= =?UTF-8?q?=E8=AA=AC=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 95900e544..98487454c 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -197,7 +197,7 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: mora_phonemes.append(phoneme) # 一時的な音素系列を確定させて処理する - # context a2 の定義: "position of the current mora identity in the current accent phrase (forward) 1 ~ 49" # noqa: B950 + # a2はアクセント句内でのモーラ番号(1~49) if ( next_phoneme is None or phoneme.contexts["a2"] != next_phoneme.contexts["a2"] @@ -216,13 +216,13 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: mora_phonemes = [] # アクセント位置を決定する - # context f2 の定義: "accent type in the current accent phrase 1 ~ 49" + # f2はアクセント句のアクセント位置(1~49) accent = int(moras[0].vowel.contexts["f2"]) # f2 の値がアクセント句内のモーラ数を超える場合はクリップ(ワークアラウンド、VOICEVOX/voicevox_engine#55 を参照) accent = accent if accent <= len(moras) else len(moras) # 疑問文か否か判定する(末尾モーラ母音のcontextに基づく) - # context f3 の定義: "whether the current accent phrase interrogative or not (0: not interrogative, 1: interrogative)" # noqa: B950 + # f3はアクセント句が疑問文かどうか(1で疑問文) is_interrogative = moras[-1].vowel.contexts["f3"] == "1" # AccentPhrase インスタンスを生成する @@ -315,8 +315,8 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: accent_phonemes.append(phoneme) # 一時的な音素系列を確定させて処理する - # context i3 の定義: "position of the current breath group identity by breath group (forward)" # noqa: B950 - # context f5 の定義: "position of the current accent phrase identity in the current breath group by the accent phrase (forward)" # noqa: B950 + # i3はBreathGroupの番号 + # f5はBreathGroup内でのアクセント句の番号 if ( next_phoneme is None or phoneme.contexts["i3"] != next_phoneme.contexts["i3"] From 10076902339631f6ad3fc53980428fa0052a8646 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Sat, 16 Dec 2023 20:46:41 +0900 Subject: [PATCH 12/12] =?UTF-8?q?=E5=91=A8=E3=82=8A=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=81=A6=E3=82=A2=E3=83=AB=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=83=99=E3=83=83=E3=83=88=E5=89=8D=E5=BE=8C=E3=81=AE=E3=82=B9?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B9=E3=82=92=E3=81=AA=E3=81=8F=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/tts_pipeline/full_context_label.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/voicevox_engine/tts_pipeline/full_context_label.py b/voicevox_engine/tts_pipeline/full_context_label.py index 98487454c..1e61a17b0 100644 --- a/voicevox_engine/tts_pipeline/full_context_label.py +++ b/voicevox_engine/tts_pipeline/full_context_label.py @@ -180,7 +180,7 @@ class AccentPhrase: @classmethod def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: - """音素系列をcontextで区切り AccentPhrase インスタンスを生成する""" + """音素系列をcontextで区切りAccentPhraseインスタンスを生成する""" # NOTE:「モーラごとの音素系列」は音素系列をcontextで区切り生成される。 @@ -303,7 +303,7 @@ class BreathGroup: @classmethod def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: - """音素系列をcontextで区切り BreathGroup インスタンスを生成する""" + """音素系列をcontextで区切りBreathGroupインスタンスを生成する""" # NOTE:「アクセント句ごとの音素系列」は音素系列をcontextで区切り生成される。 @@ -391,7 +391,7 @@ class Utterance: @classmethod def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: - """音素系列をポーズで区切り Utterance インスタンスを生成する""" + """音素系列をポーズで区切りUtteranceインスタンスを生成する""" # NOTE:「BreathGroupごとの音素系列」は音素系列をポーズで区切り生成される。 @@ -409,13 +409,13 @@ def from_phonemes(cls, phonemes: list[Phoneme]) -> Self: # ポーズ音素を保存する pauses.append(phoneme) if len(group_phonemes) > 0: - # 音素系列から BreathGroup を生成して保存する + # 音素系列からBreathGroupを生成して保存する breath_group = BreathGroup.from_phonemes(group_phonemes) breath_groups.append(breath_group) # 次に向けてリセット group_phonemes = [] - # Utterance インスタンスを生成する + # Utteranceインスタンスを生成する utterance = cls(breath_groups=breath_groups, pauses=pauses) return utterance