先週の土曜日早朝、AI研究家の清水亮さんが興奮して「o3-miniのコーディング能力がすごい」「自分だけではそのポテンシャルを実感できないからハッカソンやろう」と言ってるところに居合わせた結果、自分もそのハッカソンに出ることになりました。
・こいつは本物だ!o3-mini あまりに凄いので緊急ハッカソン開催決定!
すでに動画レポートが上がっており、そこには自分らのチームの発表も出ています。
でも、ここだけではわかりにくいと思うので、その成果物というか、さらに改良したものがどういうものか、どのように作っていったかを解説したいと思います。
ノンプログラマーであってもアイデアさえあればプログラミングができるというのは、Claude Artifactsで実証済み。筆者はシンセサイザーなどを作って遊んでいました。
しかし、Claudeに限らず、この頃のLLMベースの開発環境はまだ欠点が多く、例えばエラーを修正させようとすると、その前のエラーが再発生したりと、コントロールするのが非常に困難でした。
職業プログラマーの方々はReplit AgentやCursorなどのより使いやすいコーディング支援ツールに移行して、LLMから直接プログラムを作るということはしないようになっています。
しかし、筆者のような非プログラマーにとっては、アバウトな希望を伝達するだけでブラウザで動くアプリを作ってくれるLLMは非常にありがたいもの。
そこへChatGPTの新世代モデルであるo3-miniが登場したことにより、大きく変わりました。
o3-miniの前にはo1、o1 pro modeがありましたが、4oと比べると圧倒的に時間がかかります。テンポよく進めることができないのでコーディングには向きません。o3-miniは4oに近いテンポでサクサクと答えを出してくれます。
そして何より、希望するプログラムをほぼ一発で出してくれるのです。こちらの指定が足りないせいで追加機能を指示しても、プログラム自体を壊さずに実装してくれます。
おかげで、これまでできなかったようなことを頼めるようになりました。
より複雑で、実用的なものが作れるようになったのです。
ちょうど現在、やりたいことは、AI楽曲のSTEM対応ビジュアライザーです。
最近のAI作曲ツールは、STEM音源を出力できるようになっています。できなくてもUVR5やLogic Proを使えば単一のオーディオファイルからボーカル、ベース、ドラム、その他のパートに分かれたオーディオデータを分離することができます。
せっかく分離してくれたのだから、それを活用したいじゃないですか。
歌詞データもあるから、カラオケ的な歌詞同期もさせたい。
SunoやUdioには楽曲の歌詞を同期させるたビデオファイルを出力できますが、最新のAI作曲サービスであるRiffusionにはビデオ出力の機能がありません。オープンソースのYuEも同様です。
▲Riffusionにはm4aとSTEMのオーディオ出力しかない
そのために作例をSNSにアップロードしようとしても、無理やり動画を作らないといけません。いちいち歌詞を切り貼りしたり、動画を作るのも大変なのです。
そこで、こうしたことをサポートしてくれるツールを作りたいと思っていたところにo3-miniハッカソン参加の機会がやってきたわけです。
ハッカソンで筆者が同じチームになったのは、第三回AIアートグランプリの審査員特別賞を受賞したMasaさん(「100 TIMES AI HEROES」)。何かやろうと考えたときに提案したのがこのためのツールです。
実はハッカソンの前に取り掛かっていて、最初の指令はこちらでした。
ボーカル、ベース、ドラム、その他からなる4つのSTEMオーディオトラックと歌詞を読み込んで、それぞれのパートの進展に合わせたビジュアライザーを同期しながら表示させるプログラムをブラウザで表示できる形式で作って
歌詞をタイミングよく表示させるには、LRCというフォーマットを使うということも初めて知りました。ということは、歌詞をLRCに変換する必要もあります。
そのためのツールもo3-miniに作ってもらいました。
ボーカルデータを聴きながら、自分でタイミングよくボタンを押してタイムスタンプを作るというプリミティブなものですが、いちおう動きました。
ここでできたタイムスタンプ付き歌詞データとSTEMファイル4種類を読み込んで表示すると、ちゃんと動きます。
最初はボーカル、ドラム、ベース、その他に分かれた波形をマトリックス状に別々に表示していたのですが、Masaさんのアイデアで重ね合わせ表示に。画面の下部には歌詞をタイミングよく表示します。
masaさんからは、ドラムの表示は立方体などの図形で周波数別に表示したら面白いのではというアイデアをもらっていましたが、ハッカソンではここまでで時間切れ。それでも短時間にここまでできたのはo3-miniの優秀さのおかげです。
この時点での表示は上記の動画を見ていただくとして、その後の改良したものをご覧ください。
使用ツール:
STEMビジュアライザー(o3-mini-highで開発)
LRC歌詞エディタ(o3-mini-highで開発)
Riffusion(作詞・作曲・演奏・歌唱)
Runway(画像生成、ループ動画生成)
コントロールパネルで必要なファイルを読み込みます。
背景には歌詞から生成したプロンプトで作った画像、そこから生成した動画をループさせています。これも動画エディタを使って重ね合わせる必要はなく、完成品(WebM)の形でエクスポートされます。
LRC歌詞エディタの操作が手間ですが、ボーカルデータをWhisper JAXに読み込ませて文字起こししてタイムスタンプをつけではどうかというMasaさんの提案で、それをLRC形式にした上で、元歌詞と付き合わせるという作業をChatGPT上でやることで、手間を軽減することはできました。
▲Whisper JAXによる文字起こしとタイムスタンプ付加を利用
4つのSTEMパートの図形表示はまだまだ課題ですが、それはいろいろなアイデアをo3-miniと相談しながらやっていくのは楽しそうです。
今回はMasaさんのアイデアが非常にありがたかったので、人間とアイデア出ししあうのもまた楽しいなと実感しました。
筆者はハッカソン参加も初めてでしたが、おそろしいくらいにハードルの下がったプログラミングに、みなさんもチャレンジしてみてはいかがでしょうか?