数字音频信号中的差异数据的制作方法

文档序号:20066149发布日期:2020-03-06 08:31阅读:163来源:国知局
数字音频信号中的差异数据的制作方法

相关申请的交叉引用

本申请要求2018年3月29日提交的美国专利申请序列号15/939,473的优先权,该美国专利申请序列号15/939,473要求2017年4月25日提交的美国临时申请号62/489,650的权益,它们的内容通过整体引用而并入本文。

本公开涉及编码或解码音频信号。



背景技术:

音频编解码器可以将时域音频信号编码成数字文件或数字流,并且将数字文件或数字流解码成时域音频信号。正在进行改善音频编解码器(诸如减小编码文件或流的大小)的努力。



技术实现要素:

编码系统的示例可以包括:处理器;以及存储器设备,所述存储器设备存储由所述处理器可执行的指令,所述指令由所述处理器可执行以执行用于对音频信号进行编码的方法,所述方法包括:接收数字音频信号;将所述数字音频信号解析成多个帧,每个帧包括指定数量的音频采样;执行每个帧的音频采样的变换以对每个帧产生多个频域系数;将用于每个帧的多个频域系数划分到用于每个帧的多个频带中;对每个帧中的每个频带分配指定数量的位;对每个帧中的每个频带计算差异值,所述差异值表示对每个帧中的每个频带分配的位的数量与对应的对每个帧中的每个频带可分配的位的估计数量之间的差异;对位流进行编码以包括:表示所述数字音频信号的数据,以及表示所述差异值的数据,但不包括直接表示对每个帧中的每个频带分配的位的数量的数据;以及输出所述位流。

解码系统的示例可以包括:处理器;以及存储器设备,所述存储器设备存储由所述处理器可执行的指令,所述指令由所述处理器可执行以执行用于对编码的音频信号进行解码的方法,所述方法包括:接收位流,所述位流包括多个帧,每个帧被划分到多个频带中;提取每个帧中的每个频带的量化的范数;基于提取出的量化的范数,确定对每个帧中的每个频带可分配的位的估计数量;对于每个帧的每个频带,从所述位流提取差异值,所述差异值表示对每个帧中的每个频带分配的位的数量与对应的对每个帧中的每个频带可分配的位的估计数量之间的差异;将所述差异值与对应的对每个帧中的每个频带可分配的位的估计数量进行组合,以确定对每个帧中的每个频带分配的位的数量;对每个帧中的每个频带分配确定的数量的位;以及对每个帧中的每个频带使用确定的数量的位来对所述位流进行解码以生成解码的数字音频信号。

编码系统的另一个示例可以包括:接收器电路,用于接收数字音频信号;成帧器电路,用于将所述数字音频信号解析成多个帧,每个帧包括指定数量的音频采样;变换器电路,用于执行每个帧的音频采样的变换以对每个帧产生多个频域系数;频率带划分器电路,用于将用于每个帧的多个频域系数划分到用于每个帧的多个频带中;帧位分配电路,用于对每个帧中的每个频带分配指定数量的位;差异计算电路,用于对每个帧中的每个频带计算差异值,所述差异值表示对每个帧中的每个频带分配的位的数量与对应的对每个帧中的每个频带可分配的位的估计数量之间的差异;编码器电路,用于对位流进行编码以包括:表示所述数字音频信号的数据,以及表示所述差异值的数据,但不包括直接表示对每个帧中的每个频带分配的位的数量的数据;以及输出电路,用于输出所述位流。

附图说明

图1示出了根据一些实施例的编码系统的示例的框图。

图2示出了根据一些实施例的编码系统的另一个示例的框图。

图3示出了根据一些实施例的解码系统的示例的框图。

图4示出了根据一些实施例的解码系统的另一个示例的框图。

图5示出了根据一些实施例的涉及编码数字音频信号的若干个量。

图6示出了根据一些实施例的编码/解码系统的示例的框图。

图7示出了根据一些实施例的编码器的示例的框图。

图8示出了根据一些实施例的解码器的另一个示例的框图。

图9示出了根据一些实施例的编码器的另一个示例的框图。

图10示出了根据一些实施例的解码器的另一个示例的框图。

图11示出了根据一些实施例的用于编码音频信号的方法的示例的流程图。

图12示出了根据一些实施例的用于解码编码的音频信号的方法的示例的流程图。

图13示出了根据一些实施例的编码系统的示例的框图。

对应的附图标记贯穿若干个视图指示对应的部分。附图中的元素不一定是按比例绘制的。附图中所示的配置仅仅是示例,并且不应当以任何方式解释为限制本发明的范围。

具体实施方式

在诸如编解码器的音频编码和/或解码系统中,表示对每个频带分配的位的数量的数据可以被编码为差异数据。差异数据可以表示与对每个频带可分配的位的估计数量的差异,其中估计数量可以从位流(例如,编码的数字音频信号)中已经存在的数据来计算。差异数据(与从位流中存在的数据计算出的估计数据组合)可以产生对每个频带的分配的位的数量。差异数据可以被压缩到比完整的位数据(例如,显式地编码对每个频带分配的位的数量的值)小的大小,这可以减小位流中所需的空间。

