AIは賢く見えて究極のバカ「LLMの課題」、Geminiで「ソフト・シンセサイザー」を作ってみました。

 Geminiでソフトシンセサイザーを作ってみました。

多少専門知識が必要ですが、シーケンサーやエフェクターを搭載した本格的なシンセサイザーがほぼ一発で作れます。AIを利用すれば誰でも無料でシンセサイザーを入手できます。

画像をクリックするとシンセサイザーが起動します)

凄いですよねー、昔はエフェクターのリバーブだけでも単体で10万円はしましたからね。それがタダでしかもすぐに手に入ります。もちろん音もクリアーで市販品レベルのクオリティの音が鳴ります。

もちろん以前作っていた「Cardputer-Adv」のシンセに比べると音のクオリティーは格段に上です。その要因はパソコンの処理能力と小さなマイコンの処理能力の差で、音声波形をリアルタイムにシミュレーションしているので、これはどうしようもない処理能力の問題です。やはりマイコンは非力で能力的には格段に劣ります。それでも挑戦する意義はあるのですが、今回あまりにもあっさりと高級シンセが作れてしまったことで戦意を消失しています。

ただ、これまでの実験を通して現状のLLMの大きな課題に突き当たりました。
LLMは(Large Language Models/大規模言語モデル)というプログラムで、「言語」を扱うためのAIプログラムです。つまり「言語」以外は特に優秀ではないということです。端的に言えばプログラムを作るために作られたAIではないということです。

システム開発を行った事がある方ならわかると思いますが、一つのシステムを構築するためには機能要件の整理から始まって、概要設計や仕様設計、詳細設計やテスト設計等々、コーディング以前に膨大な設計の整理が必要ですし、システムを稼働させる環境設計やソフトプロダクトの選定などやることは膨大です。こういった膨大な作業をAIがやってくれたら大変助かりますが、残念ながら現状のAIモデルはこのような複雑な作業には向いていません。というかほぼ無理です。

何故ならLLMは、お喋りするための「言語モデル」だからです。
試しにプロンプトに「オセロゲームをできるか?」と聞いてみてください。「もちろん出来ます」と返答をするので、実際にゲームをやってみてください。昔よくあった文字キャラを並べたオセロ盤を表示すると思うので、自分のコマの座標のアドレスを指定するとゲームが遊べます。

やってみるとわかりますが、3手目までは普通に進むと思います。でも4手目でほぼバグります。GeminiもGrokも4手目でバグって、オセロ盤の状態を維持することもできなくなって思考が止まりました。

なぜオセロが4手目で「ぐちゃぐちゃ」になるのか?
これには「自己回帰(Autoregressive)」というLLMの性質が関係しています。
 1手目: ほぼ正確。
 2手目: わずかな「もっともらしさ(確率)」の誤差が混じる。
 3手目: 前の誤差の上に、さらに新しい予測を重ねる。
 4手目: 誤差が蓄積(複利のように膨らむ)AIの中の盤面と実際の盤面が完全に乖離する。
画像生成の場合は、この「誤差」が良い感じの「味(多様性)」になりますが、オセロでは「致命的なルール違反」になります。

LLMの構造はプロンプトに入力された文字列情報を整理して、それに関連する情報の確率マップから返信すべき文字列をサイコロを振って一番確率の高い一文字を返すということを繰り返しているだけです。つまり人間のように文章の全体を捉えて意味を理解して返信しているわけではなく、あくまでも文字列の確率の問題を1文字ずつサイコロを振って返しているだけです。これがLLMなんです。

現状のAIは一つのセッションが始まった冒頭から毎回入力したプロンプトや返信の文字列を読み返して次の一つ文字を探し続けるわけですが、オセロ盤のようなよく似た文字列が続くと段々と状況が掴めなくなって、3、4回続けると何が最新の状態なのか?何を返信すればよいのか?混乱して暴走するようです。

そのことはGeminiもGrokも正直にそんな状態になって混乱したと答えました。つまり8*8のたった64個のデータも保持して管理できないという構造的欠陥です。

実はこれが今のAIの最大の課題で、LLMは簡単なスタックメモリすら持っていないので、現状の状態を維持できないという制限があります。そのために常にプロンプトと返信を毎回読み返すことで次の一文字を探すわけですが、同じような文字列が連続で続くとその区別が難しくなるようです。

