自分と妻の歌声をAIボーカルシンセ「DiffSinger」に進化させた。もうボイチェン不要。アルゴリズムベースの自動作曲ソフトとも統合(CloseBox)

テクノロジー AI
松尾公也

テクノエッジ編集部 シニアエディター / コミュニティストラテジスト @mazzo

特集

前回は、ゼロショットSVS(Singing Voice Synthesis、歌唱合成)の「SoulX-Singer」を妻の歌声で実験してみました。英語と中国語でしか使えないこのAIボーカルシンセに日本語をなんとか歌わせるところまではできました。では、次の段階へ行きましょう。

並行して、「DiffSinger」という、DiffusionモデルのSVSにも取り組んでいます。ボーカルシンセは、ほとんどの場合、歌に使われる音素を網羅するために、非常に多くの組み合わせを歌として収録し、そこから音の素片を取り出し、組み合わせていきます。

歌声合成とわたくし

その話をする前に、歌声合成の技術進化について、個人史とからめながら解説します。

音の素片の組み合わせ方にはさまざまな技術があって、例えばVOCALOIDは周波数領域(EpRモデル等)音を分析して滑らかに合成し、UTAUは時間領域(PSOLA法等)で波形を直接重ね合わせて(オーバーラップ・アド)結合しているというやり方です。

その後は統計的手法を使ったSinsyやCeVIOが登場。あらかじめ録音した音声素片を繋ぎ合わせる従来の手法から進化し、近年ではDNN(ディープ・ニューラル・ネットワーク)やCNN(畳み込みニューラル・ネットワーク)といった深層学習(ディープラーニング)技術を用いた、AIによる全く新しい歌声生成の手法が登場しました。NEUTRINO、CeVIO AI、Synthesizer V AI、そしてVOCALOID6などがそうです。ただ、一つの歌声を成立させるためには多くの収録データが必要だというのは変わりません。

そのため、高品質なボーカルシンセは、レコーディングだけでなく、その後の整形、モデル化などの作業を含めると多大な時間とコストがかかります。このため、キャラクターや声優の歌声をVOCALOID化、Synthesizer V化するためにクラウドファンディングを実施したりするわけです。

先日のSoulX-Singerは10~20秒の歌声データがあれば聴けるレベルの歌声モデルを作ることが可能で、大幅に短縮する技術なのですが、歌声としてはまだまだ不安定で、1曲まるごとこれだけで聴かせられる段階ではありません。

それでも、個人がむちゃくちゃがんばればボーカルシンセの音源を作ることはできます。初期のUTAUでは、歌うための楽譜やツールが用意されていたこともあり、日本だけでなく海外からも多数のボイスモデルが登場しました。筆者も自分のためだけですが、OREMOという収録ツールを使って自分ボイスバンク(連続音)を作りました。

UTAUのMac版であるUTAU-Synthと、歌から音素を切り出す耳ロボPさんによるfransingというツールにより、3曲だけ残っていた妻の歌唱データから、なんとか使い物になるUTAU-Synth音源「妻音源とりちゃん」を作ることができたのは2013年のことです。

日本語の歌が2曲、英語が1曲で、母音、子音ともに完全に不足した状態でしたが、ピアノロールでの入力に工夫を凝らす(子音と母音を別のところから組み合わせてクロスフェードする)ことで、曲として成立させました。およそ7年にわたり、これで100曲以上を制作しました。

UTAU-Synthが更新を停止して最新OSでは動作しなくなってしばらく経った2020年の末に、Diffusionモデルを使ったAIボイスチェンジャーの技術が登場しました。1時間分の音声データがあれば、それにラベルや音高のデータがなくても学習してAIモデルを作れる、というものです。

筆者はGoogle Colabを使ってDiff-SVCというソフトで妻の歌声をAIモデルにしました。最初に作ったカバー曲の一つ「Desperado」が、第一回AIアートグランプリを受賞し、その曲は台湾の台北当代芸術館に、芸術作品として展示されるに至りました。

その後、Diff-SVCよりも進化したRVCというAIボイチェン技術に移行し、現在もこのソフトで学習・推論を行なっています。これは、妻の歌声だけでなく、プロの歌手のかつての歌声を再現したり、許可を得た歌手の替え歌を作るのにも使っています。

