-
Notifications
You must be signed in to change notification settings - Fork 196
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
スタイルID(style_id)のことを話者ID(speaker_id)としているコードを全部置き換える #741
Conversation
あ! |
例えば以下の内容を
に変更するということでしょうか? |
あ、ちょっと惜しいです!
こんな感じを想像しています(一部省略してます) def synthesis(
speaker_id: Optional[int],
style_id: Optional[int],
):
if "speaker_idとstyle_idが両方存在しない" or "speaker_idとstyle_idが両方存在しちゃう":
error
if speaker_id is not None:
warning.warn("style_idに変わったのでそちらを使ってください的な文面")
style_id = speaker_id
speaker_id = None 非推奨パラメータにしてあげると更に良いかもです。 |
(test_mock_synthesis_engine.py)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
コメントにも書いたのですが、speaker_idではなくspeakerになっている箇所がかなりあることに気づきました 🙇
あと、互換性を持たせるべき箇所はWebAPIの箇所で、実際に互換性が持たせられているのが内部で使っているクラスになっていそうです。
この2点を加味して、頂いたプレイリストをどうしていただくべきかをちょっと迷っています。
方針は3つありそうです。
一つがWebAPIは書き換えずに内部で使っている変数を全て正しい方の表記に書き換えること。これは今のプルリクエストのうち、クラスに互換性にを持たせているところを元に戻しつつ、ソースコード全体で本来はstyle_id
なのにspeaker
となっている部分も変更すれば完了だと思います。
2つ目の方法が↑プラスでWebAPIも書き換えて、互換性も持たせる方針です。
3つ目がとりあえずspeaker_id
となっていたものだけstyle_id
に変える方法です。これは1の方法からspeaker
となっているものは一旦無視する方向になりそうです。
一番混乱がないのは2の方法ですが、一番何度が高いのも2だと思います。
run.py
Outdated
accent_phrases = engine.replace_mora_data( | ||
accent_phrases=accent_phrases, speaker_id=speaker | ||
accent_phrases=accent_phrases, style_id=speaker | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
このプルリクエストを見て気づいたのですが、speaker_id
ではなくspeaker
になっている箇所がかなりありますね!!
見逃していました、申し訳ない。。
def is_initialized_speaker_synthesis( | ||
self, style_id: Optional[int], speaker_id: Optional[int] = None | ||
) -> bool: | ||
""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
このクラスで互換性を持たせていますが、互換性を持たせるべきはWebAPIなのでずれてるかもです!
ここは戻していただく形になるかなと!
互換性に関してちょっと認識がずれていそうだったので解説をしてみます。 そもそも互換性を入れないといけない理由は、既存ユーザーが使っているAPIをそのまま使えるようにするためです。 そのWebAPIはrun.pyに色々定義されているので、それらに互換性を持たせていくタスクになります。 |
@weweweok スクショの内容を見るに実装良い感じなのかなと思いました!!
何にせよ今のプルリクエストにプッシュしていただければと思います! |
レビューを反映しました。 ここのspeaker_idですが、注釈を見る限り、intではないのでそのままにしておいたのですが、変更したほうが良いですか? def yukarin_s_mock(length: int, phoneme_list: numpy.ndarray, speaker_id: numpy.ndarray):
result = []
# mockとしての適当な処理、特に意味はない
for i in range(length):
result.append(round(float(phoneme_list[i] * 0.0625 + speaker_id), 2))
return numpy.array(result) |
ゴール近そうですね!!
あ、本当ですね!!! |
レビューを反映しました。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
良い感じだと思います!!
あとはmasterブランチをマージしてコンフリクトを解消していただければ!!
ローカル側の操作にまだ慣れておらず、変更内容をpushできなかったため、コンフリクトの解消をgithub上で行いました。 @app.post("/initialize_style_id", status_code=204, tags=["その他"])
def initialize_style_id(
style_id: int,
skip_reinit: bool = Query( # noqa: B008
False, description="既に初期化済みのスタイルの再初期化をスキップするかどうか"
),
core_version: Optional[str] = None, <<<この部分
): |
なるほどです!! 1回通しで確認してみますが、おそらくもうそこ以外はマージできる形になっていると思います! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!!!!
テストが落ちているのでそれも含めてこちらで直しちゃおうと思います!
何箇所かさらに変更が必要な場所がありそうだったので、そちらはissueにまとめておこうと思います。
もしよかったらプルリクエストに挑戦していただければ!!!
テストが通ったのでマージします! |
@weweweok 結構右往左往してしまって申し訳ありませんでした 🙇 |
内容
同上
関連 Issue
ref #589
スクリーンショット・動画など
その他
分割してこのページにコミットします。(変更しないほうがいい箇所が見つけられなかったため)
変更予定ファイル一覧(style_idに変更しているファイルをチェック)