VOICEVOX / voicevox_core

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのコア
https://voicevox.hiroshiba.jp/
MIT License
871 stars 117 forks source link

jlabelを導入する #742

Closed femshima closed 9 months ago

femshima commented 9 months ago

内容

jlabelを導入します.

jlabelは,フルコンテキストラベルの構造(struct)と,シリアライザー・パーサーを含むライブラリです. これを使うことによって,従来のf6といった表記ではなく,accent_phrase.accent_phrase_position_backwardのように意味を持った文字列で書けるため,可読性が向上することが期待されます.

また,このPRではVec<Label>から(Utteranceを経由することなく)直接Vec<AccentPhraseModel>を生成することを試みています.個人的にはunwrapが減り,全体的な見やすさは向上したと考えていますが,他の方からは違って見えるかもしれません.

関連 Issue

ref #740 ref #731 (jpreprocessのインターフェースがjlabelであるため)

その他

femshima commented 9 months ago

レビューありがとうございます.

提案いただいた例を使って,mainブランチでテストケースを作成しました. 他にも必要と思われるケースがありましたら,遠慮なくおっしゃってください.

Hiroshiba commented 9 months ago

@femshima 早速ありがとうございます!!お言葉もありがたいです・・・!

ややこしくてすみません! 🙇 extract_full_context_labelの処理結果が変わっていないことのテストができればと思っていました! なので例えば今のmainブランチ(VOICEVOX:main)に新しくextract_full_context_labelのテストを実装し、そのテストがmainブランチで通ることを確認した後、今いただいている #742 のプルリクエストを再度テストする、みたいな感じを想像していました! この流れで頂いているプルリクエストが完全一致することの記録をGithub Actionsのテスト通過として残せる感じです。

でもこの流れはお手数おかけしちゃうので、もしよければで・・・ 🙇

あとこっちはリファクタリングの提案ですが、テストケースでMoraModelインスタンスを作る部分は関数化すればかなりスッキリするかもとか思いました!

femshima commented 9 months ago

なるほど,そういうことでしたか!

750 を作成しましたので,見ていただければ幸いです.

qryxip commented 9 months ago

ところでなんですが、このPRをマージしたらstruct AudioQueryModelとかは全部AudioQueryとかにできますね。 (jlabel::Moraとの区別については、jlabel::Moracrate::Moraとでもしておけばよいはず)

femshima commented 9 months ago

750 のマージ,ありがとうございました.

このPRでも重複箇所の削除(mainからのdiffとしてはテストの追加とインターフェースの修正)を行いました.

Hiroshiba commented 9 months ago

変更があるので念のために @qryxip さんの確認があってもいいかもと思いました。 @qryxip さん的に問題なければマージしていただければ 🙇