将文本转换为语音的系统及其存储介质转让专利

申请号 : CN201880021978.2

文献号 : CN110476206B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S.本吉奥Y.王Z.杨Z.陈Y.吴I.阿吉奥米詹纳基斯R.J.韦斯N.杰特里R.M.里夫金R.A.J.克拉克Q.V.勒R.J.瑞安Y.肖

申请人 : 谷歌有限责任公司

摘要 :

用于从文本生成语音的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。系统之一包括一个或多个计算机和存储指令的一个或多个存储设备,当指令被一个或多个计算机执行时,使得一个或多个计算机实施:序列到序列递归神经网络,其被配置为:接收以特定自然语言的字符序列,并处理该字符序列以生成以特定自然语言的字符序列的言语表达的谱图;以及子系统,其被配置为:接收以特定自然语言的字符序列,并将该字符序列作为输入提供给序列到序列递归神经网络,以获得以特定自然语言的字符序列的言语表达的谱图作为输出。

权利要求 :

1.一种将文本转换为语音的系统,所述系统包括一个或多个计算机和存储指令的一个或多个非暂时性存储设备,当所述指令被所述一个或多个计算机执行时,使得所述一个或多个计算机实施:序列到序列递归神经网络,其被配置为:接收特定自然语言的字符序列,并且

处理所述字符序列以生成所述特定自然语言的所述字符序列的言语表达的谱图;和子系统,其被配置为:接收所述特定自然语言的所述字符序列,并且将所述字符序列作为输入提供给所述序列到序列递归神经网络,以获得所述特定自然语言的所述字符序列的所述言语表达的所述谱图作为输出,其中,所述序列到序列递归神经网络包括:编码器神经网络,其被配置为:

接收所述字符序列,并且

处理所述字符序列以生成序列中的每个字符的相应编码表示;和基于注意力的解码器递归神经网络,其被配置为:接收解码器输入序列;并且

对于序列中的每个解码器输入:

处理所述解码器输入和所述编码表示以生成所述谱图的r个帧,其中r是大于1的整数,其中,序列中的第二个和之后的解码器输入中的每一个是通过处理序列中的之前的解码器输入而生成的所述谱图的所述r个帧中的一个或多个,其中,所述子系统还被配置为从所述特定自然语言的所述字符序列的所述言语表达的所述谱图生成波形。

2.根据权利要求1所述的系统,其中,所述编码器神经网络包括:编码器预网神经网络,其被配置为:

接收序列中的每个字符的相应嵌入,并且处理所述序列中的每个字符的相应嵌入,以生成所述字符的变换的嵌入,和编码器CBHG神经网络,其被配置为:接收所述变换的嵌入,并且

处理所述变换的嵌入以生成所述编码表示。

3.根据权利要求2所述的系统,其中,所述编码器CBHG神经网络包括1-D卷积滤波器组,随后是高速通道网络,并且随后是双向递归神经网络。

4.根据权利要求3所述的系统,其中,所述双向递归神经网络是门控递归单元神经网络。

5.根据权利要求3所述的系统,其中,所述编码器CBHG包括所述变换的嵌入和所述1-D卷积滤波器组的输出之间的残差连接。

6.根据权利要求3所述的系统,其中,所述1-D卷积滤波器组包括沿时间层、步幅为1的最大池化。

7.根据权利要求1所述的系统,其中,所述序列中的第一解码器输入是预定初始帧。

8.根据权利要求1所述的系统,其中,所述谱图是压缩谱图。

9.根据权利要求8所述的系统,其中,所述压缩谱图是梅尔尺度谱图。

10.根据权利要求8所述的系统,其中,所述系统还包括:后处理神经网络,其被配置为:

接收所述压缩谱图,并且

处理所述压缩谱图以生成波形合成器输入;和波形合成器,其被配置为:

接收所述波形合成器输入,并且

处理所述波形合成器输入,以生成所述特定自然语言的所述字符序列的所述言语表达的所述波形;并且其中,所述子系统还被配置为:

将所述压缩的谱图作为输入提供给所述后处理神经网络,以获得所述波形合成器输入;并且将所述波形合成器输入作为输入提供给所述波形合成器,以生成所述波形。

