
Mubertを始めよう!AI作曲についてのまとめ・始め方(Text-to-Music)
これまで Midjourney や DALL-E、Stable Diffusion などのText-to-Image (t2i)サービスはいくつも出てきておりコミュニティも活発な反面、Text-to-Music サービスはあまり知られておらず、2023年2月現在、情報もあまり多くはありません。
Mubert は、そのText-to-Musicサービスのうちの一つで、誰でも簡単に文章から作曲することができます
1. Mubertの始め方 - Colab👶
1.1. 環境構築💻
まずは環境構築といって、お使いのデバイスでMubertを使うための準備をします。
まずは上記のリンクから、 Github にあるMubert のページに行きます
そして画面左にある「Open in Colab」ボタンを押しましょう

するとこのような画面に飛びますので、画面中央の email: と書いてある部分でメールアドレスを入力(1)してから、三角マークの実行ボタンを押してください(2)(3)(4)。

メールアドレスを入力するのは、宣伝メールが届くとかいうわけではなくて、内部の関数を定義する個別のトークンを発行するためだと思われます。
また実行ボタンを押すとこのように警告が表示されますが「このまま実行」を押してください。

また、実行ボタンは処理の待ち時間が発生しますが、(2)(3)(4)を同時に押しても大丈夫です。
2分ほど経過して、このような画面になれば、Mubertの環境構築は完了です!

1.2. 曲を作ってみよう!🎵
Generate some music(曲を生成する)の欄で実行ボタンを押すと、プロンプトをもとにした曲を生成することができます。

prompt: で、どんな音楽を生成したいか指定することができます
duration: で、曲の長さを指定することができます。
loop: で、ループする曲を作れます
初期値では vladimir lenin smoking weed with bob marley (ウラジミール・レーニンがボブ・マーレイと葉巻を吸う)と入力されています
なんでレーニン?🤔
とりあえず試しに、このプロンプトで曲を作ってみました(イラストはMidjourney)
😆👍🎵
↓ループ ver
😎🤟🎶
ちなみに、曲の最後の方を比べてみるとわかると思いますが、ループしていない方は最後どんどん音が小さくなり、尻すぼみしていくのに対してループverは最後まで音量がキープされ、ループできるようになっています。
↓こちらは、「Japanese, ambient, dark, anthem, bass, mech, cyberpunk, dystopia, dubstep, anger, futuristic, god, majestic」のプロンプトで作ってみた例です。(イラストはMidjourney)
しかし、Twitter もそうなんですが、mp3 や wov 形式の音声ファイルをそのまま投稿できるようになればもっと共有が楽になるはずなんですけど、動画にしてそれを投稿しなければいけないのは辛いですね。
1.3. 曲を作ってみよう! - バッチジェネレーション🎶

下にスクロールしていくと、Batch Generation の項目があることがわかるでしょう。
Batch (束) Generation (生成) なので、これは文字通りいくつもの曲を一気に生成できるということです。
さっきと同様に、duration = の部分に曲の長さを、prompts = の部分にプロンプトを入れます。

さっきと違うのは、プロンプトが複数あるという点です。
プログラミングコードで書かれていて抵抗感がある💦という方も多いかもしれませんが、赤茶色の字で書かれている ' ' (アポストロフィー)の内側の部分に書けば良いだけですので、大丈夫です!
こんなに多くのプロンプトはいらないよ 〜💦という方は、コードを消して

このように好きな数(行)に調整できます。赤茶色の '' に囲まれた部分がプロンプトで、黒い , (カンマ)で次のプロンプトと区切ることができます。
曲を生成する際は、左上の実行ボタンを押しましょう。

そうすると、プロンプトの数だけ曲が生成されます。
1.4. 曲を作ってみよう! - カスタマイズ👾
さて、とはいっても、すでに Midjourney などのt2iサービスに慣れているAIプロンプト術師の方であれば、上記のスタイルはかなり非効率に感じると思います。
例えばMIdjourneyでは一回の生成につき四枚の画像が出力されますが、同様に同じプロンプトで複数まとめて曲を生成したいと思ったのではないでしょうか。
ということで作ってみました。
まず、最初の "Generate some music" の方にまた戻って、「コードの表示」と書かれた青い部分を押します。

すると内部のコードが表示されます。

