NEUTRINOが出た瞬間から、「音源制作はできないのか!」「自音源作りたいのでDB作ります」と、音源制作勢が最初からトップスピードを出しよります。NEUTRINOには少なくともまだ、しばらく、当分、結構の間、自作音源に対応する予定はないんですが、1つの可能性が浮上してきました。
声質変換です。
考えられるAIシンガーの音源構造
AIシンガーには、声質と表現の2側面があります。AIきりたんを構成する要素は「きりたんの声質+きりたんの歌唱表現」ですね。
※イメージ図
考えてみましょう。「声質はいいけど表現が気に入らない」「歌い方は好きだけど声質は別のがいい」という人がこれから現れることは想像に難くないですね。
では、どうすればいいか「声質と表現を自由に組み合わせられればいい」のです。きりたんの歌い方で謡子さんの声質とか、いろんなバリエーションを作れると自由度が一気に上がる。
NEUTRINOで声質の差し替えができるかも
NEUTRINOには「LAB生成モジュール(XML2LAB)」「推論モジュール(NEUTRINO.exe)」「音声化モジュール(WORLD)」があります。
例えばここに「LAB生成」「推論」「声質差し替え」「音声化」と、モジュールを差し込んでやれば、歌唱表現は変わらないけど声質は変えられるようになる。
もしくは、「LAB生成」「推論」「音声化」「声質差し替え」と、最後に付け足してやれば、これもまた好みの声質に変換できる。こっちは音声加工のアプローチ。
無理矢理やったので音質とか細かいとことか微妙だけど、
AIシンガー初音ミク
もできた。 pic.twitter.com/uei7q1LW2q
— くろ州=N種の歌声合成で○○ (@kM4osM_96s) February 22, 2020
イメージとしてはこんな感じ。これはディープラーニングなどは使っていないが。
野生のプログラマによって「声質変換モジュール(声質モデル読み込み機能付き)」「声質モデル学習システム=声質音源制作システム」が作られ、音源制作したい人が「声質変換用ターゲットモデル=声質音源」を出せば、好きな声で歌わせられるようになるということです。誰も作らなかったらそのうちSHACHIさんが実装するかもしれないらしいです(優先度低め)。
SHACHIさんが提示したヒント
SHACHIさんはこの声質変換モジュールを作るヒントをくれました。完全にプログラマ向けです。
ヒント① MGCとBAPを書き換える方法
NEUTRINO.exeが書き出すファイルは3つ。f0、mgc、bapです。f0はピッチ(基本周波数)、mgcは声質(メルケプストラム)、bapはかすれ具合(非周期性成分)の情報を持っています。
このうち、mgcとbapを「きりたん→だれか」に差し替えられれば声質変換ができます。NEUTRINOから出てきたmgcとbapを受け取って、何らかの手段でターゲットの声質に変換するのが「声質変換モジュール」ですね。
「声質モデル学習システム」は楽譜ときりたんのwav、mgc、bapなどと、ターゲットのwavを紐づけて学習し、声質モデル(声質音源)を作るものになるでしょう。普通の人はつよつよGPUが載った学習用PCなんざ持ってないはずなので、学習プラットフォームにはGoogle DriveとGoogle Colaboratory(GPU使える)を使うのが妥当なラインかもしれません。「音源作りてぇならGPU積みな!」でもいいけども。
SHACHIさんによれば、「nnmnkwii」を参考にするのが良いとのこと。でたよGAN。難しいことはSHACHIさんのツイートを読みましょう。
ヒント② WAVを書き換える方法
①の方法は、音声化前の段階で声質を差し替えるものでした。逆に(?)、音声化の後に声質を変換する方法もあり得ます。wav→ターゲットのwavですね。
使う技術によって、①のほうがきれいに行くパターンと②が綺麗に行くパターンがあるらしいです。その辺は実験してみないとわからない。
なお、この手法なら、NEUTRINO以外の歌声合成にも適用できるし、人間→人間の変換にも使えるかもしれない。汎用性は高い。
考えられる声質音源の作り方
ここからは、モジュールづくりに挑戦するプログラマではなく、音源制作に挑戦する音源制作者向けの情報です。
用意するものは楽譜と中の人の音声。どんな声質変換モジュールと音源制作システムができるかにもよりますが、SHACHIさん想定だと、10~20分程度の音声でいいとのこと。AIきりたんを歌わせまくった人なら、これだけのMusicXMLとAIきりたんの音声は持ってるんじゃないですか? それ、学習に使えます。音素や音域の偏りはちょっと考えないとだけど。
きりたんDBをまねして歌うのもOK。楽譜データもあるし。DBにして配布するとなるとちょっとめんどいけど、学習モデルにしてしまえば余裕で配布できる。
ちなみに、SHACHIさん想定だとラベリングはいらないらしい。なんかエンジニア向けの「問:声質変換モデルを作る学習システムを制作せよ。なお、学習に使う音声は15分程度で、ラベルは使わず、GPUを持たない人でも使えること」という東大王クイズの記述式問題みたい。
自分の歌声と、AIきりたんの合成音(やmgc、bapなど)を作り、音源制作システム(まだ存在しない)に投げて学習を待ちます。
そうして出来上がった学習モデル=声質音源を配布すればOK。これを声質変換モジュールが読み込んで、NEUTRINOが吐き出すmgcやbapを変換できればミッションクリアです。