11.根据权利要求1所述的系统,其中,所述子系统还被配置为:使用所述波形生成语音,并且

提供生成的语音用于回放。

12.根据权利要求10所述的系统,其中,所述波形合成器输入是所述特定自然语言的所述字符序列的所述言语表达的线性尺度谱图。

13.根据权利要求10所述的系统,其中,所述波形合成器是可训练谱图到波形逆变器。

14.根据权利要求10所述的系统,其中,所述后处理神经网络已经与所述序列到序列递归神经网络被联合训练。

15.根据权利要求10所述的系统,其中,所述后处理神经网络是CBHG神经网络,所述CBHG神经网络包括1-D卷积子网,随后是高速通道网络,并且随后是双向递归神经网络。

16.根据权利要求15所述的系统,其中,所述双向递归神经网络是门控递归单元神经网络。

17.根据权利要求15所述的系统,其中,所述CBHG神经网络包括一个或多个残差连接。

18.根据权利要求15所述的系统,其中,所述1-D卷积子网包括1-D卷积滤波器组,随后是沿时间层、步幅为1的最大池化。

19.根据权利要求1所述的系统,其中,所述子系统还被配置为:使用所述特定自然语言的所述字符序列的所述言语表达的所述谱图生成语音;并且提供生成的语音用于回放。

20.一个或多个非暂时性计算机存储介质,其存储指令,当所述指令被一个或多个计算机执行时,使得所述一个或多个计算机实施:序列到序列递归神经网络,其被配置为:接收特定自然语言的字符序列,并且

处理所述字符序列以生成所述特定自然语言的所述字符序列的言语表达的谱图;和子系统,其被配置为:接收所述特定自然语言的所述字符序列,并且将所述字符序列作为输入提供给所述序列到序列递归神经网络,以获得所述特定自然语言的所述字符序列的所述言语表达的所述谱图作为输出,其中,所述序列到序列递归神经网络包括:编码器神经网络,其被配置为:

接收所述字符序列,并且

处理所述字符序列以生成序列中的每个字符的相应编码表示;和基于注意力的解码器递归神经网络,其被配置为:接收解码器输入序列;并且

对于序列中的每个解码器输入:

处理所述解码器输入和所述编码表示以生成所述谱图的r个帧,其中r是大于1的整数,其中,序列中的第二和之后的解码器输入中的每一个是通过处理序列中的之前的解码器输入而生成的所述谱图的所述r个帧中的一个或多个,其中,所述子系统还被配置为从所述特定自然语言的所述字符序列的所述言语表达的所述谱图生成波形。

说明书 :

将文本转换为语音的系统及其存储介质

[0001] 相关申请的交叉引用
[0002] 本申请是于2017年3月29日提交的希腊专利申请第20170100126号的非临时申请,并要求其优先权,该申请的全部内容通过引用结合于此。

技术领域

[0003] 本说明书涉及使用神经网络将文本转换为语音。

背景技术

[0004] 神经网络是机器学习模型,它采用非线性单元的一层或多层来预测接收输入的输出。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层(即下一隐藏层或输出层)的输入。网络的每一层根据相应参数集的当前值从接收输入生成输出。
[0005] 一些神经网络是递归神经网络。递归神经网络是接收输入序列并从输入序列生成输出序列的神经网络。具体地,递归神经网络可以在计算在当前时间步(time step)中的输出时使用来自前一时间步的网络的一些或全部内部状态。递归神经网络的一个示例是包括一个或多个长短期(long short term,LSTM)存储器块的LSTM神经网络。每个LSTM存储器块可以包括一个或多个单元,每个单元包括输入门、遗忘门和输出门,其允许单元存储单元的先前状态,例如,用于在生成电流激活时使用或被提供给LSTM神经网络的其他组件。

发明内容