このコードを全部削除して、代わりに下のコードをコピー&ペーストしてください。
#@title **Generate some music 🎵**
import random
prompt = 'vladimir lenin smoking weed with bob marley' #@param {type:"string"}
duration = 180 #@param {type:"number"}
number_of_generation = 10 #@param {type:"number"}
loop = False #@param {type:"boolean"}
autoplay = False #@param {type:"boolean"}
def generate_track_by_prompt(prompt, duration, loop=False):
_, tags = get_tags_for_prompts([prompt,])[0]
try:
get_track_by_tags(tags, pat, duration, autoplay=autoplay, loop=loop)
except Exception as e:
print(str(e))
print('\n')
for i in range(number_of_generation):
generate_track_by_prompt(prompt, duration, loop)
そうすると、右側の入力欄がこのように変わったと思います。

number_of_generation: と autoplay: の項目が付け足されていますね。
これはそれぞれ、一度に生成する曲の数と、生成が終わった時に自動で再生するかどうかを表しています。デフォルトだと自動再生がオンになっていたので、オフにしました。自動再生したい方は、チェックボックスをクリックしてください。また duration: を 180 秒(3分)としておきました
生成する曲の数はおそらく10くらいがちょうどいいんじゃないかと思います。一回100でやってみたのですが、なぜか普通にやるよりも一曲当たりの生成時間が極端に遅くなってしまいました。
ということで生成してみると、

2分強で10曲生成することができました!🙌😸
さらに、曲の長さをランダムにしたい場合、このコードをペーストしてください。
#@title **Generate some music 🎵**
import random
prompt = 'vladimir lenin smoking weed with bob marley' #@param {type:"string"}
duration_min = 180 #@param {type:"number"}
duration_max = 360 #@param {type:"number"}
duration_range = [duration_min, duration_max]
number_of_generation = 10 #@param {type:"number"}
loop = False #@param {type:"boolean"}
autoplay = False #@param {type:"boolean"}
def generate_track_by_prompt(prompt, duration, loop=False):
_, tags = get_tags_for_prompts([prompt,])[0]
try:
get_track_by_tags(tags, pat, duration, autoplay=autoplay, loop=loop)
except Exception as e:
print(str(e))
print('\n')
for i in range(number_of_generation):
duration = random.randint(duration_min, duration_max)
generate_track_by_prompt(prompt, duration, loop)
そうしたら、右の入力欄が、duration_min: と duration_max: に変わっているはずです。

duration_min: の欄に、曲の長さの最小値を、diration_max: の欄に最大値を入力してください。たとえばこの画像だと、出力される曲の長さが180~360秒(3分〜6分)までのいずれかになります。

他にも好きなように、Python の知識があれば自分でカスタマイズできるというのがColabでの作業のメリットです。
1.6.よくあるエラー😵💫
name 'get_tags_for_prompts' is not defined

曲の生成時に、このようなエラーが表示された場合、1.1💻環境構築で説明した(2)の実行ボタンを押してその処理が完了(左側に緑のチェックマークが表示)してから、(3)(4)の実行ボタンを押してください。
このエラーは、ブラウザを一定時間放置して接続が切れると出ることが多いです。
1.7.著作権に関して📚
Mubertの曲の著作権については、https://github.com/MubertAI/Mubert-Text-to-Music に記載されています。

