使用应用位置信息向各种通道发送音频

文档序号:441205 发布日期:2021-12-24 浏览:14次 >En<

阅读说明:本技术 使用应用位置信息向各种通道发送音频 (Transmitting audio to various channels using application location information ) 是由 A·戈卡恩 K·A·科特里 F·达拉尔 于 2020-04-23 设计创作,主要内容包括:用于平移音频的方法和设备可以包括:从应用接收音频数据,应用在与计算机设备通信的多个显示设备中的至少一个显示设备上被打开。该方法和设备可以包括响应于扬声器位置信息和具有针对应用的当前位置的应用位置信息,从多个显示设备的多个扬声器中选择扬声器集以接收音频数据。该方法和设备可以包括接收具有针对应用的新位置的、更新的应用位置信息,以及响应于针对应用的新位置,从多个扬声器中选择新的扬声器集以接收音频数据。该方法和设备可以包括将音频数据从该扬声器集转换到该新的扬声器集。(Methods and apparatus for panning audio may include: audio data is received from an application that is opened on at least one of a plurality of display devices in communication with the computer device. The method and apparatus may include selecting a set of speakers from a plurality of speakers of a plurality of display devices to receive audio data in response to speaker location information and application location information having a current location for an application. The method and apparatus may include receiving updated application location information having a new location for an application, and selecting a new set of speakers from a plurality of speakers to receive audio data in response to the new location for the application. The method and apparatus may include converting audio data from the set of speakers to the new set of speakers.)

使用应用位置信息向各种通道发送音频

背景技术

本公开涉及跨多个扬声器来发送音频。

当多个设备与计算机设备通信时,可以存在多个扬声器可以针对应用输出音频。因此,取决于应用所在的位置,可能需要选择设备的扬声器以输出音频。此外,随着新应用的打开,可能需要针对各种应用更新所选择的扬声器。

因此,本领域需要改进跨多个扬声器发送音频。

发明内容

以下呈现本公开的一个或多个实现的简化概述以便提供对这样的实现的基本理解。该概述不是所有预期实现的广泛概述,并且既不旨在标识所有实现的关键或基本元素,也不旨在节点任何或所有实现的范围。其唯一目的是以简化的形式呈现本公开的一个或多个实现的一些概念,作为稍后呈现的更详细描述的前奏。

一个示例实现涉及一种计算机设备。该计算机设备可以包括用于存储数据和指令的存储器、被配置为与存储器通信的至少一个处理器、以及被配置为与存储器和处理器通信的操作系统,其中操作系统可操作以:从应用接收音频数据,该应用在与计算机设备通信的多个显示设备中的至少一个显示设备上被打开;响应于针对多个扬声器的扬声器位置信息和具有针对应用的当前位置的应用位置信息,从多个显示设备的多个扬声器中选择扬声器集以接收音频数据;接收具有针对应用的新位置的、更新的应用位置信息;响应于针对应用的新位置和扬声器位置信息,从多个扬声器中选择新的扬声器集以接收音频数据;以及将音频数据从扬声器集转换到新的扬声器集。

另一示例实现涉及一种用于跨多个扬声器平移音频的方法。该方法可以包括在计算机设备上执行的操作系统处,从应用接收音频数据,应用在与计算机设备通信的多个显示设备中的至少一个显示设备上被打开。该方法可以包括响应于针对多个扬声器的扬声器位置信息和具有针对应用的当前位置的应用位置信息,从多个显示设备的多个扬声器中选择扬声器集以接收音频数据。该方法可以包括接收具有针对应用的新位置的、更新的应用位置信息。该方法可以包括响应于针对应用的新位置和扬声器位置信息,从多个扬声器中选择新的扬声器集以接收音频数据。该方法可以包括将音频数据从该扬声器集转换到该新的扬声器集。

另一示例实现涉及一种存储由计算机设备可执行的指令的计算机可读介质。计算机可读介质可以包括用于使计算机设备从应用接收音频数据的至少一个指令,应用在与计算机设备通信的多个显示设备中的至少一个显示设备上被打开。计算机可读介质可以包括用于使计算机设备响应于针对多个扬声器的扬声器位置信息和具有针对应用的当前位置的应用位置信息而从多个扬声器中选择扬声器集以接收音频数据的至少一个指令。计算机可读介质可以包括用于使计算机设备接收具有针对应用的新位置的、更新的应用位置信息的至少一个指令。计算机可读介质可以包括用于使计算机设备响应于针对应用的新位置和扬声器位置信息而从多个扬声器中选择新的扬声器集以接收音频数据的至少一个指令。计算机可读介质可以包括用于使计算机设备将音频数据从该扬声器集转换到该新的扬声器集的至少一个指令。

与本公开的实现有关的其他优点和新颖特征将部分地在以下描述中阐述,并且部分地将在检查以下内容或通过实践学习之后对本领域技术人员变得更加明显。

附图说明

在附图中:

图1是根据本公开的实现的、与多个显示设备通信的示例计算机设备的示意性框图;

图2是根据本公开的实现的扬声器阵列的示例;

图3是根据本公开的实现的、选择扬声器以针对位于多个显示设备上的两个应用来输出音频数据的示例;

图4是根据本公开的实现的当应用移动到新位置时将音频平移到新的扬声器集的示例;

图5是根据本公开的实现的用于跨多个扬声器来平移音频的示例方法流程;以及

图6是根据本公开的实现的示例设备的示意性框图。

具体实施方式