その後に登場したのが、同じDiffusionモデルを用いた、今度はボイチェンではなく、本格的な歌唱合成。ピアノロールにノート(音符)を置いて、そこに歌詞を書き込んで歌わせる、VOCALOIDに準じた方式のボーカルシンセです。

新世代のAIボーカルシンセは商用ソフトがいくつかありますが、音源を自作できるのは主にオープンソースまたは無料提供のソフトの方です。こちらは現在、DiffSingerとENUNUが双璧となっています。自分の歌声を登録できるSuno、ACE-Studio、ReSingなどの商用ソフトも登場していますが、著作権問題もあって、自由に制作するには高いハードルがあります。

前置きが長くなりましたが、今回筆者が取り組んだのは、DiffSingerの方。前回の記事で、素材データの収録環境までは作ったのですが、実際の録音はまだでした。まずそこからスタートです。

DiffSingerのためのボーカル素材を収録する

目的は、DiffSingerの歌声モデルを作ることなのですが、前提として、およそ1時間分の歌声データで、必要な音素が最低でも20回以上は収録されなければなりません。

これを、自分の歌声で収録していきます。自分の歌声なら、その曲も自分で歌えば良くね? となるのですが、実はそこに隠された目的があるのです。

DiffSingerは大量の音データを「新たに録音」しなければなりませんが、妻の歌声はもう録れません。あるのは数曲の歌唱トラックと、以前作ったRVCのボイチェンモデルだけ。

ならば、自分で収録した歌声データを妻の声にボイチェンしたら素材になるのでは? そう考えました。

その目的に特化した収録インタフェースと学習の道筋を、Claude Opus 5に検討してもらいました。

その結果、いけるのではとなったので、自分の収録から開始しました。新世代の妻音源のためです。

Claudeが作ってくれたのは、ブラウザでアクセスするとマイクの調整などを行なってくれる親切設計。歌う歌詞のフレーズは自動的に提示してくれます。そこはOREMOのときと大きく変わりません。ただし、もともとの歌唱データがあって活用したい場合は、そこで網羅できる音素を外した歌詞になります。省力化できるというわけです。

筆者の場合はゼロから全部やる方式にしました。後で妻の歌声に変換するにはできるだけ均質な音源がいいだろうと考えたからです。

収録が進んでくると、これがなかなかの難物だというのがわかってきました。

最初はごく単純な歌詞を一定のリズムで歌うだけなのですが、通常の文章では全ての音素をカバーしきれないので、途中からは訳の分からない音素の組み合わせ文に。

文字を拡大しても読み間違えるし、目が追いきれない。文字を拡大してしまうと、改行された行頭に「ぁ」が残ってたりと、その難読文字列モードになってから2時間くらいかかりました。

1回で一気に録音したかったのですが、結局2日がかりに。声の調子が日によって違ってくるので、一続きで録りたいところですが、できないものはしかたがない。

とにかく収録が終わりました。

この時点でラベル付け(音素と実際の収録音の突き合わせ)はほぼ終わっているので、整形にはあまり時間が取られず、そのまま学習に入ります。

自分の歌声を学習させる

今回はDiffSingerの学習は長時間走らせるので、DGX Sparkにおまかせ。数時間経つと、とりあえずのチェックポイント(モデル化したもの)が出来上がりました。まだ完成版ではありませんが、とりあえず聴けるレベルのもの。これで様子をみます。

前回のSoulX-SingerのときにすでにDiffSinger用のタブは作ってあったので、そこにモデルを追加。出来上がったzipファイルをドロップして指定すれば歌手(この場合は自分、Koya)を選んで歌わせることができます。

出来上がったものを聞いてみたのですが、声域が狭いようで、高い声だとかすれてしまってます。ちゃんと歌えているところはクリアーな自分の歌声なので、とりあえずは良いかな、ということでOKということに。

次に、自分の声をベースにした、妻音源のDiffSingerボイスの学習に移ります。その前に、RVCをセットアップ。これまでRVCはWindowsマシン(RTX 4090搭載)で学習・推論を行なってきたので、そこにあるウェイトをDGX Sparkにコピーし、自分の声で収録した素材データを妻の歌声の素材データに変換します。

自分の声をボイチェンして妻音源の学習スタート

