AIでオリジナル楽曲を作り、自作のかわいい声で歌ってもらう方法
はじめに
本記事は2024年12月24日に開催する「【祝5周年】エンジニア達の「完全に理解した」Talk #60」で登壇する内容の詳細記事になります。
Zenn User Groupクローズドイベントに招待された際にお会いした、星影さんからお声がけをいただき、登壇させていただくことができました。ありがとうございました。
本記事の目的
さて、今年は私、様々な生成AI系の記事を書いてきました。
本年度の締めくくりとして、学んだ内容を使いながら、「オリジナル楽曲をAIで作成し、オリジナルキャラの声で歌わせてみよう」と思いましたので、その実験内容を記事にしたいと思います。
基本無料でも可能な範囲で書いておりますので、お手軽に試してみてください。
利用する技術
本記事では、下記の技術を利用します。
これらの技術は過去に記事にしているものも多いので、ぜひそちらの記事もご参照ください。
- 歌詞作成
- chatGPT-4o
- 曲の生成
- Suno AI (Free)
- ボーカル、BGM分離
- UVR5
- AIキャラクターの声色作成
- Style-Bert-VITS2
- AIキャラクターの立ち絵生成
- FLUX.1-dev
- 声色変換
- Seed-VC
本記事の全体像は下記になります。
下記のフローに従って、解説していきます。
成果物
最終的に完成した動画は下記になります。ぜひご覧ください
また、今回の記事において利用したコードなどを下記に置いておきます。
(以降の章でGoogle Driveにおく予定のコードや、私の実行結果の音声ファイル、プロンプトなどが格納されておりますので、参考にしてください)
また、利用・参考にしたページです。
UVR5(公式)
Flux.1-devのリポジトリ・解説記事(自作)
Style-Bert-VITS2(公式)
手順
歌詞の作成
まずは、どんな曲を作りたいかをきめ、それに合わせて歌詞をAIに作成してもらいます。
今回は、歌詞の作成にはchatGPT-4oを利用します。
皆様ご存知だとは思いますが、chatGPTはアメリカのOpenAI社が提供するAIチャットサービスです。
非常に高性能なLLMを搭載しており、人間のように自然か会話が可能です。
また、最近では音声や画像、pdfなどさまざまなファイルを入力して、その分析をお願いしたりすることができます。
今回は、これを利用して、オリジナル音楽の歌詞を作成してもらいます。
フローでは赤色の部分に対応します。
chatGPT-4oは下記から利用できます。基本的にはアカウントさえ作れば、無料でも作れるのでお試しください。
今回は、
jpopかつrockな音楽で、人の心に響くような感動的かつミステリアスな音楽を作りたいと思います。
また、AIのキャラクターは女の子のキャラクターを想定します。
プロンプトの内容
ここまでの情報を元に、chatGPTに歌詞を作ってもらうのですが、この歌詞は後で「Suno AI」というサービスの中で利用します。
suno AIは、歌詞を元に曲を作ってくれるサービスなのですが、歌詞の中にAメロやサビの位置をタグで指定することができたり、楽曲の雰囲気をスタイルプロンプトという形で指定することができます。
そこで、「Suno AI」で使えるタグや楽曲のスタイルプロンプトなども含めて、chatGPTに生成してもらおうと思います。
スタイルプロンプトやタグに関しては、下記のページの記述を使わせていただきました。
スタイルプロンプトの参考
タグの参考
以下が実際のプロンプト内容です。
プロンプト本文
あなたにはsuno AIを利用して、楽曲の作成をお願いしたいです。
曲のジャンルやjpop x rockでAIの女の子のシンガーソングライターが歌うことを想定してください。
人の心に響くような感動的かつミステリアスな音楽を作りたいです。
歌詞の構成は、Aメロ→Bメロ→サビ→Aメロ→Bメロ→サビ→Cメロ→サビの2番+α構成にしてください。
なお、suno AIで利用できるタグ構造は下記です。
##タグ構造
[Intro] - 曲のイントロダクション
[verse] - 通常のヴァース
[Verse 2], [Verse 3] など - ヴァースの継続
[chorus] - 曲のサビとなる繰り返しテーマ
[pre-chorus] - コーラスに導くセクション
[post-chorus] - コーラスの直後のセクション
[hook] - キャッチーで記憶に残る音楽フレーズ
[bridge], [bridge 2], [second bridge] - ヴァースとコーラスとは対照的なセクションで、いわゆるブリッジ
[break] - 休止または楽器だけのブレイク
[interlude] - 曲のセクション間の音楽ブレイク
[refrain] - 繰り返される一連のリフ
[outro] - 曲の締めくくり・終わりのセクション
[coda] - 曲の完結部分
[solo] - 楽器のソロ演奏となるセクション
[instrumental] - ボーカルなしで楽器のみのセクション
[vamp] - 曲を延ばすために使用される反復的な音楽セクション
[build-up] - 徐々に緊張や強度を増していくセクション
[drop] - 電子音楽でよく使われる、強めのピーク
[fade-out] - 音量が徐々に減少して終わる
[tag] - 曲の最後に短く繰り返されるフレーズ
[counterpoint] - さまざまなメロディーを織り交ぜたセクション
[middle 8] [B section] - コントラストをつけるセクションで、通常は曲の途中にある
[modulation] - 曲の中でキーを変える(転調)
なお、Pre-chorusとbridgeは、メインのパターン以外の歌詞を表します。
verseをAメロ、chorusをサビとするなら、Pre-chorusはBメロ、bridgeはCメロといった感じです。
##パフォーマンスの関するタグ
[powerful] - パワフルなボーカル
[forte] - 強めの音量、フォルテ
[belting] - パワフルでエモーショナル
[emphatic] - 強調(特定の歌詞やフレーズ用)
[intense] - 感情的・動的な強度づけ
[climax] - 曲の中で最も盛り上がる部分に
[passionate] - 深く感情的なボーカルパフォーマンス
[soaring] - 壮大で感動的な効果、高音域へ声を劇的に上昇
## 歌詞定義の具体例
[Lead In - Electric guitar and drums]
[Intro]
ここは最初のヴァースの歌詞です
[Break]
[Interlude]
[Instrumental: Guitar]
[Verse]
ここは2番目のヴァースの歌詞
[Hook]
こちらはキャッチーなリフレイン
[Chorus]
この部分で明確にコーラス
[Interlude]
[Instrumental: Drum solo]
[Verse]
3番目のヴァースの歌詞
[Verse]
4番目のヴァースの歌詞
[Hook]
[Chorus]
[Bridge]
ブリッジとしての5番目のヴァースの歌詞キー変更(転調)する
[Key Change]
[Hook]
[Chorus]
[Break]
[Interlude]
[Instrumental: Keyboard solo]
[Outro]
異なる言葉とフレージングを使って、フックとコーラスを繰り返す「アウトロ」としてラベルを付ければ、曲の終わりもバッチリ
[End]
また、suno AIで利用できるスタイルプロンプトの一例は下記です。
歌詞とは別に、プロンプトでも作曲の方向性を指定できるため、歌詞の後に別で、歌詞に合わせたスタイルプロンプトも具体的に構築して出力してください。
## スタイルプロンプトの例
下記の単語を組み合わせて、自然言語的に作成してください。
Danceable
Dance: ダンスミュージックの総称。クラブミュージックやEDMを含む。
Festive: フェスにふさわしい、明るく華やかな音楽。
Groovy: 心地よいグルーヴ感を持つ、ソウルフルな音楽。
Mid-Tempo: 中くらいのテンポの音楽。BPM100~130程度が多い。
Syncopated: 拍節の重心が意図的にずれた、複雑なリズムを持つ音楽。
Tipsy: ほろ酔い気分を演出するような、軽快でリラックスした音楽。
Dark
Atmospheric: 聴く人の想像力を掻き立てるような、雰囲気のある音楽。
Cold: 冷たく無機質な、感情表現を抑えた音楽。
Dark: 暗く陰鬱な、メランコリックな音楽。
Doom: 重厚で低音域の強い、ヘヴィーな音楽。
Dramatic: ドラマチックで感情的な、ストーリー性のある音楽。
Sinister: 不吉で恐ろしい、緊張感のある音楽。
Eclectic
Adjunct: 補助的な要素を含む、ジャンル特定が難しい音楽。
Art: 芸術性が高く、実験的な音楽。
Capriccio: 気まぐれで自由奔放な、即興性を感じる音楽 。
Mellifluous: 甘美で心地よい音色を持つ、なめらかな音楽。
Nu- (ニュー): 既存ジャンルに「新」を付け、新しい解釈を加えたジャンル (例: Nu-Metal)。
Progressive: 伝統的な形式にとらわれず、徐々に展開していく音楽。
Unusual: 珍しい楽器や奏法を用いた、独創的な音楽。
Emotion
Anthemic: 共に歌い上げられる、盛り上がる高揚感のある音楽。
Emotional: 感情を揺さぶる、訴えかけるような音楽。
Happy: 明るく陽気で、幸せな気分になる音楽。
Jubilant: 歓喜に満ち溢れ、お祝いムードの音楽。
Melancholy: 物悲しい、センチメンタルな雰囲気の音楽。
Sad: 悲しみを表現した、しっとりとした音楽。
Hard
Aggressive: 攻撃的で激しいエネルギーを持つ音楽。
Banger: クラブなどで盛り上がる、派手でインパクトのある曲。
Power: 強さと力強さを前面に出した、パワフルな音楽。
Stadium: スタジアムライブ映えする、スケール感の大きい音楽。
Stomp: 強いビートで観客を踊らせる、足踏みし たくくなるような音楽。
Lyrical
Broadway: ブロードウェイミュージカルで使われる、煌びやかな音楽。
Cabaret: キャバレーで歌われる、コミカルで軽快な音楽。
Lounge: リラックスしたムードを演出する、おしゃれな雰囲気の音楽。
Operatic: オペラで使われるような、ドラマティックで壮大な音楽。
Storytelling: 物語性があり、歌詞でストーリーを伝える音楽。
Torch-Lounge: 物悲しい恋愛を歌う、ジャズに影響を受けたラウンジ・ミュージック。
Theatrical: 演劇的な要素が強い、ドラマティックな音楽。
Troubadour: シンガーソングライターによる、詩情あふれるフォークソング。
Vegas: ラスベガスのショーで用いられる、派手で華やかな音楽。
Magical
Ethereal: 幽玄で浮遊感のある、繊細で美しい音楽。
Majestic: 壮大で荘厳な、威厳を感じさせる音楽。
Mysterious: 謎めいていて神秘的な、想像力を刺激する音楽。
Minimal
Ambient: メロディやリズムより雰囲気重視の、環境音楽。
Cinematic: 映画音楽のような、ドラマティックで壮大な音楽。
Heat: 暑さや熱気を感じるような、エネルギッシュな音楽。
Minimal: 最小限の音色で構成された、シンプルで洗練された音楽。
Slow: 遅いテンポでゆったりとした、リラックスできる音楽。
sparse: 音が少なく、空間を感じるような音楽。
Party
Party: 踊りやすく盛り上がる、お祭り気分の音楽。
German Schlager: ドイツのポップス。キャッチーで歌謡曲に近い。
Glam: 華やかで派手なビジュアルとロックを融合させた音楽。
Glitter: キラキラしたディスコサウンドを基調とした音楽。
Groovy: 心地よいグルーヴ感があり、身体が揺れるようなソウルフルな音楽。
Soft
Ambient: 環境音楽。メロディやリズムより雰囲気重視で、リラックスや集中を促す。
Bedroom: 簡素な機材で自宅制作された、ローファイでパーソナルなインディー系。
Chillwave: チルアウトとサンプリングカルチャーを融合させた、アンビエント寄りのエレクトロニックミュージック。
Ethereal: 幽玄で浮遊感のある、繊細で美しい音楽。
Intimate: 親密で内省的な、静かで語りかけるような音楽。
Heat: 暑さや熱気を感じるような、エネルギッシュで攻撃的な音楽。
Sadcore: 悲しみやノスタルジーを前面に出した、スローテンポで憂鬱なオルタナティブロック。
Weird
Carnival: お祭り騒ぎのような、陽気で楽しい音楽。
Distorted: 意図的に歪ませた音色を用いた、ノイジーな音楽。
Glitchy: デジタル音の乱れを利用した、不安定で刺激的な音楽。
Haunted: 幽霊屋敷のような、不気味でゾクゾクする音楽。
Hollow: 音に深みがなく、空虚さを感じる音楽。
Musicbox: オルゴールのような、可愛らしく機械的な音色を用いた音楽。
Random: 規則性のない、予測不能な展開の音楽。
World/Ethnic
Arabian: アラビア音楽。多彩な楽器と独特のリズムが特徴。
Bangra: インドのパンジャーブ地方発祥のダンスミュージック。
日本語の歌詞を入れたけど無視されヒンドゥーらしき歌になったので、スタイルをBangraだけにしたら日本語も認識した。
Calypso: カリブ海の陽気で軽快な音楽。
Chalga: バルカン半島東部の活気がありセクシャルな大衆音楽。
Egyptian: エジプトの伝統音楽から現代ポップまで幅広い。
Hindustani: 北インド古典音楽。複雑な旋律と即興演奏が重要。
Hōgaku: イメージ的には過去の歌謡曲だったり演歌っぽいマイナーなタイプの音楽。
これも単独で Hōgaku と記入したほうがいいみたいです。
Jewish Music: ユダヤ教の宗教音楽と世俗音楽の総称。
Klezmer: 東欧ユダヤ人の民族音楽。クラリネットが特徴的。
Matsuri: 日本の祭り囃子。笛や太鼓などを使った賑やかな音楽。
Middle East: 中東地域の音楽。アラビア音楽をはじめ多様。
Polka: ポーランド発祥の速いテンポの踊りやすい音楽。
Russian Navy Song: ロシア海軍の士気を高める、力強い軍歌。
Suomipop: フィンランドのポップミュージック。
Tribal: 部族社会に伝わる伝統的な音楽。
----
では、以下より作詞を開始してください。
また、曲の方向性を変更したい場合は、プロンプト最上部の下記の部分を変更してください。
曲のジャンルやjpop x rockでAIの女の子のシンガーソングライターが歌うことを想定してください。
人の心に響くような感動的かつミステリアスな音楽を作りたいです。
歌詞の構成は、Aメロ→Bメロ→サビ→Aメロ→Bメロ→サビ→Cメロ→サビの2番+α構成にしてください。
生成結果
上記のプロンプトを入力して生成された結果は下記になります。
(生成のたびに出力内容は変わります)
出力結果
以下に歌詞を作成しました。スタイルプロンプトも一緒に用意しました。
歌詞
[Intro - Gentle piano and strings]
静かに揺れる光
闇の中で君を探してる
[Verse - Aメロ]
冷たい風が心を突き抜け
滲む街灯が涙を隠す
孤独を知ったその瞬間に
未来の欠片を見つけた気がした
[Pre-Chorus - Bメロ]
閉ざされたドアの向こう
夢が囁く声がする
信じたい、だけど怖くて
震える手を伸ばした
[Chorus - サビ]
星屑の夜に願いを込めて
君の笑顔が永遠に消えないように
儚さの中に強さを抱いて
光を追い続ける、何度でも
[Verse 2 - Aメロ]
雨に濡れた道標を頼りに
遥かな記憶を手繰り寄せる
見えない明日が不安になるけど
胸の奥に灯る小さな炎
[Pre-Chorus - Bメロ]
届かない夢なんてない
君が教えてくれたから
忘れない、どんな時でも
その声が導く
[Chorus - サビ]
星屑の夜に祈りを込めて
君の存在が心を照らすように
深い闇さえ越えてゆけると
信じて走り続ける、どこまでも
[Bridge - Cメロ]
世界が終わるその時も
君がそばにいるなら怖くない
溢れる想い、この胸に抱いて
新しい未来を描くよ
[Chorus - サビ]
星屑の夜に夢を繋いで
君の笑顔が永遠に輝くように
儚さの中に希望を抱いて
光を追い続ける、いつまでも
[Outro - Gentle guitar and fading vocals]
静かに降る光
君と共に歩き出そう
スタイルプロンプト
Genre: J-pop x Rock
Mood: Emotional, Mysterious, Passionate
Performance Tags: [powerful], [passionate], [soaring], [climax]
Music Style: Dramatic and Atmospheric, with an emphasis on melodic guitar riffs and a steady, building rhythm. Incorporate haunting piano interludes and a majestic string section to enhance the emotional depth.
この歌詞とスタイルプロンプトを元に、楽曲制作を進めてみてください!
では、歌詞とスタイルプロンプトの作成が完了したので、次はsuno AIを利用して楽曲の生成を行います。
曲の生成を行う
Suno AIを利用して楽曲の生成を行います。
suno AIとはアメリカの企業が提供している音楽生成AIで、音楽の歌詞と、どんな音楽にしたいかというスタイルを入力して上げるだけで、ボーカル入りのオリジナル音楽を生成してくれるサービスです。
無料でも、最大4分の曲が一日10曲程度作成することができるため、とてもおすすめのサービスになっております。
フローでは下記の赤色の部分になります。
まずは、下記のサイトからSuno AIに接続してください。
上のサイトに接続すると下記のような画面になると思います。
左タブの「Create」をクリックしてください。
すると、下記のようにアカウント登録を求められるので、アカウントの作成をしてください。
私はGoogle アカウントで登録しています。
ログインできると下記のような画面になります。(「Create」タブに入った後です)
歌詞やスタイルなどを詳細に設定したいので、左上にある「Custom」のトグルをONにしてください。
ポップアップが表示されるため「Get Started」をクリックしてください。
すると下記のような画面になります。
左側の「Lyrics」タブには先ほど生成した歌詞をタグ付きで、その下の「Style of Music」には、生成したStyleタグを入れましょう。
また画面をスクロールすると、曲のタイトルを入力する欄も表示されますので、そちらも入力しましょう。
実際に投入した内容は下記です。
「Lyrics」は生成した歌詞のままですが、「Style of Music」は少しだけプロンプトっぽく変更しています。
また、「Title」は歌詞を見ながら「pray」に自分で決めました。
もちろんタイトルもchatGPTに聞いて良いと思います。
Suno AIへの入力内容
Lyrics
歌詞を入れる前に、確認のポップアップが表示されることがあります。
Sunoはオリジナル楽曲の制作を目的としています。AIが作成した歌詞、オリジナルの歌詞、または継続する権利を有する歌詞のみを投稿することをご確認ください。
こちらを確認の上、「I accept」をクリックしてください。
実際に入力した内容は下記です。
[Intro - Gentle piano and strings]
静かに揺れる光
闇の中で君を探してる
[Verse - Aメロ]
冷たい風が心を突き抜け
滲む街灯が涙を隠す
孤独を知ったその瞬間に
未来の欠片を見つけた気がした
[Pre-Chorus - Bメロ]
閉ざされたドアの向こう
夢が囁く声がする
信じたい、だけど怖くて
震える手を伸ばした
[Chorus - サビ]
星屑の夜に願いを込めて
君の笑顔が永遠に消えないように
儚さの中に強さを抱いて
光を追い続ける、何度でも
[Verse 2 - Aメロ]
雨に濡れた道標を頼りに
遥かな記憶を手繰り寄せる
見えない明日が不安になるけど
胸の奥に灯る小さな炎
[Pre-Chorus - Bメロ]
届かない夢なんてない
君が教えてくれたから
忘れない、どんな時でも
その声が導く
[Chorus - サビ]
星屑の夜に祈りを込めて
君の存在が心を照らすように
深い闇さえ越えてゆけると
信じて走り続ける、どこまでも
[Bridge - Cメロ]
世界が終わるその時も
君がそばにいるなら怖くない
溢れる想い、この胸に抱いて
新しい未来を描くよ
[Chorus - サビ]
星屑の夜に夢を繋いで
君の笑顔が永遠に輝くように
儚さの中に希望を抱いて
光を追い続ける、いつまでも
[Outro - Gentle guitar and fading vocals]
静かに降る光
君と共に歩き出そう
Style of Music
chatGPTが生成した内容を少しいじってプロンプトにしています。
後から気づきましたが、文字数制限のために、最後の方が切れてしまっていますね。
ただ、重要な情報は入っているので、問題ないと判断しました。
J-pop, Rock,Emotional, Mysterious, Passionate, Dramatic and Atmospheric, with an emphasis on melodic guitar riffs and a steady, building rhythm. Incorporate haunting piano interludes and a majestic st
Title
歌詞にて、「祈り」とか「願い」とかがサビに入っていたので、「pray」にしました。
pray
楽曲を生成する
入力を完了したら、左側の画面下部にある「Create」ボタンをクリックすると、音楽の生成が始まります。
楽曲が生成されると、左側に2曲分生成されます。このように一度の生成で2曲作成されます。
また、左側のCreditsを見ると「40 Credits」に変わります。
元々が50 Creditsだったはずなので、一回2曲の生成で、10Creditsが消費されます。
しかし、このCreditsはありがたいことに、毎日50Creditsまで回復するので、どんどん使ってもらって大丈夫です。(足りなくなったら明日やればいいのです)
より良い曲を作りたい人は、一度に5回分生成して、10曲の中から良い曲を選ぶことをお勧めします。
(どうせ1日にそんなに曲を作ることはないので)
私の環境で実際に生成した曲は下記です。
今回は、上記の曲を使うことにします生成した曲は、下の画像のように「3点リーダ」から「Download」→「Audio」で辿ってダウンロードしてください。
すると、pray.mp3
のように、titleが名前になった音源がダウンロードされます。
ボーカル・BGM分離
ここまでで、オリジナル楽曲の生成は完了しました。(めちゃくちゃ簡単ですね)
10曲も生成すれば、一つは良いなと思うような曲が見つかったのではないでしょうか。
これからは、生成した曲を好きな声で歌わせることを考えていきたいです。
そのために、まずは、生成した音源をBGM部分とボーカル部分に分けていきます。
フローでは下記の赤色の部分が対応します。
音源を、BGM音源とボーカル音源に分離するには、UVR5という技術を利用します。
UVR5というのは、「Ultimate Vocal Remover v5」の略で、音源分離やボーカル抽出、ハモリ除去などを行うことができる無料のオープンソースAIツールです。
こちらを利用することで、通常の楽曲の音源から、ボーカル音源とBGM音源を分離することができます。
さらに、ノイズ除去やエコー、リバーブの除去などもできる多機能・高性能なモデルです。
この技術は、ローカルで誰でもアプリとして利用できるようになっていますが、高速な処理にはGPUがあった方が良いです。
今回は、GPUがなくても高速な処理をしてもらうために、無料でGPUが利用できる環境であるGoogle ColaboratoryでUVR5を実行しようと思います。
ここで、Google Colaboratoryを無料で実行する場合、WebUIなどの利用が規約により禁止されているため、WebUIなどを利用しないCLIの形で利用できるノートブックを利用します。
準備
Google アカウントを持っていて、Google Driveが利用できることを前提とします。
また、私の実験環境をGithubにあげております。そちらもご参考ください。
UVR5のノートブックをダウンロードする
ノートブックは上記のページに存在します。
上記のリンクに入ると下記のような画面になると思います。
このまま実行してもおそらく使えますが、いつ接続できなくなるかわからないので、ノートブックをダウンロードしておきます。
右上の「ファイル」→「ドライブにコピーを保存」をクリックしてください。
すると新しいウィンドウで同じノートブックが開かれたと思います。
(名前にコピーと入っているはずなので、気になる人は変更してください)
このノートブックは、自分のGoogle Driveの「Colab Notebooks」フォルダの中に保存されます。
以降は、自分のGoogle Driveから開くことが可能になります。
作業ディレクトリを作成する
Google Drive上の作業ディレクトリを作成します。
以降、声質変換の段階でも利用することになるディレクトリです。
Google Drive(MyDrive)の直下に下記のディレクトリ構造を作成してください。
MyDrive/
└ colab_make_songs/
├ suno_origin_song/
| └ pray.mp3 (Sunoで生成した音源)
└ split_song/ (分割後の音源を保存するフォルダ)
UVR5を実行する
MyDrive/Colab Notebooks/UVR5_NO_UI.ipynb
を開いてください。
UVR5_NO_UI.ipynbにてパスを指定する
下記の画像のように、音源が入っているフォルダと分割後の音源を保存するフォルダを指定します。
Separation! BS-Roformer and Mel Band Roformer Only
まずは、よく使う、「Separation! BS-Roformer and Mel Band Roformer Only」のセルに関して、下記の画像のようにパスを入力してください。
audio_input:
/content/drive/MyDrive/colab_make_songs/suno_origin_song
output_folder:
/content/drive/MyDrive/colab_make_songs/split_song
Separation! MDX-NET Only
Separation! VR ARCH Only
同様に、「Separation! MDX-NET Only」のセルと、「Separation! VR ARCH Onlys」のセルにも同様のパスを入力して、ノートブックを保存しておいてください。
Installationセルを実行する
下記の画像のように、「Installation」セルの実行ボタン(三角マーク)をクリックして、UVR5を起動します。
すると、下記のように承認を求められるので、作業しているGoogle Driveで認証を完了してください。
実行中は「実行ボタン」のマークが四角になっているはずです。
実行完了したら、下記のように「Installation done !」と表示されます。
これで準備は完了です。
Separationを実行する
続いて、前の節でパスを設定した3つのセルを実行します。
Separation! BS-Roformer and Mel Band Roformer Only
まずは、「Separation! BS-Roformer and Mel Band Roformer Only」を実行します。
この時、セルの中のモデル名が「BS-Roformer-Viperx-1297」であることを確認してください。
この状態で、実行ボタンを押して、実行完了するのをお待ちください。
実行完了すると下記のように「Separation complete! Output file(s):・・・」という表示が見れると思います。
Separation! MDX-NET Only
続いて、「Separation! MDX-NET Only」のセルを実行します。
この時、セルの中のモデル名が「UVR_MDXNET_KARA_2.onnx」であることを確認してください。
この状態で、実行ボタンを押して、実行完了するのをお待ちください。
実行完了すると下記のように「Separation complete! Output file(s):・・・」という表示が見れると思います。
また、モデルを変えて再実行します。
次はモデル名を、「UVR-MDX-NET-Inst_HQ_5.onnx」に変更してください。
そして、同様に実行して完了するのをお待ちください。
結果を確認する
実行が完了したら、Google DriveのMyDrive/colab_make_songs/split_song
を見てみると、下記のように出力結果が表示されると思います。
それぞれ、、3パターンのモデルでVocalとInstrumentalを分離できていることがわかります。
では、ここから最も綺麗にボーカルを分離できているものを選ぶことにします。
選び方は、音声を直接聞いていただくのが良いです。ダウンロードしてローカルで聴くのがストレスなく聞けると思います。
ただ、傾向として、
- ボーカル
- UVR_MDXNET_KARA_2
- BS-Roformer-Viperx-1297
- BGM
- UVR-MDX-NET-Inst_HQ_5
の音源を利用すると良いことが多いです。(ボーカルはどちらか良い方をお選びください)
私の曲では、「BS-Roformer-Viperx-1297」で分離した「pray_(Vocals)model_bs_roformer_ep_317_sdr_12.wav」ファイルと「UVR-MDX-NET-Inst_HQ_5」で分離した「pray(Instrumental)_UVR-MDX-NET-Inst_HQ_5.wav」を利用することにしました。
なお、ここで選んだ音声ファイルは、今後利用するときに()
の部分が邪魔になるので、リネームしておきましょう。
私は、下記の形にリネームしました。(()
を取り除いただけです)
pray_Vocals_model_bs_roformer_ep_317_sdr_12.wav
pray_Instrumental_UVR-MDX-NET-Inst_HQ_5.wav
BGM音源(pray_Instrumental_UVR-MDX-NET-Inst_HQ_5.wav)は最後まで使わないので、大事に取っておいてください。
また、今後はボーカル音源pray_Vocals_model_bs_roformer_ep_317_sdr_12.wav
に対して、処理を行いますが、このファイル自体は一番最後に利用することがあるので、削除しないようにしてください。
ノイズ、リバーブ、エコーを除去する
この後、声質変換を行う上で、ボーカル音源にBGMの一部が残っていたり、エコーやリバーブなどが残っていると、うまく声質変換ができません。
従って、ボーカル音源に対してUVR5を実行し、除去してもらいます。
準備
下記のようにフォルダ構造を変更してください。
MyDrive/
└ colab_make_songs/
├ suno_origin_song/
| └ pray_Vocals_model_bs_roformer_ep_317_sdr_12.wav
└ split_song/ (このフォルダの中身はそのままでいいです)
suno_origin_song
フォルダにボーカル音声をアップロードしてください。
以降は、この音源に対して処理を行います。
元々あったpray.mp3
はsuno_origin_song
の外に出しておくか、もう使わないので削除するかしておいてください。
(残っていても問題はないですが、単純にpray.mp3
にも処理が入ってしまい時間がかかります。
実行
DeEcho-DeReverb
続いて、UVR5_NO_UI.ipynbノートブックに戻ります。
「Separation! VR ARCH Only」のセルを探してください。
ここのモデル名が「UVR-DeEcho-DeReverb」になっていることを確認して、実行をしてください。
(パスは上述した設定になっているはずですが、一応ご確認ください)
実行後、エコーとリバーブが除去された音源がsplit_song
に格納されていると思います。
ファイル名は下記です。
pray_Vocals_model_bs_roformer_ep_317_sdr_12_(No Reverb)_UVR-DeEcho-DeReverb.wav
この音源を、ふたたびsuno_origin_song
フォルダに移動して、次はノイズ除去を行います。
UVR-DeNoise
ファイルを移動したら同様に実行しますが、モデル名の部分が「UVR-DeNoise」になっているか確認してから実行してください。
実行完了したら、split_song
フォルダを確認すると、下記のファイルが生成されているはずです。
pray_Vocals_model_bs_roformer_ep_317_sdr_12_(No Reverb)_UVR-DeEcho-DeReverb_(No Noise)_UVR-DeNoise.wav
生成された音源を確認してみてください。綺麗にノイズやエコー、リバーブが削除されていれば成功です。
また、生成された音源の名前に含まれる()
や「スペース」は今後邪魔になるため、リネームをしておきましょう。
私は下記のようにリネームしました。(あまり長すぎてもわかりにくくなるので、最終版は短めに)
pray_Vocals.wav
なお、私のここまでの実行で生成された音源は、githubに格納しておりますので、参考にしてください。
UVR5のランタイム削除
ここまで実行できたら、UVR5の出番は終わりです。
Google Colabは無料でも実行できますが、1セッションかつ1日4時間しか使えないので、使い終わったらリソースを削除しましょう。
上部のタブから「ランタイム」→「ランタイムを接続解除して削除」をクリックしてください。
下記のようなポップアップがでます。「はい」を押せばリソースの削除が完了です。
リソースを削除した後、再度使いたいとなったら、また「Installation」のセルから実行してもらえれば、制限時間の範囲内であれば利用できます。
AIキャラクターの作成
さて、次は少し趣向を変えて、歌を歌ってもらうキャラクターを作りましょう。
今回はあまり作り込まずに下記の要素だけ作ろうと思います。
- キャラクターの声
- キャラクターの立ち絵
歌を歌ってもらうだけなら、声があれば十分ですが、せっかくキャラクターを作るので、愛着をもつために立ち絵くらいは作ってみましょう。
フローだと、下記の赤色の部分になります。
キャラクターの声を作成する
さて、この後でボーカルの声を変換するのに利用するSeed-VCという技術は、10秒程度の音声があれば、その音声の声に変換をしてくれます。
したがって、皆様がこの声に歌ってほしいという声の音源があれば、それをそのまま利用することができます。
ただ、今回は新しくAIのキャラクターを作るということで、世の中にない声を作ってみたいと思います。
新しい声を作るためには、新しい声を出力する合成音声モデルを用意することが重要です。
そのためには「モデルマージ」という技術が有効です。
これはキャラクターAの声を生成できる合成音声モデルと、キャラクターBの声を生成できる合成音声モデルを用意して、その二つのモデルの重みをいい感じに合成することで、AとBの間の声を生成する合成音声モデルを作ることができます。
これを様々なモデルで繰り返し実行することで、世の中にない声を作っていきます。
この、モデルマージができ、日本語の合成音声モデルで非常に高性能なモデルであるのが、Style-Bert-VITS2というモデルになります。
Style-Bert-VITS2で新しい声を作る
Style-Bert-VITS2は、オープンソースで利用できる、音声合成AIモデルです。
こちらを利用することで、話させたいテキストを入力すると、合成音声でその通りに話してくれます。
Style-Bert-VITS2自体の使い方は、下記の記事に詳細にまとめていますので、そちらをご利用ください。
上記の記事を利用することで、すでにある学習済みの重みモデルを利用して、テキスト読み上げを実施することができます。
声にこだわりがない方は、デフォルトで利用できるいくつかのモデルで生成したテキスト読み上げ音声をそのまま利用しても良いです。
加えて、新しい声を作りたいという方は、下記の「モデルマージ」の章で使い方を説明しているので、ぜひお試しください。
また、既存の学習済みモデルだけじゃなくて、自分が持っている音源から新しくモデルを作りたいという方は、下記の記事にてStyle-Bert-VITS2の学習方法に関してもご説明していますので、そちらも併せてご覧ください。
私は、今回はデフォルトで用意されている「あみたろの声素材工房」様の音声モデルと、下記の「Anneli」様の音声モデルをモデルマージした音声を利用することにしました。
こちらの記事をご覧ください。
あみたろ様のStyle-Bert-VITS2モデルはデフォルトで利用可能なはずです。詳しくは
モデルマージのパラメータは、Anneli様モデルをA、あみたろ様モデルをBとして、
声質:0.5
声の高さ:0.5
話し方(抑揚・感情表現等):0
話す速さ・リズム・テンポ:0
でマージしました。
声の質や高さはお互いのを半々ずつにしますが、話し方やリズム感などは「Anneli」様モデルを採用するようなマージになります。
マージする時の画面は下記になります。
実際に、モデルマージしたモデルを利用して、テキスト合成音声で話してもらった音声は下記になります。
(必要であれば、ダウンロードしてお聴きください)この音声の名前はtarget.wav
とします。
この音声は、下記のテキストを話してもらっています。
(歌詞のサビの部分をそのまま話してもらっています。文章は音声が10秒以上になれば、なんでもいいです。)
星屑の夜に夢を繋いで!
君の笑顔が永遠に輝くように。
儚さの中に希望を抱いて!
光を追い続ける、いつまでも。
冷たい風が、心を突き抜け、滲む街灯が、涙を隠す。
孤独を知ったその瞬間に、未来の欠片を、見つけた気がした。
合成音声したときの画像は下記です。
このくらいのテキストで大体25秒くらいなので、もう少し短くても良いかもしれないです。
上記の音声target.wav
を声質変換の際に利用します。
キャラクターの立ち絵を生成する
声を作ることができたので、次はキャラクターの立ち絵を生成します。
キャラクターの立ち絵は今回はFlux.1-devモデルを利用します。
Flux.1-devは、Stable DiffusionやDALLEといったよくある画像生成AIの一つですが、その中でも非常に高性能なローカルモデルになります。
Flux.1-devに関しては、過去に書いた下記の記事をご覧ください。
また、別の記事ですが、とても高品質なLoRAを過去に取り上げています。
そのときに生成した画像がかなりイメージ通りだったので、今回はそちらをそのまま利用しようと思います。
その画像を生成する方法に関しては、下記の記事をご覧ください。
実際に利用した画像は下記になります。
今後、この画像の名前をcharacter.png
とします。
ボーカル音源の声質変換
さて、ここまでで下記が完成しました
- AIによるオリジナル楽曲とそのボーカル抽出
- AIによるオリジナルキャラクタの声
したがって、この二つを利用して、元のボーカル音源の声質をAIキャラクターの声質に変換していこうと思います。
フローで言うと、下記の赤色の部分です。
Seed-VCを導入する
ボーカル音源の声質変換には、Seed-VCという技術を利用します
Seed-VCは、オープンソースのモデルで、ある音声の声質を、別の人の声質に変換することができるAIモデルです。
配信などでよく使われているボイスチェンジャーのようなものです。
その中でも、非常に高性能なAIモデルになります。
Seed-VCに関しては、下記の記事で解説しています。
ただ、上記の記事では主に普通の声色変化でした。
今回は、歌声の声色変換なので、設定するパラメータやパスが諸々異なるので、該当する部分だけ簡単に説明します。
Google DriveにSeed-VCのスクリプトを格納する。
下記のcolab_SeedVC_sample.ipynb
ノートブックをダウンロードして、Google Driveの下記の場所にアップロードしてください。
下記のようなフォルダ構成になることを想定しています。
MyDrive/
└ colab_make_songs/
├ suno_origin_song/
├ split_song/
| └ pray_Vocals.wav (その他ファイルは削除しても良い)
└ colab_SeedVC_sample.ipynb
AIキャラクターの音源をアップロードする
AIキャラクターの音源であるtarget.wav
をGoogle Driveにアップロードします。
下記のようにtargets
フォルダを作成して、アップロードしてください。
MyDrive/
└ colab_make_songs/
├ suno_origin_song/
├ split_song/
| └ pray_Vocals.wav (ボーカル音源)
├ targets/
| └ target.wav (AIキャラクター音源)
└ colab_SeedVC_sample.ipynb
ノートブックの中を本記事に合うように変更する
colab_SeedVC_sample.ipynb
ノートブックをGoogle Colabで開いてください。
1セル目と2セル目はそのままで良いですが、3セル目と4セル目は下記の通りに変更してください。
3セル目
# カレントディレクトリを本ファイルが存在するディレクトリに変更する。
import glob
import os
# ipynbが存在するGoogle Driveのフォルダのパスを取得し、利用できるようにする。
#ipynbファイルを指定されているパスから探していますので、もしパスが違う場合は変更してください。
drive_path = os.path.dirname(glob.glob('/content/drive/MyDrive/colab_make_songs/colab_SeedVC_sample.ipynb', recursive=True)[0])
print(drive_path)
もし、Google Drive内のディレクトリ構造が、記事の想定と違う場合は、併せて修正してください。
4セル目
#歌声変換用
# マウントしたGoogle Drive内の音声を利用
#referの文字を読み上げる
#ボーカル音源
refer_audio = f"{drive_path}/split_song/pray_Vocals.wav"
#taegetの声になる
#AIキャラクター音源
target_audio = f"{drive_path}/targets/target.wav"
# 出力フォルダを作成する
# マウントしたGoogle Drive内に出力する
out_dir = f"{drive_path}/outputs"
os.makedirs(out_dir, exist_ok=True)
# --diffusion-steps 歌声変換には30〜50を推奨
# --f0-condition False # 歌声変換の場合はTrueに設定 \
#--auto-f0-adjust False \ # ソースピッチをターゲットピッチレベルに自動調整する場合はTrue、通常は歌声変換では使用しない
# --semi-tone-shift 0 \# 歌声変換のピッチシフト(半音単位)
# seed-vcリポジトリのinference.pyを実行する
!python inference.py --source {refer_audio} --target {target_audio} --output {out_dir} \
--diffusion-steps 50 \
--length-adjust 1.0 \
--inference-cfg-rate 0.7 \
--f0-condition True \
--auto-f0-adjust False \
--semi-tone-shift 0 \
--fp16 True
もし、ボーカル音源のファイル名や、AIキャラクター音声のファイル名が想定と違う場合は、コードの該当部分を修正してください。
また、コード中にも記載しておりますが、歌声の声色変換の場合は、inference.py
の引数が記事とは若干変わっております。
Seed-VCを実行する
ここまでできたら、あとは一番上のセルから全部のセルを実行してください。
「ランタイム」→「すべてのセルを実行」で全部実行できます。
1セル目実行中に、認証が入りますのでそれは承認してください。
また、2セル目実行中に「Warning」のポップアップが表示されます。これはそのまま「キャンセル」で問題ありません。
実行には、なかなか時間がかかります。十数分かかることも珍しくありません。
気長にお待ちください。
出力を確認する
実行が完了したら、Google Driveにoutputs
フォルダが作られており、その中に声質変換後の音源が保存されているはずです。
私の場合のファイル名はvc_pray_Vocals_target_1.0_50_0.7.wav
でした。
その音源を聴いてみて、声質がちゃんと変わっていれば成功です。
私の実行結果では、下記のようになりました。必要に応じてダウンロードしてお聴きください。
Seed-VCのランタイム削除
UVR5と同様に、Google Colabのリソースを削除してください。
「ランタイム」→「ランタイムを接続解除して削除」でリソースの削除ができます。
素材を合成する
さて、ここまでで下記の素材を持っています。
- オリジナル楽曲のBGM素材
pray_Instrumental_UVR-MDX-NET-Inst_HQ_5.wav
- オリジナル楽曲のボーカル素材
pray_Vocals_model_bs_roformer_ep_317_sdr_12.wav
- オリジナル楽曲のボーカル素材(AIキャラクター版)
vc_pray_Vocals_target_1.0_50_0.7.wav
- AIキャラクターの立ち絵画像
character.png
これらの素材を合成して、ミュージックビデオを作成します。
フローで言うと下記の赤色の部分です。
これらの合成には、私はAdobeのPremire Proを利用しました。
Premire Proには無料体験があるので、それを利用しても良いと思います。
一方で、有料ソフトを利用することに抵抗がある方は、下記のフリーの動画編集ソフトを利用しても、今回の記事の範囲であれば十分すぎると思います。
この結合の部分でやりたいことは、BGMとボーカルを繋げて、立ち絵をずっと表示したいくらいなので、それが達成できればなんのソフトを利用してもらっても問題ないです。
今回はPremire Proでの作業手順を忘備録的に記載しますが、他のソフトでも問題なくできると思います。
Premire Proの起動
起動すると下記のような画面になるので、左上の「新規プロジェクト」を押してください。
その後、プロジェクト名(適当でいいです)を設定して進めていくと下記の画面が表示されます。
この画面が作業画面です。
メディアの読み込み
左下の「メディアの読み込み」をクリックして、フォルダから下記4ファイルを開いてください。
- オリジナル楽曲のBGM素材
pray_Instrumental_UVR-MDX-NET-Inst_HQ_5.wav
- オリジナル楽曲のボーカル素材
-
pray_Vocals_model_bs_roformer_ep_317_sdr_12.wav
- これは、ノイズやエコー除去をする前の音源です。
-
- オリジナル楽曲のボーカル素材(AIキャラクター版)
vc_pray_Vocals_target_1.0_50_0.7.wav
- AIキャラクターの立ち絵画像
character.png
すると下記のような画面になります。
これで、プロジェクトに4ファイルを読み込むことができました。
BGMとAIボーカルの結合
4つの中から、pray_Instrumental_UVR-MDX-NET-Inst_HQ_5.wav
とvc_pray_Vocals_target_1.0_50_0.7.wav
の2ファイルを、右側のタイムライン枠にドラックしてください。
(一つずつです)
すると、下記のようになるはずです。
(ただし、2つ目のファイルはドラッグしながら、1ファイル目と再生位置を合わせるようにしてからドロップしてください。補助が入るので、簡単に合わせられると思います)
また、「A2」に入るようにドラックアンドドロップしてください。
これで、結合が完了しました。上の枠にある再生ボタン(三角ボタン)をクリックすると、音声を再生できます。
これで歌の部分はほぼできました。
画面の作成
せっかく一枚絵を作ったので、画面にはこれを表示しておきましょう。
先ほどの音声と同様にcharacter.png
を左から右の枠にドラックアンドドロップしてください。
この時に、先ほどは「A2」でしたが、今度は「V1」に来るようにドラックアンドドロップしてください。
全体の動画時間と比較して、画像が表示される時間が短いので、時間の枠の右端をクリックして、音声の
続いて、画面のシーケンスを変更します。
具体的には、1080p(1920×1080)解像度に変更していきます。
上の方にある「シーケンス」→「シーケンス設定」をクリックしてください。
すると下記のような画面が表示されるはずなので、
「ビデオ」の「フレームサイズ」を「1920 横 1080 縦」に変更してください。
変更後「OK」を押してもらい、進めると、ビデオの画面が、16:9の比率に変わっているはずです。
ここまでできたら、枠の上の方を見てみましょう。
上の動画が表示されている、プログラム枠の中をダブルクリックすると、下の画像のような状態になると思います。
(適宜、枠のサイズは、手動で変更してください)
左側には、現在の動画の画面が、右側には画像を指定するパラメータが表示されています。
画像をいい感じに表示するために、サイズのパラメータや位置のパラメータを変更しましょう。
変更後は下記になりました。
スケールと位置のY座標を少しだけいじって、キャラクターが大きく映るようにしました。
AIキャラクターのボーカル音源のノイズを削除する
AIキャラクターのボーカル音源vc_pray_Vocals_target_1.0_50_0.7.wav
において、歌い始めの前と歌い終わりの後にノイズが入ることがあります。
Premire Proを使っているので、この部分の音声をカットしましょう。
また、下側のタイムスタンプの枠をみましょう。
使うツールは「レーザーツール」です。
このアイコンをクリックした状態では、音源を分割することができます。
下記のようにある特定の位置で分割を入れることができます。
分割した位置は、歌いはじめのタイミングになるため、その直前の音声はdeleteボタンで消去できます。
歌い終わりに関しても同様にカットすることができます。
これで余計なノイズは外すことができます。
歌詞の字幕を入れる
Premire Proでは書き起こしの機能があるので、この機能を使って字幕を入れてみましょう。
左上の「テキスト」タブを開くと書き起こしの機能を見ることができます。
テキストタブが表示されていない場合はこちらの記事を見て、表示させてください。
その後、ポップアップが出るので、「キャプションの環境設定」では、「1行」の設定に変更してください。
「文字起こしの環境設定」において、言語を「日本語」に変更して、文字起こしをするオーディオを「オーディオ1」(vc_pray_Vocals_target_1.0_50_0.7.wav
)に設定してください。
文字起こしを実施すると、数分待った後に、下記のような感じに表示されます。
残念ながら、精度があまり良くないので、修正を行います。
文字の修正は、該当部分をダブルクリックして、編集することができます。
表示時間の編集は、下枠のサブタイトル枠のバーを、伸ばしたり、短くしたり、移動したりして編集できます。
これらの処理は手作業で大変ですが、頑張ってください。
編集後は下記のようになります。
なお、この文字起こしは下記の記事を参考にさせていただきました。
曲を安定させる工夫
さて、ここまででおおよそミュージックビデオの骨格は完成しました。
一方で、どうしてもボーカルが生の合成音声の声だけだと曲自体が不安定な感じがします。
音楽の編集などが詳しい方は、ここにエコーやコーラス、リバーブなどを適宜追加して、いい感じに聞こえるように調整すると思いますが、今回はもっと簡単に安定感を上げてみようと思います。
やり方は簡単で、もともとSuno AIが楽曲を生成したときに入っていたボーカル音源を、一部重ねることです。
例えば私は、Aメロは重ねずにBメロ以降から少しずつ重ねています。
合わせてそれぞれのAudioチャンネルの音量のバランスを調整していきます。
バランスの調整は、タイムラインで調整したい音源を選択すると、右上のプロパティにボリュームが表示されます。
このボリュームを大きくしたり、小さくしたりするだけです。
また、このボリューム変更は、トラック全てに対して処理が入ってしまうので、変更したい範囲を「レーザーツール」で分割してから、音量の処理を個別に実施することをお勧めします。
(ちなみにボリュームを-∞に設定すると、完全な無音になります)
私は下記のような設定を最終的にしました。
(まだまだ調整の余地はあると思いますが、一旦はこれで)
- A1:メインボーカル
vc_pray_Vocals_target_1.0_50_0.7.wav
- 全体を通して0.0db
- A2:BGM
pray_Instrumental_UVR-MDX-NET-Inst_HQ_5.wav
- 全体を通して2.0db
- A3:サブボーカル
pray_Vocals_model_bs_roformer_ep_317_sdr_12.wav
- Aメロ:-∞db
- Bメロ:-0.5db
- サビ:1.5db
- ただし、サビはじめの「星屑の」の部分は-∞db
- Cメロ
- 1,2小節目:-∞db
- 3小節目:-2.0db
- 4小説目:-0.5db
書き出し
これで、Premire Proでの全ての処理が完了しました。
あとは作成したビデオを書き出すだけです。
上の方にある「書き出し」のタブをクリックしてください。
すると、下記のような画面になると思います。
プリセットは、適宜高画質なものに変更してください。
例えば、私は「高品質 1080p HD」を選択しました。
あとは、右下の「書き出し」ボタンをクリックするだけです。
M2 Macだと大体書き出しに1分くらいかかりました。気長に待ちましょう。
書き出しが完了したら、動画を見にいきましょう
動画は、書き出しタブの「場所」の部分に記載されていた場所です。
私の場合は、「vc_pray_Vocals_target_1.0_50_0.7.mp4」のファイル名で保存されていました。
さて、これでミュージックビデオが完成しました!
お疲れ様です!
作成物
改めて、ここまでの作業でできたミュージックビデオが下記になります。
こちらみていただけるとわかるように、AIで作ったオリジナル楽曲を、AIのキャラクターに歌ってもらえていることがわかると思います。
曲の質としては、まだまだこれからだとは思いますが、今の自分としてはかなり良い感じにできたのではないかなと思っています。
ここまで読んで、もっと知りたいと思ったら
ここまでで、生成AIを色々利用してみましたが、もっと生成AI興味出てきた方がいらっしゃれば、下記の本などがおすすめです。
生成 Deep Learning 第2版 ―絵を描き、物語や音楽を作り、ゲームをプレイする
こちらの本では、現在世の中にある様々な生成AIについて詳しく説明してくれています。
その中には、今回使った画像生成AIや音楽生成AIなどについても詳細に説明されているため、どのような原理で動いているのかななどの興味を持った方にはすごくおすすめになります。
また、私の方でも、生成AIについてはかなりたくさんの記事を書いてきております。
本記事内でも、関連する部分はリンクを貼っておりますので、ぜひご覧いただけますと嬉しいです。
また、理論的な内容が知りたいと言うことでしたら、(主に画像生成ではありますが)下記の記事がおすすめになります。
なるべく数式を使わずに、わかりやすく理解していただけるように記載しました。
ぜひご覧ください。
まとめ
この一年を締めくくるにふさわしい、集大成のような記事を書けて嬉しいです。
結論:Suno AIが凄すぎる!!
ここまで読んでくださってありがとうございました!
Discussion