萩萩日記

自己満スキル全開です。

Suno AIを使ってPython数え歌を作りました

(今回も先に動画を貼っておきます)

youtu.be

以前、Ruby数え歌と言うのを作りました。2004/11/04の日記にはすでに「以前『Ruby数え歌』なるものを作ったことがありまして」と書いてあるので、けっこう前に作ったんだとは思うんですけど、よく覚えてないです。ただ、作ったあとにRubyメーリングリストに投稿したらゼロ反応でした(当たり前)。

さて、前回のSuno AIとSoraを使ってJR釜石駅の時刻表の音楽を作った記事にも書いたんですが一万円以上Suno AIに課金したのに最初のころ少し遊んだだけでサブスクリプションの期限が迫ってしまい、「もったいない」のでやったのが今回のPython数え歌です。

何をやったかと言うと、ChatGPTでRuby数え歌の歌詞をPythonの内容に書き換えて、それを手動で僕が修正するというもの。その歌詞をSuno AIに読み込ませて音楽を生成しました。

YouTubeで公開したかったからMVを作りたかったけど、そんなスキルも時間もなく、「Lyric Videoって書いとけば止め絵でもいいんでしょ?」ということで止め絵で行くことにしました。僕の中のナンバーワン止め絵MVであるところの『春を告げる』のMVも、止め絵とは言いつつ止め絵をいろいろ動かしたりノイズ乗せたりで超かっけーですが我慢我慢。

というわけで止め絵を作るべく、ChatGPTに以下のプロンプトを渡しました。

Lyric Videoの画像を作りたい。曲は『Python Kazoe Uta!』という、Pythonの楽しさを歌った数え歌。テクノポップ。歌声は少し落ち着いている柔らかめの女性ボーカル。この曲に関わりそうなモチーフを入れて、この曲に最適な画像を作って。アスペクト比は16:9ね。

結果。

こええよ。

というわけで引き続き

蛇は怖いから却下。歌ってる人を登場させる。Pythonのロゴはワンポイントで。

から始めて18枚目にできたのが今回使用した止め絵です。

で、止め絵とは言え目パチくらいさせたいなと思いいろいろ調べたものの、画像をもとに目パチ口パクする動画を作るAIはいろいろあったんだけど出力として画像を作るものは見つけられず。残念。

歌詞をうまいことテロップの画像にしてくれるAIも探したんだけどこちらも見つけられず(なんでもAIでやるつもり)、仕方ないのでGIMPを使ってちまちま画像を作りました。ちなみに使ったフォントはせのびゴシックというもの。ライセンスフリーでありがたいです。

あ、そうそう。

Suno AIは歌詞や曲のスタイルを入れると音楽を生成してくれます。今回使ったプロンプトはChatGPTと一緒に考えました。

J-POP, Sparkling electronic sounds, Upbeat rhythm, Medium-fast tempo, Bright bouncy beat, Cute female vocals, Friendly tone, Techno-pop, Futuristic vibe, Catchy melody, Fun atmosphere.

これを作りたい曲のスタイル欄に入れてボタンぽちで曲ができるんですが、完成形が安定しません。作るたびにものすごいクリエイティビティを発揮していろんなタイプの曲を作ってくれる。まあ、指定したスタイルの範囲で作ってくれてるから仕方ないんだけど。

ちなみに同じく音楽生成AIであるUdioなら似たタイプの曲を複数作ることができるかもしれないです。音楽を作るときのAdvanced ControlsにSeedっていう項目があって以下のような補足があり、

A number that defines the contents of a clip. In manual mode, a prompt will always yield a similar output when a fixed seed is used. Note: when not in manual mode, your prompt is processed in a random way that isn’t controlled by the seed.A number that defines the contents of a clip. In manual mode, a prompt will always yield a similar output when a fixed seed is used. Note: when not in manual mode, your prompt is processed in a random way that isn’t controlled by the seed.

たまには別のAIに翻訳してもらおうとDeepLを使ったところ、

クリップの内容を定義する数値。手動モードでは、固定シードを使用すると、プロンプトは常に同じような出力になる。注意: マニュアルモードでない場合、プロンプトはシードによって制御されないランダムな方法で処理される。マニュアルモードでは、固定シードを使用した場合、プロンプトは常に同じような出力になる。注意: マニュアルモードでない場合、プロンプトはシードによって制御されないランダムな方法で処理される。

というものだそうです。