本公开涉及用于随着应用的位置改变而跨多个扬声器来平移针对一个或多个应用的音频的设备和方法。平移音频可以包括随着应用的位置改变而使扬声器针对应用的音频输出跟随应用的移动。因此,随着应用的位置改变,可以选择不同扬声器以针对应用来输出音频。该设备和方法可以包括与计算机设备通信的一个或多个显示设备。显示设备可以经由通用串行总线(USB)、蓝牙和/或其他网络类型与计算机设备通信。显示设备可以具有至少一个显示器和对应的音频输入和/或音频输出。显示设备可以是能够呈现信息、捕获音频和/或发出音频的任何类型的显示器、监视器、视觉呈现设备、计算机设备、和/或物理面板。每个显示设备可以包括用于捕获音频或发出音频的任何数目的通道(例如,扬声器和/或麦克风)。显示设备的每个扬声器和/或麦克风可以对应于任何数目的通道。例如,扬声器和/或麦克风可以是具有左通道和右通道的双通道立体声。计算机设备上的音频堆栈可以接收关于与计算机设备通信的显示设备的数目和针对每个显示设备的扬声器的数目的信息。音频堆栈还可以接收针对每个扬声器的扬声器位置信息,该扬声器位置信息针对扬声器提供可以与扬声器的静态取向相对应的物理位置。

在特定显示设备上,可以存在与应用相对应的多个窗口和/或虚拟面板。应用的位置可以与计算机设备上的音频堆栈共享。音频堆栈可以响应于应用位置信息、显示设备信息和扬声器位置信息的组合而确定用于将音频平移到特定显示设备上的扬声器的方向。

例如,当媒体应用播放音频和视频时,针对媒体应用的音频可以由媒体应用当前所在的显示设备上的扬声器来输出。用户可以将应用的窗口大小拖动和/或扩展到新位置,使得应用可以跨越多个显示设备。随着应用移动到新位置(例如,到另一显示设备或到同一显示设备的另一虚拟面板或窗口),音频可以被平移到与应用的新位置相对应的不同的扬声器集。音频堆栈可以应用权重以确定要经由对应扬声器来输出的音频量。随着应用移动,音频堆栈可以降低由在应用的当前位置附近的扬声器输出的音频量(例如,通过降低权重)并且增加由在应用的新位置附近的扬声器输出的音频量(例如,通过增加权重)。

附加地,音频堆栈可以响应于其他辅助信息(诸如,但不限于触发针对音频方向改变的用户位置)而确定用于将音频平移到特定显示器上的扬声器的方向。例如,当用户位于房间内时,可以由用户所在房间内的显示设备上的扬声器来输出音频。当用户移动到不同位置(例如,到新房间和/或到该房间的不同区域)时,音频可以平移到与用户的新位置相对应的不同的扬声器集。另一示例可以包括音频堆栈选择扬声器集以输出音频,该音频可以相对于其他扬声器到用户位置的距离具有到用户位置最短的距离。

这样,该方法和设备可以允许应用跨多个显示器来分布,从而为协作和高效工作带来全新的维度。该方法和设备可以通过在内部做出将音频发送到何处的决定来智能地将音频移动到扬声器配置,使得用户和/或应用不必做出任何决定。

现在参考图1,用于与平移音频一起使用的系统100可以包括经由有线或无线网络104与多个显示设备106、108、110、112通信的计算机设备102。例如,显示设备106、108、110、112可以经由通用串行总线(USB)或其他网络类型与计算机设备102通信。多个显示设备106、108、110、112可以是能够呈现信息、捕获音频和/或发出音频的任何类型的显示器、监视器、视觉呈现设备、计算机设备和/或物理面板。此外,每个显示设备106、108、110、112可以包括任何数目的、用于捕获音频和/或发出音频的通道。显示设备106、108、110、112的每个扬声器和/或麦克风可以对应于任何数目的通道。

多个显示设备106、108、110、112可以被组合在一起并且被表示为单个音频端点,使得应用10可以不知道与计算机设备102通信的多个显示设备106、108、110、112。在计算机设备102上执行的应用10可以在显示设备106、108、110、112中的任何一个显示设备上使用。应用10可以跨多个显示设备106、108、110、112来分布,而不受限于单个显示器设备106、108、110、112。在特定显示设备106、108、110、112上,可以存在可以与一个或多个应用10相对应的多个窗口和/或虚拟面板。例如,应用10可以具有与显示设备106、108、110、112上的窗口相对应的图形用户界面(UI)。如此,可以使用系统100创建协作和高效工作的全新维度。

计算机设备102可以包括可以连接到网络的任何移动或固定计算机设备。例如,计算机设备102可以是诸如台式计算机或膝上型计算机或平板计算机等计算机设备、物联网(IOT)设备、蜂窝电话、游戏设备、混合现实或虚拟现实设备、音乐设备、电视、导航系统、相机、个人数字助理(PDA)或手持设备、或者具有与一个或多个其他设备的有线和/或无线连接能力的任何其他计算机设备。

计算机设备102可以包括可以由处理器42和/或存储器44执行的操作系统111。计算机设备102的存储器44可以被配置用于存储限定和/或关联于操作系统111的数据和/或计算机可执行指令,并且处理器42可以执行这样的数据和/或指令以实例化操作系统111。存储器44的示例可以包括但不限于可以由计算机可使用的存储器类型,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器和其任何组合。处理器42的示例可以包括但不限于如本文所述专门编程的任何处理器,包括控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SoC)、或其他可编程逻辑或状态机。

操作系统111可以包括可以初始化和/或配置系统100的设置组件14。例如,设置组件14可以确定与计算机设备102通信的显示设备总数目18。例如,显示设备总数目18可以由计算机设备102的用户预先确定,和/或用户输入可以经由例如指示系统100的显示设备总数18的计算机设备102上的显示器的用户接口来接收。在显示设备被添加和/或从系统100移除时,显示设备总数目18可以根据需要增加和/或减少。

