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

feat: 自動調整によって擬似的に疑問文に対応する #229

Merged
merged 27 commits into from
Dec 19, 2021

Conversation

qwerty2501
Copy link
Contributor

内容

疑問文を疑問文ぽく聞こえるように音素を調整する

関連 Issue

refs #222

@coveralls
Copy link

coveralls commented Dec 10, 2021

Pull Request Test Coverage Report for Build 1597983395

  • 28 of 29 (96.55%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+1.5%) to 86.41%

Changes Missing Coverage Covered Lines Changed/Added Lines %
voicevox_engine/synthesis_engine/synthesis_engine_base.py 25 26 96.15%
Totals Coverage Status
Change from base Build 1573124271: 1.5%
Covered Lines: 674
Relevant Lines: 780

💛 - Coveralls

@github-actions
Copy link

github-actions bot commented Dec 10, 2021

Coverage Result

Resultを開く
Name Stmts Miss Cover
voicevox_engine/init.py 0 0 coverage-100%
voicevox_engine/acoustic_feature_extractor.py 85 0 coverage-100%
voicevox_engine/dev/synthesis_engine/init.py 2 0 coverage-100%
voicevox_engine/dev/synthesis_engine/mock.py 30 1 coverage-97%
voicevox_engine/full_context_label.py 162 3 coverage-98%
voicevox_engine/kana_parser.py 75 1 coverage-99%
voicevox_engine/model.py 70 7 coverage-90%
voicevox_engine/mora_list.py 4 0 coverage-100%
voicevox_engine/preset/Preset.py 12 0 coverage-100%
voicevox_engine/preset/PresetLoader.py 34 1 coverage-97%
voicevox_engine/preset/init.py 3 0 coverage-100%
voicevox_engine/synthesis_engine/init.py 5 0 coverage-100%
voicevox_engine/synthesis_engine/forwarder.py 76 66 coverage-13%
voicevox_engine/synthesis_engine/make_synthesis_engine.py 23 18 coverage-22%
voicevox_engine/synthesis_engine/synthesis_engine.py 108 0 coverage-100%
voicevox_engine/synthesis_engine/synthesis_engine_base.py 54 6 coverage-89%
voicevox_engine/utility/init.py 2 0 coverage-100%
voicevox_engine/utility/connect_base64_waves.py 35 3 coverage-91%
TOTAL 780 106 coverage-86%

@qwerty2501
Copy link
Contributor Author

qwerty2501 commented Dec 11, 2021

ラベルのメンテで説明がないと100%積むのでソースコード中のコメントで #222 (comment) に書いてある以下の説明があると良いと思いました

フルコンテキストラベルの仕様は、
http://hts.sp.nitech.ac.jp/?Download の HTS-2.3のJapanese tar.bz2 (126 MB)をダウンロードして、data/lab_format.pdfを見るとリストが見つかります。

Copy link
Contributor Author

@qwerty2501 qwerty2501 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

単体テストコードはどこに書けばよいですか?

@qwerty2501
Copy link
Contributor Author

CIでエラー出てるようなので修正します

@Hiroshiba
Copy link
Member

Hiroshiba commented Dec 11, 2021

単体テストコードはどこに書けばよいですか?

test/test_synthesis_engine.py辺りに書いて頂ければ!

ジャストアイデアですが、「ん」や「っ」で終わる疑問文でエラーが出ないかテストしておくと良いかもと感じました。

@qwerty2501
Copy link
Contributor Author

とりあえず1ケースだけ思いのままに書いて追加してみましたがこんな感じでいいですかね?
ん?っ? あと す? も追加する予定です

@qwerty2501 qwerty2501 marked this pull request as ready for review December 12, 2021 07:13
Copy link
Contributor Author

@qwerty2501 qwerty2501 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Draft外しました。気になるところにはすでに自分でコメント打ってますが、問題なさそうならResolveしちゃってください

@Hiroshiba
Copy link
Member

実際に出力してみましたが、ぎこちなさはあるものの疑問文に聞こえなくはないかなといった感じでした
何パターンか文章用意してパラメータをいじったりしてみたのですがどうも最初に設定した値が最適に感じる病気になってるような気がしてなりません。

色んなパターンを作ってみんなで聴き比べられると、納得の行く答えにたどり着けるかも・・・?

qwerty2501 added a commit to qwerty2501/voicevox_engine that referenced this pull request Dec 12, 2021
deep copyのほうがよりコードのimmutabilityを主張するのに適してるようなので変更
VOICEVOX#229 (comment)
@qwerty2501
Copy link
Contributor Author

とりあえず3パターン分作ってみました
https://drive.google.com/drive/folders/1H77oxsevONEWZ81hqRFsWTFWHbpAfHpT?usp=sharing

@Hiroshiba
Copy link
Member

機能実装に関してコードを眺めていて、課題が2つ思いついたので共有します。
こちらのプルリクで対応できそうであればして頂けると嬉しいですが、難しそうならissue化したいと思います。

  • 疑問文で擬似的に自動調整する機能をON/OFFできるようにする
    • UI側から操作できると良さそう、APIの引数にON/OFFフラグをデフォルトONで持たせる?
  • aquestalk記法(parse_kana関数)の疑問文対応
    • ?を付けられるようにしたりする

@qwerty2501
Copy link
Contributor Author

疑問文で擬似的に自動調整する機能をON/OFFできるようにする

これはこのPRでやったほうがよさそうですね

aquestalk記法(parse_kana関数)の疑問文対応

全く新しいところの修正なのでissue分けたほうが良いと思います

@qwerty2501 qwerty2501 force-pushed the feature/question branch 2 times, most recently from 54fce89 to 894bd1e Compare December 13, 2021 11:00
@qwerty2501
Copy link
Contributor Author

qwerty2501 commented Dec 13, 2021

Fixed

  • audio_queryのパラメタに疑問系を有効化するものを追加
  • vowel_length,pitch調整が疑問系以外にも有効になっていたので修正

実装にバグがあったため音声ファイルも上げ直してます

run.py Outdated
Comment on lines 86 to 90
accent_phrases = engine.create_accent_phrases(
text, speaker_id=speaker, enable_interrogative=enable_interrogative
)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

API、良いと思います!
run.py内にcreate_accent_phrasesがいくつかあって、それらのAPIにもenable_interrogative: bool = Trueをつけると一貫性があるかなと思います!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

とりあえずrun.pyにあるもので create_accent_phrases を呼び出してると思われるところにつけました

@Hiroshiba
Copy link
Member

aquestalk記法(parse_kana関数)の疑問文対応
全く新しいところの修正なのでissue分けたほうが良いと思います

良いと思います!!
issue化お願いできると助かります・・・!

@qwerty2501
Copy link
Contributor Author

#235 に作りました

Copy link
Member

@aoirint aoirint left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

実装は良さそうでした!
気になったところにコメントしてみました!

test/test_synthesis_engine.py Outdated Show resolved Hide resolved
)
self.assertEqual(expected, actual)

def test_create_accent_phrases_これはありますか(self):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

日本語関数名になっているのが気になりました。
まあ日本語処理のテストで、外部から使うこともないのでいいかなとも思うのですが、consonant+vowelの形でASCIIにするのはどうでしょう?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これは迷ったんですが、関数名がテストケース名になるようなのでわかりやすさを重視した感じですね
私個人はどちらでもよかったんですが、テスト観点のデータが日本語でコメント等も日本語で運用されており、ほぼ完全に日本語コミュニティなのでまあケース名も日本語にしておくかぐらいの気持ちでした。
このままにするにしてもコメントで上記理由ぐらいは書いておこうと思います

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テストはそのコードが意図通りに上手く行っているかを検査するのが目的だと思うので、そのコードの意図を正確に伝えられるのであれば日本語を使うのもありかなと感じました。
ただこの場合は、テストの意図(「create_accent_phrasesをテストしたい」という意図)の情報量が増えないので、そもそも例文(「これはありますか」)を含めなくても良い気がしました。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO: それは一つのテスト関数で複数のデータケースを確認してしまうという意味だと思いますが、pytestだと関数名=ケース名となってるようなので、テストでエラーになったときにどのケースでエラーが起きたかわかるようにする必要があると思いました。また、実行確認の際にもpytestだと個別で実行するには関数単位でしか分けられない?ようなのでこのテストケースだけ確認したいというときにちょっと困ったことになりそうです。もし上手くやれる方法があるなら教えていただけますでしょうか?

以上を踏まえて、 test_create_accent_phrases にテスト関数名を変更しますか?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

たしかにログに出ないとわかりにくいかもです。
pytestのfixtureとparametrizeを使うと、入力データをログに出すことができるので、これを用いるのが最高かもです。
https://dev.classmethod.jp/articles/pytest-parametrize-fixture/
(pytestのparametrizeは結構癖があるので、正直なかなかしんどいと思います・・・)

実行が重いテストは個別に実行したくなりそうですが、このテストは軽いのでまとめて実行しても良いかなと感じました。

以上を踏まえて、 test_create_accent_phrases にテスト関数名を変更しますか?

誰も強い意見を持っていない状態だと思うので、一旦どちらでも良いかなと感じました。
確認したところ、他のテストはデータ例をテスト名に含めていなそうので、とりあえず合わせるために消す、というのはどうでしょう。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

私はテストを汎用的にする(特定の関数などに対するテストを全てひとつのテスト関数に集約する)ことを念頭に今までテストの実装をしていたので、どちらかと言うと関数名にこれはありますかを入れるのは消極的です。

合わせるという意味もありますが、テストをより汎用的にするという意味でもtest_create_accent_phrasesでとどめておくと、後々のためにも良いのかなと思いました。

どちらにせよ、テストが落ちた時にはどこで落ちたか(どの行を実行中に失敗したか)を見るので、個人的には具体的なテストケース名を入れなくて良いかなと思っているのもひとつあります。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Hiroshiba @y-chan はい。一旦合わせる感じでまとめちゃいますね。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

既存と同じ感じにしてみました。assertEqualでメッセージ出せるようだったのでそこに申し訳程度にどのケースだったかわかるようにメッセージを出すようにしてます。
@Hiroshiba parametrizeを使うことも検討しましたが、expectedであるAccentPhraseの出力がカオスになりそうな気がしたので一旦見送りました。まあこの手のケース取り扱うライブラリはないかしら癖があるので挙動確認してみて使い物になりそうだったら導入を検討してみてもいいかもしれませんね。

Comment on lines 18 to 20
is_interrogative: bool = Field(
title="疑問の発音を表現するモーラかの判定", default=False
) # frontが動作しなくなるためdefault値を設定するようにしている # noqa
Copy link
Member

@aoirint aoirint Dec 14, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

対応の必要があれば、いったんマージしてしまってからでいいと思いますが、一応書いておきます。

Fieldにデフォルト値を設定すると、フロントエンド側でOptional(おそらくtype | undefined)なフィールドになるようです。
Optionalを外すのに、デフォルト値をフロントエンド側のいろんなところに書くことになるとつらいので、 #13 がマージされたのだと思っています。

また、 #43 でAPIの互換性維持の方針として 、

バージョンが上がっても、/audio_queryで返ってくる値をそのまま/synthesisに POST すれば音声合成できるようにする予定です

ということなので、AudioQuery内部の互換性については、それぞれのケースに任されていると思っています。
(つまり、サードパーティがAudioQueryを保存して、あとで再利用するような機能を持っている場合に、その互換性については必ずしもサポートしなくていい、というつもりでいい)

ここでAudioQueryの互換性を切るか、切らないかという判断がありそうです。

影響するのは、フロントエンド側でis_interrogativeなモーラであることをUIに反映する場合でしょうか。