图1示出了根据一些实施例的编码系统100的示例的框图。图1的配置仅仅是编码系统的一个示例;也可以使用其它合适的配置。

编码系统100可以接收数字音频信号102作为输入,并且可以输出位流104。输入和输出信号102、104可以各自包括本地或可访问的服务器上保存的一个或多个离散文件、和/或本地或可访问的服务器上生成的一个或多个音频流。

编码系统100可以包括处理器106。编码系统100还可以包括存储器设备108,其存储由处理器106可执行的指令110。指令110可以由处理器106执行以执行用于编码音频信号的方法。下面详细解释用于编码音频信号的这样的方法的示例。

在图1的配置中,编码在软件中执行,通常由处理器执行,该处理器还可以在计算设备中执行附加任务。作为替代,编码也可以在硬件中执行,诸如由专用芯片或专用处理器执行,该专用芯片或专用处理器被硬连线以执行编码。这样的基于硬件的编码器的示例在图2中示出。

图2示出了根据一些实施例的编码系统200的另一个示例的框图。图2的配置仅仅是编码系统的一个示例;也可以使用其它合适的配置。

编码系统200可以接收数字音频信号202作为输入,并且可以输出位流204。编码系统200可以包括专用编码处理器206,其可以包括被硬连线以执行特定编码方法的芯片。下面详细解释用于编码音频信号的这样的方法的示例。

图1和2的示例分别示出了可以在软件中和在硬件中操作的编码系统。在一些示例中,编码系统可以使用软件和硬件的组合。下面的图3和4分别示出了可以在软件中和在硬件中操作的可比较的解码系统。类似地,解码系统也可以使用软件和硬件的组合。

图3示出了根据一些实施例的解码系统的示例的框图。图3的配置仅仅是解码系统的一个示例;也可以使用其它合适的配置。

解码系统300可以接收位流302作为输入,并且可以输出解码的数字音频信号304。输入和输出信号302、304可以各自包括本地或可访问的服务器上保存的一个或多个离散文件、和/或本地或可访问的服务器上生成的一个或多个音频流。

解码系统300可以包括处理器306。解码系统300还可以包括存储器设备308,其存储由处理器306可执行的指令310。指令310可以由处理器306执行以执行用于解码音频信号的方法。下面详细解释用于解码音频信号的这样的方法的示例。

在图3的配置中,解码在软件中执行,通常由处理器执行,该处理器还可以在计算设备中执行附加任务。作为替代,解码也可以在硬件中执行,诸如由专用芯片或专用处理器执行,该专用芯片或专用处理器被硬连线以执行编码。这样的基于硬件的解码器的示例在图4中示出。

图4示出了根据一些实施例的解码系统400的另一个示例的框图。图4的配置仅仅是解码系统的一个示例;也可以使用其它合适的配置。

解码系统400可以接收位流402作为输入,并且可以输出解码的数字音频信号404。解码系统400可以包括专用解码处理器406,其可以包括被硬连线以执行特定解码方法的芯片。下面详细解释用于解码音频信号的这样的方法的示例。

图5示出了根据一些实施例的涉及编码数字音频信号的若干个量。解码位流一般涉及与编码位流相同的量,但是数学运算相反地执行。图5中所示的量仅仅是这样的量的示例;也可以使用其它合适的量。图5中所示的量中的每一个可以与图1-4中所示的编码器或解码器中的任何一个一起使用。

编码器可以接收数字音频信号502。数字音频信号502在时域中,并且可以包括表示音频信号随时间演变的幅度的整数或浮点数的序列。数字音频信号502可以是流的形式(例如,没有指定的开始和/或结束),诸如来自演播室的现场直播。替代地,数字音频信号502可以是离散文件(例如,具有开始和结束、以及指定的持续时间),诸如服务器上的音频文件、从光盘复制的未压缩的音频文件、或未压缩格式的歌曲的混音文件。

编码器可以将数字音频信号502解析成多个帧504,其中每个帧504包括指定数量的音频采样506。例如,帧504可以包括1024个采样506或另一个合适的值。一般地,将数字音频信号502分组成帧504允许编码器将其处理高效地应用于明确定义的数量的采样506。在一些示例中,这样的处理可以逐帧变化,使得每个帧可以独立于其它帧被处理。在其它示例中,处理可以包括来自相邻帧的采样数据。

编码器可以执行每个帧504的音频采样506的变换508。在一些示例中,变换可以是经修改的离散余弦变换。可以使用其它合适的变换,诸如离散短时傅立叶变换等。变换508将时域量(诸如帧504中的采样506)转换成频域量(诸如用于帧504的频域系数510)。变换508可以对每个帧504产生多个频域系数510。频域系数510描述帧中存在多少特定频率的信号。

在一些示例中,由变换508产生的频域系数510的数量可以等于帧中的采样506的数量,诸如1024。在一些示例中,在时域帧中可以存在重叠。例如,为了计算经修改的离散余弦变换,时域帧可以使用总共2048个采样,其中2048个采样中的1024个来自相邻帧。对于这个具体示例,帧大小可以认为是1024个采样,尽管变换可以使用来自相邻帧的1024个附加采样。

