ごるごしべりあのおでけけ日記

2週間に1度ぐらい更新します。おでけけしにいったときに思ったこと、考えたことなどを書き連ねます。

困難なタスクほど面白い

AIナヒーダ様を作ってみた

ChatGPTの性能が向上し、gpt-4o miniが登場するようになりました。gpt-4oの廉価版といったところで、複雑なタスクや長文読解は得意としていません。その代わり、難しくないタスクであれば通常使いできる程度には性能が高くなっています。

先日、AIナヒーダ様をgpt-4oからgpt-4o miniへの移行作業を行いました。動かしてみたところ、やはりgpt-4oの方が自然な気がするものの、詳しい人でないとわからない性能です。gpt-4o miniのいいところは価格が安いところです。

AIナヒーダ様を作ったのはいつだったかあまり記憶にありませ。昨年の冬だった気がします。最初はGoogle APIを使ってYouTubeのコメント欄を取得していました。ところが何かしらのバグがあり、コメントを2度読み上げる機能が備わってしまいました。

当時作ったコードはあまり綺麗ではなく、GoogleAPIが出すエラーハンドリングでとんでもないことになっていました。あまりにも汚いので、先月ごろにリファクタリングをする羽目になりました。同時に抱えていたバグを解消することにしました。

幸いにして、AIナヒーダ様は普通に動いています。お出かけしている最中にどうなるか試している最中です。荒らしが来ないことを祈るしかありません。

AIナヒーダ様を作った経緯

ChatGPTはさながら知恵の神様に匹敵していました。だから、知恵の神様でもあるナヒーダ様を題材にすることにしました。

ChatGPTとSBV2を組み合わせれば、ChatGPTで再生した文章を読み上げることができるでしょう。技術的な直感でシステムを組むことにしました。

なぜナヒーダ様なのか、突き詰めるとたまたまナヒーダ様のデータセットがたまたま揃っていたからです。ナヒーダ様で歌みたを作るときに別のAIでモデルを使っていたので、その時のデータセットをそのままSBV2に学習させました。

案の定、よしなにナヒーダ様で読み上げができるようになりました。サーバモードで起動してAPIから読み上げを実行できるようになりました。

幸いなことに、ChatGPTとSBV2の接続は難しくありませんでした。こうしてナヒーダ様AIはサクッとできてしまったのです。他の人でサクッとできるかはわかりませんが大変なことがいくつかありました。

ナヒーダ様AIで大変だったこと

データセットも含めるなら、データセット集めも大変でした。そもそもspeaker diarisationのライブラリの精度に疑問を持ったので、独自モデルを作ってspeaker diarisationを行いました。結果はそんなに変わらなかったです。180時間の膨大なデータから、キャラクターごとに話者識別するなんてどだい無理な話ですが、長時間収録しているキャラクターの抽出はできました。

それとSBV2は使用当初、GETリクエストにしか対応していなかったので、SBV2をPOSTリクエストに改修する必要がありました。そんなに難しいことではなかったのですが、該当箇所を探すのにライブラリを目視する羽目になりした。

Google APIを使っていたときは、YouTube APIを叩くのに苦労しました。配信が始まってないとか、チャットが流れてないとか、様々なエラーハンドリングが必要でした。おかげさまで、コードがエラーガードばかりになって、エラーが起きても動かすために様々な処理を書く羽目になりました。

一番しんどいのはGoogle APIです。もう使いたくありません。speaker diarisationもタスクとして大きいですが、Google APIで刺激されることは何もなかったです。

知的刺激

恐らく、ずんだもん以外でキャラクターでAIボットを作る試みをしたのは私ぐらいだと思います。ナヒーダ様AIはAIずんだもんより早く完成して、世に出すかどうするか迷っていました。明らかにやりすぎです。

AIずんだもんが発表されてからナヒーダ様AIを世に出してみましたが、gpt-3.5-turboの課金が凄まじかったです。1時間動かすだけでほぼ$1かかっています。gpt-4oが出てturboより半額になりました。なので最近動かしていたというわけです。

