Synthesizer Vの、旧とAIの違い


Synthesizer V voice - Regular vs AI

 

Synthesizer Vのバージョンアップがあり、AIという名前が付き、より自然な歌声を出すことができるようになったそうです。

 

旧バージョンでもDNNを使っていたとか出ていたように記憶しているのですが、AIをコマーシャル的に全面に出していこうということなのだと理解しました。

 

聞き比べると確かに自然になっているのはわかるのですが、どうして自然に聞こえるのかが気になるところです。

なので波形を見比べてみました。

 

旧バージョン

f:id:qpci32siekqd:20201031103632j:plain

AIバージョン

f:id:qpci32siekqd:20201031103727j:plain

 

まず旧バージョンですが、音量の波形を見ると上下対称です。

狙った周波数を人工的に作りに行こうとすると、サイン波を使うと思うので、上下の振幅は同じになるはずです。

AIバージョンを見てみると、上下対称ではない箇所がいくつか確認できます。
発音が短い部分は気づきにくいと思いますので、伸ばす音を見ると確かに変わっています。デジタル的には単なる時系列データなので処理できるのはわかるのですが、あまりこういった処理をするプラグインはなかったのではないでしょうか。

 

伸ばす音については、旧バージョンでは、一定の長さ以上はビブラートが全てかかっていました。
全く同じ高さの音を伸ばすとケロケロボイスになりやすく、手で修正するときの常とう手段として、まっすぐに伸びた音に対してはビブラートをかけるのが普通ではなかったでしょうか。

AIバージョンは、上の画像のスケールで見えるようなビブラートを全ての長音にかけていません。縦軸がdbなので大きく変化しないと見えないからではあるのですが、自然と伸ばすところと、大きくビブラートをかけるところを区別しているように見えます。

(プログラムで単純に音の長さだけでビブラートをかける/かけないの判断をしていない)

全くビブラートがかかっていないわけではなく、上のdbでは見えないくらいの小さい数Hzの揺らぎの中に納まっています。

 

 

次に気になった点は、画像中央付近の長音部分です。

旧バージョンは同じ大きさの音でビブラートがかかって急峻に音が切れるような感じです。人によってはここをフェードで音を小さくするというのはやっていたかと思います。AIバージョンもフェードがかかっているように、音量の波形からは見えます。

ただ単純なフェードではなく、スペクトルを見るとフェードで音が小さくなっていくにしたがって、高音から徐々に倍音が消えていって、低音の基本周波数が最後まで残るといったフェード+イコライザを組み合わせたような処理に見えます。

静的なイコライザだと時間軸に関係なく狙った周波数を落としますし、ダイナミックイコライザでも倍音の変化に追随して落とす周波数を変えるか、基準より大きな音が出たときにだけ落とすといった処理なので、あまり見ないタイプのEQではないでしょうか。

(そもそも人の声に対してEQをかけるかけるのが主流なので、機械音声用のEQをわざわざ作らないとも言えますが)

 

f:id:qpci32siekqd:20201031111041j:plain

ちなみにNEUTORINOのAIきりたん(上図)は、長音はそのまま伸ばしますし、基準周波数の揺らぎがないです。倍音の周波数は揺らがないです。(倍音以外の成分が揺らぐ)

ボーカロイドに対して倍音の数が多くなり(従来だと3倍音とか)、より人間らしいクリアな音に聞こえるようにはなったのですが、楽器で同じ音を伸ばしてるように感じました。

上の波形だと長音部分は音の大きさがそのままで、スペクトルもずっと伸びています。

(NEUTORINOではMusicXMLで音階を正解として読み込ませていて、音の高さと長さに合わしに行こうとし過ぎているのかもしれません)

 

 

旧バージョン

f:id:qpci32siekqd:20201031123624j:plain

 

AIバージョン

f:id:qpci32siekqd:20201031123709j:plain

 

先ほどと同じ波形ですが、書き込みを変えました。

旧バージョンだと、指定した音階通りの高さにとどまっている時間が長いですが、AIバージョンでは、指定間の音階の遷移に対して補間されているように見えます。デジタルの量子ビットが増えて中間諧調まで表現できるようになった、そんな感じでしょうか。

 

「けー」と伸ばしている箇所ですが、伸ばしている途中で音階が変化するわけですが、e/e/の2つの音素ごとに音階を指定すると、指定通り2回音が鳴るのが旧バージョンに対して、音量を一瞬大きくして強調する以外に、高音の倍音を一瞬出していて一瞬発音がよりクリアに聞こえます。

このあたりはピッチをいくら調整しようが無い倍音が出るわけではないですし、イコライザは基本削る方向だけなのでMelodyneをいくら弄っても出来なかった箇所ではないでしょうか。

 

他には、AI版は下から上に音が上がる部分は、一旦より高くオーバーシュートしています。ピッチをわざわざ書いていたのが自動でやってくれるので楽になりそうです。

 

伸ばす音の途中で、旧バージョンは音量は一定で音階だけ変化させていたのが、AI版だと音量も音階も変化させているといった違いも見えました。

 

高い子音が音量が一瞬大きく目立っていたのが、De-essをかけたように目立たないようになっていて、このあたりは機械学習に使っている学習データ時点は生の録音ではなく、前処理としてDe-essをかけたりしたものを使用しているように感じました。

(単純に録音した人間の音ではなく、商業流通しているポストプロダクションされたデータを学習データとして利用しているのでは?)

 

 

2曲目

旧バージョン

f:id:qpci32siekqd:20201031135449j:plain

 

AIバージョン

f:id:qpci32siekqd:20201031135527j:plain

 

一番の違いは、歌の入りでしょう。

綺麗な倍音が出る前の歪んだ波形がAIバージョンでは表現されています。

旧バージョンだといきなり綺麗な音が出てくるので、綺麗すぎるというか、いかにも機械音声っぽい印象を受けます。

人の発音を見てピッチの波形だけ合わそうとしても自分は似せることができませんでした。急峻なカーブのため、チャープ音になりがちだったのが表現できています。

 

次は息継ぎのブレスが入っていることです。

無音が続くと目立つので、そこをブレスで埋めた感じでしょうか。

人の声をマイクで撮るとブレスが気になったりするので、後処理することがありますが、気にならないレベルになっているように感じます。

ブレスの速度も1回目のブレスと2回目のブレスで違うようですね。

 

細かいところだと、伸ばしている部分ですが、AIバージョンは倍音ごとの大きさを微妙に揺らしているようです。

(旧バージョンはずっと同じ大きさ)

倍音の周波数もAIバージョンの方が旧バージョンよりも大きく揺れています。

(といっても±2Hz→±5Hz~7Hzくらいですが)

 

あとは同じ音階のa/eの繋ぎでしょうか。

旧バージョンだと大きさが異なっているためなのか2回発音してるように聞こえるのですが、AIバージョンだと繋がっていて滑らかに聞こえます。口をaからeの形に変えたような感じです。