見出し画像

作った曲をneutrinoで歌わせたくて苦労した話


■始めに


こんにちは!昨日に引き続き投稿です。

昨日は所信表明に終わっていましたが、今日から何か本格的にやってみようとPCを立ち上げてみたものの、うーむ何から手をつければ良いのやら状態。
ただ、いきなり曲が作れるわけでも、アイデアがあるわけでもないので、とりあえず興味があることから実現させてみようと思い立ちました。

そういえば「ボカロPなってみたい!」と思い、過去に色々調べてみたものの、そのハードルの高さもあって過去に諦めたことがありました。導入するのも高いし

しかし、どうやらneutrinoというツールを使うことで、VOICEVOXのキャラクターたちを歌わせることができる様子!しかも無料、AIでmidi情報を踏まえて歌っぽく調整してくれるとのこと。え、最高かよ

というわけで、今日はその調査と、導入を行ってみようと思い作業をしてみました。これが実現できれば、今後のモチベーションだいぶ違うんじゃないか?という期待も膨らむばかりです。

…が!!!!
思いのほかこれが難しかった!!!

いろんな記事を参考に、これなら15分くらいでできるかも?と思った私が本当に浅はかでした・・終わってみたら4時間以上を費やす大作業に。。
多分もっと技術があれば全然サクッといけるんだろうけど、今の私にはそんなスキルがなかった

そんな反省と、今後同じことに躓かないようにここにメモとして残していこうと思います。
同じように、neutrinoでキャラクターに歌を歌ってもらいたいんだ!と思っている方で躓いている方がいれば、もしよければ何かのヒントになれれば


■今日のダイジェスト

  • neutrinoを使ってVOICEVOXキャラに歌ってもらいたい

  • muse scoreで歌詞作成

  • midi抽出で罠発生

  • でも無事アウトプットできたよ


■やってみたこと

まずは曲の準備です。
そういえば、過去に作っていた途中の曲があったので、これを再利用することにしました。これも途中で諦めちゃったなぁ

過去にちょっとだけ頑張ってた曲。オーディオファイルなしで全部midiで作ったると思って最後挫折した

よし、素材はある!
というわけで、とりあえず今日のゴールはこの曲のメロ部分を誰かに歌わせることだ!

neutrinoの使い方は、様々な方のブログで発信されている記事を拝見しながら、公式ホームページからパッケージをダウンロード&インストール。あとVOICEVOXの音声ライブラリもまとめてダウンロード。

…お、このneutrinoはどうやらGUIが存在しているわけではなく、ターミナル上からコマンドを指定して動かすタイプのアプリの模様。なるほど、なんだかちょっとハードルが高く感じるぞ。
そしてその予感は後ほど的中する

とりあえずこのneutrinoのインストールと、初期設定も完了しsample音源の抽出もできた!


macでneutrinoを動かす時のコマンドは以下

#neutrinoをカレントディレクトリで選択している状態
sh Run.sh


よし、neutrinoはとりあえずok。
でもこれだけではまだ何もできない。メロディを提供して、それに歌詞をつける必要があるのだ。

そこで新たに登場するのが musescore というアプリケーションである
このツールでは譜面を作成したり、その譜面に歌詞をつけたりすることが可能となるようだ。
そしてneutrinoで好きに歌わせるためには、このmusescoreでメロディに歌詞をつけて、musicXML(非圧縮)のファイルを抽出し、それをneutrinoで読み込ませることでオーディオファイルを出力するという寸法の様子。

しかも、musescoreはmidiの読み込みが可能だということ。
つまり…

  1. logic pro xからメロ部分のトラックをmidiで出力

  2. 出力したmidiをmusescoreで読み込ませ、音符に歌詞を入力してmusicXMLファイルを出力

  3. neutrinoを使って該当ファイルを読み込ませ、好きな音声ライブラリを指定すれば、その音声ライブラリがメロを歌ってくれる→完成!!

この手順で、簡単に作った曲を歌ってくれるというわけです。
なーんて簡単なんだ!

…と、ここまで小一時間ほどでこのシナリオまでは完成。あとは実際にやるだけなのですが

問題発生

じゃあ、実際にlogic pro xから、メロディが入っているトラックから、該当のリージョンを指定してmidiを抽出してみよう

・・・

あれ?なんか、譜面がすごい詰まってて、テンポ情報もベロシティも何もない。ただ音符が羅列してる…?

こんなのができた


どういうことだってばよ…

そこでchat GPTに相談してみたところ、どうやらテンポやベロシティなどの情報を含んでmidiとしてアウトプットするには、特定のリージョンだけやトラックだけではなく「曲全体をmidiとしてアウトプットする」必要があるのだとか。

ははぁなるほど。。
早速一手つまずいたけど、こんなことでへこたれる私ではない。
今の私にはchat GPTちゃんという最強の相棒がいるのだから、何があっても大丈夫なのだガハハ

そんなことを思いながら、今度は曲全体をmidiとして抽出。これで勝った。

そしてmusescoreに読ませてみた

全midiを読み込ませたやつ


え、、なんか多ない・・・・・?
確かに全部のトラックをmidiにしたから当然っちゃあ当然なんだけど、これどうしたらええねん。

と思ったら、musescoreの上部に「パート」というボタンがあるのを確認。
なるほどね、これでメロだけのパートを指定して、それ以外のパートは削除すればいいわけね。はいはい、これで私の勝ちです。

・・・あれ、メロだけのトラックを残したいんだけど、なぜか「コード」のトラックも一つの譜面として表示される。。。

下の方いらんねんな


