
Hello World作品解説~Tech Synthesizer編①~
展示会『Hello World』を開催しました
自分が代表と務めるメディアアート集団"WONDEMENT"は8月10〜12日の3日間、原宿のデザインフェスタギャラリーで第三回展示となる『Hello World』を開催しました。

本展示ではメイン作品1点とサブの作品2点の合計3点を展示し、自分が全体のプロデュースと2つの作品制作に携わっています。
今回はその『Hello World』で展示し、自分が制作に携わったメイン作品『Tech Synthesizer』の作品解説をしていきます。
作品詳細
今回noteで取り上げるのは『Tech Synthesizer』です。

クレジット
プロデューサー、ディレクター、プログラマー
:SUKE
プログラマー
:セカオザ
作品説明
『Tech Synthesizer』は「AI」「Self Portrait」「Music」の3つのモードを選択して体験するインタラクティブコンテンツです。
展示会名である『Hello World』はプログラミングにおいてまず最初に触れるステップですが、本作品はそのHello Worldの考えをベースにAIやメディアアートといったテクノロジーと使った表現に触れる第一歩目を目指した作品になっています。
使用ソフト等
TouchDesigner
StreamDiffusion
Google Cloud API
手軽に触れられるメディアアート
WONDEMENTの作品は体験型のインタラクティブコンテンツが主軸になっています。
見るだけでなく、触って操作して体験出来る方がよりメディアアートの魅力や面白さを感じてもらえると考えているからです。
そのため、今回の『Tech Synthesizer』も3つのモードがあり、それを切り替えながら遊べる体験型のコンテンツになっています。
これまではTouchDesignerをベースとしたコンテンツになっていましたが、今回はTouchDesignerに加えて昨今話題となっている画像生成AIなども組み込みながら「手軽に触れられるメディアアート」をテーマとしています。
ここからは各モードについての制作過程や詳細を説明していきます。
AIモード
AIモードとは
AIモードは"StreamDiffusion"を活用しています。
StreamDiffusionは複数の高速化技術を組み合わせることで、超高速に画像
を生成出来るように調整されたシステムです。
これまでのStable Diffusionよりも早く、リアルタイムに画像生成が出来る画像生成を行うkとおが出来ます。
通常の画像生成AIモデルだと、一枚生成するのに数秒〜数十秒かかっていました。

これが1秒もかからず、プロンプトが入力されてからほぼリアルタイムに画像が生成されるのがStreamDiffusionの特徴です。
AIモードではこのStreamDiffusionのリアルタイム性を使って「声で操作するAI」をテーマに制作しました。
声で操作する
どうやって音声認識させる?
"声で操作する"ということを考えた際、
マイクに向かって話す→何かで音声認識する
→それをテキスト化する→そのテキストプロンプトとしてAIに入力される
こういった流れで処理が進んでいく必要があると考えました。
となると最初の壁は音声認識です。
基幹となるのはTouchDesignerなので、TouchDesignerで音声認識をした事例を色々と調べる中でとある記事を見つけました。
Google Cloud APIを使う
見つけたのはこちらの記事
3年前に行われたTouchDesignerワークショップの講演の一つの記事だそうで、TouchDesignerを使った自動翻訳ツールの作り方が紹介されています。
Google Cloudにある"Cloud Speech-to-Text API"と""Cloud Translation API"を活用してマイクからの音声をこのAPIに流して音声認識して翻訳し、そのテキストをTouchDesignerの画面に表示させています。
これを見て「TouchDesignerでテキストとして表示出来るなら、それをプロンプトとしてインポートも出来るのは」と考え、これをベースに音声認識の仕組みを作成することにしました。
やったことは正直この記事の内容ほぼそのままです。
この記事を身ながら進めていけば特に問題は怒らないと思います。
ただ、最終的に英語に翻訳されるまで時間がかかってしまう(=入力された内容が確定するまでの時間が長い)という事象を解決できず、最終的には日本語のままで利用することにしました。
TouchDesignerでStreamDiffusionを動かす
次はTouchDesignerでStreamDiffusionを動かす方法です。
これも検索する中でとある動画を見つけました。
DotSimulateという方の動画なのですが、StreamDiffusionをTouchDesignerで動かすための"StreamdiffusionTD"というtoxを制作、公開していました。
toxを利用するにはPatreonというサイトからこの方のメンバーシップに有償で登録する必要がありますが、Discordのコミュニティにも参加でき、不具合や質問があった際に直接聞くことも出来る他、YouTubeでセットアップの動画を公開しているのでとてもスムーズにセットアップ出来ます。

テキストをプロンプトに入れる
マイクから入力された音声はGoogle Cloud APIで処理された後、テキスト化されてTouchDesignerの"OSC in DAT"に入ります。
これが画像生成AIのプロンプトとして使われます。
対してStreamdiffusionTDのプロンプトは"Stream Setting 1"タブの「Prompt」欄に入力します。
ただDATをそのままリンクさせてもインポートされないので、何等かの処理を行う必要があります。
ここが苦戦ポイントだったのですが、DotSimulateのDiscodeでとあるユーザーの質問の回答として提供されていた「travel table」というtoxで解決しました。
正直これによってどのような処理が行われているかは分からないのですが、上手くプロンプトとして入力することが出来ています。

高速でリアルタイムに生成している感じを見せる
ここまででなんとか音声でプロンプトを入力出来る様になりました。
ここからは作品の見せ方を工夫していきます。
今回はリアルタイムに画像が生成されていることが魅力なので、そこを表現する手法を考えました。
画像生成にはプロンプトのみからイメージを起こす「text to image」と、参考となる画像からイメージを起こす「image to image」の二種類が存在します。
「text to image」は入力されたプロンプトに対して1枚の画像が出るだけで、プロンプトが変わらない限り絵も変わらないので今回は「image to image」を採用しました。
「image to image」は参考となる画像が変化すれば出力される画像も変化するため、noise TOPのseed値にabsTimeを入れて常に変化する様に設定し、出力される映像が変わる様にしています。

投影する
今回、PCスペックの関係でAIを動かすPCと他モードの処理や出力用のプロジェクターへの入力を行うPCを分けています。
そのため生成した画像をHDMIキャプチャーボードを使って別のPCに取り込んでいます。
今回はここまで
長くなってしまったので今回はここまでです。
AIモードは他の方が作っていたものを組み合わせて形にしているため、解説より参考元の紹介が多くなってしまいました。
ただ、"StreamdiffusionTD"開発元のDotSimulateを始め、開発・提供いただいたことに感謝です。
次回は3種あるモードのうち2つ目のモードを解説してきます。
それではまた!