设置组件14还可以确定系统100中的扬声器总数目20。每个显示设备106、108、110、112可以提供关于显示设备106、108、110、112上的扬声器数目的信息、以及针对显示设备106、108、110、112上的每个扬声器的对应扬声器位置信息22。例如,设置组件14可以从显示设备106、108、110、112中的每个显示设备来接收硬件信息,该硬件信息标识显示设备106、108、110、112可以具有多少扬声器、扬声器位置信息22、显示设备106、108、110、112可以支持多少通道、显示设备106、108、110、112可以是高速设备还是超高速设备、显示设备106、108、110、112可以具有多少音频渲染端点、显示设备106、108、110、112可以具有多少捕获端点、和/或显示设备106、108、110、112上的任何硬件环回点。设置组件14可以捕获显示设备106、108、110、112的硬件信息,并且可以响应于从显示设备106、108、110、112获知的信息来构建针对系统100的拓扑。

设置组件14可以通过将每个显示设备106、108、110、112上的扬声器数目相加来确定系统中的扬声器总数目20。例如,显示设备106可以包括支持两个通道(例如,左通道和右通道)的扬声器33、34。显示设备108可以包括支持两个通道(例如,右通道和左通道)的扬声器35、36。显示设备110可以包括支持两个通道(例如,右通道和左通道)的扬声器37、38。显示设备112可以包括支持两个通道(例如,右通道和左通道)的扬声器39、40。如此,扬声器总数目20可以是八。

设置组件14还可以确定标识扬声器33、34、35、36、37、38、39、40的物理位置的扬声器位置信息22。扬声器位置信息22可以对应于显示设备106、108、110、112中的每个显示设备上的扬声器33、34、35、36、37、38、39、40的静态取向。如此,扬声器位置信息22可以指示扬声器33、34、35、36、37、38、39、40位于哪个显示设备106、108、110、112上和/或这样的位置的某个区域(例如,顶部(左/中/右)、底部(左/中/右)、中间(左/中/右))。例如,针对显示设备106的扬声器33的扬声器位置信息22可以指示扬声器33位于显示设备106的顶部的左侧。针对显示设备106的扬声器34的扬声器位置信息可以指示扬声器34位于显示设备106的顶部的右侧。

扬声器位置信息22的静态取向还可以合并显示设备106、108、110、112可能发生的任何旋转。例如,如果显示设备106竖直旋转使得扬声器33现在位于显示设备106的底部的左侧并且扬声器34现在位于显示设备106的顶部的左侧,则针对扬声器33的扬声器位置信息22可以被更新以指示扬声器33位于显示设备106的底部的左侧并且针对扬声器34的扬声器位置信息22可以被更新以指示扬声器34位于显示设备106的顶部的左侧。

此外,设置组件14可以确定可以向显示设备106、108、110、112施加顺序的设备排序21。例如,该顺序可以包括显示设备106作为第一显示设备、显示设备108作为第二显示设备,显示设备110作为第三显示设备、以及显示设备112作为第四显示设备。设备排序21可以用于向不同显示设备106、108、110、112的扬声器33、34、35、36、37、38、39、40施加顺序。

操作系统111还可以包括可以针对每个应用10提供应用位置信息16的应用位置管理器17。应用位置信息16可以指示应用10当前所在的一个或多个显示设备106、108、110、112。此外,在特定显示设备106、108、110、112上,可以存在可以与一个或多个应用10相对应的多个窗口和/或虚拟面板。例如,应用10可以具有与显示设备106、108、110、112上的窗口相对应的图形用户界面(UI)。应用位置信息16还可以包括来自例如笛卡尔坐标系的坐标,该坐标提供显示设备106、108、110、112上的应用10的当前位置19的像素位置。如此,应用位置信息16可以指示应用10所在的显示设备106、108、110、112上的窗口和/或虚拟面板,并且还可以提供显示设备106、108、110、112上的应用10的当前位置19的像素位置。当一个或多个应用10将位置改变到新位置23时,应用位置管理器17可以跟踪应用10的移动,并且可以响应于位置的改变而利用应用10的新位置23来更新应用位置信息16。

操作系统111还可以包括音频堆栈24,该音频堆栈24可以从一个或多个应用10接收音频数据12并且可以选择一个或多个显示设备106、108、110、112上的扬声器30以输出音频数据12。音频堆栈24可以接收指示显示设备106、108、110、112上打开的应用10的数目的信息和针对每个应用10的对应应用位置信息16。此外,音频堆栈24可以接收显示设备信息,包括但不包括限于与计算机设备102通信的显示设备总数目18、扬声器总数目20、扬声器位置信息22和设备排序21信息。音频堆栈24可以使用应用位置信息16与扬声器位置信息22的组合来选择扬声器30以接收音频数据12。此外,音频堆栈24可以使用其他辅助信息29(诸如,但不限于用户位置)来选择扬声器30以接收音频数据12。所选择的扬声器30可以是扬声器总数目20的子集。另外,所选择的扬声器30可以是扬声器总数目20。

音频堆栈24可以保持系统中的扬声器总数目20与对应扬声器位置信息22之间的关系。例如,音频堆栈24可以创建扬声器阵列26,扬声器阵列26使用设备排序21信息将来自每个显示设备106、108、110、112的扬声器33、34、35、36、37、38、39、40组合成聚合扬声器27阵列。聚合扬声器27可以是系统100中的扬声器总数目20或扬声器总数目20的子集。此外,当将扬声器组合成聚合扬声器27阵列时,可以使用设备排序21信息来施加顺序。

此外,扬声器阵列26可以包括针对聚合扬声器27的对应扬声器位置信息22。扬声器阵列26可以随着系统100中扬声器数目的增加或减少而动态更新。此外,当扬声器位置信息22发生变化(例如,显示设备旋转到不同取向)时,扬声器阵列26可以被动态更新。因此,扬声器阵列26可以用于维持每个显示设备106、108、110、112的扬声器33、34、35、36、37、38、39、40与对应扬声器位置信息22之间的关联。

音频堆栈24可以使用应用位置信息16和显示设备信息的组合来选择显示设备106、108、110、112的一个或多个扬声器30以输出针对应用10的音频数据12。音频堆栈24可以使用扬声器阵列26从位于应用10的当前位置19附近的聚合扬声器27中选择扬声器30的子集。当所选择的扬声器30的物理位置与应用10位于同一显示设备106、108、110、112上时,所选择的扬声器30可以位于应用10的当前位置19附近。此外,当距扬声器子集中的每个扬声器的物理位置的距离在应用10的预定义半径内时,所选择的扬声器30可以位于应用10的当前位置19附近。例如,所选择的扬声器30相对于其他扬声器到应用10的当前位置19的距离具有最短距离。

此外,音频堆栈24还可以使用其他辅助信息29来选择显示设备106、108、110、112的一个或多个扬声器30以输出针对应用10的音频数据12。辅助信息29可以包括但不限于用户位置信息、扬声器位置信息22的改变(例如,当显示设备被旋转时)、和/或可以修改音频输出的方向的任何其他触发。例如,所选择的扬声器30可以最靠近用户位置而不是应用位置,使得可以接近用户输出音频。音频堆栈24可以结合扬声器位置信息22和/或应用位置信息16来使用其他辅助信息29。

一个示例可以包括当位于显示设备108上的应用10播放音频并且用户位于显示设备106的扬声器34和显示设备108的扬声器35附近时,音频堆栈24可以选择扬声器34、35作为所选择的扬声器30以输出针对应用10的音频,因为扬声器34、35距用户位置最近。

另一示例可以包括当位于显示设备106上的媒体应用10播放音频和视频时,针对媒体应用10的音频可以由其中媒体应用当前所在的显示设备106的所选择的扬声器30(例如,扬声器33、34)来输出。用户可以拖动和/或扩展应用10的窗口大小,使得应用10可以跨越多个显示设备(例如,显示设备106、108)。当应用10可以移动到新位置23(例如,到另一显示设备108)时,音频数据12可以被平移到与应用10的新位置23相对应的新的所选择的扬声器集31(例如,扬声器33、34、35、36)。

音频堆栈24可以接收具有针对应用10的新位置23的、更新的应用位置信息16。更新的应用位置信息16可以标识针对应用10的新位置23的(多个)显示设备106、108、110、112。例如,应用10可以移动到同一显示设备106、108、110、112上的新位置23。此外,应用10可以移动到不同显示设备106、108、110、112上的新位置23和/或跨越多个显示设备106、108、110、112。更新的应用位置信息16还可以包括来自例如笛卡尔坐标系的一个或多个坐标,该坐标提供显示设备106、108、110、112上的应用10的新位置23的像素位置。

音频堆栈24可以使用扬声器阵列26从位于应用10的新位置23附近的聚合扬声器27中选择新的扬声器集31。当该新的扬声器集31的物理位置与应用10位于同一显示设备106、108、110、112上时,该新的扬声器集31可以位于应用10的新位置23附近。此外,当距该新的扬声器集31中的每个扬声器的物理位置的距离在应用10的预定义半径内时,该新的扬声器集31可以位于应用10的新位置23附近。

音频堆栈24可以应用权重28以确定要经由对应的所选择的扬声器30来输出的音频数据12的量。权重28可以响应于扬声器距应用10的当前位置19的距离来确定。相对于距应用10的当前位置19较远的扬声器,距应用10的当前位置19距离近的扬声器可以接收较高权重28。例如,权重28可以指示要从所选择的扬声器30输出的音量的量,其中较低数字可能导致较低音量并且较高数字可能导致较高音量。在应用10移动到新位置23时,音频堆栈24可以减小应用于在应用10的当前位置19附近的所选择的扬声器30的权重28,使得由所选择的扬声器30输出的音频数据12的量可以减少。音频堆栈24可以增加应用于在新位置23附近的所选择的扬声器30的权重28,使得由在应用10的新位置23附近的该新的所选择的扬声器集30输出的音频数据12的量可以增加。如此,音频堆栈24可以确保音频数据12的输出跟随应用10到新位置23的移动。

音频堆栈24可以在应用移动位置时通过在内部做出将音频发送到何处的决定来智能地将音频平移到扬声器配置,使得用户和/或应用不必做出任何决定。如此,由于应用可能会跨多个显示器来分布,从而对协作和高效工作带来全新的维度,针对应用的音频可以随着应用的移动而平移到不同扬声器配置。

现在参考图2,示出了聚合扬声器27的示例扬声器阵列26。例如,扬声器阵列26可以将扬声器33、34、35、36、37、38、39、40组合成聚合扬声器27的单个阵列。扬声器33、34、35、36、37、38、39、40可以使用设备排序21信息被组合在一起。设备排序21可以向显示设备106、108、110、112施加顺序。例如,显示设备106可以是第一显示设备,显示设备108可以是第二显示设备,显示设备110可以是第三显示设备,显示设备112可以是第四显示设备。如此,扬声器33、34、35、36、37、38、39、40可以使用设备排序21的顺序被组合。

例如,显示设备106的扬声器33、34可以首先被放置到聚合扬声器27阵列中,然后是显示设备108的扬声器35、36。接下来,显示设备110的扬声器37、38可以被放置在聚合扬声器27阵列中。最后的扬声器可以是显示设备112的扬声器39、40。如此,聚合扬声器27可以包括按顺序放置的、与计算机设备102通信的所有扬声器。

此外,扬声器阵列26可以存储每个扬声器33、34、35、36、37、38、39、40与对应扬声器位置信息22之间的关联。扬声器阵列26可以利用扬声器位置信息22中的任何变化和/或系统100(图1)中的扬声器总数目20(图1)的变化来动态更新。例如,如果显示设备106、108、110、112被旋转到不同取向,则扬声器阵列26可以响应于旋转而利用新的扬声器位置信息22来更新。扬声器阵列26可以用于从位于应用10(图1)附近的聚合扬声器27中选择扬声器子集以接收针对应用10音频数据12(图1)。

现在参考图3,示出了选择扬声器以输出针对位于多个显示设备106、108、110上的两个应用(应用A 302和应用B 310)的音频数据的示例。该示例可以在下面参考图1的架构进行讨论。

应用A 302可以在显示设备106和显示设备108两者上打开。针对应用A 302的应用位置信息16可以指示应用A 302位于显示设备106和显示设备108两者上。此外,针对应用A302的应用位置信息16可以包括指示应用A 302在显示设备106上的当前位置19的一个或多个坐标304和指示应用A 302在显示设备108上的当前位置19的一个或多个坐标306。

显示设备106的扬声器34和显示设备108的扬声器35、36可以由音频堆栈24选择以输出针对应用A 302的任何音频数据12。音频堆栈24可以接收针对应用A 302的应用位置信息16并且可以使用应用位置信息16以确定应用A在显示设备106上。例如,音频堆栈24可以使用扬声器阵列26以标识扬声器33、34位于显示设备106上并且可以使用扬声器阵列26访问针对扬声器33、34的对应扬声器位置信息22。

音频堆栈24可以使用针对扬声器33、34的扬声器位置信息22来确定扬声器34到显示设备106上的应用A 302的当前位置19的距离310和扬声器34到显示设备106上的应用A302的当前位置19的距离312。音频堆栈24可以将距离310与距离312进行比较,并且可以确定扬声器34的距离310相对于扬声器33的距离312更接近应用A 302的当前位置19。响应于距离310、312的比较,音频堆栈24可以选择显示设备106的扬声器34以输出针对应用A 302的任何音频数据12。如此,音频堆栈24可以将针对应用A 302的音频数据12传输到扬声器34用于输出,并且扬声器33可以不接收针对应用A 302的音频数据12。

此外,音频堆栈24可以使用应用位置信息16来确定应用A也位于显示设备108上。音频堆栈24可以使用扬声器阵列26来确定扬声器35、36位于显示设备108上并且可以使用扬声器阵列26来访问扬声器35、36的对应扬声器位置信息22。音频堆栈24可以使用扬声器位置信息22来确定针对扬声器36到显示设备108上的应用A 302的当前位置19的距离316和针对扬声器35到显示设备108上的应用302的当前位置19的距离314。音频堆栈24可以将距离314与距离316进行比较,并且可以确定距离314和距离316与距应用A 302的当前位置19的距离相似。如此,响应于距离314、316的比较,音频堆栈24可以选择扬声器35、36两者以输出针对应用A 302的任何音频数据12。音频堆栈24可以将针对应用A 302的音频数据12传输到扬声器35、36用于输出。

此外,应用B 310可以在显示设备110上打开。针对应用B 310的应用位置信息16可以指示应用B 310位于显示设备110上。此外,针对应用B 310的应用位置信息16可以包括指示应用B 310在显示设备110上的当前位置19的一个或多个坐标320。

音频堆栈24可以接收针对应用B 310的应用位置信息16并且可以使用应用位置信息16来确定应用B 310在显示设备110上。音频堆栈24可以使用扬声器阵列26来标识扬声器37、38位于显示设备110上,并且音频堆栈24可以使用扬声器阵列26来访问针对扬声器37、38的对应扬声器位置信息22。

音频堆栈24可以使用针对扬声器37、38的扬声器位置信息22来确定扬声器37到应用B 310的当前位置19的距离318和扬声器38到应用B 310的当前位置19的距离320。音频堆栈24可以将距离318与距离320进行比较,并且可以确定距离318和距离320与距应用B310的当前位置19的距离相似。如此,响应于距离318、320的比较,音频堆栈24可以选择扬声器37、38两者以输出针对应用B 310的任何音频数据12。音频堆栈24可以将针对应用B 310的音频数据12传输到扬声器37、38用于输出。

音频堆栈24可以确定显示设备112当前没有打开的应用10,并且音频堆栈24可以不向显示设备112的扬声器39、40传输音频数据12。

如此,应用A 302和应用B 310的当前位置19可以被用于选择扬声器以输出针对应用A 302和应用B 310的音频数据12。

现在参考图4,示出了当应用C 402从当前位置19(图1)移动到新位置23(图1)时将音频平移到新的扬声器集31(图1)的示例。该示例可以在下面参考图1的架构来讨论。

应用C 402可以在显示设备106上被打开。针对应用C 402的应用位置信息16可以指示应用C 402位于显示设备106上。此外,针对应用C 402的应用位置信息16可以包括指示应用C 404在显示设备106上的当前位置19的一个或多个坐标P1 404。

音频堆栈24可以接收针对应用C 310的应用位置信息16,并且可以使用应用位置信息16和扬声器阵列26以标识扬声器33、34位于显示设备106上。音频堆栈24可以使用针对扬声器33、34的扬声器位置信息22以确定扬声器33到应用C 402的当前位置19的距离408和扬声器34到应用C 402的当前位置19的距离410。音频堆栈24可以将距离408与应用C 402的当前位置19进行比较,并且可以将距离410与应用C 402的当前位置19进行比较。音频堆栈24可以确定距离408和距离410在应用C 402的当前位置19的预定半径内。如此,音频堆栈24可以选择扬声器33、44两者用于输出音频数据12。另外,响应于到当前位置19的距离408、410的比较,当输出针对应用C 402的任何音频数据12时,音频堆栈24可以应用相同的权重28用于将音频数据12输出到扬声器33、34两者。例如,权重28可以控制音频数据12可以从扬声器33、34被输出的量。由于扬声器33、34可以具有相同权重28,所以从扬声器33、34输出的音频数据12的量可以相同。音频堆栈24可以将针对应用C 402的音频数据12连同权重28一起传输到扬声器33、34用于输出。

用户可以将应用C 402从显示设备106上的当前位置19移动到显示设备108上的新位置23。音频堆栈24可以接收针对具有新位置23的应用C 402的、更新的应用位置信息16。例如,一个或多个坐标P2 406可以指示应用C 402在显示设备108上的新位置23。

当应用C从显示设备106上的当前位置19(例如,坐标P1 404)移动402到显示设备108上的新位置(例如,坐标P2 406)时,音频堆栈24可以平移音频数据12以跟随应用C 402的移动。例如,音频堆栈24可以确定扬声器33、34可以距应用C 402更远距离408、410,并且可以开始减小被发送到扬声器33、34的音频数据12的权重28。随着权重28减小,来自扬声器33、34的输出的量也可以减小。当应用C 402从显示设备106被移除时,音频堆栈24可以将权重28减小到零。如此,当应用C 402移动到显示设备108时,扬声器33、34可以不再输出针对应用C 402的音频数据12。

音频堆栈24可以接收针对应用C 402的、更新的应用位置信息16并且可以确定针对应用C 402的新位置23在显示设备108上。一个或多个坐标P2 406可以指示在显示设备108上应用C 402所在的位置。音频堆栈24可以使用扬声器阵列26以标识扬声器35、36位于显示设备108上。随着应用C 402移动到显示设备108,音频堆栈24可以开始经由显示设备108的扬声器35、36来输出针对应用C 402的音频数据12。

音频堆栈24可以使用针对扬声器35、36的扬声器位置信息22来确定扬声器35到应用C 402的新位置23的距离412和扬声器36到应用C 402的新位置23的距离414。音频堆栈24可以将距离412与距离414进行比较,并且可以确定距离412相对于距离414更接近应用C402的新位置23。响应于距离412、414的比较,相对于提供给扬声器36的权重28,音频堆栈24可以应用较高权重28用于将音频数据12输出到扬声器35。如此,相对于从扬声器36输出的音频数据12的量,从扬声器35输出的音频数据12的量可以较高。音频堆栈24可以将针对应用C 410的音频数据12连同权重28一起传输到扬声器35、36用于输出。

此外,由于应用C 402没有位于显示设备110、112上,所以音频堆栈24可以不将针对应用C 402的音频数据12传输到显示设备110和显示设备112。备选地,音频堆栈24可以将音频数据12和针对应用C 402的为0的权重28传输到显示设备110和显示设备112,使得显示设备110、112可以不输出音频数据12,因为应用C 402没有位于显示设备110、112上。如此,扬声器37、38、39、40可以不输出针对应用C 402的音频数据12。

随着应用移动到新位置,针对应用的音频输出可以从物理上位于应用的当前位置附近的扬声器集平滑转换到物理上位于新位置附近的新的扬声器集,使得音频输出可以跟随应用的移动。

现在参考图5,示例方法500可以由计算机设备102(图1)使用以跨多个扬声器33、34、35、36、37、38、39、40(图1)来平移音频。方法500的动作可以在下面参考图1的架构进行讨论。

在502处,方法500可以包括从与计算机设备通信的多个显示设备中的至少一个显示设备上的应用接收音频数据。音频堆栈24可以从一个或多个应用10接收音频数据12并且可以选择一个或多个显示设备106、108、110、112上的扬声器30以输出音频数据12。多个显示设备106、108、110、112可以组合在一起并且表示为单个音频端点,使得应用10可以不知道与计算机设备102通信的多个显示设备106、108、110、112。在计算机设备102上执行的应用10可以在显示设备106、108、110、112中的任何一个显示设备上使用。应用10可以跨多个显示设备106、108、110、112来分布而不受限于单个显示设备106、108、110、112。如此,可以为协作和高效工作创造全新的维度。

在504处,方法500可以包括响应于针对多个扬声器的扬声器位置信息和应用位置信息,从显示设备的多个扬声器中选择扬声器集以接收音频数据。音频堆栈24可以接收指示在显示设备106、108、110、112上打开的应用10的数目的信息和针对每个应用10的对应应用位置信息16。

应用位置信息16可以指示应用10当前所在的一个或多个显示设备106、108、110、112。此外,在特定显示设备106、108、110、112上,可以存在可以与一个或多个应用10相对应的多个窗口和/或虚拟面板。例如,应用10可以具有与显示设备106、108、110、112上的窗口相对应的图形用户界面(UI)。应用位置信息16还可以包括来自例如笛卡尔坐标系的坐标,该坐标提供显示设备106、108、110、112上的应用10的当前位置19的像素位置。如此,应用位置信息16可以指示应用10所在的显示设备106、108、110、112上的窗口和/或虚拟面板,并且还可以提供显示设备106、108、110、112上的应用10的当前位置19的像素位置。

此外,音频堆栈24可以接收显示设备信息,包括但不限于与计算机设备102通信的显示设备总数目18、系统中的扬声器总数目20、扬声器位置信息22和任何设备排序21信息。例如,扬声器位置信息22可以标识可以与显示设备106、108、110、112中的每个显示设备上的扬声器33、34、35、36、37的静态取向相对应的扬声器33、34、35、36、37、38、39、40的物理位置。如此,扬声器位置信息22可以指示扬声器33、34、35、36、37。38、39、40物理上位于哪个显示设备106、108、110、112上和/或这样的位置的某个区域(例如,顶部(左/中/右)、底部(左/中/右)、中间(左/中/右))。

音频堆栈24可以维持系统中的扬声器总数目20与对应扬声器位置信息22之间的关系。例如,音频堆栈24可以创建扬声器阵列26,扬声器阵列26使用来自设备排序21信息的顺序将来自每个显示设备106、108、110、112的扬声器33、34、35、36、37、38、39、40组合成聚合扬声器27阵列。聚合扬声器27阵列可以是系统100中的扬声器总数目20,其中使用设备排序21信息来施加顺序。

音频堆栈24可以使用应用位置信息16和扬声器位置信息22的组合来选择扬声器30以接收音频数据12。音频堆栈24可以使用扬声器阵列26从位于应用10的当前位置19附近的聚合扬声器27中选择扬声器集。当该扬声器集的物理位置与应用10在同一显示设备106、108、110、112上时,该扬声器集可以位于应用10的当前位置19附近。此外,当距该扬声器集中的每个扬声器的物理位置的距离在应用10的预定义半径内时,该扬声器集可以位于应用10的当前位置19附近。例如,该所选择的扬声器集30可以在应用10的预定义半径内。

所选择的扬声器30可以是扬声器总数目20的子集。另外,所选择的扬声器30可以是扬声器总数目20。例如,用户可以扩展应用10以涵盖所有显示设备106、108、110、112。音频堆栈24可以确定所有扬声器33、34、35、36、37、38、39、40位于应用10附近。如此,所选择的扬声器30可以包括系统中的所有扬声器。

此外,还可以使用其他辅助信息29来选择显示设备106、108、110、112的一个或多个扬声器30以输出针对应用10的音频数据12。辅助信息29可以包括但不限于到用户位置信息、扬声器位置信息22的变化(例如,当显示设备被旋转时)、和/或可以确定音频输出的方向的任何其他触发。例如,所选择的扬声器30可以最靠近用户位置而不是应用位置,使得可以靠近用户来输出音频。

在506处,方法500可以包括将音频数据传输到该扬声器集。音频堆栈24可以将针对应用10的音频数据12传输到该所选择的扬声器集30以用于输出。此外,音频堆栈24可以将权重28传输到所选择的扬声器30。音频堆栈24可以应用权重28以确定要经由对应的、所选择的扬声器30来输出的音频数据12的量。权重28可以响应于扬声器距应用10的当前位置19的距离来确定。相对于距应用10的当前位置19较远的扬声器,距应用10的当前位置19近的扬声器可以接收较高权重28。例如,权重28可以指示要从所选择的扬声器30输出的音量的量,其中较低数字可能导致较低音量并且较高数字可能导致较高音量。

在508处,方法500可以包括接收具有针对应用的新位置、更新的应用位置信息。例如,用户可以拖动和/或扩展应用10的窗口大小,使得应用10可以跨越多个显示设备106、108、110、112和/或移动到新位置23(例如,当前显示设备上的不同位置和/或不同显示设备)。当一个或多个应用10将位置改变到新位置23时,应用位置管理器17可以跟踪(多个)应用10的移动并且可以响应于位置的改变来更新应用位置信息16。音频堆栈24可以接收具有针对应用10的新位置23、更新的应用位置信息16。更新的应用位置信息16可以标识针对应用10的新位置23的一个或多个显示设备106、108、110、112。此外,更新的应用位置信息16可以包括一个或多个显示设备106、108、110、112上的应用的像素位置的坐标。

音频堆栈24还可以接收更新的辅助信息29。例如,当用户移动到不同位置(例如,到不同房间或同一房间的不同区域)时,音频堆栈24可以接收针对用户位置的、更新的辅助信息29。另一示例可以包括:如果用户将显示设备106、108、110、112旋转到不同方向,则音频堆栈24可以接收更新的扬声器位置信息22。

在510处,方法500可以包括响应于新位置和扬声器位置信息从多个扬声器中选择新的扬声器集以接收音频数据。音频堆栈24可以使用扬声器阵列26从位于应用10的新位置23附近的聚合扬声器27中选择新的扬声器集31。例如,音频堆栈24可以使用应用位置信息16来标识针对应用10的新位置23的一个或多个显示设备106、108、110、112。音频堆栈24可以使用扬声器阵列26来比较针对所标识的显示设备106、108、110、112上的扬声器33、34、35、36、37、38、39、40中的每个扬声器的扬声器位置信息22,以确定在应用10的新位置23附近的新的扬声器集31。

当该新的扬声器集31的物理位置与应用10位于同一显示设备106、108、110、112上时,该新的扬声器集31可以位于应用10的新位置23附近。此外,当距该新的扬声器集31中的每个扬声器的物理位置的距离在应用10的预定义半径内时,该新的扬声器集31可以位于应用10的新位置23附近。

音频堆栈24还可以使用更新的辅助信息29以选择新的扬声器集31。例如,当用户移动到不同房间时,音频堆栈24可以使用扬声器阵列26来将扬声器位置信息22与用户位置信息进行比较,以确定与用户在同一房间中的该新的扬声器集31。另一示例可以包括音频堆栈24使用扬声器阵列26来选择新的扬声器集31,该新的扬声器集31相对于其他扬声器,具有到用户位置的最短距离。

在512处,方法500可以包括将音频数据从扬声器集转换到新的扬声器集31。在应用10可以移动到新位置23时,音频堆栈24可以将音频数据12平移到在针对应用10的新位置23附近的新的扬声器集31。例如,音频堆栈24可以减小应用于在应用10的当前位置19附近的所选择的扬声器30的权重28,使得由所选择的扬声器集30输出的音频数据12的量可以减少。此外,音频堆栈24可以增加应用于在新位置23附近的新的扬声器集31的权重28,使得由在应用10的新位置23附近的新的扬声器集31输出的音频数据12的量可以增加。如此,音频堆栈24可以确保音频数据12的输出跟随应用10到新位置23的移动。

音频堆栈24可以在应用移动位置时通过在内部做出将音频发送到何处的决定来智能地将音频平移到扬声器配置,使得用户和/或应用不必做出任何决定。如此,由于应用可能会跨多个显示器来分布,从而为协作和高效工作带来全新的维度,应用的音频可以随着应用的移动而平移到不同扬声器配置。

现在参考图6,与图1相比,根据实现可以被配置为计算机设备102的示例计算机600包括附加组件细节。在一个示例中,计算机600可以包括用于执行与本文中所描述的组件和功能中的一个或多个相关联的处理功能。处理器42可以包括单组或多组处理器或多核处理器。此外,处理器42可以被实现为集成处理系统和/或分布式处理系统。

计算机600还可以包括诸如用于存储由处理器42执行的应用的本地版本的存储器44。存储器44可以包括可由计算机使用的存储器类型,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器和其任何组合。附加地,处理器56可以包括和执行操作系统111(图1)。

此外,计算机600可以包括通信组件46,通信组件46提供使用本文中描述的硬件、软件和服务来建立和维持与一方或多方的通信。通信组件46可以承载计算机设备102上的组件之间以及计算机设备102与外部设备(诸如,位于通信网络上的设备和/或串行或本地连接到计算机设备102的设备)之间的通信。例如,通信组件图46可以包括一个或多个总线,并且还可以包括可操作用于与外部设备接口的分别与传输器和接收器相关联的传输链组件和接收链组件。

此外,计算机600可以包括数据存储库48,数据存储库48可以是硬件和/或软件的任何合适的组合,数据存储库48提供结合本文中描述的实现而使用的信息、数据库和程序的大容量存储。例如,数据存储库48可以是应用10、设置组件14、应用位置管理器17和/或音频堆栈24的数据储存库。

计算机600还可以包括用户接口组件50,用户接口组件50可操作以从计算机设备102的用户接收输入并且还可操作以生成用于呈现给用户的输出。用户接口组件50可以包括一个或多个输入设备,包括但不限于键盘、数字键盘、鼠标、显示器(例如,其可以是触敏显示器)、导航键、功能键、麦克风、语音识别组件、能够从用户接收输入的任何其他机制、或其任何组合。此外,用户接口组件50可以包括一个或多个输出设备,包括但不限于显示器、扬声器、触觉反馈机件、打印机、能够向用户呈现输出的任何其他机件、或其任何组合。

在实现中,用户接口组件50可以传输和/或接收与应用10、设置组件14、应用位置管理器17和/或音频堆栈24的操作相对应的消息。此外,处理器42执行应用10、设置组件14、应用位置管理器17和/或音频堆栈24,并且存储器44或数据存储库48可以存储它们。

如本申请中使用的,术语“组件”、“系统”等旨在包括计算机相关实体,诸如但不限于硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。最晚说明,在计算机设备上运行的应用和计算机设备都可以是组件。一个或多个组件可以驻留在一个进程和/或执行线程中,并且一个组件可以位于一个计算机上和/或分布在两个或多个计算机之间。此外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质来执行。组件可以通过本地和/或远程进程的方式通信,诸如根据具有一个或多个数据分组的信号,诸如来自与本地系统、分布式系统中的另一组件交互的一个组件的数据,和/或通过信号的方式通过诸如互联网等网络与其他系统通信。

此外,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有说明或从上下文中清楚地看出,否则短语“X采用A或B”旨在表示任何自然包括性排列。即,以下情况中的任何一种满足短语“X采用A或B”:X采用A;X采用B;或X采用A和B两者。此外,除非另有说明或从上下文中清楚地看出指向单数形式,否则本申请和所附权利要求中使用的冠词“一个”和“一”一般应当解释为表示“一个或多个”。

已经根据可以包括多个设备、组件、模块等的系统呈现了各种实现或特征。应当理解和领会,各种系统可以包括附加的设备、组件、模块等和/或可以并非包括结合附图讨论的所有设备、组件、模块等。也可以使用这些方法的组合。

结合本文中公开的实施例所描述的方法的各种说明性逻辑、逻辑块和动作可以用被设计为执行本文中描述的功能的通用处理器、数字信号处理器(DSP)、应用特定集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合中的专门编程的一个来实现或执行。通用处理器可以是微处理器,但在备选方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以实现为计算机设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP核相结合、或者任何其他这样的配置。此外,至少一个处理器可以包括可操作以执行上述步骤和/或动作中的一个或多个的一个或多个组件。

此外,结合本文中公开的实现描述的方法或算法的步骤和/或动作可以直接具化在硬件中、在由处理器执行的软件模块中、或者在这两者的组合中。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任何其他形式的存储介质中。示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。备选地,存储介质可以与处理器成一体。此外,在一些实现中,处理器和存储介质可以驻留在ASIC中。另外,ASIC可以驻留在用户终端中。备选地,处理器和存储介质可以作为分立组件驻留在用户终端中。附加地,在一些实现中,方法或算法的步骤和/或动作可以作为一个或任何组合或一组代码和/或指令存在于机器可读介质和/或计算机可读介质中,该介质可以并入计算机程序产品中。

在一种或多种实现中,所描述的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则这些功能可以作为一个或多个指令或代码在计算机可读介质上存储或传输。计算机可读介质包括计算机存储介质和通信介质,包括促进将计算机程序从一个地方传输到另一地方的任何介质。存储介质可以是计算机可以访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或者可以用于以指令或数据结构形式存储期望程序代码并且可以由计算机访问的任何其他介质。本文中使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光碟、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通常用激光以光学方式再现数据。上述各项的组合也应当被包括在计算机可读介质的范围内。

虽然已经结合其示例描述了本公开的实现,但是本领域技术人员将理解,可以在不脱离其范围的情况下对上述实现进行变型和修改。根据说明书的考虑或根据本文中公开的示例的实践,其他实现对于本领域技术人员来说将是很明显的。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:协作定位

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!