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

ソング:休符のたびに息のような音が入るのを抑制する #1943

Closed
Hiroshiba opened this issue Mar 20, 2024 · 1 comment · Fixed by #2056
Closed

ソング:休符のたびに息のような音が入るのを抑制する #1943

Hiroshiba opened this issue Mar 20, 2024 · 1 comment · Fixed by #2056

Comments

@Hiroshiba
Copy link
Member

内容

休符(ノートが何もない場所)でフレーズを区切り、そのフレーズの前後1秒ほどをpauとしてエンジンAPIを実行しています。

const restDurationSeconds = 1; // 前後の休符の長さはとりあえず1秒に設定

この無音区間でブレス音が結構聞こえてくるキャラクターもいます。
波音リツのソングなどが分かりやすいと思います。声量を10とかにするとテストしやすいかもです。
↓の例は範囲選択しているところが呼吸音になっています。

歌の開始や終了であれば問題ないのですが、休符のたびに前後1秒pauが追加されるため、呼吸音と歌が重なってしまう場合があります。
この重なりがなくなるか低減できればこのissueは解決だと思います。

Pros 良くなる点

歌がよりクリアになる

実現方法

前後1秒のpau追加をもっと短くすることでも解決できますが、歌の感じが変わってしまうかもしれません。
別アプローチが良いと思っています。

VOICEVOXの歌唱 API は入力ボリュームを制御することができます。
これを0にすれば理論上は呼吸音ですら出なくなるはずです。

方法は2つあって、1つ目がframeAudioQueryを取得してVuex.stateに登録する前に、pauの箇所のvolumeを0にする方法です。
pauを全部0にしてしまうと子音の出だしが変になってしまうかもなので、0.1秒くらいかけてだんだん0になっていく感じでも良いかもです。(実験してみて次第かなと)
このあたり↓に関数を足すのが妥当だと思います。

voicevox/src/store/singing.ts

Lines 1077 to 1084 in 05926fb

const phonemes = getPhonemes(frameAudioQuery);
window.backend.logInfo(
`Fetched frame audio query. Phonemes are "${phonemes}".`
);
shiftGuidePitch(phrase.keyRangeAdjustment, frameAudioQuery);
scaleGuideVolume(volumeRangeAdjustment, frameAudioQuery);

1つ目の方法はブレス音を完全に消してしまうので、それがもったいない感じであれば、他のフレーズと被っているpauの部分のvolumeを0にする方法もあると思います。
ただこれは前後1秒のフレーズを書き換えたときに再レンダリングしないといけなかったりとなかなか大変なので、とりあえず1の方法が無難かもしれません。

ちなみにもっと他の方法として、短い休符だった場合は別フレーズとして分けず、1つのフレーズとして扱うとかも有りだと思います。
音声合成結果はこれが一番自然になるはずですが、これは下手したらAメロ全部くっついてしまうので、また聞けるようになるまでかなりの時間待たないといけず、UXがガクッと下がると思います。
これは将来エンジンやコアが成長して、途中からレンダリングを開始できるようになったら実現できるかもです。だいぶ先になりそうかなと!

その他

次のハミングキャラ追加リリースで結構顕著に影響が出るキャラクターがいたので優先度を上げています。
もしよければ・・・!

@sigprogramming
Copy link
Contributor

こちら取り組みます!

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

Successfully merging a pull request may close this issue.

2 participants