编码器可以将用于每个帧504的多个频域系数510划分到用于每个帧504的多个频带512中。在一些示例中,每帧504可以存在二十二个频带512,但是也可以使用其它值。每个频带512可以表示帧504中的频率510的范围,使得所有频率范围的级联包括帧504中表示的所有频率。

编解码器的总体目标是要在有限的数据大小下最佳地表示源信号。数据大小可以表达为编码文件的特定数据速率或位速率。例如,数据速率可以包括1411kbps(每秒千位)、320kbps、256kbps、192kbps、160kbps、128kbps或其它值。一般地,数据速率越高,帧的表示越准确。

编码器可以对每个帧中的每个频带分配指定数量的位514。在一些示例中,对于其中存在相对大量的频率内容的频带,编码器可以分配相对高数量的位来表示频率内容。对于其中存在相对较少频率内容的频带,编码器可以分配相对小数量的位来表示频率内容。一般地,对特定频带分配的位的数量越高,那个特定频带中的频率的表示越准确。编码器可以在驱动位分配向上的准确性与可以对每帧分配的位的数量提供上限的数据速率之间达成平衡。

对特定帧中的每个频带分配的位514的数量可以表示为整数向量,其可以被称为位分配曲线。在一些示例中,其中每帧504存在二十二个频带512,每个帧504的位分配曲线可以是二十二值的向量。

为了使解码器正确地解码位流,解码器应当从位流提取每个帧的位分配曲线。由于这个原因,编码器应当确保位分配曲线中的信息包括在位流中。

一种可能是,编码器将每个帧的位分配曲线连同每个帧的音频信息一起进行编码。具体地,编码器可以对位流进行编码以包括直接表示对每个帧中的每个频带分配的位的数量的数据。对于每帧存在二十二个频带的示例,编码器可以在特定帧的音频数据内、与该音频数据相邻或在该音频数据附近对该特定帧的完整的二十二值的整数向量进行编码。

直接编码位分配曲线的缺点是这样做会占据位流中的相对大量的空间。对于每帧存在二十二个频带的示例,每个帧的二十二个整数会占据位流中否则可以用于编码音频信号的空间。这样的编码和解码系统的示例在图6中示出。

对直接编码位分配曲线的改进是代替地将差异数据编码到位流中,而不直接编码位分配曲线的完整的位数据。当与从位流中已经存在的数据计算出的估计数据组合时,差异数据可以产生完整的位数据。可以将差异数据压缩到比完整的位数据小的大小,这可以减小位流中所需的空间。在一些示例中,差异数据可以表示包括若干个零值的向量,这可以被高效地被压缩。这些改进的编码和解码系统的示例在图7-10中示出。

估计数据可以从位流中已经存在的数据形成。在一些示例中,可以从每个帧的每个频带的计算出的量化的范数获得估计数据。量化的范数可以直接编码在位流中,并且可以用于计算对每个帧中的每个频带可分配的位的数量的粗略估计。如下面详述的,每个量化的范数可以具有从频带中的频域系数导出并且量化为等于多个指定值中的一个的值。

在一些示例中,估计数据还可以包括可以编码到位流中的一个或多个参数。

在一些示例中,参数可以具有与位分配曲线的多值向量不同的结构。例如,斜率可以是单个标量值。合适的参数的一个示例可以包括特定帧中的频带上的斜率(以位为单位)相对频率。

在一些示例中,参数中的一个可以包括参考位分配曲线,该参考位分配曲线可以直接编码到位流中,并且可以用作对多个帧的估计。对于这些示例,单个参考位分配曲线(一次与多个差异值组合)可以产生应用于数字音频信号中的多个帧的多个位分配曲线。编码一个位分配曲线(或用于数字音频信号中的给定时间段的一个位分配曲线)可以使用比对每个帧编码位分配曲线少的空间。

以下段落提供了如何计算图5中所示的各种量的详细示例。计算可以由图1-4中所示的处理器中的任何一个、或者由另一个合适的处理器执行。这仅仅是一个示例;也可以执行其它合适的计算。

编码器可以如下对位流(例如,数字音频信号)进行编码。

将输入信号分割成帧,每个帧包含固定数量的音频采样。在一些示例中,音频采样是连续的。在一些示例中,对帧的下游处理可以可选地使用来自相邻帧的采样。

向每个帧指派位预算c,其是可以用于描述帧的位的数量。可以至少部分地从总体规定的位速率(可选地,与附加的考虑(诸如帧的相对重要性的指示符)一起)获得这个位预算。

对于每个帧,应用变换以将音频采样变换到频域。合适的变换可以包括经修改的离散余弦变换,但是也可以使用其它变换。从变换,根据以下形成系数xi的向量x:

x=[x0,x1,…,xn-1],

其中每个系数xi表示特定频率下的数字音频信号的强度。

对于每个帧,根据以下将向量x划分到m个频带bi中:

b0,b1,…,bm-1。

每个频带bi包括来自x的ni个系数的子序列,诸如:

其中ki是频带bi的起始坐标,长度为ni。

根据以下计算每个频带bi的欧几里德(或l2)范数:

根据以下形成范数wi的向量w:

w=[w0,w1,…,wm-1]。

将每个范数wi量化成近似值并将以下的向量编码到位流中:

根据以下在频带之间分派剩余的位预算c',向频带bi指派ci个位,其中i=0,1,...,m-l:

根据以下形成位分配向量c:

c=[c0,c1,…,cm-1]。

如以上所讨论的,将位分配向量c直接写入到位流中占用相对大量的空间。作为对将位分配向量c直接写入到位流中的改进,代替地写入表示差异向量δc的数据。在解码器方法的概述之后,下面对此详细解释。

对于每个频带bi,根据以下计算规范化的频带

将每个规范化的频带量化成量化的规范化的频带

将每个量化的规范化的频带编码到位流中,最多使用ci个位来描述量化的规范化的频带

解码器可以以类似的顺序(反转编码器的顺序)解码数字音频信号。

读取并解码量化的频带范数

如以上所讨论的,因为位分配向量c=[c0,c1,…,cm-1]可能不被直接写入到位流中,所以解码器无法直接从位流读取位分配向量c。代替地,在完成解码器的概述之后,如下面所解释的,解码器可以从位流读取差异向量δc,并从差异向量δc计算位分配向量c。

读取并解码量化的规范化的频带

根据以下重构未规范化的频带b′i:

根据以下级联重构的频带b′i以重构频域表示x′:

x′=[x′0,x′1,…,x′n-1],

将逆变换应用于频域表示x′以获得帧的重构的音频采样。

如以上所解释的,编码器在帧内分配位,使得音频信号的感知重要的部分被分配较多的位,而可能不太可感知(例如,由于掩蔽现象)的部分可以使用较少的位来编码。为了确定位分配(称为位分配曲线),编码器可以使用所有可用的信息,诸如未量化的频谱表示x、未量化的频带范数wi、关于每个频带的内部组成的细节、等等。这个信息对解码器可能不可用。解码器在解码和重构规范化的频带之前应当知道对每个频带分配了多少位。因此,解码器需要精确地重构位分配向量c的途径,因为位分配向量c可能不被直接写入到位流中。

因为位分配曲线的编码的描述或表示是压缩位流的一部分,所以它会耗费可用于描述规范化的频带的位预算。编码器可以在确定值ci本身时考虑描述位分配向量c的开销。因此,位分配向量c的描述会影响重构的音频的质量。期望描述尽可能地高效,并且描述占据尽可能少的位的数量。

因为将位分配向量c直接编码到位流中会占据比必要多的位,所以本文讨论的技术可以使用已经编码到位流中的信息。具体地,因为量化的范数独立于位分配的描述被编码到位流中,所以编码器和解码器可以使用量化的范数来估计位分配。使用量化的范数作为估计基本上是免费的,因为量化的范数已经存在于位流中。

解码器可以尝试使用量化的频带范数代替实际的频带范数wi来模拟编码器对位分配的计算。解码器可以忽略对编码器可用的其它信息的影响。这可以导致估计的位分配c′=[c′0,c′1,…,c′m-1],这可以用作真实的位分配c的粗略近似。

因为对解码器可用的所有信息也对编码器可用,所以编码器可以生成估计的位分配c′。编码器可以根据以下通过形成差异向量δc来描述真实的位分配c:

δc=c-c′=[c0-c′0,c1-c′1,…,cm-1-c′m-1]

总而言之,编码器可以使用实际的频带范数向量w和其它信息来计算位分配向量c,可以仅使用量化的频带范数向量来计算估计的位分配向量c′,并且可以计算、编码以及写入差异向量δc=c-c′到位流中。同样地,解码器可以仅使用量化的频带范数向量来计算估计的位分配向量c′,可以从位流读取并解码差异向量δc=c-c′,并且可以从估计的位分配向量c′和差异向量δc之和来计算位分配向量c。

如果估计的位分配向量c′与实际的位分配向量c类似,那么编码差异向量δc可以占用比编码位分配向量c显著少的位。因为差异向量δc中的许多项可以为零或其它相对小的整数,所以导致了这种位的节省。编码器和解码器可以采用对于小量值的整数使用较短的码字并且对于较大量值的整数使用较长的码字的码,这可以实现对差异向量δc的显著压缩。

这样的码的示例是golomb码。golomb码可以将整数编码为零和一的串。例如,golomb码可以将值0编码为串01,将值-1编码为串11,将值+1编码为串01,将值-2编码为串101,将值+2编码为串0001,将值-3编码为串1001,将值+3编码为串00001,等等。也可以使用其它合适的码。

总而言之,编码器可以使用实际的频带范数向量w和其它信息来计算位分配向量c,并且可以仅使用量化的频带范数向量来计算估计的位分配向量c′。编码器然后可以计算、编码以及写入差异向量δc=c-c′到位流中。同样地,解码器可以仅使用量化的频带范数向量来计算估计的位分配向量c′,并且可以从位流读取并解码差异向量δc=c-c′。解码器然后可以从估计的位分配向量c′和差异向量δc之和来计算位分配向量c。在一些示例中,当差异向量δc的项是小整数时,编码器可以使用较短的编码,并且当它们是较大的整数时,编码器可以使用较长的编码。在一些示例中,可以仅使用一个位来对具有全零的项的差异向量δc进行编码。

