Slide 1

Slide 1 text

Speech to Textureで 思い通りに世界を改変しよう 土鍋 2023/10/08 Zli 大LT

Slide 2

Slide 2 text

自己紹介 名前: 土鍋 (渡辺雄大) 学年: 学部4年(28期) 所属: A-PxL元代表、Zli、Iwaken Lab. 興味: XR、Unity、ゲーム、CG、映像 趣味: ゲーム、ゲーム開発、鉄道旅行、Vtuber Twitter(X): @donadonadonabe Blog: https://donabenabe.hatenablog.com 近況: 筑波大学 大学院 合格しました 2

Slide 3

Slide 3 text

世界を思い通りに改変したいですよね?

Slide 4

Slide 4 text

現在の研究 空間デザインにおいて抽象的な想像を具現化するのは難易度が高い 直感的な指示によって想像通りなテクスチャ変更を可能にしたい 音声認識とハンドトラッキング、画像生成AIを用いて実装する

Slide 5

Slide 5 text

デモ

Slide 6

Slide 6 text

全体の構成 HandTracking

Slide 7

Slide 7 text

Speech to Text 1. 録音(AudioClip) 2. AudioClipからWaveへの変換 3. Whisper API (Speech to Text) 4. レスポンスのtextが返ってくる 参考: Unityで録音アプリを作成 - YKpages

Slide 8

Slide 8 text

AudioClipをWAVEファイルに変換 録音データはUnity独自のAudioClip形式 Whisper APIは.mp3や.wavなどに対応している → 変換が必要 Wave Audio Clip ChunkSize 44 + AudioClip.samples * AudioClip.channels * BitsPerSample / 8 NumChannels AudioClip.channels SampleRate AudioClip.frequency ByteRate AudioClip.samples * AudioClip.channels * BitsPerSample / 8 BlockAlign AudioClip.channels * BitsPerSample / 8 Subchuk2Size AudioClip.samples * AudioClip.channels * BitsPerSample / 8 参考: 【Unity】AudioClipからWAVEファイルを生成する - はなちるのマイノート

Slide 9

Slide 9 text

全体の構成 HandTracking

Slide 10

Slide 10 text

ChatGPTでPrompt形式に変換 ChatGPT APIを叩いてるだけ Prompt 「送信されたテキストに基づいて、画像生成AI用のプロンプトを作成する。 ただし、プロンプトのみを出力する。英語、短い単語をカンマ区切りで。」 ChatGPT APIをUnityから動かす。|ねぎぽよし

Slide 11

Slide 11 text

全体の構成 HandTracking

Slide 12

Slide 12 text

Text to Image(Stable Diffusion) AUTOMATIC1111の「Stable Diffusion web UI API」 https://github.com/AUTOMATIC1111/stable-diffusion-webui Cloneして ローカルでAPIサーバーを立てる

Slide 13

Slide 13 text

リクエスト セットアップ内容のJson → 今回はプロンプトのみ使用 その他の値はデフォルト 今後は選択したオブジェクトのテクスチャサイズ に応じて、画像を生成するようにしたい

Slide 14

Slide 14 text

レスポンスからUnityのテクスチャを生成 imageはBase64で返ってくるのでbyte配列に変換してあげる。 byte配列をテクスチャに変換 オブジェクトのMeshRendererのマテリアルのBaseMapに 生成したテクスチャをセット byte[] data = Convert.FromBase64String (imageData); Texture2D texture = new Texture2D(1, 1); texture.LoadImage(data); nowSelectGameObject .GetComponent().materials[0] .SetTexture("_BaseMap",result);

Slide 15

Slide 15 text

全体の構成 HandTracking

Slide 16

Slide 16 text

3Dスキャン Room Plan: Apple ARKitの機能の一つ LiDARセンサーでスキャンし、部屋の家具を仮想空間に再現する

Slide 17

Slide 17 text

ハンドトラッキング 指差したオブジェクトを選択してテクスチャを変えたい。 右手 1. 人差し指だけ伸びてるか? 2. 指からRayを発射 3. 当たったオブジェクトを取得 左手 親指と人差し指をくっつけると 録音開始・停止

Slide 18

Slide 18 text

今後の展望 オブジェクトの形状に合うようにテクスチャを生成するようにしたい

Slide 19

Slide 19 text

参考資料 ● Unityで録音アプリを作成 - YKpages ● 【Unity】AudioClipからWAVEファイルを生成する - はなちるのマイノート ● 【Unity × ChatGPT API × WhisperAPI】音声認識AIアシスタントを実装する ● ChatGPT APIをUnityから動かす。|ねぎぽよし ● UnityのMicrophoneで正確な録音時間を取得する方法 - Qiita ● stable diffusion webuiのAPIを使う方法 ● UnityWebRequest で簡単 HTTP(POST)通信 | 株式会社ビヨンド ● Unityでbyte配列からテクスチャ作ってスプライト化するまでやる · GitHub ● Unity + Meta Quest開発メモ

Slide 20

Slide 20 text

ご清聴ありがとうございました