🎸

【VibeCodingChallenge#10】動画から音楽自動生成ツール

に公開

はじめに

このVibeCodingChallengeでは、個人的にAIコード生成ツールを使いながら、AIだけでプログラムを作り、AIに何ができて、何ができないのか?といったことを模索していく挑戦をしております。
気軽な読み物としてお楽しみください。
今回は、音楽生成のSuno、私も使っていますが、最近の音楽生成もとてもすごい品質になりましたよね。
これを使っていて、
プロンプトを充てるだけで音楽が作れる

プロンプトを自動的に作れれば、音楽が自動で作れる

その場の雰囲気やシチュエーションをプロンプトに変換して与えれば、その場にあった雰囲気の音楽が作れる?
と思ったので、チャレンジしてみます

最終成果物

いつものことながら最終成果物です

https://youtu.be/r5PSvjaxvZw
以下のようなことをしています。

  1. カメラから映像を撮影する。(動画は、スマホの大谷翔平のインタビュー)
  2. システムプロンプトを記載する(動画では事前に記載)
  3. 音楽を作成する(Geminiが音楽生成AIのUdioに対して充てるプロンプトを作成)
  4. 音楽生成AIのUdioが音楽を作成する(約2分程度かかる)
  5. プレイリスト上で音楽が再生できるようになる

今回撮影した動画ではGeminiが以下等のプロンプトを書いて、Udioに連携し、動画にあるような音楽を作ってくれました。

The stadium lights blazed, casting a halo around Kenji as he stood at home plate, the dust from his triumphant slide still clinging to his uniform.
A roar, a visible wave of jubilation, washed over the stands.
Thousands of faces, a sea of ecstatic smiles reflecting the stadium lights, were all turned towards him.
He could feel the vibrations in the ground beneath his feet, the palpable energy radiating from the crowd, a testament to the raw power of his game-winning home run.
He’d visualized this moment a thousand times, the crack of the bat, the soaring arc of the ball against the twilight sky, the electric thrill as he rounded the bases. But nothing, not even his most vivid imaginings, could have prepared him for the overwhelming reality of it. His heart pounded in his chest, a drumbeat echoing the rhythmic chanting of his name that now filled the stadium. A microphone was thrust towards him, the reporter’s face beaming with excitement. Kenji blinked, momentarily dazed, the sudden sh

今回の学び1 PiAPI

今回Udioを使う際に、APIが存在しなかったので、どうしたものかと思っていましたが、PiAPIなるものがあるぞ、ということをChatGPTさんに教えてもらいました。※本当はSunoが良くて使いたかったのだが、ClaudeCodeでうまくいかず、ようやくUdioで実現したというのは内緒です。
 このPiAPIというのは、生成AIを1つのAPIキーだけでいろんなものを使うことができるようなサービスで、非公式ながらもSunoやUdioなども具備されており、個人で遊びで使うにはいいサービスです。
もしお試ししたい場合は、最初にクレジットも微量にもらえるので、ぜひお試しください。

公式サイト
https://piapi.ai/

このAPIを使って、動画とシステムプロンプトをもとに、Geminiが自動で作ったプロンプトを、APIでUdioにぶつけることで今回のような、動画から音楽を作るというサービスを実現しています。

今回ClaudeCodeでは非常にこの部分の実装は苦労しました。

例えば、PiAPIは動いていることを確認できても、レスポンスが間違っていて、画面に表示されない。
PiAPIで音楽が作れたと思ったら、今度は顔認識が壊れているなど、頻繁には使わないようなAPIを使っているからなのか、かなりの時間PiAPIとの悪戦苦闘させられました。

今回の学び2 MediaPipe

また、今回Webカメラの動作については、MediaPipeというもので、表情をリアルタイム認識しています。顔検出や、表情認識、全身の動きのトラッキングをしていて、その結果をGeminiにぶつけて、ストーリーとなるプロンプトを作るような動きをしてプロンプトを作っています。
実際画面上にEmotionを表示するようにしていて、複数人で複数表情だと、人数をカウントして、Emotionが増えていきプロンプトに反映するという以下のような仕組みです。

これとシステムプロンプトを組み合わせることで、怒っているのか、楽しんでいるのかなどを把握しています。(ただ、大谷君はお顔立ちなのか、Angryが多め、、、)

今回の学び3 ClaudeCodeにおけるテストコスト

今回前述のとおり、PiAPIの処理に非常に苦戦をした結果、APIのテストを自動でClaudeCodeが直すたびにしてしまい、5ドルのクレジットを、速攻で使い切ってしまいました。
その結果、理想を言えばUIをもっと綺麗にしたいと思って、実装しなおし、以下のようなものを作ったが、テストをしすぎて、PiAPIのクレジットを使い切ってしまい動画にできませんでした、、、

テスト実施などは、ClaudeCodeのLimit、コスト面も含めて気を付けて指示を出す必要がありそうというのも今回は反省です。

終わりに

今回は、音楽を生成するアプリを様々なAPIを使って実装してみました。結構いい感じじゃないでしょうか。
これを使って、例えばカフェのBGM等を雰囲気に合わせて自動生成する等(実際には、顧客同意が必要なのでできないのだが)、雰囲気に合わせた音楽生成ができると面白そうですよね。
 一方で、マイナーなAPIや実装は結構作るのが大変だったりしました。このあたりの改善策は、今後もトライ&エラーで考えてみたいと思います。
 今後も、AIのみで、実際にアプリを作っていきますので、ぜひご覧ください。

Accenture Japan (有志)

Discussion