作为可选的替代,编码器和解码器可以使用位分配向量c的参数化描述。例如,代替显式地编码位分配向量c,编码器可以导出并描述参数的向量p=[p0,p1,…,pl-1]。编码器和解码器可以通过确定性计算从参数p导出位分配向量c。对于这些示例,编码器可以仅使用量化的频带范数向量并且忽略仅对编码器可用而对解码器不可用的其它信息来计算估计的参数向量p′=[p′0,p′1,…,p′l-1]。编码器然后可以将差异向量形成为δp=p-p′。编码器可以编码并写入差异向量δp到位流中。解码器可以从位流解码差异向量δp。解码器可以从估计的参数向量p′和差异向量δp之和来计算参数p。

图6示出了根据一些实施例的编码/解码系统600的示例的框图。如将在下面讨论的,图6的编码/解码系统会在区域616包括低效率。这种低效率在下面讨论并在图7-10中所示的配置中弥补。

系统600以位流602为中心。编码器604可以使用它从任何可用的源得到的任何信息来将数字音频信号编码到位流602中。解码器606通常与编码器604分离,并且仅可以使用存储在位流602中的信息来解码数字音频信号。作为结果,编码器604必须确保位流602具有解码器606正确地解码数字音频信号所需要的所有信息。

编码器604可以产生频带范数608。每个频带范数608可以具有从频带中的频域系数导出的值。编码器604可以量化频带范数608以产生量化的频带范数610。每个频带范数可以被量化为等于多个指定值中的一个。编码器604可以将表示量化的频带范数610的数据写入到位流602中。解码器606可以从位流602提取量化的频带范数。

对于每个帧,编码器604可以对每个频带分配位。在执行分配时,编码器可以使用来自任何可用的源的信息,可选地包括频带范数608,并且可选地包括表示数字音频信号的一部分的频率信号612。编码器可以形成用于特定帧的位分配曲线614,其表示对特定帧中的每个频带分配多少位。

在图6的配置中,编码器604可以将直接表示位分配曲线614的数据写入到位流602中,并且解码器606可以直接从位流602提取位分配曲线614。如以上所讨论的,将位分配曲线614直接存储在位流602中会是低效率的。这种低效率在图6中示为区域616。图7-10中所示的系统配置可以弥补这种低效率。

编码器604可以对频率信号612进行规范化和量化,并且将表示频率信号612的数据写入到位流602中。解码器606可以从位流602读取规范化且量化的频率数据。解码器606然后可以对频率数据进行反量化和反规范化,然后执行逆变换以将频率数据转换成时域音频数据。

图7示出了根据一些实施例的编码器700的示例的框图。这个编码器700及其对应的解码器(图8)可以弥补图6的系统的低效率。

编码器700可以如上所述的那样形成量化的频带范数704,并且可以也如上所述的那样将表示量化的频带范数704的数据写入到位流702。另外,编码器700可以应用位分配估计器706以形成估计的位分配曲线708。注意,解码器(图8)可以将相同的位分配估计器应用于量化的频带范数,并且因此可以只从读取位流702就确切地再生估计的位分配曲线708。

编码器700可以采用来自任何可用的源710的数据(包括心理声学模型和其它),并且执行位分配712以产生位分配曲线714。在图7中,位分配曲线714被称为“实际”的位分配曲线,因为这是编码器实际应用于帧中的频带的曲线。

编码器可以计算实际的位分配曲线714与估计的位分配曲线708之间的差异716,以形成差异曲线718。如以上所讨论的,差异曲线718可以包括许多零或相对小的整数,这可以比实际的位分配曲线714的直接表示更高效地编码(例如,在位流中占用较少的空间)。

图8示出了根据一些实施例的解码器800的另一个示例的框图。这个解码器800及其对应的编码器(图7)可以弥补图6的系统的低效率。

解码器800可以从位流802提取量化的频带范数804,可以采用与在编码器中使用(图7中的元素706)的相同的位分配估计器806,并且因此可以确切地再生与在编码器中使用(图7中的元素708)的相同的估计的位分配曲线808。

解码器800可以从位流802提取差异曲线810。解码器800然后可以对估计的位分配曲线808和差异曲线810进行求和812以形成与编码器700(图7)使用的实际的位分配曲线714确切地匹配的重构的位分配曲线814。

差异曲线(图7中的718和图8中的810)可以与对位分配曲线的数值校正对应。例如,如果位分配曲线是二十二个整数的向量,那么差异曲线(在压缩之前)也可以是二十二个整数的向量。

作为可以代替图7-8的差异曲线使用或者除了图7-8的差异曲线之外还使用的替代,编码器和解码器可以使用估计的调整,这些估计的调整可以包括一个或多个参数,这些参数可以各自影响帧中的多个频带。参数的示例可以是斜率,以每频率单位的位为单位。这样的斜率可以将特定数量的位赋予频带,其中位的数量可以随频率在频带之间变化。也可以使用其它合适的参数。