わたしはフロントエンド側のAPIを使うコードを書いていないので、判断が難しいです。
個人的には、 いったん互換性を重視して、デフォルト値を設定する形でマージしてしまっていいかなと思いました。

互換を切る(デフォルト値を設定しない)場合、新しいPreviewビルドを作る形かなと思いました。

@Hiroshiba どうでしょう?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

デフォルト値ありで良いと思います!
というのも今回のis_interrogativeは、エディタ側からは設定画面やPOST処理だけに使用するので、オプショナルでもそこまで大変じゃなさそうなためです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aoirint

影響するのは、フロントエンド側でis_interrogativeなモーラであることをUIに反映する場合でしょうか。

現状使用する予定はないので、使用する時に対応すればよいと思います。
default値を設定した理由としてはフロント側の負荷軽減が目的です。これを設定することにより、フロント側ではなにも修正しなくてよいはずです。
将来的には is_interrogative が trueだったら エディタ画面のMora表示のところに ? を出すといったことはしても良いかもしれませんね。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

あ、ほんとだ、たしかに現状使用予定が無いですね…
そして将来的に使うかも微妙かもです。
APIは消去より追加のがだいぶ簡単なので、いったん無しにした方が良いかなと感じました!

Copy link
Contributor Author

@qwerty2501 qwerty2501 Dec 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APIは消去より追加のがだいぶ簡単なので、いったん無しにした方が良いかなと感じました!

ちょっと気になったのですが、ここのフィールド宣言を消してしまうと内部処理で使えなくなるのではないですか?
Pythonは動的型付け言語だからいけるんですかね。
無しにしたほうが良いとは何をさしてるのかちょっとわかりませんでした

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こんな感じです。

new_accent_phrases = []
for accent_phrase in accent_phrases:
  if accent_phrase.is_interrogative:
    accent_phrase = adjust_interrogative(accent_phrase)
  new_accent_phrases.append(accent_phrase)

Copy link
Contributor Author

@qwerty2501 qwerty2501 Dec 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そのコードだと、accent_phraseis_interrogative を持っていることを期待しているようですが、 adjust_interrogative は SynthesizeEngineによるmora dataの変更適用後の情報である必要があるためここの accent_phrasemodel.py にある AccentPhrase である必要があると思います。 

つまり、この実装を行ってもAPI定義の変更が必要になるかと。

以下のコメントから余計なAPI定義の変更は行わないという文脈だと思ってたので、この実装を行っても根本的な問題解決にはならないのではないかと考えていたんですが違ってましたか?

あ、ほんとだ、たしかに現状使用予定が無いですね…
そして将来的に使うかも微妙かもです。
APIは消去より追加のがだいぶ簡単なので、いったん無しにした方が良いかなと感じました!

Copy link
Member

@Hiroshiba Hiroshiba Dec 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません、ちょっと意図をコードに落とし込めていませんでした・・・
is_interrogativeAccentPhrasemodelに持たせるのではなく、何らかの方法で別でis_interrogativeを持っておくという感じです。
こんな感じになりそうです。

new_accent_phrases = []
for accent_phrase, is_interrogative in zip(accent_phrases, is_interrogative_list):
  if is_interrogative:
    accent_phrase = adjust_interrogative(accent_phrase)
  new_accent_phrases.append(accent_phrase)

Copy link
Contributor Author

@qwerty2501 qwerty2501 Dec 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

それだとSynthesisEngineBaseのコードが複雑化しそうですが、そのへんは許容していただけるということでいいですかね

実際にコード見てみた感じAccentPhraseに疑問系のブール値もたせるならそうでもないかなと感じたので大丈夫そうです

Copy link
Contributor Author

@qwerty2501 qwerty2501 Dec 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Hiroshiba サンプルとは違いbool値のlistではなくfull_context_labelのAccentPhraseのListで実装してみました。特段boolのみする必要がなくこっちのほうが楽だったため
やりたいこととしてはやれてると思うので問題ないと思います。