[0006] 本说明书描述了在一个或多个位置的一个或多个计算机上实施为将文本转换为语音的计算机程序的系统。
[0007] 一般而言,一个创新方面可以体现在一种系统,该系统包括一个或多个计算机和存储指令的一个或多个存储设备,当由一个或多个计算机执行该指令时,使得一个或多个计算机实施:序列到序列递归神经网络,其被配置为:接收以特定自然语言的字符序列,并处理字符序列以生成以特定自然语言的字符序列的言语表达的谱图;以及子系统,被配置为:接收以特定自然语言的字符序列,并将该字符序列作为输入提供给序列到序列递归神经网络,以获得以特定自然语言的字符序列的言语表达的谱图作为输出。子系统还可以被配置为使用以特定自然语言的输入的字符序列的言语表达的谱图来生成语音;并且提供生成的语音用于回放。
[0008] 本说明书中描述的主题可以在特定实施例中实施,以便实现一个或多个以下优点。通过在帧级(frame level)生成语音,本说明书中描述的系统可以比其他系统更快地从文本生成语音,同时生成具有相当的质量或甚至更好质量的语音。另外,如下文将更详细解释的,本文描述的系统可以减小模型大小、训练时间和推理时间,并且还可以显著提高收敛速度。本说明书中描述的系统可以生成高质量的语音,而不需要手动设计的语言特征或复杂组件,例如,不需要隐马尔可夫模型(Hidden Markov Model,HMM)对准器,从而降低复杂性并使用更少的计算资源,同时仍然生成高质量的语音。
[0009] 本说明书主题的一个或多个实施例的细节在附图和以下描述中阐述。从说明书、附图和权利要求书中,主题的其他特征、方面和优点将变得显而易见。

附图说明

[0010] 图1示出了示例文本到语音转换系统。
[0011] 图2示出了示例CBHG神经网络。
[0012] 图3是用于将字符序列转换为语音的示例过程的流程图。
[0013] 图4是用于从字符序列的言语表达的压缩谱图生成语音的示例过程的流程图。
[0014] 不同附图中相同的附图标号和名称表示相同的元素。

具体实施方式