图9示出了根据一些实施例的编码器900的另一个示例的框图。这个编码器900及其对应的解码器(图10)可以弥补图6的系统的低效率。

编码器900可以如上所述的那样形成量化的频带范数904,并且可以也如上所述的那样将表示量化的频带范数904的数据写入到位流902。另外,编码器900可以应用调整估计器906以形成估计的调整908。注意,解码器(图10)可以将相同的调整估计器应用于量化的频带范数,并且因此可以只从读取位流902就确切地再生估计的调整908。

编码器900可以如以上所讨论的那样执行位分配910以创建“实际”的位分配曲线912。编码器900可以附加地参数化实际的位分配曲线912以形成目标(例如,期望的)调整914和/或斜率916。编码器900可以将表示斜率916和/或目标调整的数据写入到位流902。编码器900可以取目标调整914与估计的调整908之间的差异918以形成差异曲线920。编码器900可以将表示差异曲线920的数据写入到位流。

图10示出了根据一些实施例的解码器1000的另一个示例的框图。这个解码器1000及其对应的编码器(图9)可以弥补图6的系统的低效率。

解码器1000可以从位流1002提取量化的频带范数1004,可以采用与在编码器中使用(图9中的元素906)的相同的调整估计器1006,并且因此可以确切地再生与在编码器1000中使用(图9中的元素908)的相同的估计的调整1008。

解码器1000可以从位流1002提取差异曲线1010。解码器1000然后可以对估计的调整1008和差异曲线1010进行求和1012以形成目标调整1014。解码器1000可以从位流1002提取斜率1016,将斜率1016与目标调整1014进行组合1018以形成与编码器900(图9)使用的实际的位分配曲线912确切地匹配的重构的位分配曲线1020。

图11示出了根据一些实施例的用于对位流(例如,音频信号)进行编码的方法1100的示例的流程图。方法1100可以由图1或2的编码系统100或200、或由任何其它合适的编码系统执行。方法1100仅仅是用于编码音频信号的一种方法;也可以使用其它合适的编码方法。

在操作1102处,编码系统可以接收数字音频信号。

在操作1104处,编码系统可以将数字音频信号解析成多个帧,每个帧包括指定数量的音频采样。

在操作1106处,编码系统可以执行每个帧的音频采样的变换以对每个帧产生多个频域系数。

在操作1108处,编码系统可以将用于每个帧的多个频域系数划分到用于每个帧的多个频带中。

在操作1110处,编码系统可以对每个帧中的每个频带分配指定数量的位。

在操作1112处,编码系统可以对每个帧中的每个频带计算差异值,该差异值表示对每个帧中的每个频带分配的位的数量与对应的对每个帧中的每个频带可分配的位的估计数量之间的差异。

在操作1114处,编码系统可以对位流进行编码以包括:表示数字音频信号的数据,以及表示差异值的数据,但不包括直接表示对每个帧中的每个频带分配的位的数量的数据。

在操作1116处,编码系统可以输出位流。

在一些示例中,方法1100可以可选地还包括计算每个帧的每个频带的量化的范数,每个量化的范数具有从频带中的频域系数导出并且量化为等于多个指定值中的一个的值;基于量化的范数,确定对每个帧中的每个频带可分配的位的估计数量;以及将表示量化的范数的数据编码到位流中。

在一些示例中,可以仅基于量化的范数来确定对每个帧中的每个频带分配的位的估计数量。

在一些示例中,可以仅基于特定帧的量化的范数来确定对特定帧中的每个频带分配的位的估计数量。

在一些示例中,可以至少部分地基于数字音频信号中的至少一个其它帧的量化的范数来确定对特定帧中的每个频带分配的位的估计数量。

在一些示例中,方法1100可以可选地还包括:确定至少一个目标参数;至少部分地从至少一个目标参数确定对每个帧中的每个频带可分配的位的估计数量;以及将表示至少一个目标参数的数据编码到位流中。

在一些示例中,至少一个目标参数可以包括对每个频带可分配的位的参考数量。在一些示例中,方法1100可以可选地还包括:对于数字音频信号中的多个帧,将对每个频带可分配的位的估计数量设置为等于对每个频带可分配的位的参考数量;以及将表示对每个频带可分配的位的参考数量的数据编码到位流中。

在一些示例中,至少一个目标参数包括斜率。

在一些示例中,变换是经修改的离散余弦变换。

在一些示例中,每个帧确切地包括1024个采样。

在一些示例中,每一多个频域系数中的频域系数的数量等于每个帧中的音频采样的指定数量。

在一些示例中,用于每个帧的多个频域系数确切地包括1024个频域系数。

在一些示例中,用于每个帧的多个频带确切地包括22个频带。

在一些示例中,编码系统被包括在编解码器中。

以上示例中的每一个可以可选地与其它示例中的一个或多个以任意组合进行组合。