voicevox_engine/synthesis_engine/synthesis_engine_base.py Outdated Show resolved Hide resolved
run.py Outdated Show resolved Hide resolved
voicevox_engine/synthesis_engine/synthesis_engine_base.py Outdated Show resolved Hide resolved
voicevox_engine/synthesis_engine/synthesis_engine_base.py Outdated Show resolved Hide resolved
Copy link
Member

@takana-v takana-v left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コードを読んだ限り、既にある指摘以外に問題点は無いと思います。
(個人的には、場合によってはAudioQuery内部の互換性は切っても構わないと思っています)

voicevox_engine/synthesis_engine/synthesis_engine_base.py Outdated Show resolved Hide resolved
Comment on lines 18 to 20
is_interrogative: bool = Field(
title="疑問の発音を表現するモーラかの判定", default=False
) # frontが動作しなくなるためdefault値を設定するようにしている # noqa
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

無しにしたほうが良いというのは、宣言を消し、代入もしないという意図でした。

ここのフィールド宣言を消してしまうと内部処理で使えなくなるのではないですか?

adjust_interrogative_moraは全てのmoras(accent phrase?)で呼ばれていて、内部でis_interrogativeを見ている関係で、内部処理に使われているんだと思います。
これを疑問文のところにだけadjust_interrogative_moraを呼ぶようにするというのはどうでしょう。

)
self.assertEqual(expected, actual)

def test_create_accent_phrases_これはありますか(self):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テストはそのコードが意図通りに上手く行っているかを検査するのが目的だと思うので、そのコードの意図を正確に伝えられるのであれば日本語を使うのもありかなと感じました。
ただこの場合は、テストの意図(「create_accent_phrasesをテストしたい」という意図)の情報量が増えないので、そもそも例文(「これはありますか」)を含めなくても良い気がしました。

Comment on lines 102 to 111
def is_interrogative(self) -> bool:
"""
音素が質問(interrogative)であるかを返す
Returns
-------
is_interrogative: bool
音素が質問(interrogative)であるか(True)否か(False)
"""
return self.contexts["f3"] == "1"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

議論していて気づいたのですが、OpenJTalkは疑問文かどうかをphoneme単位ではなくaccent phrase単位で処理しているようなので、PhonemeクラスではなくAccentPhraseクラスに情報を持たせるのが良いのかなと感じました。
(情報の範囲がわかりやすくなって、処理がきれいになりそうだなと感じています)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そうですね。実装してて AccentPhrase単位でつけられてそうな節はあったのですが、どうも確証がもてなかったのでphonemeそのままで判定してる感じですね。

決め打ちでAccentPhraseに持たせて良いかもしれませんが、 #229 (comment) をさきに終わらせてからのほうが良さそうです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AccentPhraseに is_interrogative をもたせました

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

音素にis_interrogative(疑問文である)フラグがあるのは混乱に繋がりそうなので消しちゃっても良いかもです。
AccentPhraseでis_interrogative = moras[-1].vowel.is_interrogative()としているところで直接moras[-1].vowel.contexts["f3"] == "1"しちゃうとか。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moraから削除しました

@qwerty2501
Copy link
Contributor Author

@y-chan 書き直すこと自体は問題はないのですが、その書き方だと以下の問題点があるのでやめたほうが良いと感じました。

  • テストデータが前のケースのデータに依存してしまうので間にケースを新しく追加してしまうと後続のテストケースに影響がでる

    • メンテナーが変わるとこのことに気づきにくい
  • テストデータに問題があって修正したときに後続のテストケースに影響を与えてしまう

    • これもメンテナーが変わると気づきにくい
  • テストエラーが出て該当のケースを見に行ったときにそのケースで何のテストデータが設定されているかひと目でわかりにくい

    • やはりこれもメンテナーが変わると戸惑ってしまう

そちらの方針ということであれば直しますがIMOとしてはこんな感じですね

@Hiroshiba
Copy link
Member