↓翻訳
すべての音楽はMubert API - www.mubert.com/ によって生成されています。無料で使用したい場合は、Twitter (https://twitter.com/mubertapp) でタグ付けし、ハッシュタグ #mubert を付けてください。
(省略)
カスタムライセンスは、colabのために動作します。画像や動画と同期するために、アトリビューション付きで無料で使用できますが、自分の音楽としてDSP(Spotify、Apple Music、Deezerなど)で公開することはできません。また、@mubertappの記載とハッシュタグ#mubertをお願いします。商用ライセンスが必要な場合 - ご連絡ください。
これは、より複雑で正確な生成アルゴリズムを作成するための第一歩ですが、そのためには時間とリソースが必要です。あなたのフィードバックは非常に有用ですので、あなたのユーザーエクスペリエンスについて、リプライまたはPMでお気軽にお書きください。楽しんでください。
これをまとめると、Mubertの曲は
ということになりそうです。
ただ、本格的に商用利用する場合は、やはり以下に紹介する公式サイトの利用をおすすめします。
2. Mubertの始め方 - 公式サイト👼
Mubert には上記で紹介した Colab での作業の他に、公式サイトの利用も可能です。こちらではその始め方を軽く紹介します。
まずはこちらのページにアクセスしてください。
公式サイトを利用するメリットはまず、圧倒的に使いやすいことです。

1.Enter prompt で、どんな曲を作りたいかを指定します。シチュエーションであったり、ジャンル、雰囲気を指定することができます。
2.Set duration で、曲の長さを指定しましょう。

では左側のEnter promptの欄に、試しに「Astronaut drinking coffee in cafe on Mars」(火星のカフェでコーヒーを飲む宇宙飛行士)と入れてみてください。

左側の再生ボタンを押すと曲が再生されます。近未来的な音楽とLo-fiの感じを組み合わせてみようと宇宙飛行士とカフェを混ぜました。どうでしたか?😆
しかし生成された曲をしばらく聞いていると、"Mubert!"という音声が中に入っていることに気づくと思います。これはウォーターマーク(電子透かし)と言って、著作権を保護するためにわざと入れているやつです。
また、一度に5つまでしか並行して生成できません。
ウォーターマークのない曲をダウンロードするためには、プログラムに加入する必要があります。まず画面左側の「★Go Premium」を押してください。


プログラムの画面に遷移しますが、このままでは英語なので、画像翻訳したやつを一応載せておきます。

つまり、まとめるとこうなります
アンバサダー:無料 / 月に25曲まで / 個人利用とNFTのみ
クリエーター:月$14 / 月に500曲まで / 個人利用とNFTのみ
プロ:月$39 / 月に500曲まで / 商用利用可能
自分の場合はYoutubeで公開しているため、念の為プロに加入しました。
そして好きなプランを選んだら、アカウントを作成する画面に遷移します。
メールアドレスとパスワード、そしてチェックボックスにマークを入れてCreate Accountをクリックしましょう。

入力したメールアドレス宛に4桁の確認コードが届くと思いますので、入力して再度 Create account を押しましょう。

加入したプランによって、クレジットカードの登録などもあると思いますので、各自お願いします。
そしてダウンロードしたい場合は、生成した曲(トラック)の右側にあるこのダウンロードボタンを押しましょう。

ちょっと今は確認できなかったのですが、確か最初だけ「どのコンテンツに使う予定ですか?」みたいなことを聞かれるはずなので適したものを答えましょう。プロに加入した場合だけ聞かれるのかもしれません。
ダウンロードが完了した場合にのみ、ウォーターマークのない曲を聴けます
↓これは「Japanese, ambient, dark, anthem, bass, mech, cyberpunk, dystopia, dubstep, anger, futuristic, god, majestic」のプロンプトで作ってみた例です。(イラストはMidjourney)
まだ始めて5日目ですが、作った曲をYoutubeで公開してます。AI作曲の可能性を探索したり、あとで紹介するような有名な楽曲のクオリティに近づくことを目標としているので、よかったら登録してください😆
3.それぞれのメリットとデメリット👩💻
Colab と公式サイト両方の Mubert を利用していくうちに、双方のメリットとデメリットに気づいたので少しまとめます。

まず所感として、どっちが曲のクオリティが高いかには差はないと思います。
その上で、Colabの場合は無料で無制限で作れること、そして曲の長さをランダムにしたり一気に作れたりとカスタマイズできることが一番のメリットだと思いました。その分、使いにくかったり生成するのがエラーが発生したりといったデメリットがあります。
公式サイトはやはり、(プロプランであれば)商用利用可能であることが一番大きな点です。また、Colab での利用のようにエラーが発生したり接続が切れて再接続しなければいけないと言った面倒臭さがなく使いやすいのがメリットです。
逆に面倒というか、少しわずらわしいと感じたのが、曲の長さを固定したくない時に、一回一回durationを入力しなければいけないことと、有料プランに加入したのに、わざわざダウンロードしてzip解凍しないとウォーターマークのない曲を聴けないことです😫
なので、個人利用や、SNSでの非営利での共有が目的の場合は、Colabを使い、Youtubeなどで公開したりと商用利用する場合は公式サイトを使いましょう!
Mubert の始め方については以上となります。
次の記事では、実際Mubertではどんな曲が作れるのか?/作れないのか?人間の作る曲と AI の作る曲との違いは何か?について、具体的に実験しながら考えてみようと思います!😆
4.