変換が終わったら、妻音源の学習に入ります。RVCでボイチェンした自分の歌声を学習するわけですが、こちらも特にエラーなく進んで、自分のボイスと同じペースで2万ステップまで完了。ここでいったん聴いてみます。

非常にクリアーな、妻の歌声になっています。ただ、これも自分の声と同様に声域が狭い。改めてClaude Codeに尋ねると、それは収録時にそうなってるから仕方ないことだとの返答。

まあそうだよね。UTAUの収録のときもそうだったし。むしろ、収録時に一定の高さとリズムを維持してと言われたから違和感あったんだけど。

これだと1オクターブにも満たない声域なので、なんとかしないと。

ピッチ変換でずらしてなんとかする方法をClaudeが考えついたようなので、それに従って、再度やってみました。

具体的には、収録済み音源をピッチ変換して、+5、+10の音源に拡張し、それらを加えて広い範囲の音源にすること。それで行けるかどうかの確認ツールも作り、大丈夫そうだということで、GOとしました。

最初から声域のことを考慮すべきだったのですが、収録をゼロからやり直すのもつらい。まずはこれでいきましょう。

ということで、拡張した収録音源で、再びとりちゃん音源を学習。

2万ステップでとりあえずチェック。最初のUTAU版とりちゃんカバーであるユーミン「ひこうき雲」で試してみました。前のバージョンでは低すぎて出なかったところもなんとか出せるレベルに。

そう。今回のボーカルエディタはかなり簡略版で、ノートの長さ調整やビブラートはシンプルな編集しかできないようになっています。それは、どうせDAW(ぼくの場合はLogic Pro)に持って行って、そこでFlex Pitchで微調整するので、ボーカルエディタ自体でやる必要はあまりないため。

清廉な感じの歌い方で、RVCで自分の歌声をボイチェンしたもの、UTAU-Synthの頃の初期バージョンとも違う、世代が一つ進んだボーカルシンセになりました。

ただ、これだと人間っぽさが不足しているというか、生っぽさが皆無というか、そんな感じがします。

本人の歌唱に寄せる仕上げ学習

そこで、最後の仕上げです。

「雨の街を」を2012年に歌った録音は、まだ元気があった頃で、本人らしい歌い方ができていて、声のトーンも良いもの。録音こそiPhoneのEarPodsマイクからでしたが、これを使い、そこから声質と歌い回しを学習するようにしました。こういうのはできないと思っていたのですが、Claudeができるようにしてくれました。

Koya 64000ステップ:自分の声。停止中、書き出し可
Tori (v1) 26000ステップ:音域 5.8半音。保存済み
Tori2 (v2) 22000ステップ:音域 11.2半音。B3~G4 が実用範囲 ← 土台
ToriReal step 8000ステップ:仕上げ学習

この仕上げ学習が完了すれば、妻音源とりちゃんDiffSinger版が仕上がります。

出来上がった音声モデルの不具合を修正

仕上げ学習の途中経過バージョンで試してみました。たしかに彼女らしさは増した感じがします。ただ、長く伸ばしていると、そこに小さく「おー」が挟まれてしまう。本来なら無音の区間です。

その修正をClaudeに依頼したところ、原因がわかりました。学習用の整形時に、次の音までを切り出していたせいです。ラベリングの問題。これを修正し、仕上げ学習を最初からリスタート。

音素がどこからどこまでか、というのは非常に難しい判断で、UTAU音源のときにもさんざん苦労した覚えがあります。原音設定というやつですね。多少の荒れ具合はもう覚えてしまって、後で編集していました。

今はそれを口頭で指示できるのでむちゃくちゃ便利な世の中ですね。これは、普通のUTAU音源制作にもAI使った方がいいのでは、と思いました。

何よりいいのは、自分の躓きポイントをその都度修正・改善していけるところ。車輪の再発明的ではありますが、そのぶん自分にとって不要な機能を入れる必要がなく、シンプルな設計にできます。汎用ツールにはないことです。

さて、仕上げ学習で「おー」問題は直ったのですが、今度は別の問題が。「わ」の発音がおかしいのです。「は」に聞こえる。調べたところ、「w」の音素が少ないため、どうしようもないという結論。どうしたらいいかというと、音素が少ないものは、Koya→RVCボイチェンの音にフォールバックするようにするという提案。とりあえずこれでやってみました。