Hiroshiba commented Dec 16, 2021

@y-chan さんと @qwerty2501 さんのテストケースですが、ベースを作って変更箇所を代入する方法だと、疑問文にする前と後でどこが差分になっているか(テストの意図)がわかりやすいという利点もある気がしました。

テストデータが前のケースのデータに依存してしまうので間にケースを新しく追加してしまうと後続のテストケースに影響がでる
テストデータに問題があって修正したときに後続のテストケースに影響を与えてしまう

テストケースが変わるのは厄介なのはそのとおりなので、deepcopyしたほうが安心だと思います。

テストエラーが出て該当のケースを見に行ったときにそのケースで何のテストデータが設定されているかひと目でわかりにくい

diffがわかる定義がわかるの対立構造になっていて、一長一短かなぁと思いました。定義とdiffを近くに書けると最高かもです。

総合的に見ると、文量が減るので @y-chan さんの案が良いのかなと思いました。

@qwerty2501
Copy link
Contributor Author

テストケースが変わるのは厄介なのはそのとおりなので、deepcopyしたほうが安心だと思います。

deepcopyだとテストケース作る人間が忘れずに明示的にする必要があるので、local関数でベースとなるデータを生成するようにしたほうがいいかもしれません
こんな感じです

def test_create_accent_phrases(self)
    def koreha_arimasuka_base_expected():
         return  [AccentPhrase(...),...]

    expected=koreha_arimasuka_base_expected()
    expected.  # ここで各ケースごとの変更を行う
    self.create_accent_phrases_test_base(
         text="これはありますか?".
         expected=expected,
         enable_interrogative=True,
    )

@qwerty2501
Copy link
Contributor Author

@Hiroshiba @y-chan test_create_accent_phrasesをコメントで書いた感じに書き直してみました

@qwerty2501 qwerty2501 mentioned this pull request Dec 16, 2021
@Hiroshiba
Copy link
Member

個人的に気になったところと、API・modelの構成は問題なさそうに感じました!
そこに変更が加わりそうだったらまた聞いて頂けると・・・!

Copy link
Member

@aoirint aoirint left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修正ありがとうございます!

消し忘れていそうなところがあったので、確認のためのRequest changesですが、良さそうでした!

voicevox_engine/synthesis_engine/synthesis_engine_base.py Outdated Show resolved Hide resolved
test/test_synthesis_engine_base.py Outdated Show resolved Hide resolved
qwerty2501 and others added 2 commits December 18, 2021 14:43
このテストケースではSynthesisEngineを使用する必要がないため
Copy link
Member

@aoirint aoirint left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

enable_interrogative引数が不要だったので削除
@qwerty2501
Copy link
Contributor Author

Moraからis_interrogative削除した影響で、使っていない引数が発生したので消しました

eb1803d

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

良さそうです!!

良い実装だと思うのですが、さすがに少し案内がないと目的や何が起こるかがわからないかもと感じました。
最後にドキュメントを少しだけ書いて頂けると助かります!!

run.py Outdated Show resolved Hide resolved
Copy link
Member

@takana-v takana-v left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!
変更が完了したら、コメントかレビューの再リクエストを頂けると助かります。
(右サイドバーのReviewersのところからできます)

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!!!
長く熱い議論本当にありがとうございました!!

エディタ側にこちらのプルリクに対応するissueを作ってみました。

もしよかったらこちらの機能の実装にチャレンジするというのはどうでしょう👀

またのプルリクエスト、ぜひお待ちしています!!

@Hiroshiba Hiroshiba merged commit 0701bf8 into VOICEVOX:master Dec 19, 2021
@qwerty2501 qwerty2501 deleted the feature/question branch December 19, 2021 10:04
@qwerty2501
Copy link
Contributor Author

お疲れ様でした。
Conversation100超えたときはなかなか感慨深かったです(笑)
フロントはかなり苦手なのですがやるだけやってみます

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

Successfully merging this pull request may close these issues.

6 participants