いわゆるト音記号とヘ音記号だ。私が歌詞をつけたいのはこのト音記号だけなのでヘ音記号はいらないのだが、どんなに頑張ってもヘ音記号がセットでついてきてしまう。
おかしい、logicではこのヘ音記号に該当する部分は別のトラックで作成をしているはずなので、分離していて欲しいのだが、何をどうやってもこのセットで出力をされてしまうのだ。

助けてchat GPT!
と、質問をしてみたのだが、なかなか的を得た回答が返ってこない。
質問の仕方が悪いのか、chat GPT側が認知していない問題なのか、とにかく解決の仕方がわからない。
midiとして出力されている時点で何かしらの問題が起きているのかと、logic pro x側でスコア画面を出したりもしてみているが、やればやるほど何が何やらわからない状態だ。

ここで1時間以上の足止め。
色々試した結果として、どうやらmusescore側でヘ音記号部分を削除する方法が見つかったのでそれで対応することにした。おそらく本来のやり方ではないのだろうが、仕方ない。


楽器>メロが含まれている楽器を選択>ダブルクリックで展開するとト音記号とヘ音記号が露出>ヘ音記号を選択しゴミ箱ボタンを入力で削除可能


よし、これでようやくメロだけの楽譜が抽出できた!
もうneutrinoインストールからここまでで3時間近くが経過している。わからないことだらけで既にストレスがやばい。コーヒーが止まらない

とりあえず「ららら」でいいので歌詞を入力していく
歌詞の入力は、入力したいメロ上でcommand +Lで歌詞の入力が可能になる模様


歌詞の入力はCommand+Lから


で、できたぞ。。。!
この譜面をmusicXMLとしてエクスポートして、neutrinoのフォルダ内「musicxml」に格納して・・・

 Run.shの内容を修正


実行前に Run.sh ファイルを↑のように書き換えて、 sh Run.shで実行!!

これで私の曲をきりたんがらららで歌ってくれるはず!!!さあ、こい!!!!!!!!


・・・・

なんかエラー吐いてますやん


はあああああああああああ・・・(クソデカため息)

なんかいっぱいエラー出てる・・・もう諦めようかな・・・

そういえばこれまでlogic続かなかったのも、なんかこういう上手くいかないことが連続して嫌になってとかだった気がするし
もう考えるのしんどいしそもそもアイデアもない中で曲を作ろうとしていること自体が滑稽だしなんかモチベーションもない気がするしコーヒー飲みすぎてるし腰痛いし頭痛いし貴重な休みをもっと有意義に使うべきではないかと思い始めてるしあとコーヒー飲みすぎてるし


・・・いや、やろう。。ここまでやったんだし

さて、エラーの詳細を見てみる。どうやら大きくふたつあるようだ

  • Number of notes in a measure is too large

    • 譜面の中に不自然なものが入っているから起きているエラーと思われる。midiで入力しているときに入ってしまったゴミのようなものが反応している思うが一旦放置

  • 〜小節目に未定義の歌詞「」があります

    • ファイルをもう一度見てみると、確かに音符に対して歌詞が入っていない項目があり。一つでもこれがあるとエラーになってしまうようだ。

とりあえず前者は今すぐ対応できない気がしたので、後者だけでも調整をしてみようと思い、抜けているポイントに歌詞を埋め込んでみて再度ファイルを抽出。

もうこれでダメだったら、logic上でmidiのゴミがないかどうかも再チェックしないとだな。。と半ば諦めつつ、再度neutrinoに読み込ませてみた


・・・

お!!動いた???


ファイル生成を始めている!!


動いてる!確かに動いている!!
このまま100%まで動いてくれ!頼む!!!


・・・うおおおおおおおおおできた!!!!!!
wavファイルが生成された!!!
早速聞いてみよう
聞こえる!!!
きりたんが「ららら」で私の歌を歌っている!!!!

この時点でもう半泣き。約4時間、ひたすらPCとエラーに向き合い続け、ついにアウトプットに成功できたのである。

このwavファイルを改めてDAWに取り込んで・・・
そうして、改めて生成された曲がこちらです


きりたんがオーディオファイルで取り込まれた様子


嬉しい・・・まだ歌詞も入力できていないし、調整できてないから下手くそだけど、これで少しだけアウトプットのイメージができてきた気がする。

neutrinoはAIによる発声調整なので、本格的にボカロとしての完成度を高めていきたいというかたはやはりVOCALOIDの導入が良いのだと思うが、まずは曲を作ってみて歌わせたいというニーズであればまず入り口として十分すぎるくらいだと思う。
ただ、初期導入とテストでこんなに時間がかかると思わなかった。。おそらく同じようなところで躓いている方も少なくないんじゃないかなと思うので、そんな方にこの記事が少しでも参考になれば嬉しいなと思っています。


■今日の気づき、つまずきまとめ

  • 作った曲をmidiを出力するときは「全体」で出力をしないと、プロジェクトのテンポやベロシティなどは引き継がないため、譜面に起こしてもそのままいじることはできない

  • neutrinoでファイル生成する場合には、音符に対する歌詞の入力漏れは絶対に解決させる必要がある

  • musescoreでトラックが分かれているのにト音記号とヘ音記号で同じ楽器として判定される場合は、どちらかの記号をmusescore上から削除してしまえばとりあえず解決する。neutrinoに読み込ませる場合は必ず一つの楽譜ラインであることが必要。

  • 作曲支援ツール導入をする場合には、ある程度の時間の余裕と心の余裕を持っていないと死ぬ。そんなに簡単に支援をしてくれるわけではない。

    • でも実現できた時の喜びはひとしお!!!!


次回も頑張っていく予定です!
幸い年末年始は少し長めのお休みなのですが、もうすぐ仕事が始まるのでまた忙しくなると思いますが、なんとか継続していきたいと思います。ではまた次回!

この記事が気に入ったらサポートをしてみませんか?