インタラクティブAIホログラム: Oracle Database 23ai Select AI、Vector RAG、OCI Speech AI、およびAudio2Face MetaHumansによるデジタル・ダブル・アシスタントの開発 (2024/12/22)
インタラクティブAIホログラム: Oracle Database 23ai Select AI、Vector RAG、OCI Speech AI、およびAudio2Face MetaHumansによるデジタル・ダブル・アシスタントの開発 (2024/12/22)
投稿者: Paul Parkinson | Architect and Developer Evangelist, Microservices and Converged Database
パブリック・データやプライベート・データなど、人とのやり取り、対面、自然な話し方、AIの使用など、あらゆることについて質問してください。話し言葉、テキスト、空間/3d、画像、およびビデオは、質問に答えるためにホログラフィックMetaHumanによって返されます。これは、このソリューションで達成され、Oracle Database 23aiを使用して構築された目標です。
プロトタイプは、Oracle CloudWorld DatabaseWorld 2024で最初に表示され、ソース・コードが用意されているため、1日で自分で実行できます。多くのオプションおよびプラガブルな側面があるため、必要なビットを選択して選択できます(たとえば、ホログラムを完全に撤去し、単に音声を使用して対話できます)。ただし、ユースケースによっては、意図的に最小限に抑えられるものが多数あります。
このブログおよび関連するビデオのビデオ・ウォークスルーは、ここで確認できます。
アーキテクチャ
流れ...
- 参加者は、目の接触を維持するホログラフィック人間の顔と相互作用します(参加者は顔を選択することもできます)。これは、ホログラフィックファンと非現実的なメタヒューマンの組み合わせを使用して生成されます。
- 参加者は、マイクによって取り上げられ、テキストに変換された質問を口頭で尋ねます。Oracle Speech AIは、このリアルタイムの音声変換を実行します。
- オプションで、画像またはビデオを入力として撮影または提供することもできます。
- 問合せの性質に応じて、テキストは1つ以上のサービスに送信されます...
- 問合せは、Select AI (nature language to SQL)問合せについてOracle Databaseに送信され、結果がnarrateまたはchat (またはevent showsqlまたはrunql)形式で返されます。
- セマンティックな意味に基づいてRAGベクトル検索を実行するために、問合せをOracle Database 23aiに直接、またはOracle Backend for Microservices and AI (Sandbox)を介して送信することもできます。
- オプションで、画像やその他のメディアが提供された場合は、RAG Vector検索やOCI Vision AIサービスによる分析のために問合せを送信することもできます。
- クエリーのテキスト結果はオーディオ/音声に変換されます。Oracle Speech AIがこのTTSを実施します。
- オプションで、ビデオ3d空間レンダリングなど、問合せから返されたその他のメディアはホログラムとして表示されます。
- 返される音声は、オーディオをアニメーションに変換するAudio2Faceに送られます。
- その後、このアニメーションがUnreal MetaHumanに送信され、オーディオ/音声再生と同期してアニメーション化されます。
- これは、参加者がやり取りしているホログラム・ファンで再生されます。
- 応答時間は驚くほど速く、Alex、Siriなどと同等ですが、はるかに大きな機能が含まれています。ホログラムのない完全な要求応答は、わずか4秒、ホログラムは8秒です。音声AIのトランスクリプションはリアルタイムで、コールされるOracle DatabaseとOCI Gen AIサービスの組み合わせは1秒未満で行われます。TTS(テキスト読み上げ)への呼び出しと結果のオーディオファイルの持続にかかる時間はわずか3秒です。驚くべきことに、audio2Faceアニメーションは、ほぼ即座に生成およびストリーミングされますが、omniverse audio2Faceサービスがクライアントとコロケーションされている場合でも、オーディオ・トラックの設定に2秒かかるaudio2Face Rest APIコールが2つあります。
使用されているOracleテクノロジのリスト(*基本機能にすべてのコンポーネントが必要なわけではありません)
- OCI Speech AI(リアルタイム転写およびTTS)
- Oracle Database AIの選択(NL2SQL)
- Oracle Database RAG/ベクトル検索
- Oracle Database空間
- Oracle OKE(Kubernetes)
- Oracle Backend for MicroservicesとAIサンドボックス
- OCI Vision AI
- OCI HPC(またはラップトップ)上のNvidia Omniverse
- OCI HPC(またはラップトップ)上のUnreal Engine
- ホログラムファン(Oracle以外)
コンポーネント・コール・フローのビジュアル化...
顧客対応の非現実的なMetaHuman
10年以上にわたりUnityとUnrealのファンと開発者として、3dの開発スペースにおけるアプローチと機能について、それらがどのように異なっているかを見ることは常に興味深いことです。たとえば、UnityはXRの互換性、モバイル開発、使いやすさに優れており、このソリューションをそのスペースにもたらします。UnrealのMetaHumansの現実性と詳細さは、ゲームだけでなく映画でも使われている「非常に現実的なデジタル・ヒューマン・キャラクタを想像可能な形で作成、アニメート、使用」するフレームワークです。Oracle Database Spatialを使用して、実際のユーザーの3Dスキャン、自動リグ、アニメート、およびゲームや他の側面へのインポート/エクスポートからMetaHumanを簡単に作成する方法については、YouTubeシリーズを参照してください。このブログでは、Unrealプロジェクトにインポートし、LiveLink Audio2FaceアニメーションをストリーミングするためにLiveLinkを設定する簡単な手順について説明します。
まず、Quixel Bridgeを開いてMetaHumansにアクセスします...
次に、MetaHumanメニューを選択します
最後に、ダウンロードをクリックして、MetaHumanをプロジェクトに追加するだけで、コンテンツに保存されます。次に、MetaHumanをプロジェクトにドラッグするだけです。
このブログの後半のセクションでは、LivelinkストリーミングとAudio2Faceを有効にするために必要ないくつかの追加ステップについて説明します。
OCI Speech AIリアルタイム音声の翻訳
この側面については、前のブログ「OCI Real-Time Speech Transcriptionによる開発 およびOracle Database NL2SQL/Select AI To Speak With Your Data」で取り上げました。詳細やコードサンプルなどは、その作品をご参照ください。
ここで付け加える一つの簡単なことは、設計上、リアルタイムのスピーチへの接続が1時間非アクティブになった後に切断されるため、ソースコードで追加したとおりに、必要に応じて再接続するロジックを追加する必要があるということです。
Select AI
Oracle Databaseバージョン23aiにはベクトル検索、RAG、Spatial AIなどの多くのAI機能が含まれていますが、NL2SQL/Select AIは実際にはバージョン19で導入されました。つまり、自然言語のテキストを取得してSQLに変換し、自然言語のナレート形式またはチャット形式、実際のSQL自体、またはSQLの実行結果のいずれかで結果を返します。
繰り返しますが、この側面については、前のブログ「Develop With OCI Real-Time Speech Transcription and Oracle Database NL2SQL/Select AI To Speak With Your Data」で取り上げました。そのため、読者に指示します。
また、Marty Gubarなどのブログをチェックしてください。
Oracle Database 23aiのRAGおよびベクトル
Oracle Database 23aiでは、RAGおよびVector検索に多数のリソースとOracle LiveLabs (Oracleワークショップ)があるため、ここでコンテンツを繰り返すことによって冗長化されませんが、要するに、Oracle AI Vector Searchを使用すると、その値に加えて、セマンティクスまたは意味に基づいて構造化データおよび非構造化データを検索できます。ネイティブ・ベクトル機能は、大規模な言語モデル(LLM)が、検索拡張生成(RAG)により、より正確でコンテキスト上関連性の高い結果を提供するのに役立ちます。RAGを使用すると、プライベート・データでLLMリクエストを強化して、幻覚や来歴のない正確な結果を得ることができます。また、データをプライベートに保ち、モデルを再トレーニングすることなく、正確な結果を得ることができます。たとえば、デジタル・アシスタントに、個人資産に関する情報と、現在のニュースがそれらにどのように影響するかを尋ねることができます。
Doug Hood、Ranjan Priyadarshiなどのブログをご覧ください。
Oracle Backend for MicroservicesとAIサンドボックス
アプリケーションは、データベース内でSelect AIおよびVector RAGを直接コールすることに加えて、Oracle Database 23ai Vector Searchと統合されたテストベッドであるOracle AI Microservices Sandboxもコールできます。これにより、ユーザーはRAGを介して既存のLarge Language Models (LLM)を拡張し、本番環境でのデプロイメントおよび使用の準備を整えることができます。データサイエンス(およびMLを使用するチャットボットなど)では、モデルの価値への鍵は、チャンク戦略とサイズ、ベクトル類似性アルゴリズム、コーパスの準備、プロンプトエンジニアリング、モデルパラメータ、メモリ、再ランク、エージェント、評価など、さまざまな側面の品質と調整にあります。同様に、再ランク付け、プロンプト・チューニング、センテンス・ウィンドウの取得、拡張ファインチューニングの取得、パラメータ効率の高いファインチューニング、低ランク適応など、これらに対処するための多くの手法があります。サンドボックスを使用すると、ユーザーはこれらのオプションを便利に調整して、バリエーションを迅速にテストし、モデル/ユース・ケースに最適なものを判断できます。次に、GUI/コンソールの一部の例を示します。アプリケーションがサンドボックスに対して問合せを実行/使用するために、Restエンドポイントが公開されます。
詳細は、リポジトリとフレームワークの主要なクリエイターであるJohn Lathouwers、Corrado De Bari、Mark Nelsonをご覧ください。
Oracle Spatialおよびその他のビジュアルおよびメディア結果
テキスト結果に加えて、データベースに対して行われた問合せから視覚的な結果が返され、ホログラムとして表示されます。これらには、ビデオなどのメディアや空間情報(ポイントクラウド、メッシュ、様々な地理空間データなど)のレンダリングも含まれます。 気密性と非現実性のさまざまな機能の詳細については、私の他のブログを参照してください
また、David Lapp、Karin Patengeなど、空間チームのブログもご覧ください。
Vision AI
オプションで、いくつかのモダンカメラ、特にIPカメラと一部のハイエンドの消費者/プロフェッショナルカメラは、リモートコントロールと画像キャプチャのためのREST APIまたはHTTPリクエスト機能を提供します。これらのカメラは、通常、セキュリティ、ストリーミングまたは産業目的で使用されますが、一部のコンシューマ・モデルではリモート管理機能も提供され、イメージをキャプチャしてOracle Vision AIサービスに送信してオブジェクトや顔の検出などを処理したり、このイメージでVector検索を実行することもできます。UnityとUnrealを使用してこのような機能を実装する方法のユースケースと詳細を示す多くのブログがあります。1つのユース・ケースには、アイテムがデジタル・アシスタントのホログラムまで保持され、アシスタントがアイテムに関する情報と、Oracle Database Spatialから問い合せて配送されたストアのマップに表示されるアイテムの場所で応答する小売が含まれます。別の例には、分析のためにアシスタントに保持されているドキュメントまたはX線が含まれます。
OCI Speech AI TTS
つまり、Oracle Speech AIは、提供されたテキストを音声に変換します。私の場合は、結果のwav出力ファイルをAudio2Faceサービスに渡します。
サービスは、イントネーション、感情、リズムなどの小冊子をキャプチャして、自然な人間の表現をよく模倣する音声を生成し、同様に、Audio2Faceには、希望/適切な式で顔のブレンド形状を生成するために表される感情をキャプチャおよび調整する機能があります。このプロジェクトでは、このアライメントを微調整したり、顔と音声を一致させたりする作業は行っていません。TTSサービスが提供する音声オプションのいずれかを選択するだけで、アニメーションを実行するときに、多様で興味深い組み合わせ効果が得られるようにMetaHumansを実際にサイクルします。
APIは非常に使いやすいです。ここにこのアプリのソースコードがあります...
text_to_speech = SynthesizeSpeechDetails(
text=f" {latest_answer}",
is_stream_enabled=True,
# configuration=, # Optional: Add speech synthesis configuration if needed
# audio_config=, # Optional: Add audio output configuration if needed
)
# Call the service to synthesize speech
response = speech_client.synthesize_speech(synthesize_speech_details=text_to_speech)
# Save the synthesized speech output to a file
with open("TTSoutput.wav", "wb") as audio_file:
audio_file.write(response.data.content)
音声AIの詳細については、Michael Zhangのブログをご覧ください。
NVidia Omniverse Audio2Face
Audio2Faceは、ストリームされたオーディオをフェイシャル・ブレンド・シェイプに変換して、リアルタイムのリプシンシングとフェイシャル・パフォーマンスを実現します。Unreal MetaHumans (MetaHumanでレンダリングするためにフェイシャル ブレンド シェイプをUnreal Engineに送信します)は、TrueDepthカメラで使用できる同じ LiveLinkテクノロジを介して、個人のライブ フェイシャル トラッキングをストリーミングします(後述の「ミラーMeの LiveLinkの非現実的な構成と Audio2Faceのセクションを参照)。アプリケーションは無料ですが、Omniverse NIM (NVidia推論マイクロサービス)プラットフォームの一部になるため、最近非推奨になりました。NVIDIA Omniverseは、開発者とチームが3Dアプリケーションとシミュレーションを作成できるプラットフォームです。Isaacロボットシミュレータなどのアプリケーションを含む広範なプラットフォームであり、UnrealやUnityなどのスペースには多数のプラットフォームやツール用のアダプタがあります。Audio2Faceは、様々なパラメータを設定およびテストできるGUIとして開始できます(UnrealエンジンのIP位置、AudioStreamを無効にしてエコーを防止する、前の項で説明した感情設定、およびここに示すようにWorld -> StreamLiveLinkで単に「アクティブ化」する最も重要なパラメータなど)。
Audio2Faceは、GUIまたはスタンドアロンの一部として起動されるRest API/エンドポイントを提供します。次に、オーディオを渡してアニメーションを生成するために必要な3つの残りのコール(setrRootPath、setTrackおよびplay)のPythonの例を示します。
# 1. SetRootPath
start_time = time.time()
url = 'http://localhost:8011/A2F/Player/SetRootPath'
headers = {
'accept': 'application/json',
'Content-Type': 'application/json'
}
payload = {
"a2f_player": "/World/audio2face/Player",
"dir_path": "C:/Users/paulp/src/github.com/paulparkinson/oracle-ai-for-sustainable-dev"
}
response = requests.post(url, json=payload, headers=headers)
# ...
# 2. Set Track
start_time = time.time()
set_track_url = 'http://localhost:8011/A2F/Player/SetTrack'
set_track_data = {
"a2f_player": "/World/audio2face/Player",
"file_name": "TTSoutput.wav", # Use the path of the generated audio file
"time_range": [0, -1]
}
set_track_response = requests.post(set_track_url, json=set_track_data, headers={
'accept': 'application/json',
'Content-Type': 'application/json'
})
# ...
# 3. Play Track
start_time = time.time()
play_track_url = 'http://localhost:8011/A2F/Player/Play'
play_track_data = {
"a2f_player": "/World/audio2face/Player"
}
play_response = requests.post(play_track_url, json=play_track_data, headers={
'accept': 'application/json',
'Content-Type': 'application/json'
})
# ...
Audio2FaceをUnrealのソースとして使用するには、Audio2FaceインストールからUnrealにライブラリ/プラグインをコピーする必要があります。これについては、後述の「ミラーMおよびAudio2FaceのLiveLinkの非現実的な構成」の項で説明します。
XRとホログラムファン
この同じプロジェクトは、ホログラムファンではなく、または組み合わせて、同じまたはより良い効果でXRを使用して直接移植および実施することができます。 しかし、ホログラムファンは、ヘッドセットを必要とせずに、複数の人々が同時に相互作用し、視覚化するためのよりすぐにアクセス可能な媒体として選ばれました。
ホログラムファンは、ホログラムではないため、興味深い技術です(ファンブレードが回転するにつれて精密タイミングで点灯するLEDライトです)、しかし、ブラックスポットの透明性効果ビデオは非常に魅力的な没入感と現在の効果をもたらし、ストリーミングビデオを可能にするいくつかのファンモデル(ここで使用されている)の追加機能により、ダイナミックなインタラクションと多くのユースケースが得られます。
「Telepresence」「Mirror Me」
ホログラムファンは、効果的にテレプレゼンスを容易にすることができ、フラットスクリーンが可能なものを超えて浸漬と相互作用を提供します。位置決めとライトを微調整して効果を最大化する必要がありますが、設定は非常に簡単で、Zoomなどの通常の電話会議が行われ、黒の背景が使用されます。
ホログラフィックファンのユニークな特徴は、投影された人間またはMetaHumanでファンの後ろと目のレベルでカメラを配置する機能です。
これにより、前述した「ホロズーム」などのテレプレゼンス/プロジェクションと、個人がホログラムを調べて、MetaHumanが顔の動きを正確に反映できるように実装した別の機能の両方にとって、インタラクションがより自然になります。
「Mirror Me」機能は、Audio2Faceで使用するのと同じLiveLinkテクノロジを使用できますが、かわりにTrueDepthカメラ(バージョンX/10以降iPhonesにあったカメラなど)を、個人のライブ顔追跡をストリーミングするソースとして使用できます。
顔のマッピングとアニメーション/顔のブレンドの形状、グラフィックス、および直接目の接触の品質とリアリズムの大部分は、これは非常に興味深い経験であり、魅力からクリープまで、個性、アイデンティティ、共感、創造性などを探求することができます。
「Mirror Me」およびAudio2FaceのLiveLinkの非現実的な構成
すでにインポートされているMetaHumanのLiveLinkをUnrealに設定することは非常に簡単です。
「Mirror Me」の場合、まず、次の設定を使用して電話機でLiveLink Faceアプリケーションを構成し、Unrealを実行しているコンピュータのIPを入力します...
アプリに顔のメッシュが表示されます。
Mirror MeおよびAudio2FaceのLiveLinkの非現実的な構成
Unrealに進むと、Audio2Faceライブラリ/プラグインがAudio2Faceインストールから個々のUnrealプロジェクトにコピーされるか、すべてのプロジェクトで使用可能なエンジン自体にコピーされます。バージョンごとに異なる命名規則がありますが、Omniverseランチャで設定メニューを選択し、そこからドリルダウンすることで、Audio2Faceプラグインを見つけることができます。Audio2FaceディレクトリとUnrealディレクトリの両方の場所の例を次に示します...
次に、「Unreal」を開き、「プラグイン」メニューを選択し、LiveLinkおよびAudio2Faceを検索してプラグインを追加します。これにより、追加のメニューが有効になります。
Audio2Faceの場合は、LiveLinkメニューの下にAudio2Faceをソースとして追加します。
次に、MetaHumanでレベルを開いて(まだ開いていない場合)、アウトライナで展開し、上下のイメージに表示されているLiveLink項目を選択します。
電話機またはAudio2Faceの「ARKit Face Subject」を選択し、「Use ARkit Face」を選択します。LiveLink Faceアプリケーションの設定でUnrealを実行しているマシンのIPを入力した場合、または説明どおりにAudio2Faceをソースとして設定した場合は、これらのオプションを事前に移入する必要があります。
これで終わりです。Unrealでは、携帯電話のカメラで追跡されたデジタル・ダブルMetaHumanの顔の動き、またはUIで再生を押すか、前述のRestエンドポイントを押すとAudio2Faceから生成されたアニメーションが表示されます。
最後に、テレプレゼンスと「ミラー・ミー」の両方について、イメージを水平方向に反転する必要があります。そのため、Twitch、YouTubeなどへのストリーミングに最もよく使用される一般的なオープンソースツールであるOBS(Open Broadcast Server)を使用しています。ソース(表示やアプリなど)を右クリックし、次に示すように「変換」→「水平反転」を選択します。
アバター/アシスタントとしてのゲーム、NPC、MetaHumans
繰り返しますが、現在AIを実行しているGPUと同様に、ゲーム業界は、テクノロジ機能、インタフェース、ユース・ケースなどの観点から、まもなくより広範な主流市場に出る機能(およびそれに付随する要件)を早期に垣間見て演習します。
ゲームの非プレイヤーキャラクターは、銀行、小売、医療、その他のスクリーニング、リモートトレーニングなどのアバターであり、すぐに同様のアバター/アシスタントを使用します。
心理学的研究では、人々は漫画のアバターよりも現実的なものとやり取りすることを好むが、実際の人間として引き起こすものとはやり取りすることを好まないことが示されています。したがって、MetaHumanは理想的な中間地点を示します。
まとめ
お読みいただきありがとうございます。ご不明な点やご意見などございましたら、お気軽にお問い合わせください。ご連絡をお待ちしております。必ず、ソリューションの基盤となるOracle Database 23aiと、その数百の新機能を確認してください。
コメント
コメントを投稿