图12示出了根据一些实施例的用于解码位流(例如,编码的音频信号)的方法1200的示例的流程图。方法1200可以由图3或4的解码系统300或400、或由任何其它合适的解码系统执行。方法1200仅仅是用于位流(例如,编码的音频信号)的一种方法;也可以使用其它合适的解码方法。

在操作1202处,解码系统可以接收位流,该位流包括多个帧,每个帧被划分到多个频带中。

在操作1204处,解码系统可以从位流提取每个帧中的每个频带的量化的范数。

在操作1206处,解码系统可以基于提取出的量化的范数,确定对每个帧中的每个频带可分配的位的估计数量。

在操作1208处,解码系统可以对于每个帧的每个频带,从位流提取差异值,该差异值表示对每个帧中的每个频带分配的位的数量与对应的对每个帧中的每个频带可分配的位的估计数量之间的差异。

在操作1210处,解码系统可以将差异值与对应的对每个帧中的每个频带可分配的位的估计数量进行组合,以确定对每个帧中的每个频带分配的位的数量。

在操作1212处,解码系统可以对每个帧中的每个频带分配确定的数量的位。

在操作1214处,解码系统可以对每个帧中的每个频带使用确定的数量的位来对位流进行解码以生成频域中的解码的数字音频信号。解码系统可以可选地还将逆变换应用于频域中的解码的数字音频信号以获得时域中的解码的数字音频信号。

在一些示例中,可以仅基于量化的范数来确定对每个帧中的每个频带分配的位的估计数量。

在一些示例中,可以仅基于特定帧的量化的范数来确定对特定帧中的每个频带分配的位的估计数量。

在一些示例中,至少部分地基于数字音频信号中的至少一个其它帧的量化的范数来确定对特定帧中的每个频带分配的位的估计数量。

图13示出了根据一些实施例的编码系统1300的示例的框图。

接收器电路1302可以接收数字音频信号。

成帧器电路1304可以将数字音频信号解析成多个帧,每个帧包括指定数量的音频采样。

变换器电路1306可以执行每个帧的音频采样的变换以对每个帧产生多个频域系数。

频率带划分器电路1308可以将用于每个帧的多个频域系数划分到用于每个帧的多个频带中。

帧位分配电路1310可以对每个帧中的每个频带分配指定数量的位。

差异计算电路1312可以对每个帧中的每个频带计算差异值,该差异值表示对每个帧中的每个频带分配的位的数量与对应的对每个帧中的每个频带可分配的位的估计数量之间的差异。

编码器电路1314可以对位流进行编码以包括表示数字音频信号的数据以及表示差异值的数据,但不包括直接表示对每个帧中的每个频带分配的位的数量的数据。

输出电路1316可以输出位流。

与本文所描述的那些不同的许多变体将从本文档清楚。例如,取决于实施例,本文所描述的方法和算法中的任何一个的某些动作、事件或功能可以被以不同的顺序执行,可以被添加、合并,或一起去掉(使得不是所有描述的动作或事件对方法和算法的实施是必须的)。而且,在某些实施例中,动作或事件可以同时地、而不是顺序地执行,诸如通过多线程处理、中断处理、或者多个处理器或处理器核或者在其它并行架构上。此外,不同的任务或过程可以由可以一起运行的不同机器和计算系统来执行。

结合本文所公开的实施例描述的各种说明性逻辑块、模块、方法以及算法过程和序列可以被实现为电子硬件、计算机软件、或两者的组合。为了清楚地说明硬件和软件的这种可互换性,各种说明性组件、块、模块和过程动作已在上面就其功能一般地进行了描述。这样的功能是被实现为硬件还是软件取决于特定应用和对整个系统施加的设计约束。所描述的功能可以对每个特定应用以不同的方式来实现,但是这样的实现决定不应当被解读为造成从本文档的范围的偏离。

结合本文所公开的实施例描述的各种说明性逻辑块和模块可以由设计为执行本文所描述的功能的机器实现或执行,该机器诸如通用处理器、处理设备、具有一个或多个处理设备的计算设备、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件、或者其任意组合。通用处理器和处理设备可以是微处理器,但在替代方案中,处理器可以是控制器、微控制器或状态机、其组合等等。处理器也可以被实现为计算设备的组合,诸如dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、或者任何其它这样的配置。

本文所描述的系统和方法的实施例在许多类型的通用或专用计算系统环境或配置内可操作。一般地,计算环境可以包括任何类型的计算机系统,包括但不限于基于一个或多个微处理器的计算机系统、大型计算机、数字信号处理器、便携式计算设备、个人管理器、设备控制器、装置内的计算引擎、移动电话、桌面计算机、移动计算机、平板计算机、智能电话、以及具有嵌入式计算机的装置,这仅举几个示例。

这样的计算设备通常可以在具有至少某个最小计算能力的设备中找到,这些设备包括但不限于个人计算机、服务器计算机、手持式计算设备、膝上型或移动计算机、诸如蜂窝电话和pda的通信设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络pc、小型计算机、大型计算机、音频或视频媒体播放器、等等。在一些实施例中,计算设备将包括一个或多个处理器。每个处理器可以是专门的微处理器,诸如数字信号处理器(dsp)、超长指令字(vliw)或其它微控制器,或者可以是具有一个或多个处理核(包括多核cpu中的基于专门的图形处理单元(gpu)的核)的传统中央处理单元(cpu)。