しかし、2000ステップを完走させたところ、「ダメでした」との報告が。一箇所だけ置き換えても他の多くの箇所で音素が少ない問題が邪魔をするので、効果がないという結論に。

Claudeからの提案の一つは、英語の曲をカナ表記して学習してみてはどうかというもの。

2013年はじめに収録した、ビートルズ「If I Fell」のカバーが使えます。

この歌詞をカタカナ表記に直して(自分の耳で)、学習させます。

音の区切りがおかしいというので、再生しながら確認できるツールを用意してくれて、こちらで目視しながら確認。

42~43秒がちゃんと取れてないというので、そこだけ学習から除外することに。このように、問題があればそれを確認するためのツールをその場で作ってくれるのがヴァイブ・コーディングのありがたいところ。

結局、最後の録音曲である「その後の古時計」以外の2曲(日本語と英語)を使うことになりました。UTAU-Synth版に近い構成です。その後の古時計は他界する9日前にスタジオ収録した最期のレコーディングなのですが、バランスを考慮して今回は使っていません。ただ、RVCでは使っているので、この録音のDNAは受け継いでいます。

この時点でも完成度は高く、仕上げ版と仕上げ前版を併用すれば、事実上問題はありません。併用する方針をClaudeに伝えたら、「じゃあ複数モデルを同時に出力できるようにしましょうか。Logicに一緒に読み込めて便利ですよね」といって実装してくれました。超便利。

一部の音素や音高が出ないモデルがあっても、別のモデルだとうまくいったりするので、活用しがいがあります。

黄昏バラードジェネレータに歌声を統合

さらにもう一歩、前進させてみました。

初期ユーミン風バラードをアルゴリズムで生成する「黄昏バラードジェネレータ」との統合です。

ボーカルエディタのフロントエンドであるVox Score Workbenchに黄昏バラードのタブを設置。そちらに移動すると、出来上がった曲を、Vox Scoreで歌わせるコマンドが用意されるようになりました。さらに、仮の歌詞まで作ってくれるので、Vox Scoreに遷移すると、すぐに日本語歌詞がついた歌を聴けます。

歌詞フィールドでは!でフレーズが区切られているので、音素の数を変えないように調整すれば、そこで歌詞を変更できるし、ノートを分割すれば、歌詞の文字数を増やすことも可能。もちろん、メロディーも変えられます。黄昏バラードで生成した楽曲のキーは、自動的にDiffSingerの音域に合わせるようにし、伴奏もそれに従って移調するという仕組み。

ここまでやっている例はなかなかないんじゃないだろうかと、少し得意げ。

ついでに、これまでのアルゴリズム楽曲生成プログラムと同様に、動画書き出しも実装しました。ミュージックビデオ作りが便利になりますね。

黄昏バラード・ジェネレータから起動した場合には、仮歌詞とコードも動画に埋め込まれます。

こうして、妻の歌声はUTAU-Synth(時間領域での素片接続)、Diff-SVCとRVC(Diffusionベースのボイスチェンジャー)、そして完全なAIモデルボーカルシンセであるSoulX-SingerとDiffSingerという第3世代への進化を遂げることができました。

音質がクリアになっただけでなく、彼女のやさしい歌い方が全体に感じられるようになり、またあちらの世界に近づいたような気がします。

だからといって、RVCのボイチェン機能が不要になったわけではありません。学習にはむちゃくちゃ役立ちましたし、これからもフル活用するつもりです。そのために、これまでWindowsマシン(RTX 4090)にアクセスして変換していたのを、ブラウザベースでできるよう、DGX Spark(互換機)にサーバを立てました。

タブ切り替えで、DiffSinger、SoulX-Singer、フォルマント、RVCといった複数の歌唱合成・ボイチェンを選んで使えるようになりました。

《松尾公也》

Amazon売れ筋ランキング

松尾公也

テクノエッジ編集部 シニアエディター / コミュニティストラテジスト @mazzo

特集

BECOME A MEMBER

『テクノエッジ アルファ』会員募集中

最新テック・ガジェット情報コミュニティ『テクノエッジ アルファ』を開設しました。会員専用Discrodサーバ参加権やイベント招待、会員限定コンテンツなど特典多数です。