見出し画像

AIきりたん(NEUTRINO)を使ってみた

NEUTRINOについて

2020年2月22日にNEUTRINOという歌声合成ソフトが公開されました。

アピールポイントは歌声合成に機械学習を組み込んでいること。
これにより既存のVOCALOIDやUTAUといった歌声合成ソフトと比べ、自然性(人間らしさ)が大きく向上しています。

NEUTRINO合成音を調声した楽曲動画↓

投稿者さんの解説記事↓

調声済みとはいえ、かなりの品質になってます。
(個人的には「AIきりたん」というか「AI茜屋日海夏さん」感)

・他の動画


NEUTRINOの技術に関して

開発者の方のTwitterやSoundCloud上の情報などからわかることをまとめてみます。

使用データコーパス

・東北きりたん歌唱データベース
・謡子(f00001j)(HTS-2.3 > Japanese song)

それぞれのリンクはこちら。

モデル作成のために使用した学習データの量は
・東北きりたん……50曲(約60分)
・謡子(f00001j)……31曲(約25分)
のようです。
MusicXMLファイル(後述)の準備は大変ですが、25分ほどのデータでもある程度の品質を保てるんだといった印象。

JSUT-songコーパスという100人の方の歌唱データコーパスのデータ量も25分程度らしいので、いずれは任意歌唱音声合成なども行われるかも?



システムの入出力データと機械学習における入出力データの情報をまとめます。

システムの入出力データ

入力データ
   MusicXMLファイル(楽曲データ、歌詞データ)
出力データ
   音声データ(48kHzサンプリング)

機械学習における入出力データ

入力データ
   音素(フルコンテキスト)・ピッチ情報
出力(推定)データ
   fo(基本周波数)
   mgc(メル一般化ケプストラム)
   bap(band aperiodicity)

NEUTRINOはWORLDという音声分析変換合成システムを使用しています。

WORLDについて大雑把に書きますと、音声から

・基本周波数:fo
・スペクトル包絡:sp
・非周期性指標:ap

といった3つのパラメータを分析、そのパラメータから音声を合成するシステムです。上に挙げた推定データはWORLDのそれぞれのパラメータを簡略化したものとなっております。(foについては対数をとったもの:log(fo)と予想)

機械学習で推定したパラメータからWORLDで合成を行うことで歌声の音声データとなります。


NEUTRINOを使う際参考になる記事

公開されたばかりのソフトですが、有志の方々が参考になる記事を公開されています。

UTAUを使用したMusicXMLファイル生成方法の解説記事。

NEUTRINOは楽曲および歌詞のデータをMusicXML形式で読み込みます。
MusicXMLファイルの作成にはMuseScoreというフリーソフトが使用できますが、既存のVOCALOIDやUTAUといったソフトを使っていた方には若干の手間です。その手間なくMusicXMLファイルを生成する方法を解説したものが上の記事です。
(個人的にはDAWでMIDIデータの作成→MuseScoreにインポート→歌詞の入力で十分なのかなとも思ったり(MuseScoreだと歌詞の入力時に右矢印ボタンを連打する必要がありますが……))

NEUTRINOの特性をふまえた調声方法に関する記事。すごく詳しい。

個人的に驚いた調声法はWaveSurferを使用した調声方法。
機械学習の入出力データに関するところで書きましたが、NEUTRINOでは音素情報が入力として使われており、NEUTRINOフォルダ内のscoreのlabelに保存されています。

そのラベルをWaveSurferというフリーソフトを使用し変更することで、出力音声を変更しようという試みです。

labelフォルダ内にはfull(フルコンテキストラベル)、mono(モノフォンラベル)、timing(タイミング?)のラベルデータが入っていますが、コマンドプロンプト上での実行結果を見てみるとfullとtimingラベルを用いて推定しているようです。

詳しくは、後ほど開発者の方から解説記事が出るそうなので待つのもありです。(実験するのもあり)

・WaveSurfer

・ラベルに関する参考記事


NEUTRINO使ってみた

個人的にもNEUTRINOを使ってみました。

読み込ませたデータはこんなかんじ。
(茅原実里さんの『Awakening the World』)

CubaseでMIDIデータの作成→MuseScore上で歌詞の入力をしました。

画像1

ブレス位置はかなり適当です。
(To 有識者の方、ブレス記号の違いは認識されるんですか?)

1音に2文字を読ませたいような場合(e.g.「ない」)、
そのままだとうまく合成できません。
(「ない」の場合、n+i→「に」という音になる)

また、伸ばす音に関してはタイをつけてないと強引に別の音として歌ってしまいます。

生成音を聴いてみた感じだとノイズ感が若干気になりました。
iZotopeさんのRX7のde-noiseをかけると多少ましになります。

ピッチ編集に関してはあまり詳しくないので特に行わず。

最終的な歌声はこんなかんじになりました。

茜屋日海夏さんみすごい……(らぁら……)


最後に

鮮度重視&散らばっている情報をまとめる意味でnoteを書いてみました。

まだ公開されて数時間ですので、追々いろんな情報がわかってくるかと思います。(数時間で動画公開、解説記事の公開 速度感がすごい……)

詳しい情報は開発者様の方のTwitterをフォローし待ちましょう。

・開発者様のTwitterアカウント

・今後の予定

・有識者の方~