结合本文所公开的实施例描述的方法、过程或算法的过程动作可以直接以硬件、以由处理器执行的软件模块、或者以两者的任意组合实施。软件模块可以包含在可以由计算设备访问的计算机可读介质中。计算机可读介质包括易失性和非易失性介质,其是可移除的、不可移除的、或者其某种组合。计算机可读介质用于存储信息,诸如计算机可读或计算机可执行指令、数据结构、程序模块或其它数据。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。

计算机存储介质包括但不限于计算机或机器可读介质或者存储设备,诸如蓝光盘(bd)、数字多功能盘(dvd)、紧凑盘(cd)、软盘、带驱动器、硬盘驱动器、光学驱动器、固态存储器设备、ram存储器、rom存储器、eprom存储器、eeprom存储器、闪速存储器或其它存储器技术、磁盒、磁带、磁盘存储或其它磁存储设备、或者可以用于存储期望的信息并且可以被一个或多个计算设备访问的任何其它设备。

软件模块可以驻留在ram存储器、闪速存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移除盘、cdrom,或者本领域中已知的任何其它形式的非暂态计算机可读存储介质、媒介、或物理计算机存储设备。示例性的存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息以及将信息写入到存储介质。在替代方案中,存储介质可以是处理器的组成部分。处理器和存储介质可以驻留在专用集成电路(asic)中。asic可以驻留在用户终端中。替代地,处理器和存储介质可以作为分立组件驻留在用户终端中。

在本文档中所使用的用语“非暂态”意指“持久或长寿命”。用语“非暂态计算机可读介质”包括任何和所有计算机可读介质,暂态传播信号唯一例外。作为示例而非限制,这包括非暂态计算机可读介质,诸如寄存器存储器、处理器高速缓存和随机存取存储器(ram)。

用语“音频信号”是表示物理声音的信号。

诸如计算机可读或计算机可执行指令、数据结构、程序模块等等的信息的保持也可以通过使用各种各样的通信介质编码一个或多个调制的数据信号、电磁波(诸如载波)或者其它传输机制或通信协议来实现,并且包括任何有线或无线信息递送机制。一般地,这些通信介质是指其特性中的一个或多个以在信号中编码信息或指令的方式被设置或改变的信号。例如,通信介质包括有线介质(诸如携载一个或多个调制的数据信号的直接有线连接或有线网络)、以及无线介质(诸如用于发送、接收、或者两者一个或多个调制的数据信号或电磁波的声学、射频(rf)、红外线、激光、以及其它无线介质)。以上的任意组合也应当包括在通信介质的范围内。

另外,实施本文所描述的编码和解码系统以及方法的各种实施例中的一些或全部或者其部分的软件、程序、计算机程序产品中的一个或任意组合,可以从计算机或机器可读介质或存储设备和通信介质的任何期望的组合以计算机可执行指令或其它数据结构的形式存储、接收、发送或读取。

本文所描述的系统和方法的实施例还可以在由计算设备执行的计算机可执行指令(诸如程序模块)的一般上下文中描述。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、等等。本文所描述的实施例也可以在其中任务由一个或多个远程处理设备执行的分布式计算环境中、或者在通过一个或多个通信网络链接的一个或多个设备的云内实施。在分布式计算环境中,程序模块可以位于包括介质存储设备的本地和远程计算机存储介质中。更进一步,前述指令可以部分或全部地被实现为硬件逻辑电路,其可以包括或可以不包括处理器。

除非另外特别地声明或者在所使用的上下文中以其它方式理解,否则本文所使用的条件语言,诸如除其它之外还有“会”、“可能”、“可以”、“例如”等,一般意在传达某些实施例包括,而其它实施例不包括,某些特征、元素和/或状态。因此,这样的条件语言一般不意在暗示特征、元素和/或状态对一个或多个实施例以任何方式是所需的或者一个或多个实施例必然包括用于决定(在有或没有作者输入或提示的情况下)是否这些特征、元素和/或状态被包括在任何特定实施例中或要在任何特定实施例中被执行的逻辑。术语“包括”、“包含”、“具有”等是同义的并且以开放的方式被包含地使用,并且不排除附加的元素、特征、动作、操作、等等。而且,术语“或者”在其包含的意义上(而不在其排他的意义上)使用,使得在例如用于连接元素的列表时,术语“或者”意指列表中的一个、一些或所有元素。

虽然以上详细描述已示出、描述并且指出应用于各种实施例的新颖特征,但是将理解到,在不偏离本公开的范围的情况下,可以进行说明的设备或算法的形式和细节上的各种省略、替换和变化。如将认识到的,本文所描述的发明的某些实施例可以在不提供本文阐述的特征和益处的全部的形式内实施,因为一些特征可以与其它特征分开地使用或实施。

而且,尽管主题已以特定于结构特征和方法动作的语言进行了描述,但是要理解的是,在所附权利要求中限定的主题不是必然限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1