そういえばChatGPT(というかその後ろで動いているDALL-E)にもシードを与えれば画像に出て来るキャラクターなどを固定できるんでした。これ書くまで忘れてた。ま、いいけど。ちなみにSuno AIにもシードはあるみたいですが、「楽器とボーカルの特徴は同じであるが歌詞やメロディが異なる新しい曲を生成する」らしいので僕の用途とは違いますね。

というわけで今回僕が回したガチャ、つまりSuno AIで生成した音楽は57曲。

もう一度書きます。

57曲。

その中から一番今回の狙いに近い楽曲を選んだわけです。上にも書いたように再生成しても同じような曲にはならないので、最初の方の「人は読みやすい コードが好き」を「ゴドドが好き」みたいに歌ってたり、ものすごい大事なキーワードである「The Zen of Python」を「ズ・ゼン・オブ・パイソン」と読んでたり、いろいろ悲しい部分はあるんですが、ここは涙を飲んで先に進むしかない。人生。

ええと、せっかくなので生成された曲で採用しなかったやつの話をひとつしようかな。

実は使ったプロンプトの最初にある「J-POP」は最初は入れてませんでした。いろいろ試行錯誤しながら「J-POP]「K-POP」「C-POP」など試してたわけですが、「K-POP」を指定して生成した曲を聴いて僕は「はっ!」としました。以下にその曲へのリンクを張っておきますが、というかあまりに「はっ!」としたので曲名に「K-POPぽいとはこういうことか」とか入れてますが、この曲の7秒目とか13秒目とかを聴いてみてください。「単語を歌った瞬間に音を下げてる」のわかります?わかりますよね?しゃくりの逆ですよね?フォールとか言うんですかね?これって僕の気のせいではないですよね?

というわけで、僕にとっての「K-POP」とはこれなんだなというのが、本題とは別の大きな発見でした。

suno.com

あと、リンク先に飛んでもらうとわかると思うんですが、実は歌詞はひらがなとカタカナだけで渡してます。「ひとつ ひとはよみやすい コードがすき ふたつ ふしぎとそろう インデント」とか。「みっつ みんながつかってる パイソン パパパパ パパパパ パパパパ パイソン」とか。なんでかってーと、漢字の読み方を間違ってしまうことがあるからですね(そういう意味では「コード」より「コオド」の方が良かったかも)。あと今回のような歌詞だと「Python」がえらくネイティブな発音になってしまったり。きっと「僕らマサチューセッツ州ケンブリッジ出身ですけど」というマウントですね。

1年前に間違ってSuno AIのYearlyのサブスクリプションに加入したときに払ったのは96ドル。当時のレートで13,531円。Proプランだと毎月500曲分のクレジットが追加されるので今回の曲を作るのにかかったのは約1,542円。大人の遊びとしては、まあ、いいのかな?ビッグマックセット2個とナゲットソース1個しめて1,540円を注文したと思えば。ナゲットソースはどうしよう。前はマスタード一択だったんだけど最近バーベキューも捨てがたいんだよね……。

とか書いてたらおなか減ってきた上に計算を間違ってることに気付いたんでこの記事はここまでです。

youtu.be

歌詞も。

[Verse A]

ひとつ 人は読みやすい コードが好き
ふたつ 不思議と揃う インデント

[Verse B]

遠目に見ても 構造がわかる
リスト内包 けっこう便利じゃん!

[Chorus]

みっつ みんなが使ってる Python
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python
キミも使ってみなよ!

[Verse A]

よっつ 予想外の動き 試行錯誤
いつつ いつも学べる エラーから

[Verse B]

強い型付け なくても構わない
それがむしろ 楽しくなくなくなくなくない?

[Chorus]

むっつ 無駄なく書ける Python
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python
無駄とはさよならだ!

[Verse A]

ななつ 習うより慣れろが 大事かもね
やっつ ややこしいときは pip

[Verse C]

でも大丈夫 僕らの手には The Zen of Python
そうさそれこそ Pythonの美学
そうさこれこそ Pythonの美学

[Chorus]

ここのつ 心強い味方
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python
繋げまくるよ グルーな言語
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python

[Outro]

Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python
Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Pa Python
Python

今回手伝ってくれたAIたち

Suno AI 歌詞を元に音楽を生成
Creative Writing Coach 歌詞のブラッシュアップ
ChatGPT Ruby数え歌の歌詞をPython数え歌に変換。Suno AI用のプロンプトの生成。止め絵の生成。疲れたときの僕への励まし

おまけ:僕の中のナンバーワン止め絵MV、yamaの『春を告げる』

www.youtube.com