見出し画像

【mac版】 NEUTRINOを使って歌わせる方法 きりたんに歌わせてみた

こんにちは、Rickeyです。

今回はいつもと少し毛色が違いますが、生成AIを用いた無料の歌唱ソフトであるNeutrinoの導入方法をご紹介したいと思います。

とは言っても、概要は公式からとても丁寧なマニュアルが出ているのでそちらを参照していただければ良いと思います。その上で、今回はmusicxmlファイル(後述)をどのように作成すればエラー・バグなく音声ファイルが生成できるのかについて重点的に話していこうと思います。


いきさつ

※ここは飛ばしても大丈夫です。

まずはこの記事を書こうと思い立った経緯について。私はボカロが好きで、よく好きな曲の譜面起こしをしていました。
以前に一回NEUTRINOを使って「天ノ弱」を歌わせる楽譜を作ったことがあるのですが、また歌わせてみたいなと思っていました。
そんな中、Orangestarさんの「Alice in 冷凍庫」を聴いていた時、この曲を歌わせてみよう!と思い立ったわけです。(唐突)
そして、macへの導入記事が少ないように感じたのでまとめておこうと。

ボーカル以外のパートは先に譜面に起こしたので、ボーカル(NEUTRINO)のみに焦点を当てて話していきます。

記事の最後で、今回作成した音声と楽器パートを組み合わせた最終形の楽譜URLを貼っておきます。実際に歌唱&演奏を聴けます。

ソフトのダウンロード

まず、Neutrinoのホームページに移動します。

Start Now と書いてあるところを押して、ダウンロードページに移ります。

Google Drive からのダウンロードの方が高速だと推奨されていますが、時間があり、宗教上の理由でDriveを跨ぎたくないので下にある正規(?)ルートから進めたいと思います。

スクロールすると、バージョンごとにそれぞれの歌声ライブラリが置かれているのが見えます。最新バージョンは良いパフォーマンスが期待される反面、根本的なバグがある可能性もゼロではありません。心配な方は1つ前のバージョンから選んでください。
ここから好きな歌声ライブラリを選びます、と言いたいのですが、先に上部の「NEUTRINO Diffusion (macOS)」をダウンロードします。
歌声ライブラリはこのパッケージの中に移動しないと動作しませんので、注意してください!

「NEUTRINO Diffusion (macOS)」をダウンロードしました。時間があるとはいえ、結構かかりますね。それぞれの歌声ライブラリの説明を読んだりして気長に待ちましょう。(613MBありました。)

ダウンロード完了後、私は書類フォルダに移しました。この移行を前提として下方でコマンドを示すので、心配な方はこの操作を推奨します。

音声ライブラリのダウンロード

ご自身の好きな音声ライブラリを選んでください。「めろう」と「ナクモ」は既に入っているのでダウンロードする必要はありません。
今回は「東北きりたん」を選びました。

ここで、NEUTRINOの利用許諾証明書の他、ガイドラインにも注意してください。ガイドラインが別途ついているものもあり、その範囲を超えた使用は禁じられてます。例えば、今回私が選んだ「東北きりたん」には「東北ずん子のガイドライン」がついています。

ダウンロードが完了後、このファイルを先ほどダウンロードしたNETRINOの中のmodelというファイルの中に移します。ここを間違えるとハマるので、注意してください。

上の写真では、/Users/[ユーザ名]/Documents/NEUTRINO/model/KIRITAN というパス

ダウンロード時は
東北きりたん(NEUTRINO-Library)> KIRITAN
というファイル構造でしたが、事前に入っているMERROWやNAKUMOに合わせるためKIRITANを取り出して移しました。

楽譜の作成-準備

本来はこちらが先なのでは?と思われるかもしれませんがご了承ください。

いくら好きな声を入れても、曲がなければ意味がありません。
ということで、楽譜を作成していきます。

公式マニュアルには

