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

ソング:音量が正しく生成されていないのを修正 #2030

Merged
merged 3 commits into from
Apr 28, 2024

Conversation

sigprogramming
Copy link
Contributor

@sigprogramming sigprogramming commented Apr 27, 2024

内容

音量生成時に音域調整の処理(noteのkeyのシフト)が行われて、正しく音量が生成されていないのを修正します。
また、歌い方生成直後のscaleGuideVolumeは行う必要はないので、削除します。

スクリーンショット・動画など

VOICEVOX小夜、音域調整-3、声量調整-4
0.18.1→このPRの順です。

default.mp4

その他

たぶんこれで0.18.1以前と同じ声量に戻ったはず

@sigprogramming sigprogramming requested a review from a team as a code owner April 27, 2024 13:14
@sigprogramming sigprogramming changed the title 音量生成時に音域調整の処理(noteのkeyのシフト)が行われているのを修正 ソング:音量生成時に音域調整の処理(noteのkeyのシフト)が行われているのを修正 Apr 27, 2024
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます!!

もしかしたらまだロジック異なってるかも…?

ノートシフト→f0生成→volume生成→f0シフト→volumeシフト→合成
だったのが
ノートシフト→f0生成→f0シフト→volume生成→volumeシフト→合成
になってるかもです!!
声が低い龍星くんあたりで試すと顕著かも…?

f0シフトも遅らせればとりあえず合いそうですが…次はキャッシュ周りが大丈夫か不安になってきますね…。

@sigprogramming
Copy link
Contributor Author

@Hiroshiba
なるほどです!!
f0シフトを遅らせるとピッチがノートとずれて表示されてしまうと思います…

違いが発生しているのは音量生成のところなので、
ノートシフト→f0生成→f0シフト→もう一回f0シフト→volume生成→volumeシフト→合成
とするとロジックが合うかもです。

一旦これでやってみます…!

@Hiroshiba
Copy link
Member

@sigprogramming ありがとうございます!!
(実際手元でやってみたらピッチがずれちゃいました。。)

@sigprogramming
Copy link
Contributor Author

音量生成用にクエリをコピーし、もう一度f0シフトして音量生成する形にしました。
これで同じになったはず……

音声はこんな感じです(音量生成の実装前→このPRの順です)
VOICEVOX青山龍星、音域調整-22、声量調整+2

2.mp4

@sigprogramming sigprogramming changed the title ソング:音量生成時に音域調整の処理(noteのkeyのシフト)が行われているのを修正 ソング:音量が正しく生成されていないのを修正 Apr 27, 2024
@sigprogramming
Copy link
Contributor Author

sigprogramming commented Apr 28, 2024

データの流れ(音域調整-3、声量調整-4の場合)を図にしてみました。
(カッコ内の数字は、それが実際にどれくらいシフトされているかを表しています)

flowchart TB

notes1[ノーツ]
notes2[ノーツ(+3)]
notes3[ノーツ(+3)]
guideStyle[歌い方スタイル]
voiceStyle[歌声スタイル]
timing[音素タイミング]
pitch1[ピッチ(+3)]
pitch2[ピッチ]
pitchEditData[ピッチ編集データ]
editedPitch1[ピッチ編集を適用したピッチ]
editedPitch2[ピッチ編集を適用したピッチ(+3)]
volume1[ボリューム]
volume2[ボリューム(-4)]
audio[音声]

keyRange[音域調整]
volumeRange[声量調整]

fetchQuery[/sing_frame_audio_query\]
inferenceVolume[/sing_frame_volume\]
synthesis[/frame_synthesis\]

notes1 ---> notes2
keyRange --> notes2

notes2 --> fetchQuery
guideStyle --> fetchQuery

fetchQuery --> timing

fetchQuery --> pitch1

pitch1 --> pitch2
keyRange --> pitch2

pitch2 --> editedPitch1
pitchEditData --> editedPitch1

editedPitch1 --> editedPitch2
keyRange --> editedPitch2

keyRange --> notes3
notes1 --------> notes3

timing --> inferenceVolume
editedPitch2 --> inferenceVolume
guideStyle --> inferenceVolume
notes3 --> inferenceVolume

inferenceVolume --> volume1

volume1 --> volume2
volumeRange --> volume2

voiceStyle --> synthesis
timing --> synthesis
editedPitch1 --> synthesis
volume2 --> synthesis

synthesis --> audio
Loading

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

ちょっとコードは追いきれてないのですが、実際に試してみて良さそうだったのを確認しました!

図もありがとうございます!!
singingVoicessingingVoiceCachesは同じ型になっていて、どっちがどっちなのか用途が分かりづらい形になってることに気づきました。
このあたりも1行コメントあるとよりわかりやすいかもです!

@Hiroshiba Hiroshiba merged commit be4b896 into VOICEVOX:main Apr 28, 2024
9 checks passed
sevenc-nanashi pushed a commit to sevenc-nanashi/voicevox that referenced this pull request Apr 28, 2024
* 音量生成時に音域調整の処理(noteのkeyのシフト)が行われて正しく音量が生成されていないのを修正

* 音量生成用にクエリをコピーして、もう一度f0シフトして音量生成する形に修正

* コメントを修正
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants