详细描述
此处描述的技术的一种实现提供对在计算机系统上运行的软件应用程序中的回音消除的自动启用和配置。该技术帮助进行音频通信会话的计算机系统的用户方便得地识别并更快减轻由用于进行这种会话的音频设备引起的声音输出中的回音效应。
当进行音频会议(例如使用个人计算机系统的VOIP电话呼叫)时,必须要有音频输入设备(例如扩音器)和音频呈现设备(例如一个或多个扬声器)两者才能进行通信会话。如图1所示,个人计算机系统100可配备包括音频功能的各种外围设备。典型的个人计算机系统100可包括计算机102和与计算机相连接的视频监视器104、键盘106和鼠标108。计算机102可具有内置扬声器118用于产生声音。视频监视器104还可配备有一对扬声器110。此外,个人计算机系统100的用户还可附连一组外置于计算机102的扬声器112。个人计算机系统100还可包括用来进行网络视频会议的视频摄像机和扩音器114的组合。用户还可附连组合了耳机扬声器和扩音器的头戴式耳机用于参加VOIP或网络视频会议。
来自扬声器的声音输出通常被扩音器捕获。包括该声音输出的来自扩音器的输入信号对于对应于该声音输出的原始音频信号稍有延迟。因此,传输至原始音频信号的源并在该源位置处的扬声器上输出的来自扩音器的捕获的声音会产生令位于该源位置的一方恼人的回音效应。由此,提供回音消除算法,以在输出捕获的信号之前去除捕获的信号中的原始音频信号的残留。此处所描述的系统和方法自动帮助计算机系统的用户确定是否需要回音消除、在必要时启用回音消除、以及在例示回音消除算法时提供初始参数。
在一个示例性实例中,测试具有相连接的扩音器和扬声器的计算机系统来确定是否需要与实现实时通信会话的音频-客户端结合的回音消除算法。如果是,则实现回音消除算法的自动启用。为了确定回音消除对于特定音频配置是否必须,存储于与计算机系统相关联的存储器中的样本音频文件可通过与计算机系统相连接的扬声器输出。该样本音频文件被转换成模拟信号并传输至扬声器。扬声器将模拟音频信号转换成声学能量以便在空气中产生声波。
任何声波,包括对应于样本音频文件的声音,被扩音器拾取并被转换成模拟音频信号。在扬声器播放样本音频文件的同一时间段内记录扩音器所接收的声音。该模拟音频信号被扩音器或计算机系统转化成数字数据格式。在一个实现中,如果需要的话,来自扩音器的捕获的音频数据和样本音频文件被转换成一个共同的数据格式。来自捕获的声音的音频数据与来自已知样本音频文件的音频数据作比较,以确定音频数据之间是否存在指示回音信号存在的相关。
如果存在回音相关,则激活回音消除算法以将捕获的音频数据与样本音频数据作比较并计算一组初始参数以供今后例示音频-客户端时使用。当一个通信会话开始时,回音消除算法使用存储的初始参数来处理捕获的音频信号。如果是不明显的相关,则计算机系统可确定对特定音频设备配置使用回音消除算法是没有必要的,并且是处理资源的低效使用。在这种情况下,可禁用回音消除算法。
图2示出具有用于实现回音消除激活技术的组件和模块的示例性计算机系统200。两个示例性外围设备,扩音器202和扩音器204,与计算机系统200相连。扩音器202可以是内置于计算机系统200的硬件设备,或者是通过有线或无线连接与计算机系统200相连的外部设备。类似地,扬声器204可以是内置于计算机系统200的硬件设备,或者是通过有线或无线连接与计算机系统200相连的外部设备。扬声器204可以是单个喇叭、一对喇叭、或是多个喇叭的系统,例如在“环绕”配置中。或者,扩音器202和扬声器204可被组合于一单个设备,例如电话手持听筒或头戴式耳机中。扩音器202作为音频捕获模块206的输入设备与计算机系统200相连。扬声器204作为音频呈现模块208的输出设备与计算机系统200相连。
如从扩音器204到扩音器202的箭头所示,扬声器204发射的声音可被扩音器202拾取。这是回音效应的源头。
如图2所示,自动回音消除确定功能可利用由虚线210示出的计算机系统200的内核和用户模式两者内的资源来实现。在其它操作系统和计算环境中,这种组件和模块可在软件体系结构的其它层上被控制。在此示例性实施例中,内核管理包括处理器和存储器以及低层硬件接口的机器硬件资源,并通过例如设备驱动程序、存储器管理例程、调度器和系统调用来控制例如用户模式组件等其它软件组件访问这些资源的方式。
音频捕获模块206和和音频呈现模块208两者均驻留在内核中。音频捕获模块206将扩音器202产生的模拟音频信号从声波转换成数字数据信号,例如脉冲编码调制(PCM)数据、压缩盘原始(CDR)数据或其它常见的数据格式,以供计算机系统200的进一步处理。PCM数据可具有各种质量,例如,PCM 16、PCM 32或PCM 48。音频呈现模块208将例如波形音频(WAV)格式、MPEG1、数字声音模块(DSM)音频格式或其它常见的数据格式等数字音频文件转换成模拟音频信号,以供扬声器204进行声学呈现。在其它形式中,扬声器014和扩音器202的每一个或两者可以是数字扬声器或数字扩音器,其中数模转换的音频呈现功能和模数转换的音频捕获功能分别发生在扬声器和扩音器它们自身中。因此,在这种形式中,音频呈现模块208和音频捕获模块206不需要驻留在内核中。
其它功能在用户模式中被实现,例如,被实现为在被扩音器202和音频捕获模块206接收的音频数据以及其它数据上操作的软件处理例程。回音参数化模块212包括样本音频文件214、信号处理器216、信号检测模块218和回音消除模块220。样本音频文件214可被回音参数化模块212执行的操作访问并且可传输至音频呈现模块208和信号处理器216之一或两者。样本音频文件214作为已知的音频样本被传输至音频呈现模块208以供输出至扬声器204,以便测试扬声器204和扩音器202的配置以确定是否产生回音效应。
样本音频文件214可以是一个数字音频文件,例如WAV文件或其它文件格式,它被选作为所产生的声音的特征。例如,样本音频文件214可产生包括通过扩音器202能容易检测到的特定频率范围的声音。样本音频文件214可另外被选择用来产生对用户悦耳的声音(例如,音乐序列),或提供对用户有价值的信息(例如,配置指令或广告)。或者,计算机系统可生成在扩音器处输出的一组音调,以便进行回音效应的测试,而不使用样本音频文件214。在另一个实例中,可向计算机系统200提供来自通过网络与计算机系统200相连的另一个源处的样本音频文件。在任何情况下,构成由扬声器204输出的样本音频信号的音频数据应该可用于通过信号处理器216输入到信号检测模块218和回音消除模块220中,以供与捕获的音频信号作比较。
从扩音器202接收的音频信号还可从音频捕获模块206被传输至信号处理器216。信号处理器216可处理来自音频捕获模块206和样本音频文件214的音频信号之一或两者,以便将音频信号转换成共同数据格式,以供音频信号的比较为目的。例如,如果来自音频捕获模块206的音频信号是PCM格式,而音频样本文件214是WAV格式,则信号处理器216可将音频样本文件214转换成PCM格式。或者,信号处理器可将来自音频捕获模块206的音频信号转换成WAV格式。在又一个实例中,当第三种格式,例如音频互换文件格式(AIFF)或某些其它数据格式,能帮助设备检测模块212进行进一步处理时,来自音频捕获模块206的音频信号和音频样本文件214两者均可被信号处理器216转换成这种格式。再一次,可采用用于音频数据的任何期望的文件格式。
一旦信号处理器216处理了来自音频捕获模块206的音频信号和样本音频文件214之一或两者,信号检测模块218将捕获的音频信号与样本音频文件214作比较。通过直接访问样本音频文件214对由信号处理器216所处理的信号的检测需要达到一定水平来确认该样本音频文件214仍然存储于回音参数化模块212内并能被回音参数化模块212访问,并且没有被损坏、删除、移除或者重新定位。如果样本音频文件214不可访问,则扬声器204不会产生测试音频声音用来在扩音器202处检测。因此,在一开始,对直接来自样本音频文件214的数据的检测可用来检查设备检测模块212的完整性及其将捕获音频信号与已知样本音频信号作比较的能力。
将来自音频捕获模块206的音频信号与音频样本文件214的比较还可被用来确认扬声器204实际上在工作并且实际上使用样本音频文件214执行了测试。例如,如果某些环境声音一般由扩音器202拾取,但是样本音频文件214没有在扬声器204处输出,则回音消除模块218可能错误得出结论,即不存在回音效应并且不需要启动回音消除算法。在样本音频文件214应该由扬声器204播放的那段时间内的特定时间窗口内捕获和记录来自扩音器202的音频信号能帮助辨别经扩音器202转换的声音是否源自扬声器204的能力。由此,信号检测模块218将对应于来自音频捕获模块206的数据的例如频率、强度和时序等特性与来自音频样本文件214的数据进行比较,以确定是否存在数据的匹配。如果数据确实相关,则信号检测模块218确认样本音频文件确实被扩音器捕获过,并成为回音消除模块220执行的回音效应测试的基础。
除了信号检测模块218,信号处理器216还将捕获的音频信号和样本音频信号传送至回音消除模块220。在测试期间,回音消除模块220比较并分析捕获的音频信号和样本音频信号,以确定是否存在显著的回音效应。在某些实例中,可能没有回音效应,并且因此不需要通过回音消除算法来对捕获的音频信号进行滤波。如果没有回音效应,则这样的滤波将会是对处理资源的使用不佳。例如,某些头戴式耳机、电话手持听筒和扬声器电话已经包括回音消除软件和硬件,这样通过计算机系统200的回音消除模块220的滤波将是多余的。在其它实例中,音频设备的环境和配置是那种不产生可察觉的回音效应的环境和配置。
回音效应的明显度一般由捕获的音频信号内的回音信号的强度确定。图3示出回音效应的一个示例性的示意图。图300绘出了原始音频信号302的单一频率波形,即在当前的测试情景中,作为直线的样本音频信号和作为虚线的捕获的音频信号内的回音信号304。回音信号304稍被延迟并且跟随着原始音频信号302。回音信号304的幅值一般小于原始音频信号302的幅值,由此表示能量较小的信号。然而,回音信号304的强度可足够超过被确定为明显影响用户的通信会话质量的阈值并且由此适用回音消除。然后,一般通过引入具有对应的频率但幅值相反的干扰信号抵消回音信号的效应来执行回音信号304的消除。
除了仅确定捕获的音频信号中是否存在回音效应之外,回音消除模块220还使用来自捕获的音频信号和样本音频信号的比较的数据以便计算实际的、实时的通信会话开始时回音消除模块220将使用的一组初始化参数。回音消除模块220可在回音消除算法的特定实现中使用若干不同参数,例如,估计的扬声器对扩音器的增益统计数值、估计的扬声器到扩音器的延迟统计数据、以及捕获的音频的频率特性。频率特性可通过公知的傅里叶变换函数或通过其它常见方法来比较。
这些参数被用来同步回音消除模块220中的通过扬声器播放的样本音频信号与由扩音器捕获的音频之间的“滑动窗口”。滑动窗口可被理解为不断更新的时间段以及在那段特定时间段期间被播放或捕获的对应的声音。回音消除模块220使用输出样本音频信号的滑动窗口来确定在对应于捕获的音频信号的滑动窗口中消除什么,并使用捕获的音频信号的滑动窗口来限制搜索。这些滑动窗口需要基于延迟和反射路径在时间上同步。滑动窗口的大小也基于回音的数目和延迟及反射路经中的变化被参数化以搜索尽可能少的捕获的音频信号流,以便减少回音消除模块所花费的处理周期数。
一旦基于样本音频信号测试计算了初始化参数,该初始化参数即被保存在数据存储模块222。如以下进一步描述的,该初始化参数在实际的、实时的通信会话的一开始被重新调用。
如图2所示,计算机系统200还包括在用户模式内运行的音频应用程序226。音频应用程序226可以是被用户例示的将控制被配置为进行通信会话的例如扩音器202和扬声器204等输入和输出设备的软件程序。示例性音频应用程序可以是VOIP客户端和启用音频的聊天程序。
“回音消除选择”224应用程序接口(API)作为回音参数化模块212与音频应用程序226之间的接口来传输基于回音消除模块220利用样本音频文件214作出的测试的结果指示音频应用程序226在通信会话期间是应该启用还是禁用回音消除的数据。或者,音频应用程序226可通过图形用户界面(GUI)中的消息向用户提供警示(例如,可在显示监视器上展示“弹出”窗口)以在音频应用程序226中手动启用或禁用回音消除。
第二API,即音频设备选择API 228,也与音频应用程序226接口,并且还与扩音器202和扬声器204通过其与计算机系统200连接的输入和输出端口接口。(尽管没有在图2中示出,但音频应用程序226可另外与带有单独API的音频呈现模块208接口,以便产生来自由音频应用程序226进行的通信会话(例如,VOIP电话呼叫)的声音)。
音频设备选择API 228激活与期望与音频应用程序226一起使用的音频设备相连接的输入端口或输出端口。例如,用户的计算机系统200可具有多个扩音器202,例如,集成于显示监视器的第一扩音器和集成于web摄像头的第二扩音器,以及具有多个扬声器204,例如,与计算机系统200线连的第一组扬声器和集成于显示监视器的第二组扬声器。音频应用程序226可询问用户喜欢用哪个扩音器或哪组扬声器以用于音频通信目的。音频应用程序226可通过音频设备选择API 228打开和关闭适当的数据端口来激活期望的扩音器202和扬声器204的组合。
图4示出由计算机系统执行的执行自动回音消除确定的一系列示例性操作。在图2的计算机系统的示例性配置的上下文中,回音参数化模块被配置成检测对应于样本音频文件的回音效应的存在,确定特定计算机系统环境和外围音频设备配置是否需要回音消除例程,以及计算用于回音消除算法的初始化参数。尽管在图2的计算机系统的上下文中描述,但应该理解的是,此处所描述的这些和其它操作可在除图2的计算机系统之外的系统上执行。此外,该操作中的任何一个操作或全部操作可由硬件、软件、固件或任何其组合来执行。
一开始,在选择操作402中,音频应用程序或者提示用户选择和配置,或者自动选择用于音频通信会话的音频设备配置。一旦确定了音频设备配置,启动播放操作408。在播放操作408中,样本音频文件被传输至音频呈现设备以便通过所选扬声器回放。这样的提示或者要求可通过显示监视器上的GUI消息来展示。然后,捕获操作406记录被扩音器拾取的声波,这包括由扬声器产生的与样本音频文件相关的声音。声波被扬声器转换为模拟信号,该模拟信号被音频捕获模块进一步转换为数字音频格式。
在转换操作408中,该样本音频文件还可被信号处理器访问并被转换成能容易与捕获的音频数据的格式作比较的数据格式。例如,如果捕获的音频数据是PMC格式的,而样本音频文件是WAV格式的,则可将样本音频文件从WAV转换成PMC。在替换操作中(图4中未示出),信号处理器可将捕获的音频数据转换成样本音频文件的格式。在又一个替换操作中(图4中未示出),捕获的音频数据和样本音频文件两者的数据格式可被转换成第三个共同格式。
一旦样本音频文件和捕获的音频数据都是一个共同格式,则第一分析操作410分析对应于转换的样本音频文件的样本音频信号的频率范围、时间特征、能级以及任何其它期望的特性。第二分析操作412类似地分析对应于捕获的音频数据的捕获的音频信号的频率范围、时间特征、能级以及任何其它期望的特性。
然后,确定操作414将捕获的音频信号的特性与样本音频信号作比较,以确保样本音频文件成为在捕获的音频信号内发现的任何回音效应的基础。确定操作414可对捕获的音频数据的窗口或快照进行连续地分析,以帮助捕获的音频数据与样本音频信号进行相关。确定操作414可通过从对应于扬声器播放样本音频文件的那个时间段的特定时间段内选择窗口来缩小用来查看相关的捕获的音频信号的窗口。由此,在捕获的音频信号的每一个窗口内的频率范围和能级与样本音频信号的频率范围和能级之间进行合理相关。这被视为一个质量控制功能,用于进一步确保由回音消除模块所计算的任何初始化参数是基于样本音频文件的分析而不是被扩音器拾取的环境背景噪音。音频信号不需要完全一致,但只需合理地接近即可。被认为是合理接近的差值的阈值或范围可以是预先确定或是用户可设置的。
当确定操作414将捕获的音频信号与样本音频信号作比较以进行内容相关时,处理操作416通过回音消除算法处理捕获的音频信号和样本音频信号。回音消除算法是公知的,并且任何示例性回音消除算法可在该操作中被采用。例如,计算机系统所使用的最新的音频通信程序,例如,MSN
Instant Messenger、Skype
TM、
Talk及其它采用可由用户手动启用的回音消除算法。回音消除算法一般是动态并且不断调整或“收敛”以消除会随变化的环境(例如,不同用户的嗓音或物理位置)而变化的回音效应。处理操作416一开始对回音效应(如果存在的话)是否处于明显足以需要进行消除的水平作出阈值确定。如果是,则处理操作416通过回音消除算法进一步处理捕获的音频信号和样本音频信号以减少或消除回音效应。
计算操作418确定回音消除算法所采用的用来消除对应于样本音频文件的回音效应的一组参数。样本音频文件被选择用来生成具有足够供回音消除算法计算一组参数的时间长度的样本音频信号,该组参数将消除由计算机系统的环境和所附外围音频设备的配置所导致的任何回音效应。在保存操作420中,由计算操作418计算的该组参数被保存到数据存储模块中。保存的参数被作为当例示回音消除算法以对计算机系统所主持的实时通信会话进行滤波时的初始化参数使用。
图5示出被配置成通过网络518参与实时通信会话的计算机系统500。在通信会话开始之前,回音消除模块520访问来自数据存储模块522的初始化参数。这些初始化参数是通过图4的示例性操作根据样本音频文件所计算出的参数。因此,当启动了实时通信会话,来自另一个参与者524的音频信号通过与计算机系统500相连的网络518到达该用户的计算机系统500,该回音消除模块520能够立即并有效地消除任何回音效应,而没有任何用户可察觉的滞后时间。
在典型的、实时通信会话期间,来自另一个参与者524的音频信号可通过网络518传输至计算机系统500。解码器514处理进入的音频信号以对进入的音频信号进行解调或以其它方式对进入的音频信号进行解码。然后,进入的音频信号被传输至回音消除模块520和音频呈现模块508两者。音频呈现模块508将进入的音频信号从数字数据转换成模拟信号,以供扬声器504输出。如从扬声器504到扩音器502的箭头所指示的,扩音器502拾取对应于由扬声器504产生的进入的音频信号的声波。
除了由用户产生的任何声音(例如,讲话)和任何环境噪音之外,扩音器502还捕获进入的音频声音。捕获的音频被转换成模拟信号,音频捕获模块506将该模拟信号转换成数字捕获音频信号。捕获的音频信号在被传送至回音消除模块520之前作为进入的音频信号被传输至信号处理器516以用于将其转换成共同数字数据格式。或者,进入的音频信号可从解码器514传输至信号处理器516,而捕获的音频信号能从音频捕获模块506直接传输至回音消除模块520。此外,进入的音频信号和捕获的音频信号两者均可被信号处理器516处理成共同的数据形式,以供回音消除模块520的进一步处理。
使用来自数据存储模块522的初始化参数,回音消除模块520对捕获的音频信号进行滤波以去除对应于进入的音频信号的任何回音效应。如前所述,采用的回音消除算法是动态的,并且不断监视捕获的音频信号中由于环境的变化会移动和改变的回音效应。因此,进入的音频信号作为用于与捕获的音频信号进行比较的数据被输入至回音消除模块520,以适应回音效应中的移动并确保连续的收敛。由此,进入的音频信号按样本音频数据被用来生成初始化参数的同样方法在通信会话的过程中被回音消除模块520用来形成经更新的参数值。然而,通过对初始化参数的使用,有效的回音消除在通信会话开始时提供,而不存在任何否则其间会存在回音效应的滞后时间段。
一旦捕获的音频信号被滤波,它就被传输至编码器模块512以进行调制和其它需要的数据转换,以便在网络518上传输至通信会话的其它一个或多个参与者。该过程在通信会话的持续期间内继续。因此,当启动每个新的通信会话时,在对样本音频文件的测试过程中构造的初始化参数可被回音消除模块访问以提供有效、立即的回音消除。初始化参数对于不改变配置或环境的计算机系统来说是最有效的。在计算机系统常常被重新定位到各种环境中的情况下,例如,经常旅行的膝上型计算机用户或者具有被用户轮流选择的多个外围音频设备选项的计算机系统,用户会在启动通信会话之前在新的环境中运行测试程序以建立专门针对该环境的新的初始化参数以便利用及时回音消除的好处。
图6示出在启动通信会话时由计算机系统执行的一系列操作,其中用于回音消除程序的初始化参数已在先前被计算并保持。在例示操作602中,激活音频应用程序以在计算机系统上进行实时音频通信会话。在加载操作604中,从数据存储位置中检索先前保存的回音消除参数并将其输入至回音消除模块中。在应用操作606中,音频应用程序启用采用初始化参数的回音消除并立即将其应用于捕获的音频信号。随着通信会话的进行,调整操作608在会议过程期间必要时调整回音消除参数以应对进入的音频信号的变化和可能影响捕获的音频信号的环境中的变化,以便最大化回音消除算法的有效性。
图7示出可被用来在网络上进行实时通信会话的并且此处所描述的检测技术可在其中运行的示例性计算系统700。尽管例如视频游戏控制台、机顶盒、便携式游戏系统、个人数字助理和移动电话等其它实施例可将所描述的技术纳入其中,但在一个实现中,计算机系统700可由台式或膝上型计算机来实施。计算机系统700通常包括至少一个处理单元702和存储器704。取决于计算机系统700的确切配置及类型,存储器704可以是易失性的(例如,RAM)、非易失性的(例如,ROM和闪存)或两者的某一组合。如虚线706所示出的,计算机系统700的最基本配置仅需包括处理单元702和存储器704。
计算机系统700还可包括用于存储器存储或检索的其它设备。这些设备可以是可移动存储设备708或不可移动存储设备710,例如用于在磁或光介质上的存储器存储和检索的磁盘驱动器、磁带驱动器和光驱动器。存储介质可包括易失性和非易失性介质,可移动和不可移动两者,并且可用多种配置中的任何一种来提供,例如,可被用来存储数据并能被处理单元702访问的RAM、ROM、EEPROM、闪存、CD-ROM、DVD或其它光存储介质、磁带盒、磁带、磁盘或其它磁存储设备或任何其它存储器技术或介质。信息可被存储于采用存储例如计算机可读指令、数据结构和程序模块等数据的任何方法或技术的存储介质上。
计算机系统700还可具有允许系统700与其它设备通信的一个或多个通信接口712。通信接口可与局域网(LAN)、广域网(WAN)、电话网络、电缆网络、因特网、直接线连接、例如射频、红外、微波、或声学等无线网络、或允许设备间的数据传输的其它网络相连。数据一般通过例如载波或其它传输介质等已调制数据信号通过网络发送至通信介质712或从通信介质712发送。已调制数据信号是一种以在该信号中编码数据的方式设置或改变特性的电磁信号。
计算机系统700还可具有各种数据设备714和输出设备716。示例性输入设备714可包括键盘、鼠标、手写板、触摸屏设备、扫描仪、视觉输入设备和扩音器或其它声音输入设备。示例性输出设备716可包括显示监视器、打印机和扬声器。这样的输入设备714和输出设备716可与计算机系统700集成,或者它们可以通过有线或无线(例如,通过蓝牙协议)与计算机系统700连接。这些集成的或外围输入和输出设备一般是公知的,并且不在此处做进一步讨论。在一种实现中,实现用于配置回音消除(包括例如样本音频文件)的方法或模块的程序指令被包含于存储器704中和存储设备708和710中,并被处理单元702执行。例如音频呈现模块和音频捕获模块执行的其它功能可被计算机系统700的非易失性存储器704中的操作系统执行。
此处描述的技术被实现为一个或多个系统中的逻辑操作和/或模块。逻辑操作可被实现为在一个或多个计算机系统中执行的由处理器实现的步骤序列,以及被实现为在一个或多个计算机系统内的互连机器或电路模块。同样,关于由模块执行或实现的操作,提供各种组件模块的描述。所得的实现是选择的问题,并取决于实现所述技术的底层系统的性能要求。因此,组成此处所描述的技术的实施例的逻辑操作以不同的方式称为操作、步骤、对象或模块。此外,应该理解,逻辑操作可按任何顺序执行,除非明确申明或者权利要求语言固有地需要的特定顺序。
以上说明书、示例和数据提供对本发明的示例性实施例的结构和使用的描述。尽管以上以一定的具体程度描述了本发明的各种实施例或者参考了一个或多个单独实施例,但本领域的技术人员可在不脱离本发明的精神和范围的情况下枚举出所公开的实施例的各种更改。特别是,应该理解,所描述的技术可独立于个人计算机被采用。由此,可预期到其它实施例。希望的是,在以上描述中所包含的以及在附图中所显示的所有内容应该被解释为仅是说明具体实施例的,而不是限制。在不脱离所附权利要求中所定义的本发明的基本要素的情况下可在细节或结构上作出改变。