だから以前の「Cardputer-Adv」でのシンセ開発には時間もかかって苦労しました。序盤に生成したコードを無視して全然別のコードを生成するなんてことは頻繁にありました。今何をやっているのか?という認識がとても苦手だということです。なので大規模なシステム開発ではセクションを細かく区切りながら、目的を絞って使わないとうまくいかなくなります。AI動画などで途中でキャラが変わっているものをよく見かけますが、まさにあのような混乱状態に陥る可能性が高いということです。

だからAIに処理を指示するなら3手以内に収めるほうが無難だと思います。それでも途中で混乱することはあるので、できれば1発で回答を引き出すようなプロンプトが安全です。コード開発の場合は、途中で一旦成果物を保存するために「これを(成果物1)とする」といったプロンプトを間に入れておくとAIの混乱は少なくなります。

今回テストしたプロンプトです。
==================================================
Web Audio APを利用した波形生成やフィルター、ADSR、LFO、エフェクターを搭載したシンセサイザーを作りたい。下記の仕様でブラウザで動作するシーケンサーを含めたシンセサイザーを作って
・オシレーター1として基本波形を選択できること。
・オシレーター2として基本波形を選択できること。
・2つのオシレーター合成を調整できること。
・合成した波形を表示すること。
・フイルターを調整できること。(ローパス / ハイパス / バンドパス、ピーキング / ノッチ、シェルフフ)
・ADSRはアンプとフィルターの2つでパラメータ、深さの調整できること。
・LFOはオシレーターとフィルターの2つでサイクル、深さの調整できること。
・エフェクターはディレイ、リバーブ、ディストーション、コンプレッサーをそれぞれ調整できること。
・マスターのアンプ調整ができること。
・16ステップのシーケンサーを搭載し、BPMの調整ができること。
・シーケンサーのエディター機能を搭載すること。
・シーケンサーのノートやベロシティの設定ができること。
・ノードとベロシティの設定はシーケンサーのボタンの下に設置すること。
・ノードの設定はC1から C8までフルスケールで変更できること。
・各種選択やボリューム調整用のノブなどを統一すること。==================================================

テストの結果、Geminiが優秀で一発で完成品レベルのもを生成できました。前回の「Cardputer-Adv」のコード生成はダメでしたが、JavaScriptは得意なようです。

Grokも音の鳴るものは生成はできましたが、一部の機能が抜け落ちました。またデザイン的にも使いづらかったです。トータル的に機能をまとめる部分が弱いようです。

ChatGPTは最悪で、全く理解もできずコード生成も途中で投げ出しました。そのことを指摘すると自分用のテンプレートを出してきて、これに整理し直せと言われました。何のためのAIなのか?本末転倒で全く使い物になりません。まだまだ進化途上の「ナンチャッテAI」レベルのようです。

Javascriptを利用したブラウザで動作するソフト・シンセサイザーは、そもそものオーディオ・ライブラリーが優秀なので、簡単なパラメーターを繋ぐだけでシンセサイザーが作れます。コード的には300行ほどでシンプルです。現状は単音ですが、ポリフォニックや複数トラックにも改造は可能かと思います。チャレンジしてみた下さい。



Amazon M5Stack Cardputer
M5Stack Cardputer


Amazon M5Stack Cardputer
M5Stack Cardputer


Amazon WOODEN.CITY 3D 木製機械モデルセット Willys 4x4
WOODEN.CITY 3D 木製機械モデルセット Willys 4x4


Amazon ROKR 立体パズル 木製 スチームエンジン 蒸気機関車
ROKR 立体パズル 木製 スチームエンジン 蒸気機関車


Amazon ROKR 3Dピンボールマシン
ROKR 3Dピンボールマシン


Amazon 帆船模型
帆船模型


このブログの人気の投稿

空き缶スターリングエンジンの作り方

カードサイズの小さなコンピュータ「M5Stack Cardputer ADV」でソフトシンセは作れるか?

ちっちゃなコンピュータとAIとの付き合い方 M5Stack Cardputer ADV

ファミコンゲームの作り方「X6 Game Player」

Scratchでどこまで作れるか? ゲーム作成ツールとしての実力

小さなシンセサイザーを作っています。M5Stack Cardputer-ADV

この冬の暇つぶしみっけ! TIC-80 tiny computer

実際に動く木製エンジンの作り方 「Wooden engine」

レトロゲーム開発環境のTIC-80は流行っているのか?

プラダンでカヤックを自作する。【総集編】