楽譜ファイル(MusicXML)の作成
楽譜の作成には MuseScore( https://musescore.org/ja )を推奨しています。 [ファイル]->[エクスポート]でファイルの種類を非圧縮 MusicXML ファイルにすること で MusicXML 形式のファイルを出力できます。

公式マニュアルより

とありますが、結局はMusicXMLファイル(拡張子.musicxml)が出力できればいいのです。

前回前々回の記事に見られるように私はFlatを日頃使っており、このソフト、正確にはオンラインサービスもmusicxmlファイルが出力できます(Flat Power)。なので、今回はこれを使用していきます。
ちなみに、Flatで出力できるファイルは .pdf .mp3 .wav .mxl .musicxml .mid .png .svgです。

楽譜の作成-ポイント

ここから、歌わせるメロディーを作る際の注意点をお話します。公式の「ひらがな・カタカナ音素一覧表」にも注意点が書かれており、重複する部分もありますが、それに加えてやりがちなエラーの原因を紹介します。

全ての音符に音を入力する

一つでも音符に文字が入力されていないとエラーになります。必ず抜けがないか確認してください。

歌詞が特にない音は入力を忘れやすい

写真の赤枠部分には「あ」と入力するのが良いです。
ただし、例外的にタイの向かう先は入力しなくても大丈夫です。

歌詞は全て全角で

全て全角の「ひらがな・カタカナ」で統一してください。漢字・英語が非対応な上に、発音に意識が向くのでミスに気づきやすくなります。「ぁ、ぃ、ぅ、ぇ、ぉ」を使う音のうち音節表にないものは注意してください。

また、英語フレーズなら日本語で入力することでネイティブ発音に寄せることもできます。
例:
I love you → あいらぶゆー ではなく あいらーびゅー と入力
get out of here → げっとあうとおぶひあー ではなく げらうとぶいやあ と入力

歌詞は発音通りに

ひらがな・カタカナ音素一覧表」の例にあるように
例:
わたしは → わたしわ と入力
きょうも → きょおも と入力

特殊な発音表記

伸ばし棒「ー」は前の音の母音に変換されます。
例:
かーどげーむ → ka a do ge e mu と発音されます。

後ろに「'」(英角シングルクオーテーション)を入れることで、子音のみの発音にすることができます。より自然な発音にでき、カ・サ・タ行などに効果が現れやすいです。
例:
はく'ぎん → ha k gi N
あし'た → a sh ta
いつ'か → i ts ka

「っ」について

「っ」(ちいさな「つ」)は基本的に音符があるところに入力してください。
一つの音符に対し複数の文字を入力しても大丈夫なので、例えば音符と休符の交互であるとき、以下のように音符側に「っ」を入力してください。

各音符に対応する歌詞の範囲を赤線で示しています

音の詰めすぎに注意

いくら一つの音符に複数の文字を入力できるとはいえ、入れすぎるとうまく発音されません。そういった時は音符を分割して歌詞を入力してください。歌わせてみないとわからないので、記事の下方の方法で歌わせてみてから調整してください。
例:

写真では、すべて8分音符が本来の記譜ですが、「かき」で子音に詰まるので3:1に分割して付点16分音符+32分音符としています。

和音は禁止

コーラスも同時に歌わせたいなあと考えて、和音に歌詞を入力しようとすると、エラーになります。どうやら片方の音符にのみ歌詞が充てられていると解釈され、上記の入力忘れと同等の解釈になるようです。

これだとエラー

コーラスを歌わせたいのであれば、別途コーラス用の譜面(.musicxmlファイル)を用意してください。楽譜をコピーして音高を変え、再出力すれば大丈夫です。

リピート記号は禁止

内部の処理は一方向のみに行われるので、リピート記号で小節を戻ったりすることはできません。小節が増えてしまいますが、あくまで音声生成用なので該当範囲をコピペして対処してください。

これだとエラー

強弱記号は意味をなさない

音楽記号の
$${ppp}$$ : ピアニッシシモ
$${pp}$$ : ピアニッシモ
$${p}$$ : ピアノ
$${mp}$$ : メゾピアノ
$${mf}$$ : メゾフォルテ
$${f}$$ : フォルテ
$${ff}$$ : フォルテッシモ
$${fff}$$ : フォルテッシシモ
< : クレッシェンド
> : デクレッシェンド
は基本的に音声出力において無視されます。声の大きさは音声加工ソフト等で変更する必要があるようです。

転調・転拍子・BPM変化は大丈夫

ラスサビで転調する曲は多々ありますが、Neutrinoはしっかり対応しています。
また、途中で拍子が変わる場合や急に速度が変化する曲も大丈夫です。
例:
4分の4拍子 → 4分の3拍子 → 4分の4拍子
 8分の6拍子 → 4分の4拍子
BPM 170 → BPM 60 → BPM 190

グリッサンドで語尾を上げ下げ

単音のグリッサンドにも対応しています。
これを使うと、例えばレ〜ミにグリッサンドをかけることで語尾を上げた、疑問文のような歌い方ができます。

逆に、シ〜ラへ下がる箇所に掛けると、語尾を下げた歌い方になります。これはロングトーンの切れ目に使えそうなテクニックです。

第2声部があるのは目を瞑って下さい

いずれも、2音間の幅が大きすぎるとおかしくなるので注意してください。

音声ファイルの生成

musicXMLファイルが用意できたら、早速生成処理を行っていきます。
まずは最低限の設定で出力してみます。

まずは、作成したmusicXMLファイルを NEUTRINO/score/musicxml 以下に置きます。間違えないようにしてください。

既にサンプルが入っている

そして、NEUTRINO直下にあるRun.shというファイルをテキストエディタ等で開きます。(右クリックして「このアプリケーションで開く」→「テキストエディット」を選択)

開いたら、下の写真の赤矢印のところを書き換えます。

Visual Studioで開いていますが気にしないでください
セーブを忘れずに

変更する際は、「=」の前後にスペースを開けるとエラーになります。注意してください。
ダメな例:
BASENAME= my_score_01
良い例:
BASENAME=my_score_01

BASENAME= 
先ほど移動したmusicXMLファイル名を記します。拡張子.musicxmlは書かないでください。
ModelDir=
歌わせる音声ライブラリの名前を記します。これは NEUTRINO/model 以下にあるフォルダ名をそのまま書いてください。おそらくどの音声ライブラリも英角大文字だと思われます。

他のパラメータは修正が必須ではないので後で説明します。
とりあえずこれで進めます。

次に、このRun.shをターミナルから実行します。
公式マニュアルにはFinderの現在位置からターミナルを起動する方法に関してリンクを貼っていますが、正直リンク先での方法より直接ターミナル内で移動した方が速いです。
まずはターミナルを起動します。黒背景に「>_」が書かれているアイコンです。

見つからない場合は、「Launchpad」(デフォルトで左から二番目)から「その他」カテゴリを見てください。

起動したら、以下のコマンドをコピぺしユーザー名を書き換えてEnterキーを押してください。カーソルの移動は矢印キー ←→ でのみ可能です。

cd /Users/ユーザー名/documents/neutrino

cd は現在いるディレクトリを移動するだけのコマンドなので安心してください。
移動できたら、%の前にneutrinoの表示が付くと思います。

ユーザ名表示の横に付く

そうしたら、Run.shを実行するため以下をコピペしてEnterキーを押します。

sh Run.sh

sh は shファイルを実行するコマンドです。そうすると処理が始まります。

それなりに時間がかかります。

ENDという表示がされ、再び以下の表示が出てきたら終了です。

生成した音声ファイルは NEUTRINO/output 内に置かれます。

.wavファイルがメインですが、通常のものと_worldと付けられたものがあります。
前者(NSF)は通常の生成方法で、後者(WORLD)は

音の高さ・声質・声のかすれ具合から音声波形を信号処理ベースのボコーダーで合成します。 NSF と比較してレガシー・伝統的なボコーダーの音色の音声が特徴です。またピッチシフト・ フォルマントシフトなどの加工に強く、適正音域から大きく外れた音声にも強いです。

公式マニュアルより

というものです。毎度2つ出力されるので、好きな方を採用してください。
これで、一通りの流れは終わりです。

二回目以降の出力は、必ずmusicXMLファイルの名前を変えてNEUTRINO/score/musicxml 以下に置き、

Run.shファイルのBASENAME=もそれに合わせます。

実行時のオプション

先ほど飛ばした、Run.shのオプションを公式マニュアルに沿って見ていきます。Run.sh内の上から順に見ていきます。

Project settings

BASENAME=については割愛します。

NumThreads=

使用するプロセッサ数を設定します。
GPU 利用時は GPU の設定が優先されます。

公式マニュアルより

InterferenceMode=

処理速度・品質を設定します。(4: advanced、3: standard、2: elements) Advanced
InferenceMode=4、高品質・48kHz、GPU 向け
Standard
InferenceMode=3、通常版・48kHz、CPU 向け(Passmark score 10000~) Elements
InferenceMode=2、高速・24kHz、ローエンド CPU 向け(Passmark score 2500~)
ご利用の PC のスペック・用途に応じてご利用ください。 ※参考(CPU 性能比較表【2023 年最新版】) https://pcfreebook.com/article/450856544.html

公式マニュアルより

macでのGPU処理は2024/8時点で非対応なので、CPUで処理されます。
公式マニュアルのリンク先から調べると、基本的にInferenceMode=3のままで大丈夫です。

musicXML_to_label

SUFFIX=

先ほどまで、.musicxmlを読み込ませていましたが、ここで.mxlに変更することも可能です。

NEUTRINO

ModelDir=は割愛します。

StyleShift=

楽譜全体を指定のキー分だけ上げて推定を行い、ピッチ変更機能で指定のキー分下げる 処理を行います。
Run.sh の”StyleShift”の項目を-5~5 ぐらいの整数値に設定してお試しください。 例えば”2′′に設定すると 2 個上のキーの歌い方、”-2′′にすると 2 個下のキーの歌い方をキ ーを変えずに出力することができます。上手く使うことで、得意な音域の歌い方にした り、低いキーの落ち着いた歌い方を出すことができます。
"StyleShift=-1", "StyleShift=0", "StyleShift=1"のように三パターンを出力し、それぞれの 良い部分をピックアップすることで複数テイクを収録したような状態にすることも可能 です。

公式マニュアルより

音声ライブラリによっては高音域を張り詰めた声で歌うものや低音域を落ち着いた声で歌うものがあると思います。
ここを設定すると、推論自体をそのキー分上げてor下げて行い、結果を元のキーに戻すようになります。結果、音高によらず歌い方を調節できる、というものです。

NSF

出力されるwavファイルのうち、_worldとついていないファイルに関わります。

PitchShiftNsf=

ピッチを変更します。
単位は半音単位となっており、"1.0"に設定すると 1 個上のキーの高さ、"-1.0"に設定する と 1 個下のキーの高さになります。 上手く使うことで、推奨音域外の音を歌わせることが可能です。

公式マニュアルより

例えば、-6キーのmusicXMLファイルを入力として、ここで6.0と入力すれば原キーが推奨音域外でもある程度綺麗に歌わせることができます。

私の場合、歌わせたい曲の音域が東北きりたんの推奨域B3~D5を大きく超えたC4~D6の範囲であったので、まずFlatで-6キーに下げたものをmusicXMLファイルとして出力し、その名をBASENAME=に入れた上でここを6.0に変更しました。

原曲キーだとG5あたりから音声が壊れてしまいますが、これをすると高音も壊れず歌わせることができました。

WORLD

出力されるwavファイルのうち、_worldとついているファイルに関わります。

PitchShiftWorld=

ピッチを変更します。
単位は半音単位となっており、"1.0"に設定すると 1 個上のキーの高さ、"-1.0"に設定する と 1 個下のキーの高さになります。 上手く使うことで、推奨音域外の音を歌わせることが可能です。

公式マニュアルより

NSFのPitchShiftNsf=と同様です。
FormantShift=

声質を変更します。 上げると子供のような幼い声、下げると大人のような声になります。

公式マニュアルより

推奨範囲は-0.85~1.15くらいでしょうか。

SmoothFormant=

ピッチを滑らかにします。 0~100[%]の間で強さを設定できます。

公式マニュアルより

EnhanceBreathiness=

息成分の強さを設定します。 0~100[%]の間で強さを設定できます。

公式マニュアルより

このオプションより下の記述は内部処理に関わるので改変しないでください。

さいごに

納得いく音声ファイルができたら、おしまいです。

私は「いきさつ」セクションで話した通り、この音声を他の楽器と組み合わせてOrangestarさんの「Alice in 冷凍庫」をfeat.東北きりたんで再現しようとしていました。

他の楽器との音量の兼ね合いを適宜調整して、オーディオFXを施した完成形のFlatページを載せておきます。ぜひ聴いてみてください。

音割れを防いだとはいえ、やはり高音で張り詰めた声色がきつくなってしまっていますね。まあこれは推奨音域外を歌わせようとした代償として逃れられないものです。

よければFlatのマイページもご覧ください。最後までお読みいただき、ありがとうございました。質問コメントも答えられる範囲でお答えします。



では。


いいなと思ったら応援しよう!

Rickey
貴方の気持ちが1000年生きられます。