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

モーラごとに調整結果が転写される機能の評価・議論 #1644

Open
Hiroshiba opened this issue Nov 10, 2023 · 10 comments
Open
Labels
機能向上 要議論 実行する前に議論が必要そうなもの

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Nov 10, 2023

質問の内容

こちらのプルリクエストで、テキストを変更した時に同じ文字(モーラ)のものの調整結果を継承するようになりました! 🎉 (thx @weweweok !)

ただ現状だと同じ文字が1文字であってもその調整結果が継承されるため、逆に使い勝手が悪くなるということもありえるかなと思っています。
このissueでは実際に使ってみた感想などを集めてみて、どうして行くのが良いのかなどを議論できればと思っています。

(ちなみに機能を使うためには実験的機能から「調整結果の保持」をオンにする必要があります)

VOICEVOXのバージョン

開発最新版が必要です
https://github.com/VOICEVOX/voicevox/releases/tag/0.15.0-dev

その他

@weweweok
Copy link
Contributor

weweweok commented Jan 7, 2024

@sevenc-nanashi さんの案を引用します。

  • 最大移動距離を作ったり(半分や1/3を跨ぐのはアウトとか)

  • 編集したモーラしか動かないようにしたり(AccentPhraseにoriginalを持たせる?)

  • イントネーションリセットを案内したり(アクセント句1つだけ、とかの指定ができたら嬉しいかも)

今のところ、「AccentPhraseにoriginalを持たせる」と言う案が一番有効だと思われるようです。

しかし、originalが何を意味しているのかがちょっとわかりませんでした。

@sevenc-nanashi
Copy link
Member

しかし、originalが何を意味しているのかがちょっとわかりませんでした。

エディタのStateに、「エンジンから持ってきた時の原本のAccentPhrase」を持たせる、の意ですね。
この原本との比較で「元のイントネーションからいじったかどうか」を判断する感じです。(いじってたら保持する、いじってなかったらテキスト変更時に変わる)

@Hiroshiba
Copy link
Member Author

Hiroshiba commented Jan 8, 2024

僕もほぼ同意見だったのですが、ちょっと問題があるポイントを思いつきました!

テキストが変わってAccentPhraseを再取得した際、いじったイントネーションと再取得したイントネーションが一致することがありそうです。
偶然一致してしまうといじったかどうかを誤判定してしまうなぁと。(一番ありそうなのが無声化の誤判定)
まあでもこれ考え始めてしまうとややこしいのと、解決するにはoriginal+変更フラグの管理が必要なので、まずはoriginalを実装するのがいい気がしました!

originalを持っておくデータ構造が2種類考えられるのですが、どっちがいいですかね。。。
1つがAudioQuery.AccentPhrase.Mora内に、originalPitchとoroginalLengthを持たせるパターン。
もう1つがoriginalAudioQueryやoriginalAccentPhrasesを別で持っておくパターン・・・。
多分前者の方が楽なんですが・・・これで良いのかどうか若干自信がないです・・・・。

@Hiroshiba
Copy link
Member Author

すみません、こちらの機能ですが十分に検証できていないので0.15のアップデートには含めない形に調整させてください 🙇

判断の理由としては、おそらく多くの人が期待する操作感と大きく乖離する可能性があるためです。
同じような機能に「疑問文の自動調整」(はてなマークがついていた時に末尾の音高を少しだけ上げる機能)があります。
こっちもうまくいかない可能性はあるのですが、この機能がうまくいってないことに気づきやすいのと、影響範囲が限定的なのでメリットとデメリットのバランスからギリギリOKという認識です。

一方で調整結果の転写はおそらくとても便利なのですが、同じモーラが偶然あった時に前の結果を引き継いでしまう仕様をなかなか想像できないことと、かつその時にこの機能が原因であることに気づきづらい可能性があると思います。
もちろんそうじゃないかもしれないので、十分に試してからであれば良いのですが、ちょっと時間を取れておらず検証が間に合いませんでした 🙇

なので大変申し訳ないのですが、一旦開発時のみこの設定が現れるようにし、本番ビルドでは必ずオフになるようにさせていただこうと思います。

機能自体はとても魅力的だと思います!
もっと検証重ねたり、オリジナルを持たせて変更箇所のみ反映させる形にして、自信を持って出せればと思います!
もしよかったらリリース目指してブラッシュアップできると嬉しいです・・・!

(関わってくださった方にメンションです @sevenc-nanashi @weweweok

@weweweok
Copy link
Contributor

weweweok commented Apr 16, 2024

提案なんですが、
voicevoxのユーザーはおそらくテキストを変更したら調整結果がリセットされるものという認識が強いと思われるので、調整結果を保持したい箇所を何かしらの記号で囲むと、使いやすくなるのではないかと思います。
具体的な利点としては

  • 「この部分だけ保存したい」と言ったような、ユーザーの意思で意図した通りに調整結果を保持することができる
    が挙げられます。

ちょっと、適当な記号で実装してみます。

@Hiroshiba
Copy link
Member Author

Hiroshiba commented Apr 16, 2024

@weweweok なるほどです、面白い切り口だと思います!
ちょっと議論したく!

現状、テキストに再入力したものから記号の位置と読みの位置を対応付けるのはかなり難しそうです。
またテキストの文字1つが読みと1:1対応していない場合に対応が取れないなどの解決できない問題があるかもです。helloのelloだけ記号で囲った場合とか。

別アプローチとして、例えば「この部分だけ保存したい」と思うアクセント句をマークしてもらうとかも考えられるかもです。
これだったらアクセント句単位になるので実装しやすいかもしれません。
またこれさえ実装しておけば、将来的にテキストに記号を入れたときに固定されるアクセント句を自動で選ぶようにすることも可能かもと思いました。

@weweweok
Copy link
Contributor

weweweok commented Apr 17, 2024

そちらの方が良いかもしれません!

ヒホさんの案で実装するとなると、

  • モーラを編集できる所で、アクセント区に該当する部分を右クリックした後に「調整結果を保存」と言ったようなメニューバーを表示
  • 該当部分のアクセント区が変更されない限り、調整結果のリセットを受け付けないようにする(マークする)

と言った感じになりそうです。

@Hiroshiba
Copy link
Member Author

Hiroshiba commented Apr 17, 2024

良い感じのUXに思いました!

・・・けど、よくよく考えてみると、そもそも1単語や区間だけイントネーションを保存したいということがあまり無いのではという気がしてきました・・・・・・。
ユースケース思いついてたらちょっと教えていただきたく・・・!!!

@weweweok
Copy link
Contributor

weweweok commented Apr 17, 2024

ちょっと考えてみましたが、句点を区切れれば良いという認識だったため、この考え自体が間違っていました。

ユースケースもこの認識が前提だったので、私の確認不足でした。🙇

ちょっと改めて、またご相談させていただきます。

@Hiroshiba
Copy link
Member Author

句点ごと、なるほどです!(読点ごとですかね?)
句読点ごとにマークというのはたしかに操作簡単かもですね。
まあでもおそらくなかなかマークを使われる方は珍しいだろうなーと感じました!すみません!!

アイデアまた思いついたらぜひコメントしてください🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
機能向上 要議論 実行する前に議論が必要そうなもの
Projects
None yet
Development

No branches or pull requests

4 participants
@Hiroshiba @sevenc-nanashi @weweweok and others