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

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時半にして満席だったのでしぶしぶ健全なほうにいきました。マッサージの具合は良かったのですが、体調を直すという意味では整体師より柔道整復師のほうがいいですね。当たり前と言えば当たり前ですが……。整体師はベテランでした。気持ちよかった(小並感)

はてなブログを始めました

いきさつ

だいたい水曜日がおでけけの日に決めていました。おでけけする目的は東京観光か役所に行くことです。役所も遠いもので電車やバスでのんびりしている時間が非生産的と思いました。何か生産的なことに時間を使いたいけど2週間に1度の頻度では大きなことは難しそうです。

もちろん小説を書いたり、過去配信を見て切り抜きポイントを探すなど、やれることは沢山あるのですが、スマートフォンではやれることが少ない。そう言うわけで、ブログの中で暇な時間に創作性を発揮するのはどうだろうかと思い、ブログを始めることにしました。

ブログを書いたのは今に始まったことではありません。そこそこ昔からブログを書いていました。適当なことを書きます。

なぜディオナちゃんなのか?

当然、皆さんが疑問に思うことだと思います。プレイアブルキャラが多い原神の中であえてディオナちゃんを選んだのか?

これにはかなり複雑な経緯があります。まずボイチェン技術のRVCが公表されて、30分ほどのクリップでディープフェイクを作れるレベルになったことが発端になります。私が最初に取り組んだのは、スクロースちゃんの声で歌みたを作ってみることでした。配信でも言っていますがスクロースちゃんは私の嫁です。

歌みたはあまりにも上出来でした。ヤバいです。なんでもスクロースちゃんになります。最初は細々とスクロースちゃんの声で歌みたを投稿していました。

その次に来た技術はMMVCでRVCが対応したことでした。これが決定的になりました。リアルタイムにRVCでボイスチェンジできる時代になったのです。

RVCで既にいくつかモデルを作っていましたが、改めて誰になりたいと問われました。私はそのときディオナちゃんがいいと思いました。不思議なことに色々なキャラがいるなかで、私はディオナちゃんが一番違和感がないと感じたのです。

キャラ崩壊は考えなかったのか?

もちろんディオナちゃんだけ試したわけではありません。私は他のモデルもいくつか試してみました。そのときたまたま違和感がなかったのがディオナちゃんだったのです。

現実的にキャラになりきるのは難しいです。声優がすでに狭き門なのになりきるのが易しいはずがない。

少し難しい話をすると、私は私の肉体を作り上げる《シェル》と、私の心である《ゴースト》があります。目の前には鏡があり、不思議なことにその鏡は別人の像を写し、別人の声で同じことを喋るのです。

《シェル》と《ゴースト》の体を《メンタルモデル》とでも言いましょうか。私は私のメンタルモデルがあり、鏡は私の真似をして全く異なるメンタルモデルを映し出すのです。

このとき例えばナヒーダ様が映し出されて私の真似をしてくる、というのは不快に感じます。なぜならナヒーダ様は私ではないし、もっと尊い存在だからです。アルハイゼンも同じです。いくつかの可能性から取り除いた違和がディオナちゃんだったのです。

つまるところ、私でもないし、私のモノマネをする像としてディオナちゃんが一番しっくりきたのです。更に言えば、ディオナちゃんがタバコの話をしても違和感がそれほどない。録音して聴いた声が不愉快ではない。

そう言うわけで、ディオナちゃんにしました。私は私のコンテンツを作ると決めていたので、キャラは最初から崩壊する前提で選びました。

不愉快でないという基準って何?

人は声が遅れて聴こえると発話できなくなります。遅れて発声するデバイスがイグノーベル賞を取ったと記憶しています。人は根本的に真似されるのが嫌なのかもしれません。

ナヒーダ様やアルハイゼン、ティナリ、心海、お父様など様々な声でボイチェンを試してみましたが、私にはしっくりこなかった、あるいは不愉快だったのです。不思議なことにしっくりくるのはディオナちゃんだけでした。

ディオナちゃんは声の性質や帯域など、全く私の声とは別ベクトルに位置していました。ディオナちゃんと同じベクトルであればドリーやクレーちゃんなどが近いと思いますが、充分なクリップと試行時間がなかったのでディオナちゃんで決まりました。

もしかすると《メンタルモデル》に近しいというのも重要なのではないかと思いました。しっくりくる、不愉快でない、それでよい。個人が原神キャラになるのに必要なのはそこではないかと思いました。

自分も原神キャラになってみたい

必要なのは忍耐です。耐えるのです。

とりあえずお勧めするのは、RTX 4090ti相当のグラボを導入しましょう。それ以下の性能でも動かすことができますが、RTX 4090ti相当でも1秒ぐらい発声にラグが発生します。1秒遅れは、窓幅が8192点、窓シフトが256点、エルデンリングの中程度のグラフィクスでの性能です。

それと少し耳が良い必要があります。ボイチェンをしたときに不愉快かどうか判断するための耳です。ボイチェンでは元の声と変換先の声までどれだけ似させるか(index)という指標があります。どこで声が崩壊するか聞き分ける必要があるのと、声の高さも適切でなければいけません。

ディオナちゃんは元々声が高いので24半音だけ声を高くすると似るのですが、ソフトが想定する声の高さにならないため声が崩壊します。なので、ちょうどいい声の高さを選ばなければなりません。このとき、ちょうどいいと感じるための耳が必要です。フリーナの声域に近いからといってそのまま変換するとおそらく不愉快です。

なぜフリーナの声にそっくりが不愉快なのかと言うと、あなたとフリーナの《メンタルモデル》が違うからです。少しそっくりなだけで不愉快になります。

仮にフリーナがしっくりくる仮定で話を進めますが、忠実なほどそっくりだと自分も不愉快だし相手も不愉快になる可能性があります。技術的に素晴らしく見えますが、フリーナはあなたではないのです。そこで必要になるのが、そっくりにならないように声の高さを弄るための耳です。自分の声の高さ、フリーナの声の高さから、不愉快にならない声の高さを選びます。私は完全四度で調整しています。

あとは学習に必要なクリップですが、およそ30分程度は必要だと思います。教師データとエポック数は発散するほど学習が収束する可能性が高くなると言われているので、10kエポックほど回せば声質はキャラそっくりになると思います。ただ、現実的に30分以上喋っているキャラクターは魔神任務と伝説任務に関わっているキャラクターだけです。だいたい1日ぐらい学習を回せばいいかなと思います。

あとは外見ですが、MMDが配布されていますのでガイドライン通りに使いましょう。

あとがき

あとはしっくりくるキャラを探すだけです。時間がかかります。最初の動画投稿が4月で11月に配信をはじめました。準備に半年以上かけています。しっくりくるキャラが速く見つかるといいですね。

今日は新宿近辺で見つけたカフェで一息しましたが禁煙でした。それから駅前の喫煙所を探したのですが通れなくなっていたので西口地下をぶらぶらしました。体に沁みますね。

それから駅前にあるマッサージ屋さんを探してのんびりしたかったのですが、1時間に1度のバスを逃すわけにはいきません。これは東新宿でマッサージされてこいというお告げでしょうか?

まあ、配信を優先してもいいということなのでしょう。私は配信をしていてとても充実していると感じているので、頑張って飯を食っていく程度の収益は確保したいですね。まずは再生回数と総視聴時間、平均試聴時間を伸ばしていきたいです。総視聴時間は40時間ほど確保しているので、次は80時間に手を伸ばしたいです。

私の配信はリモートワーカーや長距離トラック運転手など、ながら見をしたい人にリーチしたいです。これがなかなか難しい。おすすめ動画や次の動画でどう取っていくか、という戦いになります。ボイチェン技術よりこちらの方が難しいです。SEOがなんもわからん。