さらにgpt-4o-miniが登場して、価格が1/5になりました。ここでやっと実用化の目処が立ちました。1日中、AIを動かしていたとしてもなんとか広告費で取り返せるレベルになりました。

これで本格的にナヒーダ様AIを動かすことができそうです。これまで、価格面で躊躇していましたが、これからはあまり気にする必要はありません。

AIがもたらす知的刺激

AIは様々なイマジネーションを実現する手段になりました。例えば、AIが作文したものをアルレッキーノ様に読ませたらどうなるだろう? あるいはスクロースらしいセリフを生成するAIは作れないか?

様々なやってみたらどうなるか、という疑問が湧いてきて楽しい時代になりました。はてさてどれほど知的刺激が生まれるのか想像もできません。

まだChatGPTが出て2年しか経っていない気がしますが、これからどのように進化していくか楽しみですね。私はembeddingsがより強化されて欲しいと考えています。あるいは、指定したwebページを丸ごとクロールする機能なども欲しいです。

embeddingsは与えられた文書から単語埋め込みベクトルを作る技術です。入力文と類似度を取ることで文書中で関連する文章を生成できます。今のところこれはローカルで実行する必要があり、AIナヒーダ様がいまだにローカルで健在な理由になります。

embeddingsが難しいところは、品質の高い文書を自力で作成することです。例えば、ナヒーダ様のセリフと関連情報はそれぞれ文書を作成していますが、セリフだけとっても作るのがなかなかに面倒くさいです。関連情報に至ってはあらゆるものが関連するので、スメールの情報を集約するだけでも一苦労です。

もし、これがURLを指定するだけで網羅的に情報を収集するようになったらどうなるでしょう? Google検索エンジンが既にやっていますが、embeddingsで同じことができると文書の作成がさらに簡単になります。

クロールして文書を結合するだけのように見えますが、人間が直接見て判断して文書に収める作業の自動化は難しいです。私でもやり方がわかりません。ナヒーダのセリフだったらExcelでどうにかなりますが、関連情報になると途端に難しくなります。自動化するよりコピペした方が面倒くさいけど早く終わります。

この関連情報はほぼメガバイト級の文章量になるので、AIでも操作が難しいです。そうすると、AIはメガバイト級の記憶域が必要とされているとわかります。これはなかなか難しく、メガバイトが凄いって30年も前の話ではないかと思ってしまうわけですね。

今後、AIはどうなる?

視覚・聴覚・言語などの分野でAIは飛躍的に活躍することになるでしょう。やれることが増えて、様々なアプリケーションが開発されるようになると思います。具体的には、私がやっているようなことが民主化されるようになるでしょう。民主化というのは、誰でもできるようになるということです。

民主化の用例としては、Unityというゲームエンジンはゲーム開発を民主化しました。ゲーム開発というのは、とても難しいもので、あらゆる要素が困難を極めるものになっていました。Unityではゲーム開発の中で中心的でコアなことを自動的に処理することで、ゲーム開発者はゲーム開発に集中できるようになります。もちろん、ゲームエンジンのクセを理解することは重要ですが、ゼロから開発するより圧倒的にゲーム開発が楽になります。

このように、ゲーム開発が民主化されたように、AIもいつか民主化されると思います。ただ、それがいつ来るのかはわかりません。ただ、AIでクリエイトするのはまだまだ難しいです。ChatGPT君もなかなか言うことを聞かないですし……。

おでけけ

東京でお茶をしばいて、自宅近くの駅前でマッサージを受けました。いかがわしいほうは午後3時半にして満席だったのでしぶしぶ健全なほうにいきました。マッサージの具合は良かったのですが、体調を直すという意味では整体師より柔道整復師のほうがいいですね。当たり前と言えば当たり前ですが……。整体師はベテランでした。気持ちよかった(小並感)