-
Notifications
You must be signed in to change notification settings - Fork 310
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
無音の長さを一定値にできるパラメータを用意する #1698
Comments
自分の欲しい機能の様なので発言致します。 『開始無音、終了無音』ではなく、『、』は何秒、『。』は何秒、『…』は何秒みたいな設定が欲しいです。 |
@stIprurIJu ありがとうございます! 今のVOICEVOXの仕様上かなり難しい(読みの間隙がどの文字由来かがわからない)のでかなり難しいのですが、実装にご興味あればご案内します!!! |
実装する力は、自分には無いです(汗) |
より詳細な調整ができるのは文字ごとに設定する場合の長所ですが ご自身での実装は無理とのことなので、文字ごとの調整が必要である状況について具体的な例の提供(例えばそれぞれの方式でエディタに打ち込んだ比較の動画とか?)をお願いできればと思うのですが... |
どういう例を挙げれば良いのか解らなかったのですが、今VOICEVOXでやってみた作業はこんな感じです。 同じ状態で作りたい文章が500ページ以上(何十時間分)あり、この作業をVOICEVOXで始めて一つ一つ入力するのか、流石にそんな時間は掛けられないと他のソフトを探すべきか、迷っています。 今は使えなくなったのですが、前に使っていた『SofTalk(ゆっくりボイスの奴)』にはこういう設定画面があり、今回の様な悩みは無かったので、何とかならないかと思っています。 |
難しい理由 @X-20A さんのおっしゃる通りで、エンジン側のかなり大変なところまで実装する必要があるためです。 @stIprurIJu softalkに句読点・その他記号によって長さを変えられる仕組みがある(あった?)のは存じませんでした!! |
@stIprurIJu 提供ありがとうございます 但し、可能であったとしても私はAPIによる一律調整の実装を第一目標として取り組むことは断っておきます |
お疲れ様です。 |
@X-20A こちらはできないと踏んでます。 例えのケースですが、「AA、BB」を「あ」とする辞書登録と、「CC」を「い」とする辞書登録があったとき、 openjtalkの中にはこれらの対応関係を取っている場所が当然あるはずで、その対応関係をエンジン側に露出させることができれば色々できるはず・・・と認識しています! |
その後、進捗はどうでしょうか? |
一連の議論を読む限り、要するに「読みのpauが、テキストのどの文字と対応しているか分からないから上記機能実装が難しい」という風に理解しました。 私も一応OpenJTalkの内部実装を見てみましたが……ろくなドキュメントが存在しない上、コードを読み解くのに音声処理に関する高度な知識が必要そうでした(C/C++自体は読めるし、VueやTypeScriptに比べればそっちの方が慣れてるんですがそれでもむずい)。OpenJTalkを書き換える道を行くなら、OpenJTalkの開発者巻き込んでやるか、それか莫大な時間をかけてやるか……という感じになると思います。ちょっと現実的じゃなさそうという考えです。 読みのpauをテキストの文字に対応させる方法として、「テキストの文字の順序は、読みに変換されても保たれる」という性質を使うのはどうでしょうか。
という文章があったとき、読みに変換すると
となります。読みに変換された影響で、pauが挿入される位置は変わっていますが、前後の文字との位置関係は変わっていません。読みでpauに変換される文字は決まっていますから、テキストからpauに変換され得る文字リストを抽出し、それを読みのpauと一対一対応させれば、読みのpauがどのテキストに対応しているか分かるのではないかという案です。
ただ、次のような場合は、テキストと読みの対応が取れません。他にもあるかも?
本質的にテキストの読みとの対応をしているわけではないので、どうしても漏れが生じます。そこで、後からユーザーが、読みでpauに指定されている文字種別を変更できるようにします。イメージとしては、下記画像赤丸の文字を書き換えるイメージです(あくまでもイメージなので、実際のUIでそこから書き換えられるようにする必要があるかどうかは別途要検討)。 もっとも、そんなトリッキーな辞書登録をする人はあんまりいないんじゃないかなあ、と勝手に考えているので、ある程度正確性は担保されるのではないかと思っています。 ちなみに……句読点とか、文字別の無音間隔設定ってどれくらい需要あるものなんだろう……? というのは、今のVOICEVOXだと句読点含む文書をコピペすると勝手に句点で分割してくれるので、だったら終了無音の調整でいいじゃんと思ってしまい…… |
@terapotan 確かに後処理的にテキストを解析してpauだった部分の文字を見つける手もありますね! ちなみにopenjtalkを改造するのはおっしゃる通りなかなかに大変だと思います! コメントありがとうございました! 考えを進めるのは進捗なので、考えたことをまとめてくださるの助かります!! |
内容
多くのテキスト音声合成ソフトウェアでは、句読点(ボイボだとpauseMora)の長さを指定することができます。
VOICEVOXでも指定はできますが、一つ一つの無音に対して長さを設定していく必要があります。
これを1回入力すれば自動的にその長さにしてくれる仕組みがあれば、読む速度を一定化できて結構便利かもしれません。
↓のプルリクエストと似ていますが、↓は全体のポーズの長さを調整するのに対し、こちらはソフトウェアUIのパネル(パラメータ調整欄)にパラメータ調整を追加しての調整を意図しています。(そうするとプリセットに追加できる)
Pros 良くなる点
キャラクターごとに無音の長さのデフォルト値を設定できる。
Cons 悪くなる点
仕様が結構ややこしい。
実現方法
無音の長さが置き換わるタイミングはAccentPhraseのfetchごとが良い気がしています。
テキストを変更した時、読みを変更して句点を追加した時の2パターンかなと。
「長さを変えない」方法の提供ですが、スライダーの一番左の値を「長さ無変更」とするか、あるいはスライダー以外にチェックボックスを用意して「無音の長さを変更する・しない」を切り替えられるようにするとかが考えられるからと。
その他
かなり需要が高い機能だとは思うので、もしご興味あればコメントお待ちしてます。
どこをどういう方針で実装すればいいかみたいなのもご案内できると思います!
The text was updated successfully, but these errors were encountered: