Press "Enter" to skip to content

与Oracle一起开发XR,第6集:AI摘要生成器

在这个系列的第六篇文章中,我们描述并提供一个混合现实应用的完整源代码,该应用可以接收用户周围的任何视觉和音频输入,通过各种人工智能进行处理,并返回摘要、生成式人工智能结果等输出。

这是一系列关于使用Oracle开发XR应用和体验的第六篇文章,重点是从用户周围的视觉和音频输入开始,通过各种人工智能进行处理,并返回摘要、生成式人工智能结果等输出。以下是前五篇文章的链接:

  • 使用Oracle开发XR,第1集:空间、AI/ML、Kubernetes和OpenTelemetry
  • 使用Oracle开发XR,第2集:属性图和数据可视化
  • 使用Oracle开发XR,第3集:计算机视觉AI和机器学习
  • 使用Oracle开发XR,第4集:数字孪生和可观测性
  • 使用Oracle开发XR,第5集:医疗保健、视觉AI、培训/协作和消息传递

与之前的文章一样,我将具体展示使用Oracle数据库和云技术,使用Magic Leap 2、HoloLens 2、Oculus、iPhone和Android、PC以及使用Unity平台和OpenXR(用于多平台支持)、Apple Swift和WebXR编写的应用程序。

在博客中,我将在下面引用相应的演示视频:

通过情境和情景感知的扩展现实(XR)和人工智能在日常生活中

我将引导读者阅读本系列的第一篇文章(链接在上面),以便了解XR的概述。本篇专注于混合现实/增强现实的用例和人工智能,虽然在VR中使用人工智能的例子有很多,但我们将在本系列的未来博客中探讨这些。使用的组合是强大而完美的。Unity、Cohere和其他Oracle人工智能服务,以及解决方案的核心-Oracle数据库。

完美的XR AI全栈解决方案:Unity、Kubernetes、Oracle AI和Cohere以及Oracle数据库

应用程序架构由一个完整的堆栈组成,Unity创建前端,Java Spring Boot和其他微服务在Kubernetes中运行(可以包括NVidia计算),形成后端,并调用各种AI服务和存储各种信息的Oracle数据库,包括向量、空间等数据。

示例

以下是许多示例中的一些。每个示例都是通过XR头显的语音识别系统触发的声音命令。

“解释这个…”

在响应此命令时,Unity客户端应用程序从头戴式设备佩戴者的视角拍摄照片,并将照片发送到在Kubernetes中运行的服务器端Spring Boot应用程序(尽管Kubernetes不是必需的,Spring Boot也不是必需的,可以使用Python、Javascript、.NET和其他语言,包括直接在数据库中运行的语言)。服务器端应用程序调用Oracle Vision AI服务,检测并返回照片中的文本。文本可以位于任何角度等,该服务将正确解释它。然后,服务器端应用程序将此文本传递给Cohere(或Hugging Face或OpenAI),以获得健康报告的解释,包括文本和语音,以简单的方式,并提供改善结果/健康的建议。图像、内容和摘要存储在数据库中,可以进行进一步的分析,从基本的高级文本搜索到图像分析、Oracle机器学习AI等。

此用例展示了如何能够轻松快速地解释复杂的医疗信息和健康检查结果,并由普通人采取纠正措施,无需专业的医疗保健工作者或作为补充。

“总结这个…”

这个示例与“解释这个”示例非常相似,只是说明了此类命令功能的多用途性。在这种情况下,内容被总结为x(例如3)个句子或更少。

此用例展示了如何快速消化大量信息。

“从摘要中选择全部…”

对于这个命令的反应,Unity客户端应用程序调用服务器端查询Oracle数据库,并返回各种信息,例如之前记录的命令的图像和文本。

这个用例显然超出了这个场景。它实际上是能够查询数据库中的任何内容,并且可以从任何地方进行查询,并使用Oracle数据库提供的所有复杂功能。查询可以基于文本、语音、图像、语音转文本转SQL的AI、情境和环境信息以及传感器等,包括高级分析查询等。

“转录[YouTube视频]…”

与“转录音频”相反,后者是为转录而获取或记录音频剪辑,对于这个命令的反应,应用程序将检查用户视图中是否有YouTube URL,如果有,将使用API获取视频的转录。它还可以根据之前描述的方式进行“转录和摘要”。

这个用例再次展示了大量信息可以快速消化,并且可以从多种不同的输入源获取,包括视频和音频,这对于许多原因或具有视觉或听力障碍的人可能是有利的。

“生成图像[…] 停止生成图像”

对于这个命令的反应,Unity应用程序开始录制用户的语音,并在用户说“停止生成图像”时停止。语音被发送到服务器端应用程序,然后进行转录,从转录的末尾删除“停止生成图像”,并将文本描述发送给Stable Diffusion(或DALL-E等),后者创建图像并将其(或其URL位置)发送回应用程序和头戴式显示器,以在用户面前显示图像。

当然,这只是一个非常简单的示例,这个功能不再局限于2D图像,还包括3D图像、声音等。它展示了动态生成和添加视觉上下文的能力,用于快速故事板、协作和培训、AEC(建筑、工程和建设)等,当然还包括游戏。这也可以与USD(通用场景描述)和技术(如NVidia的Omniverse平台)一起使用,以实现非常引人入胜的协作体验。

“讲述一个关于这个的反乌托邦故事并给出情感分析…”

对于这个命令的反应,Unity客户端应用程序再次从头戴式设备佩戴者的视角拍摄照片,并将其发送到服务器端组件,这次使用Oracle Vision AI来识别用户视图中的所有对象。然后,将这些对象发送给Cohere(或其他AI),并要求从内容中生成符合某种风格的故事。然后,使用Oracle的情感分析AI服务进一步分析这个故事,并将故事和情感分析结果以文本和语音的形式发送回给用户。

这个用例再次展示了不仅可以围绕情绪或有趣的物体设置创造性地编写故事的潜力,而且可以用于任何数量的军事和警察、健康和安全、社交等情境分析。

在这个系列的第三篇博客文章中(在本文开头提供链接),还给出了另外两个示例。

“识别物体…”

对于这个命令的反应,Unity客户端应用程序再次从头戴式设备佩戴者的视角拍摄照片,并将其发送到服务器端组件,这次使用Oracle Vision AI/Object Detection来检测物体及其相对坐标。然后,将它们发送回Unity客户端应用程序,通过这些坐标进行射线投射,以在房间中绘制带有标识标签的边界框,同时从它们所在的空间坐标中朗读物体名称。

关于这个和其他命令/功能的用例,可以毫不困难地想象出通过XR设备为视觉障碍、阿尔茨海默病、未知和难以隔离的物品的识别、威胁和兴趣的分析等提供背景音频和视觉反馈的潜力。

“开始对话…”

对于这个命令的反应,Unity客户端应用程序再次从头戴式设备佩戴者的视角拍摄照片,并将其发送到服务器端组件,这次使用Oracle Vision AI/Document AI来检索找到的文本(各种书名),随机选择一个标题,并将文本发送到一些(当时GPT-3是最新的)对话模型,然后反馈各种对话回复。这些回复,或者再次来自各种模型的任何信息,都会提供给用户。

这样的功能提供了许多情境感知的用例,但能够进行良好的对话已经足够强大。

源代码、OpenXR和其他开发细节

我将在这篇博客中描述该应用程序涉及的关键代码片段和组件。Unity前端和Java后端的完整源代码可以在GitHub上找到。这个仓库将不断增长,包括其他功能、不同的语言、框架等示例。这也是即将发布的“使用Oracle开发XR”研讨会的代码位置。您需要对Unity和Java(针对这些特定示例)有基本的了解,以及您正在使用的XR头显的特殊要求。

此应用程序已在Hololens 2(在此博客的图片和视频中显示)和Magic Leap 2上进行了测试。Unity应用程序使用符合OpenXR标准的MRTK 3(混合现实工具包)进行编码。Magic Leap最近加入了由Microsoft组成的MRTK管理委员会,并且包括高通作为成员。OpenXR的广泛采用使得编写到它的应用程序更具可移植性;然而,苹果不是成员,与其他软件和不同硬件必须协同工作的技术类似,即使使用了这个标准,代码也必须具有适配器以支持某些本机功能,尤其是在XR领域,各种产品之间的方法和功能可能会有很大的差异。

例如,所描述的应用程序实际上相当简单(其中1/输入通常具有特定于设备的设置,而2、3和在很大程度上4通常是可移植的):

  1. 从XR设备中获取输入(图片、视频、音频等)。
  2. 将输入发送到服务器(用于AI、数据库等处理)。
  3. 从服务器端接收响应。
  4. 将响应的内容作为输出(文本、图片、视频、声音等)。

让我们来看看上面的订单列表中涉及的“无代码”和代码。

我们向Unity场景中添加一个MRTK对象。该对象包含配置体验设置、相机、输入、边界、传送、空间感知等的配置文件。在输入下面,有各种控制器、手势等的设置,包括语音。在这里,我们只需指定关键词,比如“解释这个”,“生成图像”等。

然后,我们向场景中添加一个Microsoft.MixedReality.Toolkit.Input.SpeechInputHandler组件,将我们定义的关键词映射到相应的操作。例如,这里我们看到一个具有TakePicAndProcessAI脚本/类的对象的ExplainThis方法将在用户说“解释这个”时被调用。

更详细地查看TakePicAndProcessAI的C#源代码,我们可以看到以下内容:ExplainThis(类似于涉及将图片发送到AI处理的一般过程的其他命令):

TakePicAndProcess()包含逻辑和设置,用于拍照并(临时)在本地保存图片,以及一个OnCapturedPhotoToDisk回调函数。

OnCapturedPhotoToDisk将图片/图像加载到纹理中,以供用户在面前查看,并调用ProcessAI子程序。这个ProcessAI子程序根据提供的参数动态生成代码,但其总体目的是向服务器端发起网络调用并对数据进行编组和解编组。它还在文本字段中显示返回的AI内容(或2D或3D对象,视情况而定),为用户执行文本到语音转换等。

在服务器端,我们有简单易用的逻辑,例如处理从Unity应用程序发送的图像并提取所找到的文本的以下内容:

以及使用Cohere(或Hugging Face或OpenAI)处理从Vision AI检索到的文本以获取摘要的以下内容:

以及处理Oracle数据库存储、检索和其他逻辑的以下内容。

再次强调,这种服务器端逻辑可以使用任何语言,因为所有OCI服务、Cohere服务和Oracle数据库都支持它们。

其他想法

我已经提供了一些关于如何将人工智能(AI)和增强现实(XR)结合使用,并由Oracle进行支持的想法和示例。我期待着尽快发布更多关于这个主题以及使用Oracle云和数据库的XR其他领域的博客,包括使用Oracle数据库的空间组件的新高级功能(.OBJ网格,点云等)的几何存储、分析和处理,该功能能够在实时的Unity运行时中与之进行实时协作,并且能够在Oracle数据库本身内运行并存放服务器端语言的能力。”使用Oracle开发XR”的研讨会也将在不久的将来发布。

请查看我的其他出版物,以获取有关XR和Oracle云和数据库的更多信息,以及关于现代应用程序开发的各种主题,包括微服务、可观察性、事务处理等。最后,请随时与我联系,如果您有任何问题或对新博客和视频有任何建议,我非常乐意听取。感谢您的阅读和观看。

Leave a Reply

Your email address will not be published. Required fields are marked *