[0015] 图1示出了示例文本到语音转换系统100。文本到语音转换系统100是实施为在一个或多个位置的一个或多个计算机上的计算机程序的系统的示例,在其中可以实施下面描述的系统、组件和技术。
[0016] 系统100包括子系统102,其被配置为接收输入文本104作为输入,并处理输入文本104以生成语音120作为输出。输入文本104包括以特定自然语言的字符序列。字符序列可以包括字母、数字、标点符号和/或其他特殊字符。输入文本104可以是不同长度的字符序列。
[0017] 为了处理输入文本104,子系统102被配置为与端到端文本到语音模型150交互,该模型150包括序列到序列递归神经网络106(以下称为“seq2seq网络106”)、后处理神经网络108和波形合成器110。
[0018] 在子系统102接收到包括以特定自然语言的字符序列的输入文本104之后,子系统102将该字符序列作为输入提供给seq2seq网络106。seq2seq网络106被配置为从子系统102接收字符序列,并处理该字符序列以生成以特定自然语言的字符序列的言语表达的谱图。
[0019] 特别地,seq2seq网络106使用(i)编码器神经网络112,以及(ii)基于注意力的解码器递归神经网络118来处理字符序列,该编码器神经网络112包括编码器预网(pre-net)神经网络114和编码器CBHG神经网络116。字符序列中的每个字符都可以表示为独热向量(one-hot vector),并嵌入到连续向量中。也就是说,子系统102可以将序列中的每个字符表示为独热向量,然后在将序列作为输入提供给seq2seq网络106之前,生成字符的嵌入,即向量或数值的其他有序集合。
[0020] 编码器预网神经网络114被配置为接收序列中的每个字符的相应嵌入,并处理每个字符的相应嵌入以生成字符的变换的嵌入。例如,编码器预网神经网络114可以对每个嵌入应用一组非线性变换,以生成变换的嵌入。在一些情况下,编码器预网神经网络114包括利用丢失以在训练期间提高收敛速度并改善系统的泛化能力的瓶颈神经网络层。
[0021] 编码器CBHG神经网络116被配置为从编码器预网神经网络206接收变换的嵌入,并处理变换的嵌入以生成字符序列的编码表示。编码器CBHG神经网络116包括CBHG神经网络,这将在下面参考图2更详细地描述。本文描述的编码器CBHG神经网络112的使用可以减少过拟合。另外,在与例如多层RNN编码器相比时,它可以得到更少的发音错误。
[0022] 基于注意力的解码器递归神经网络118(本文称为“解码器神经网络118”)被配置为接收解码器输入序列。对于序列中的每个解码器输入,解码器神经网络118被配置为处理解码器输入和由编码器CBHG神经网络116生成的编码表示,以生成字符序列的谱图的多个帧。也就是说,不是在每个解码器步(decoder step)中生成(预测)一个帧,而是解码器神经网络118生成谱图的r个帧,其中r是大于1的整数。在许多情况下,r个帧的集合之间没有重叠。
[0023] 特别地,在解码器步t中,将在解码器步t-1中生成的r个帧的至少最后一帧作为输入被馈送到在解码器步t+1中的解码器神经网络118。在一些实施方式中,在解码器步t-1中生成的所有r个帧可以作为输入被馈送到在解码器步t+1中的解码器神经网络118。用于第一解码器步的解码器输入可以是全零帧(即帧)。对编码表示的注意力被应用于所有解码器步,例如,使用传统的注意力机制。解码器神经网络118可以使用具有线性激活的完全连接的神经网络层来同时预测给定解码器步中的r个帧。例如,为了预测5个帧,每个帧是80-D(80-维)向量,解码器神经网络118使用具有线性激活的完全连接的神经网络层来预测
400-D向量并对400-D向量进行重塑(reshape)以获得5个帧。
[0024] 通过在每个时间步中生成r个帧,解码器神经网络118将解码器步的总数除以r,从而减小模型大小、训练时间和推理时间。此外,这种技术大大提高了收敛速度,即因为它得到了由注意力机制所学习的帧和编码表示之间更快(和更稳定)的对准。这是因为相邻的语音帧是相关的,并且每个字符通常对应于多个帧。在时间步中发射多个帧允许解码器神经网络118利用这种质量来快速学习(即被训练成)在训练期间如何有效地处理(attend to)编码表示。
[0025] 解码器神经网络118可以包括一个或多个门控递归单元神经网络层。为了加速收敛,解码器神经网络118可以包括一个或多个垂直残差连接。在一些实施方式中,谱图是压缩谱图,诸如梅尔尺度(mel scale)谱图。使用压缩谱图代替例如原始谱图可以减少冗余,从而减少训练和推理期间所需的计算。
[0026] 后处理神经网络108被配置为接收压缩谱图并处理压缩谱图以生成波形合成器输入。
[0027] 为了处理压缩谱图,后处理神经网络108包括CBHG神经网络。特别地,CBHG神经网络包括1-D卷积子网,随后是高速通道网络,并且随后是双向递归神经网络。CBHG神经网络可以包括一个或多个残差连接。1-D卷积子网可以包括1-D卷积滤波器组,随后是沿时间层、步幅为1的最大池化。在某些情况下,双向递归神经网络是门控递归单元神经网络。下面参考图2更详细地描述CBHG神经网络。
[0028] 在一些实施方式中,后处理神经网络108已经与序列到序列递归神经网络106联合训练。也就是说,在训练期间,系统100(或外部系统)使用相同的神经网络训练技术(例如,基于梯度下降的训练技术),在相同的训练数据集上训练后处理神经网络108和seq2seq网络106。更具体地,系统100(或外部系统)可以反向传播对损失函数的梯度的估计,以联合调整后处理神经网络108和seq2seq网络106的所有网络参数的当前值。与具有需要单独训练或预先训练的组件并且因此每个组件的误差可能复合的传统系统不同,具有被联合训练的后处理神经网络108和seq2seq网络106的系统更稳健(例如,它们具有较小的误差并且可以从头开始训练)。这些优点使得端到端文本到语音模型150能够在现实世界中发现的大量丰富的、表达性强但经常有噪声的数据上进行训练。
[0029] 波形合成器110被配置为接收波形合成器输入,并处理波形合成器输入以生成以特定自然语言的输入的字符序列的言语表达的波形。在一些实施方式中,波形合成器是Griffin-Lim合成器。在一些其他实施方式中,波形合成器是声音合成器。在一些其他实施方式中,波形合成器是可训练谱图到波形逆变器。
[0030] 在波形合成器110生成波形之后,子系统102可以使用波形生成语音120,并且提供生成的语音120用于例如在用户设备上回放,或者将生成的波形提供给另一系统,以允许另一系统生成和回放语音。
[0031] 图2示出了示例CBHG神经网络200。CBHG神经网络200可以是包括在编码器CBHG神经网络116中的CBHG神经网络或者包括在图1的后处理神经网络108中的CBHG神经网络。
[0032] CBHG神经网络200包括1-D卷积子网208,随后是高速通道网络212,并且随后是双向递归神经网络214。CBHG神经网络200可以包括一个或多个残差连接,例如,残差连接210。
[0033] 1-D卷积子网208可以包括1-D卷积滤波器组204,随后是沿时间层、步幅为1的最大池化206。1-D卷积滤波器组204可以包括K个1-D卷积滤波器集合,其中第K个集合包括Ck个滤波器,每个滤波器都具有卷积宽度k。
[0034] 1-D卷积子网208被配置为接收输入序列202,例如,由编码器预网神经网络生成的字符序列的变换的嵌入。子网208使用1-D卷积滤波器组204处理输入序列,以生成输入序列202的卷积输出。然后,子网208将卷积输出堆叠在一起,并使用沿时间层、步幅为1的最大池化206来处理堆叠的卷积输出,以生成最大池化输出。然后,子网208使用一个或多个固定宽度的1-D卷积滤波器来处理最大池化输出,以生成子网208的子网输出。
[0035] 在生成子网输出之后,残差连接210被配置为将子网输出与原始输入序列202相组合,以生成卷积输出。
[0036] 然后,高速通道网络212和双向递归神经网络214被配置为处理卷积输出,以生成字符序列的编码表示。
[0037] 特别地,高速通道网络212被配置为处理卷积输出,以生成字符序列的高级特征表示。在一些实施方式中,高速通道网络包括一个或多个完全连接的神经网络层。
[0038] 双向递归神经网络214被配置为处理高级特征表示,以生成字符序列的序列性特征表示。序列性特征表示表示特定字符周围的字符序列的局部结构。序列性特征表示可以包括特征向量序列。在一些实施方式中,双向递归神经网络是门控递归单元神经网络。
[0039] 在训练期间,1-D卷积子网208的一个或多个卷积滤波器可以使用批量归一化方法来训练,这在S.Ioffe和C.Szegedy于2015年发表的“批量归一化:通过减少内部协变量偏移来加速深度网络训练(Batch normalization:Accelerating deep network training by reducing internal covariate shift)”rXiv preprint arXiv:1502.03167中有详细描述。
[0040] 在一些实施方式中,CBHG神经网络200中的一个或多个卷积滤波器是非因果卷积滤波器,即在给定的时间步T中可以与两个方向上的周围输入进行卷积(例如,..T-1,T-2和T+1,T+2,...等等)的卷积滤波器。相反,因果卷积滤波器只能与先前的输入进行卷积(...T-1、T-2等)。
[0041] 在一些其他实施方式中,CBHG神经网络200中的所有卷积滤波器是非因果卷积滤波器。
[0042] 使用非因果卷积滤波器、批量归一化、残差连接以及沿时间层、步幅为1的最大池化提高了CBHG神经网络200对输入序列的泛化能力,并且因此使得文本到语音转换系统能够生成高质量的语音。
[0043] 图3是用于将字符序列转换为语音的示例过程300的流程图。为了方便起见,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,文本到语音转换系统(例如,图1的文本到语音转换系统100)或文本到语音转换系统的子系统(例如,图
1的子系统102)经适当编程可以执行过程300。
[0044] 系统接收以特定自然语言的字符序列(步骤302)。
[0045] 然后,系统将字符序列作为输入提供给序列到序列(seq2seq)递归神经网络,以获得以特定自然语言的字符序列的言语表达的谱图作为输出(步骤304)。在一些实施方式中,谱图是压缩谱图,例如,梅尔尺度谱图。
[0046] 特别地,在从系统接收字符序列之后,seq2seq递归神经网络处理字符序列,以使用包括编码器预网神经网络和编码器CBHG神经网络的编码器神经网络生成序列中的每个字符的相应编码表示。
[0047] 更具体地,字符序列中的每个字符可以表示为独热向量,并被嵌入到连续向量中。编码器预网神经网络接收序列中的每个字符的相应嵌入,并处理序列中的每个字符的相应嵌入,以使用编码器预网神经网络生成字符的变换的嵌入。例如,编码器预网神经网络可以对每个嵌入应用一组非线性变换,以生成变换的嵌入。然后,编码器CBHG神经网络从编码器预网神经网络接收变换的嵌入,并处理变换的嵌入以生成字符序列的编码表示。
[0048] 为了生成字符序列的言语表达的谱图,seq2seq递归神经网络使用基于注意力的解码器递归神经网络来处理编码表示。特别地,基于注意力的解码器递归神经网络接收解码器输入序列。序列中的第一解码器输入是预定初始帧。对于序列中的每个解码器输入,基于注意力的解码器递归神经网络处理解码器输入和编码表示,以生成谱图的r个帧,其中r是大于1的整数。生成的r个帧中的一个或多个可以用作序列中的下一个解码器输入。换句话说,序列中的每个其他解码器输入是通过处理序列中的解码器输入之前的解码器输入而生成的r个帧中的一个或多个。
[0049] 因此,基于注意力的解码器递归神经网络的输出包括形成谱图的多个帧集合,其中每个集合包括r个帧。在许多情况下,r个帧的集合之间没有重叠。通过一次生成r个帧,由基于注意力的解码器递归神经网络执行的解码器步骤总数减少了r倍,从而减少了训练和推理时间。这种技术也有助于总体上提高基于注意力的解码器递归神经网络和系统的收敛速度和学习率。
[0050] 系统使用以特定自然语言的字符序列的言语表达的谱图生成语音(步骤306)。
[0051] 在一些实施方式中,当谱图是压缩谱图时,系统可以从压缩谱图生成波形,并使用该波形生成语音。下面参考图4更详细地描述从压缩谱图生成语音。
[0052] 然后,系统提供生成的语音用于回放(步骤308)。例如,系统通过数据通信网络将生成的语音发送给用户设备进行回放。
[0053] 图4是用于从字符序列的言语表达的压缩谱图生成语音的示例过程400的流程图。为了方便起见,过程400将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,文本到语音转换系统(例如,图1的文本到语音转换系统100)或文本到语音转换系统的子系统(例如,图1的子系统102)经适当编程可以执行过程400。
[0054] 系统接收以特定自然语言的字符序列的言语表达的压缩谱图(步骤402)。
[0055] 然后,系统将压缩谱图作为输入提供给后处理神经网络,以获得波形合成器输入(步骤404)。在某些情况下,波形合成器输入是以特定自然语言的输入的字符序列的言语表达的线性尺度谱图。
[0056] 在获得波形合成器输入之后,系统将波形合成器输入作为输入提供给波形合成器(步骤406)。波形合成器处理波形合成器输入以生成波形。在一些实施方式中,波形合成器是Griffin-Lim合成器,其使用Griffin-Lim算法来合成来自波形合成器输入(诸如线性尺度谱图)的波形。在一些其他实施方式中,波形合成器是声音合成器。在一些其他实施方式中,波形合成器是可训练谱图到波形逆变器。
[0057] 然后,系统使用波形生成语音,即生成由波形表示的声音(步骤408)。然后,系统可以提供生成的语音用于例如在用户设备上回放。在一些实施方式中,系统可以向另一系统提供波形,以允许另一系统生成并回放语音。
[0058] 一个或多个计算机的系统被配置为执行特定的操作或动作,这意味着系统已经在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使得系统执行操作或动作。一个或多个计算机程序被配置为执行特定操作或动作,这意味着该一个或多个程序包括指令,当该指令由数据处理装置执行时,使得该装置执行操作或动作。
[0059] 本说明书中描述的主题和功能操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件(包括本说明书中公开的结构及其结构等同物)中实施,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以实施为一个或多个计算机程序,即编码在有形的非暂时性程序载体上的计算机程序指令的一个或多个模块,以由数据处理装置执行或控制数据处理装置的操作。可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,该信号被生成以编码信息,以用于发送到合适的接收器装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行访问存储器设备,或者它们中的一个或多个的组合。然而,计算机存储介质不是传播的信号。
[0060] 术语“数据处理装置”涵盖用于处理数据的各种装置、设备和机器,例如,包括可编程处理器、计算机、或多个处理器或计算机。该装置可以包括专用逻辑电路,例如,FPGA(field programmable gate array,现场可编程门阵列)或ASIC(application specific integrated circuit,专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0061] 计算机程序(也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、或声明或过程语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署为在位于一个站点或分布在多个站点并通过通信网络互连的一个或多个计算机上运行。
[0062] 如在本说明书中使用的,“引擎”或“软件引擎”是指提供不同于输入的输出的软件实施的输入/输出系统。引擎可以是编码的功能块,诸如库、平台、软件开发工具包(software development kit,SDK)或对象。每个引擎可以在任何适当类型的计算设备上实施,例如,服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或包括一个或多个处理器和计算机可读介质的其他固定或便携式设备。此外,两个或多个引擎可以在相同的计算设备上实施,或者在不同的计算设备上实施。
[0063] 本说明书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实施为专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。例如,过程和逻辑流程可以由图形处理单元(graphics processing unit,GPU)来执行,并且装置也可以被实施为图形处理单元(GPU)。
[0064] 举例来说,适于运行计算机程序的计算机可以基于通用或专用微处理器或两者,或者任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或者被可操作地耦合以从一个或多个大容量存储设备接收数据或将向其传送数据,或这两者。然而,计算机不需要这样的设备。此外,计算机可以嵌入到另一设备中,例如,移动电话、个人数字助理(personal digital assistant,PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(Global Positioning System,GPS)接收器或便携式存储设备,例如,通用串行总线(universal serial bus,USB)闪存驱动器,仅举几例。
[0065] 适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如,包括半导体存储器设备(例如,EPROM、EEPROM和闪速存储器设备);磁盘(例如,内部硬盘或可移动磁盘);磁光盘;和CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路来补充或并入专用逻辑电路中。
[0066] 为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备,例如,CRT(cathode ray tub,阴极射线管)或LCD(liquid crystal displa,液晶显示器),以及键盘和定点设备,例如,鼠标或轨迹球,用户可以通过键盘和定点设备向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括听觉、语音或触觉输入。另外,计算机可以通过向用户所使用的设备传送文档和从用户所使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收到的请求,向用户客户端设备上的网络浏览器传送网页。
[0067] 本说明书中描述的主题的实施例可以在计算系统中实施,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或网络浏览器的客户端计算机,用户可以通过其与本说明书中描述的主题的实施方式进行交互),或者一个或多个这样的后端、中间件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)相互连接。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,因特网。
[0068] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是通过在各自的计算机上运行的计算机程序产生的,并且彼此之间具有客户机-服务器关系。
[0069] 虽然本说明书包含许多具体的实施细节,但这些不应被解释为对任何发明或所要求保护的范围的限制,而是对特定于特定发明的特定实施例的特征的描述。在单独实施例的上下文中本说明书中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管上述特征可被描述为以某些组合起作用,甚至最初也是这样要求保护的,但是在某些情况下,所要求保护的组合中的一个或多个特征可以从该组合中排除,并且所要求保护的组合可以针对子组合或子组合的变体。
[0070] 类似地,尽管在附图中以特定顺序描述了操作,但这不应理解为要求以所示的特定顺序或以依次顺序执行这些操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应理解为在所有实施例中都需要这种分离,并且应理解的是,所描述的程序组件和系统通常可以集成在单个软件产品中或者封装到多个软件产品中。
[0071] 已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中列举的动作可以以不同的顺序执行,并且仍然获得期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或依次顺序来获得期望的结果。在某些实施方式中,多任务处理和并行处理可能是有利的。