CN102194457B - 音频编解码方法、系统及噪声水平估计方法 - Google Patents
音频编解码方法、系统及噪声水平估计方法 Download PDFInfo
- Publication number
- CN102194457B CN102194457B CN2010191850619A CN201019185061A CN102194457B CN 102194457 B CN102194457 B CN 102194457B CN 2010191850619 A CN2010191850619 A CN 2010191850619A CN 201019185061 A CN201019185061 A CN 201019185061A CN 102194457 B CN102194457 B CN 102194457B
- Authority
- CN
- China
- Prior art keywords
- frequency
- subband
- noise
- encoded
- zero bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种音频编解码方法、系统及噪声水平估计方法,本发明的噪声水平估计方法包括:根据待编码音频信号的频域系数估计待编码音频信号的功率谱;根据计算得到的功率谱估计零比特编码子带音频信号的噪声水平,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例;其中,零比特编码子带指分配到的比特数为零的编码子带。本发明可以以很好地重构未被编码的频域系数。
Description
技术领域
本发明涉及一种音频编解码技术,尤其是一种对未编码的编码子带进行频谱重构的音频编解码方法、系统及噪声水平估计方法。
背景技术
音频编码技术是诸如数字音频广播、互联网的传播音乐和音频通讯等多媒体应用技术的核心,这些应用会极大地受益于音频编码器压缩性能的提高。感知音频编码器作为有损变换域编码的一种,是现代的主流音频编码器。通常由于编码比特率的限制,音频编码时部分频域系数或频率成分无法被编码,为了更好的恢复未编码子带的频谱成分,现有的音频编解码器通常使用噪声填充或频带复制的方法来重构未编码子带的频谱成分。G.722.1C采用了噪声填充的方法,HE-AAC-V1采用了频带复制技术,G.719采用了噪声填充和简单的频带复制结合的方法。采用噪声填充的方法无法很好的恢复未编码子带的频谱包络和子带内部的音调及噪声成分。HE-AAC-V1的频带复制方法需要对编码前的音频信号进行频谱分析,对高频成分的信号进行音调和噪声估计、提取参数,并对音频信号下采样后使用AAC编码器进行编码,其运算复杂度高,而且还需要传送较多的参数信息到解码端,占用了较多的编码比特,同时还会增加编码延迟。而G.719的复制方案又过于简单,无法很好的恢复未编码子带的频谱包络和子带内部的音调及噪声成分。
发明内容
本发明要解决的技术问题是提供一种音频编解码方法、系统及噪声水平估计方法,以很好地重构未被编码的频域系数。
为解决以上技术问题,本发明提供了一种噪声水平估计方法,该方法包括:
根据待编码音频信号的频域系数估计待编码音频信号的功率谱;
根据计算得到的功率谱估计零比特编码子带音频信号的噪声水平,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例;其中,零比特编码子带指分配到的比特数为零的编码子带。
进一步地,所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值。
进一步地,
根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,第i帧的频点k的功率计算公式如下:
Pi(k)=λPi-1(k)+(1-λ)Xj(k)2,其中当i等于0时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
进一步地,
将待编码音频信号的频域系数划分成一个或若干个噪声填充子带,根据估计的待编码音频信号的功率谱计算某个有效噪声填充子带的噪声水平的过程具体包括:
计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数的功率的平均值,得到平均功率P_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);
计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值P_noise_rate(j),得到该有效噪声填充子带的噪声水平。
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
为解决以上技术问题,本发明还提供一种音频编码方法,该方法包括:
A、将待编码音频信号的MDCT频域系数划分为若干个编码子带,对各编码子带的幅值包络值进行量化编码,得到幅值包络编码比特;
B、对各编码子带进行比特分配,并对非零比特编码子带进行量化编码,得到MDCT频域系数编码比特;
C、根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,进而估计零比特编码子带音频信号的噪声水平,并量化编码得到噪声水平编码比特;其中,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例,零比特编码子带指分配到的比特数为零的编码子带;
D、将各编码子带的幅值包络编码比特和频域系数编码比特及噪声水平编码比特复用打包后,传送给解码端。
进一步地,步骤C中,所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带内估计得到的音调成分功率的比值。
进一步地,
根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,第i帧的频点k的功率估计的算法如下:
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2,其中当i等于0,时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
进一步地,步骤B中,将待编码音频信号的频域系数划分成一个或若干个噪声填充子带,并在对各编码子带分配比特后,为有效噪声填充子带分配比特;步骤C中,根据估计的待编码音频信号的功率谱计算某个有效噪声填充子带的噪声水平的过程具体包括:
计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数的平均值,得到平均功率P_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);
计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值P_noise_rate(j),得到该有效噪声填充子带的噪声水平。
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
进一步地,划分噪声填充子带时,均匀划分或根据人耳听觉特性进行非均匀划分,一个噪声填充子带包含一个或多个编码子带。
进一步地,步骤B中为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特;步骤C中计算分配了比特的有效噪声填充子带的噪声水平;步骤D中使用该分配的比特对噪声水平编码比特复用打包。
进一步地,各有效噪声填充子带分配相同的比特数或根据听觉特性分配不同的比特数。
为解决以上技术问题,本发明还提供一种音频解码方法,该方法包括:
A2、对待解码比特流中各幅值包络编码比特进行解码反量化,得到各编码子带的幅值包络;
B2、对各编码子带进行比特分配,对噪声水平编码比特进行解码反量化得到零比特编码子带的噪声水平,对频域系数编码比特进行解码反量化得到非零比特编码子带的频域系数;
C2、对零比特编码子带进行频带复制,并根据各零比特编码子带的幅值包络控制该编码子带的整体能量填充水平,根据该零比特编码子带的噪声水平控制噪声填充和频带复制的能量的比例,获得重构的零比特编码子带的频域系数;
D2、对非零比特编码子带的频域系数和重构的零比特编码子带的频域系数进行修正离散余弦逆变换(IMDCT),得到最终的音频信号。
进一步地,步骤C2中,频带复制时,在MDCT频域系数中搜索音频信号的某个音调所在的位置,以0频点到音调位置的频点的带宽为频带复制周期,并以0频点向后偏移copyband_offset个频点到音调位置的频点向后偏移所述copyband_offset个频点的频段作为源频段,对零比特编码子带进行频带复制,如果零比特编码子带内部的最高频率小于搜索到的音调的频率,则该零比特编码子带只采用噪声填充进行频谱重构。
进一步地,步骤C2中,
对第一频段的频域系数取绝对值或平方值并进行平滑滤波;
根据平滑滤波的结果,搜索第一频段滤波输出值的最大极值所在的位置,将该最大极值所在的位置作为某个音调所在的位置。
进一步地,对该第一频段的频域系数取绝对值进行平滑滤波的运算公式如下:
或,对该第一频段的频域系数平方值进行平滑滤波的运算公式如下
进一步地,所述第一频段是根据频谱的统计特性确定的能量比较集中的低频的频段,其中低频指小于二分之一信号总带宽的频谱成分。
进一步地,采用以下方法确定滤波输出值的最大极值:直接从第一频段对应的频域系数的滤波输出值中搜索初始最大值,将该最大值作为第一频段滤波输出值的最大极值。
进一步地,采用以下方法确定滤波输出值的最大极值:
将该第一频段的其中一段作为第二频段,从第二频段对应的频域系数的滤波输出值中搜索初始最大值,根据该初始最大值对应的频域系数的位置进行不同的处理:
a.如果该初始最大值为第二频段最低频率的频域系数的滤波输出值,则将该第二频段最低频率的频域系数的滤波输出值与在第一频段中前一个更低频率的频域系数的滤波输出值相比较,依次向前比较,直到当前频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最低频率的频域系数的滤波输出值大于后一个频域系数的滤波输出值时,则第一频段的最低频率的频域系数的滤波输出值为最终确定的最大极值;
b.如果该初始最大值为第二频段最高频率的频域系数的滤波输出值,则将该第二频段最高频率的频域系数的滤波输出值与在第一频段中后一个更高频率的频域系数的滤波输出值相比较,依次向后比较,直到当前频域系数的滤波输出值比后一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最高频率的频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则第一频段的最高频率的频域系数的滤波输出值为最终确定的最大极值;
c.如果该初始最大值为第二频段最低频率与最高频率之间的频域系数的滤波输出值,则该初始最大值对应的频域系数为音调所在的位置,即,该初始最大值为最终确定的最大极值。
进一步地,步骤C2中,对零比特编码子带进行频带复制时,先根据源频段和需要进行频带复制的零比特编码子带的起始序号计算该零比特编码子带的源频段复制起始序号,再以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性地复制到零比特编码子带。
进一步地,步骤C2中计算该零比特编码子带的源频段复制起始序号的方法为:
获得需要重构频域系数的零比特编码子带的起始MDCT频域系数的频点的序号,记为fillband_start_freq,将音调对应的频点的序号记为Tonal_pos,将Tonal_pos加1得到复制周期copy_period,将频带复制偏移记为copyband_offset,将fillband_start_freq的值循环减去copy_period,直到该值落在源频段的序号的值区间,该值为源频段复制起始序号,记为copy_pos_mod。
进一步地,步骤C2中以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性复制到零比特编码子带的方法为:
将以源频段复制起始序号开始的频域系数依次向后复制到以fillband_start_freq为起始位置的零比特编码子带上,直到源频段复制的频点到达Tonal_pos+copyband_offset频点后,重新将从第copyband_offset个频点开始的频域系数继续向后复制到该零比特编码子带上,依此类推,直到完成当前零比特编码子带的所有频域系数的频带复制。
进一步地,步骤C2中,采用以下方法对零比特编码子带复制后得到的频域系数进行能量调整:
计算零比特编码子带频带复制后得到的频域系数的幅值包络,记为sbr_rms(r);
对复制后得到的频域系数进行能量调整的公式为:
其中,表示零比特编码子带r的能量调整后的频域系数,X_sbr(r)表示零比特编码子带r通过复制后得到的频域系数,sbr_rms(r)是零比特编码子带r复制后得到的频域系数X_sbr(r)的幅值包络,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,sbr_lev_scale(r)为零比特编码子带r的频带复制的能量控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号。
进一步地,步骤C2中,根据以下公式对能量调整后的频域系数进行噪声填充:
其中,表示零比特编码子带r重构频域系数,表示零比特编码子带r的能量调整后的频域系数,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,random()为随机相位发生器,产生随机相位值,其返回值为+1或-1,noise_lev_scale(r)为零比特编码子带r的噪声水平控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
其中,fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号。
进一步地,步骤B2中,对各编码子带进行比特分配后,将编码子带划分为若干个噪声填充子带,对有效噪声填充子带进行比特分配,步骤C2中,对分配了比特的有效噪声填充子带中的零比特编码子带进行频带复制并控制所复制频域系数的能量水平及噪声填充的能量水平,对未分配比特的有效噪声填充子带中的零比特编码子带进行噪声填充,其中有效噪声填充子带指含有零比特编码子带的噪声填充子带。
为解决以上技术问题,本发明还提供一种音频编码系统,该系统包括修正离散余弦变换(MDCT)单元、幅值包络计算单元、幅值包络量化和编码单元、比特分配单元、频域系数编码单元及比特流复用器(MUX),该系统还包括噪声水平估计单元,其中:
MDCT单元,用于对音频信号进行修正离散余弦逆变换变换生成频域系数;
幅值包络计算单元,与所述MDCT单元连接,用于将所述MDCT生成的频域系数划分为若干个编码子带,并计算各编码子带的幅值包络值;
幅值包络量化和编码单元,与所述幅值包络计算单元连接,用于将各编码子带的幅值包络值进行量化和编码,生成各编码子带幅值包络的编码比特;
比特分配单元,与所述幅值包络量化和编码单元连接,用于对各编码子带分配比特;
频域系数量化编码单元,与MDCT单元、比特分配单元及幅值包络量化和编码单元连接,用于对各编码子带中所有频域系数进行归一化、量化及编码处理,生成频域系数编码比特;
噪声水平估计单元,与MDCT单元及比特分配单元连接,用于根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,进而估计零比特编码子带音频信号的噪声水平,并量化编码得到噪声水平编码比特;其中,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例;
比特流复用器(MUX),与所述幅值包络量化和编码单元、频域系数编码单元及噪声水平估计单元连接,用于将各编码子带的编码比特以及频域系数的编码比特复用并发送到解码端。
进一步地,所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值。
进一步地,所述噪声水平估计单元具体包括:
功率谱估计模块,用于根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱;
噪声水平计算模块,与所述功率谱估计模块连接,用于根据所述功率谱估计模块估计的功率谱估计零比特编码子带音频信号的噪声水平;
噪声水平编码模块,与所述噪声水平计算模块连接,用于对所述噪声水平计算模块计算的噪声水平进行量化编码,获得噪声水平编码比特。
进一步地,所述功率谱估计模块采用以下公式估计第i帧的频点k的功率,公式如下:
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2,其中当i等于0时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
进一步地,
待编码音频信号的频域系数划分成一个或若干个噪声填充子带,所述噪声水平计算模块的功能具体包括:用于计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数功率的平均值,得到平均功率P_aveg(j);用于计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);用于计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);用于计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值,得到该有效噪声填充子带的噪声水平;
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
进一步地,所述噪声水平估计单元还包括与噪声水平计算模块及噪声水平编码模块连接的比特分配模块,用于为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特,以及通知噪声水平计算模块及噪声水平编码模块;所述噪声水平计算模块仅为分配了比特的噪声填充子带计算噪声水平;所述噪声水平编码模块利用比特分配模块分配的比特对所述噪声水平进行量化编码。
为解决以上技术问题,本发明还提供一种音频解码系统,该系统包括比特流解复用器(DeMUX)、编码子带幅值包络解码单元、比特分配单元、频域系数解码单元、频谱重构单元、修正离散余弦逆变换(IMDCT)单元,其中:
所述DeMUX,用于从待解码比特流中分离出幅值包络编码比特、频域系数编码比特以及噪声水平编码比特;
所述幅值包络解码单元,与所述DeMUX连接,用于对所述比特流解复用器输出的幅值包络编码比特进行解码,得到各编码子带的幅值包络量化指数;
所述比特分配单元,与所述幅值包络解码单元连接,用于进行比特分配,得到各编码子带中为每个频域系数所分配的编码比特数;
频域系数解码单元,与幅值包络解码单元和比特分配单元连接,用于对编码子带进行解码、反量化及反归一化以得到频域系数;
噪声水平解码单元,与所述比特流解复用器及比特分配单元连接,用于对噪声水平编码比特进行解码反量化获得噪声水平;
所述频谱重构单元,与所述噪声水平解码单元、频域系数解码单元、幅值包络解码单元及比特分配单元连接,用于对零比特编码子带进行频带复制,并根据幅值包络解码单元输出的幅值包络控制该编码子带的整体能量填充水平,根据噪声水平解码单元输出的噪声水平控制噪声填充和频带复制的能量的比例,获得重构的零比特编码子带的频域系数;
IMDCT单元,与所述频谱重构单元连接,用于对完成零比特编码子带的频谱重构后的频域系数进行IMDCT,得到的音频信号。
进一步地,所述频谱重构单元包括依次连接的频带复制子单元、能量调整子单元及噪声填充子单元,其中:
频带复制子单元,用于对零比特编码子带进行频带复制;
能量调整子单元,用于计算零比特编码子带频带复制后得到的频域系数的幅值包络,记为sbr_rms(r);以及根据噪声水平解码单元输出的噪声水平对复制后得到的频域系数进行能量调整,能量调整的公式为:
其中,表示零比特编码子带r的能量调整后的频域系数,X_sbr(r)表示零比特编码子带r复制后得到的频域系数,sbr_rms(r)是零比特编码子带r复制后得到的频域系数X_sbr(r)的幅值包络,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,sbr_lev_scale(r)为零比特编码子带r的频带复制的能量控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号;
噪声填充子单元,用于根据噪声水平解码单元输出的噪声水平对能量调整后的频域系数进行噪声填充,噪声填充的公式为:
其中,表示零比特编码子带r重构频域系数,表示零比特编码子带r的能量调整后的复制频域系数,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,random()为随机相位发生器,产生随机相位值,其返回值为+1或-1,noise_lev_scale(r)为零比特编码子带r的噪声水平控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
其中,fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号。
进一步地,所述频带复制子单元包括依次连接的音调位置搜索模块、周期及源频段计算模块、源频段复制起始序号计算模块及频带复制模块,其中:
音调位置搜索模块,用于在MDCT频域系数中搜索音频信号的某个音调所在的位置,
周期及源频段计算模块,用于根据音调所在位置确定用于复制的频带复制周期及源频段,该频带复制周期为0频点到音调位置的频点的带宽,所述源频段为0频点向后偏移频带复制偏移copyband_offset的频点到音调位置的频点向后偏移所述copyband_offset的频点的频段;
源频段复制起始序号计算模块,用于根据源频段和需要进行频带复制的零比特编码子带的起始序号计算该零比特编码子带的源频段复制起始序号;
所述频带复制模块用于以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性复制到零比特编码子带;如零比特编码子带内部的最高频率小于搜索到的音调的频率,则该频点只采用噪声填充进行频谱重构。
进一步地,所述音调位置搜索模块采用如下方法搜索音调所在位置:对第一频段的MDCT频域系数取绝对值或平方值,并进行平滑滤波;根据平滑滤波的结果,搜索第一频段滤波输出值的最大极值所在的位置,该最大极值所在的位置即音调所在的位置。
进一步地,所述音调位置搜索模块对该第一频段的MDCT频域系数取绝对值进行平滑滤波的运算公式为:
或,对该第一频段的频域系数平方值进行平滑滤波的运算为:
进一步地,所述第一频段是根据频谱的统计特性确定的能量比较集中的低频的频段,其中低频指小于二分之一信号总带宽的频谱成分。
进一步地,所述音调位置搜索模块计算模块直接从第一频段对应的频域系数的滤波输出值中搜索初始最大值,将该最大值作为第一频段滤波输出值的最大极值。
进一步地,所述音调位置搜索模块确定滤波输出值的最大极值时,将该第一频段的其中一段作为第二频段,先从第二频段对应的频域系数的滤波输出值中搜索初始最大值,再根据该初始最大值对应的频域系数的位置进行不同的处理:
a.如果该初始最大值为第二频段最低频率的频域系数的滤波输出值,则将该第二频段最低频率的频域系数的滤波输出值与在第一频段中前一个更低频率的频域系数的滤波输出值相比较,依次向前比较,直到当前频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最低频率的频域系数的滤波输出值大于后一个频域系数的滤波输出值时,则第一频段的最低频率的频域系数的滤波输出值为最终确定的最大极值;
b.如果该初始最大值为第二频段最高频率的频域系数的滤波输出值,则将该第二频段最高频率的频域系数的滤波输出值与在第一频段中后一个更高频率的频域系数的滤波输出值相比较,依次向后比较,直到当前频域系数的滤波输出值比后一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最高频率的频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则第一频段的最高频率的频域系数的滤波输出值为最终确定的最大极值;
c.如果该初始最大值为第二频段最低频率与最高频率之间的频域系数的滤波输出值,则该初始最大值对应的频域系数为音调所在的位置,即,该初始最大值为最终确定的最大极值。
进一步地,所述源频段复制起始序号计算模块计算需要进行频带复制的零比特编码子带的源频段复制起始序号的过程包括:获得当前需要重构频域系数的零比特编码子带的起始频点的序号,记为fillband_start_freq,将音调对应的频点的序号记为Tonal_pos,将Tonal_pos加1得到复制周期copy_period,将源频段起始序号记为copyband_offset,将fillband_start_freq的值循环减去copy_period,直到该值落在源频段的序号的值区间,该值为源频段复制起始序号,记为copy_pos_mod。
进一步地,频带复制模块进行频带复制时,将以源频段复制起始序号开始的频域系数依次向后复制到以fillband_start_freq为起始位置的零比特编码子带上,直到源频段复制的频点到达Tonal_pos+copyband_offset频点后,重新将从第copyband_offset个频点开始的频域系数继续向后复制到该零比特编码子带上,依此类推,直到完成当前零比特编码子带的所有频域系数复制。
进一步地,所述比特分配单元还用于为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特;所述能量调整子单元对频带复制后得到的频域系数进行能量调整;所述噪声填充子单元对能量调整后的频域系数及未分配比特的噪声填充子带中的零比特编码子带进行噪声填充。
本发明在编码端通过MDCT频域系数估计待编码音频信号的功率谱,并通过估计得到的功率谱来估计零比特编码子带音频信号的噪声水平,将噪声水平信息编码后传送到解码端,用来控制解码端的噪声填充和频带复制的能量的比例;在解码端解码得到编码MDCT频域系数后,采用频带复制及噪声填充的方法对未编码的编码子带进行频域系数重构,其中噪声填充和频带复制的能量的比例由编码端传送过来的噪声水平编码比特控制。该方法可以很好地恢复未编码的编码子带的频谱包络和内部的音调噪声成分,得到了较好的主观听音效果。
附图说明
图1是本发明音频编码方法示意图。
图2是本发明获得噪声填充子带内部零比特编码子带的噪声水平编码比特的流程示意图。
图3是本发明计算噪声水平的流程示意图。
图4是本发明音频解码方法示意图。
图5是本发明频谱重构的流程示意图。
图6是本发明音频编码系统的结构示意图。
图7是本发明噪声水平估计单元的模块结构示意图。
图8是本发明音频解码系统的结构示意图。
图9是本发明频谱重构单元的模块结构示意图。
图10是本发明实施例的码流构成示意图。
具体实施方式
本发明的核心思想是,在编码端通过MDCT频域系数估计待编码音频信号的功率谱,并通过估计得到的功率谱来估计零比特编码子带音频信号的噪声水平,将噪声水平信息编码后传送到解码端,用来控制解码端的噪声填充和频带复制的能量的比例;在解码端解码得到编码MDCT频域系数后,采用频带复制及噪声填充的方法对未编码的编码子带进行频域系数重构,其中噪声填充和频带复制的能量的比例由编码端传送过来的噪声水平编码比特控制。该方法可以很好地恢复未编码的编码子带的频谱包络和内部的音调噪声成分,得到了较好的主观听音效果。
本发明所说的频域系数均指MDCT频域系数。
以下分编码方法、解码方法、编码系统、解码系统四部分来对本发明进行详细说明:
一、编码方法
本发明音频编码方法包括以下步骤:
A、将待编码音频信号的MDCT频域系数划分为若干个编码子带,并对各编码子带的幅值包络值进行量化编码,得到幅值包络的编码比特;
划分编码子带时,将所述MDCT变换后的频域系数分成若干个等间隔的编码子带,或者按照听觉感知特性划分成若干个非均匀编码子带。
B、对各编码子带进行比特分配,并对非零比特编码子带进行量化编码,得到MDCT频域系数的编码比特;
对各编码子带进行比特分配后,若某编码子带所分配到的比特数为零,则不对该编码子带进行量化编码,本文中将该编码子带称为零比特编码子带或未编码的编码子带,其他编码子带称为非零比特编码子带。
采用何种方法对各编码子带进行归一化、量化及编码并不是本发明关注的重点。
C、根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,进而估计零比特编码音频信号的噪声水平,并量化编码得到噪声水平编码比特;其中,该噪声水平编码比特用于在解码时控制噪声填充和频带复制的能量的比例;
所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值。
D、将各编码子带的所述幅值包络的编码比特、所述频域系数的编码比特以及噪声水平编码比特复用打包后,传送给解码端。
以下结合附图,对本发明音频编码方法进行详细说明:
实施例1-编码方法
图1是本发明实施例一种音频编码方法的结构示意图。本实施例中以帧长为20ms,采样率为32kHz的音频流为例具体说明本发明的音频编码方法。在其它帧长和采样率条件下,本发明的方法同样适用。如图1所示,该方法包括:
101:对待编码音频流实施MDCT(Modified Discrete Cosine Transform,修正离散余弦变换)得到N个频域采样点上的频域系数;
本步骤的具体实现方式可以是:
其中,w(n)表示正弦窗函数,表达式为:
当帧长为20ms,采样率为32kHz时,得到640个频域系数。其他帧长及采样率可同样算出相应的频域系数个数N。
102:将N个频域系数分成若干个编码子带,计算各个编码子带的幅值包络;
在本实施例中采用非均匀子带划分,计算各个子带的频域幅值包络(简称幅值包络)。
本步骤可以采用如下子步骤实现:
102a:将所需处理的频带范围内的频域系数分成L个子带(可以称为编码子带);
本实施例中,所需处理的频带范围是0~13.6kHz,可以按照人耳感知特性进行非均匀子带划分,表1给出了一个具体的划分方式。
在表1中将0~13.6kHz频带范围内的频域系数划分成28个编码子带,也就是L=28;并将13.6kHz以上的频域系数置为0。
102b:按照以下公式计算各编码子带的幅值包络:
其中,LIndex(j)和HIndex(j)分别表示第j个编码子带的起始频率点和结束频率点,其具体数值如表1所示。
表1频域非均匀子带划分方式实例
子带序号 | 起始频率点(LIndex) | 结束频率点(HIndex) | 子带宽度(BandWidth) |
0 | 0 | 7 | 8 |
1 | 8 | 15 | 8 |
2 | 16 | 23 | 8 |
3 | 24 | 31 | 8 |
4 | 32 | 47 | 16 |
5 | 48 | 63 | 16 |
6 | 64 | 79 | 16 |
7 | 80 | 95 | 16 |
8 | 96 | 111 | 16 |
9 | 112 | 127 | 16 |
10 | 128 | 143 | 16 |
11 | 144 | 159 | 16 |
12 | 160 | 183 | 24 |
13 | 184 | 207 | 24 |
14 | 208 | 231 | 24 |
15 | 232 | 255 | 24 |
16 | 256 | 279 | 24 |
17 | 280 | 303 | 24 |
18 | 304 | 327 | 24 |
19 | 328 | 351 | 24 |
20 | 352 | 375 | 24 |
21 | 376 | 399 | 24 |
22 | 400 | 423 | 24 |
23 | 424 | 447 | 24 |
24 | 448 | 471 | 24 |
25 | 472 | 495 | 24 |
26 | 496 | 519 | 24 |
27 | 520 | 543 | 24 |
103:对各编码子带的幅值包络进行量化和编码,得到幅值包络的量化指数和幅值包络的量化指数编码比特(即幅值包络的编码比特);
采用以下公式(5)对根据公式(4)计算得到的各编码子带幅值包络进行量化,得到各编码子带幅值包络的量化指数:
使用6比特对第一个编码子带的幅值包络量化指数进行编码,即消耗6比特。
各编码子带幅值包络量化指数间的差分运算值采用如下公式计算:
ΔThq(j)=Thq(j+1)-Thq (j)j=0,…,L-2 (6)
可以对幅值包络进行如下修正以保证ΔThq(j)的范围在[-15,16]之内:
如果ΔThq(j)<-15,则令ΔThq(j)=-15,Thq(j)=Thq(j+1)+15,j=L-2,…,0;
如果ΔThq(j)>16,则令ΔThq(j)=16,Thq(j+1)=Thq(j)+16,j=0,…,L-2;
对ΔThq(j),j=0,…,L-2进行霍夫曼(Huffman)编码,并计算此时所消耗的比特数(称为霍夫曼编码比特,Huffman coded bits)。如果此时霍夫曼编码比特大于等于固定分配的比特数(在本实施例中大于(L-1)×5),则使用自然编码方式对ΔThq(j),j=0,…,L-2进行编码,并置幅值包络霍夫曼编码标志位Flag_huff_rms=0;否则利用霍夫曼编码对ΔThq(j),j=0,…,L-2进行编码,并置幅值包络霍夫曼编码标志位Flag_huff_rms=1。幅值包络量化指数的编码比特(即幅值包络差分值的编码比特)和幅值包络霍夫曼编码标志位需要被传送到MUX中。
104:根据各编码子带的重要性对各编码子带进行比特分配;
先根据码率失真理论和编码子带幅值包络信息计算各编码子带重要性的初始值,再根据各子带的重要性对各子带进行比特分配;本步骤可以采用如下子步骤实现:
104a:计算单个频域系数的比特消耗平均值;
从20ms帧长可提供的总的比特数bits_available中,扣除边信息消耗的比特数bit_sides、噪声填充子带的噪声水平信息预留比特bits_noiseband和编码子带幅值包络所消耗掉的比特数bits_Th,得到剩余的可用于频域系数编码的比特数bits_left,即:
bits_left=bits_available-bit_sides-bits_Th-bits_noiseband (7)
噪声填充子带的噪声水平信息预留比特bits_noiseband是为噪声填充子带的噪声水平编码比特预留的比特,完成噪声填充子带的比特分配后,如果还有剩余比特,则将剩下的噪声填充子带噪声水平信息预留比特bits_noiseband用于比特分配修正。
边信息包括幅值包络霍夫曼编码标志Flag_huff_rms、频域系数霍夫曼编码标志Flag_huff_plvq、和迭代次数count的比特。Flag_huff_rms用于标识是否对子带幅值包络使用了霍夫曼编码;Flag_huff_plvq用于标识是否在对频域系数进行矢量量化和编码时使用了霍夫曼编码,而迭代次数count用于标识比特分配修正时的迭代次数(详见后续步骤中的描述)。
104b:计算各编码子带在比特分配中的重要性初始值:
用rk(j)表示第j个编码子带用于比特分配时的重要性。
104c:根据各编码子带的重要性对各编码子带进行比特分配;
具体描述如下:
首先从各rk(j)中找到最大值所在的编码子带,假设该编码子带的编号为jk,然后增加该编码子带中每个频域系数的编码比特数,并降低该编码子带的重要性;同时计算用于该子带编码所消耗比特总数bit_band_used(jk);最后计算所有编码子带所消耗比特数的总和sum(bit_band_used(j)),j=0,…,L-1;重复上述过程直至所消耗比特数的总和满足可提供比特限制条件下的最大值。
比特分配数是指一个编码子带中单个频域系数所分配到的比特数。一个编码子带所消耗的比特数是指该编码子带中单个频域系数所分配比特数乘以该编码子带中所包含频域系数的个数。
在本实施例中,对比特分配数为0的编码子带分配比特的步长是1个比特,比特分配后重要性降低的步长为1,对比特分配数大于0且小于阈值5的编码子带追加分配比特时的比特分配步长为0.5个比特,追加分配比特后重要性降低的步长也为0.5,对比特分配数大于等于阈值5的编码子带追加分配比特时的比特分配步长为1,追加分配比特后重要性降低的步长也为1。
本步骤中的比特分配方法可以由如下伪代码表示:
令region_bit(j)=0,j=0,1,…,L-1;
对于编码子带0,1,…,L-1:
{
寻找
如果region_bit(jk)<5
{
如果region_bit(jk)=0
令region_bit(jk)=region_bit(jk)+1;
计算bit_band_used(jk)=region_bit(jk)*BandWidth(jk);
令rk(jk)=rk(jk)-1;
否则如果region_bit(jk)>=1
令region_bit(jk)=region_bit(jk)+0.5;
计算bit_band_used(jk)=region_bit(jk)*BandWidth(jk)*0.5;
令rk(jk)=rk(jk)-0.5;
}
否则如果region_bit(jk)>=5
{
令region_bit(jk)=region_bit(jk)+1;
令
计算bit_band_used(jk)=region_bit(jk)×BandWidth(jk);
}
计算bit_used_all=sum(bit_band_used(j))j=0,1,…,L-1;
如果bit_used_all<bits_left-24,返回并在各编码子带中重新寻找jk,循环计算比特分配值;其中24为编码子带宽度的最大值。
否则,结束循环,计算比特分配值,输出此时的比特分配值。
}
最后,根据编码子带的重要性,将剩余的不到24个比特按如下原则分配给满足要求的编码子带,优先在比特分配为1的编码子带中给每个频域系数分配0.5个比特,同时降低该编码子带的重要性0.5;否则给比特分配为0的子带中每个频域系数分配1个比特,同时降低该编码子带的重要性1,直至bit_left-bit_used_all<4,比特分配结束。
其中,MaxBit为编码子带中单个频域系数所能分配到的最大的编码比特数。本实施例中采用MaxBit=9。这个值可以根据编解码器的编码码率适当调整。region_bit(j)为第j个编码子带中单个频域系数所分配的比特数。
105:根据步骤104的比特分配结果,为内部含有零比特编码子带的有效噪声填充子带分配比特;通过MDCT频域系数估算音频信号的功率谱,根据估计得到的功率谱来估计有效噪声填充子带的噪声水平;将该噪声水平信息进行量化编码,得到噪声填充子带的噪声水平编码比特;
N个MDCT频域系数可以看做一个噪声填充子带,也可以均匀划分或根据人耳听觉特性划分为若干个噪声填充子带。一个噪声填充子带包含一个或多个编码子带。
本发明将内部含有零比特编码子带的噪声填充子带称为有效噪声填充子带。
进行噪声填充子带比特分配时,可以为所有有效噪声填充子带分配比特,也可以跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特,对应的,在解码时,对该未分配比特的低频有效噪声填充子带中的零比特编码子带采用白噪声填充的方式进行频谱重构。
各有效噪声填充子带分配相同的比特数,或根据人耳对各个子带的听觉特性分配不同的比特数。后续,获得有效噪声填充子带的噪声水平编码比特后,将该比特复用打包。
106:对非零比特编码子带的矢量进行量化和编码,得到频域系数的编码比特;
107:构造编码码流
图10是本发明实施例的码流构成示意图。首先将边信息按如下顺序写入比特流复用器MUX中,Flag_huff_rms、Flag_huff_plvq和count;然后将编码子带幅值包络编码比特写入MUX,然后将噪声水平编码比特写入MUX,然后将频域系数的编码比特写入MUX;最后将按上述顺序写成的码流传送到解码端。
以下结合附图以将N个MDCT频域系数划分为多个噪声填充子带,且从第二个有效噪声填充子带分配比特为例对步骤105进行详细说明。
如图2所示,获得噪声填充子带内部零比特编码子带的噪声水平编码比特的过程具体包括:
201:将编码子带划分为若干个噪声填充子带,根据编码子带比特分配结果,为有效噪声填充子带分配比特;
将所需处理的频带范围内的频域系数根据人耳听觉特性非均匀划分成若干个子带,称为噪声填充子带;一个噪声填充子带包含一个或多个编码子带;
一个实例的具体划分方式实例见表2:
表2噪声填充子带非均匀子带划分方式实例
噪声填充子带序号 | 起始编码子带序号(NLIndex) | 结束编码子带序号(NHIndex) | 包含编码子带个数(SubBandNum) |
0 | 0 | 11 | 12 |
1 | 12 | 13 | 2 |
2 | 14 | 16 | 3 |
3 | 17 | 20 | 4 |
4 | 21 | 28 | 8 |
以上表2中,噪声填充子带是根据编码子带频率从低到高的顺序排列的。
假定,噪声填充子带噪声水平信息预留比特为除序号0外的每个噪声填充子带预留两个比特,总预留比特数等于噪声填充子带个数减1后乘以2。
在比特分配时,不为序号为0的噪声填充子带分配比特,即不占用编码比特,相应地,在解码时,对序号为0的噪声填充子带,如果内部有零比特的编码子带,则采用白噪声填充方法对零比特的编码子带的频域系数进行频谱重构,详见步骤504;从序号为1的噪声填充子带开始判断该噪声填充子带内部是否有零比特编码子带,如果该噪声填充子带有零比特编码子带,则为该噪声填充子带分配2个比特,用于表示该噪声填充子带内部零比特编码子带的噪声水平信息,并将噪声填充子带噪声水平信息预留比特bits_noiseband减2。完成所有的的噪声填充子带的比特分配后,将剩下的噪声水平信息预留比特bits_noiseband用于比特分配修正。
本步骤中噪声填充子带比特分配方法可以由下面伪代码表示:
Nregion_bitflag(j-1)为噪声填充子带j的比特分配标志,1:表示分配了比特;0表示没分配比特。
令Nregion_bitflag(j-1)=0,j=1,2,…,L_noise-1;
令噪声填充子带比特分配剩余比特noiseband_remain_bits=0;
对于噪声填充子带j=1,2,……L_noise-1
{ 令region=NLInde(j),NLIndex(j)+1,……NHIndex(j);
对于所有的region
{
如果region_bit(region)等于0
{
则令Nregion_bit(Nregion)=1;
bits_noiseband=bits_noiseband-2;
跳出当前的循环;
}
}
}
noiseband_remain_bits=bits_noiseband;
将各个分配给噪声填充子带的比特按顺序排列起来就是后面所说的噪声水平编码比特。
以上是为噪声填充子带进行比特分配的过程,当然也可以直接为各噪声填充子带预留特定数量的比特(如2比特)。
202:基于表2的噪声填充子带划分方式,通过MDCT系数估算序号为1、2、3、4的4个噪声填充子带的信号的功率谱;
第i帧的频点k的功率估计的算法如式(13):
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2 (13)
其中当i等于0时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值。Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数,其中一个实例λ=0.875;
通过MDCT进行功率谱估计的原理推导如下:
下式给出长度为2M的信号x在角频率ω处的离散时间傅立叶变换(DTFT):
在0和2π之间的2M个均匀相隔的频率上对DTFT采样。该经采样的变换称为离散傅立叶变换(DFT),下式给出频点k处的DFT:
利用半频点的偏移对DTFT进行采样,以生成移位离散傅立叶变换(SDFT):
对实际信号x(n)加窗后的SDFT如下:
根据式(2)记MDCT频域系数X(k)为XMDCT(k),并令M=N,重写式(2)如下:
SDFT和MDCT采用同样的窗类型,令
实际信号x(n)的MDCT和SDFT之间的关系可以用如下的公式表示:
也就是说,MDCT可以表示为由余弦调制的SDFT的幅度,该余弦是SDFT的角度函数。
通过音频信号的连续交迭的加窗块的SDFT来估计信号的功率谱,假设信号x的变换长度为2M,那么下式给出了在频点k且在块t处的短时移位离散傅立叶变换STSDFT:
H是块的跳长。另H=M,则STSDFT同MDCT有相同的跳长。
利用STSDFT可以通过在许多块t上对XSDFT[k,t]的平方幅度进行平均来估计信号的功率谱,通过下式,计算长度为T的块的移动平均值,以生成对功率谱的时间变化的估计:
根据MDCT和SDFT的运算关系,在某些假设条件下,可以根据XMDCT(k,t)近似得到PSTSDFT(k,t)。定义:
根据式(18)可以得到:
如果假定在块上|XSTSDFT(k,t-η)|和∠XSTSDFT(k,t-η)相对独立的共同变化(该假设对于大多数音频信号来说为真),则可以得到:
如果进一步假设∠XSTSDFT(k)总的来说在T个块上均匀分布于0和2π之间并且如果T相对大,则由于有均匀分布的相位角度的余弦平方的期望值是二分之一,可以得到:
因此,可以看到,根据MDCT估计的功率谱大约等于根据STSDFT估计的功率谱的一半。
由于编码运算低延时的要求,我们选用单极平滑滤波器,进行功率谱估计,PMDCT(k,t)中块t用i表示,并写为下标,PMDCT(k,t)可以写为Pi(k),块的长度定为一帧音频信号的长度,则i表示的是帧的编号,可以得到最终的估计的算法如式(13),式(13)就是本发明中用于功率谱估计的算法。
203:根据式(13)估计的功率谱,计算各个分配到比特的噪声填充子带内零比特编码子带噪声水平。
如图3所示:计算噪声水平的具体过程为:
步骤301:计算该噪声填充子带内所有或部分零比特编码子带的所有频域系数的功率的平均值,得到平均功率P_aveg(j);
步骤302:将该噪声填充子带内所有或部分零比特编码子带中的功率大于平均功率的频域系数认为是该噪声填充子带中的音调成分,计算该有效噪声填充子带所有或部分零比特编码子带中功率大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);
步骤303:将该噪声填充子带内所有或部分零比特编码子带中的功率小于或等于平均功率的频域系数认为是该噪声填充子带中的噪声成分,计算该有效噪声填充子带中所有或部分零比特编码子带中功率小于或等于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);
步骤304:计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值P_noise_rate(j),其值为该有效噪声填充子带的噪声水平。
对噪声水平进行量化编码后得到噪声水平编码比特;
P_noise_rate(j)进行量化编码得到P_noise_rate_bits(j)。完成噪声水平量化编码后,将各个分配到比特的噪声填充子带的噪声水平编码比特按子带的序号从低到高排列,得到整体的有效噪声填充子带的噪声水平编码比特。
其中一个采用非均匀量化的实例如表3所示:
表3 噪声信号比率非均匀量化实例
P_noise_rate(j) | P_noise_rate_bits(j) |
[0,0.04) | 00 |
[0.04,0.08) | 01 |
[0.08,0.16) | 10 |
[0.16,1) | 11 |
该有效噪声填充子带的噪声水平也是该噪声填充子带中零比特编码子带的噪声水平,该噪声水平除了可以用P_noise_rate(j)表示外,还可以用音调成分平均功率P_signal_aveg(j)和噪声成分平均功率P_noise_aveg(j)的比值来表示。
二、解码方法
本发明音频解码方法是编码方法的逆过程,包括:
A、对待解码比特流中各幅值包络编码比特进行解码,得到各编码子带的幅值包络量化指数;
B、对各编码子带进行比特分配,对噪声水平编码比特进行解码反量化得到零比特编码子带的噪声水平,对频域系数编码比特进行解码反量化得到非零比特编码子带的频域系数;
C、对零比特编码子带进行频带复制,并根据待解码比特流中各零比特编码子带的幅值包络控制该编码子带的整体能量填充水平,根据该零比特编码子带的噪声水平控制噪声填充和频带复制的能量的比例,获得重构的零比特编码子带的频域系数;
D、对非零比特编码子带的频域系数和重构的零比特编码子带的频域系数进行修正离散余弦逆变换(IMDCT),得到最终的音频信号。
图4是本发明实施例一种音频解码方法的结构示意图。如图4所示,该方法包括:
401:对各幅值包络编码比特进行解码得到各编码子带的幅值包络量化指数;
从编码端传送过来的编码比特流中(即从比特流解复用器DeMUX中)提取一帧的编码比特;提取出编码比特后,首先对边信息进行解码,然后根据幅值包络霍夫曼编码标志Flag_huff_rms的值对该帧中各幅值包络编码比特进行霍夫曼解码或直接解码,得到各编码子带的幅值包络量化指数Thq(j),j=0,…,L-1。
402:对各编码子带进行比特分配,并对有效噪声填充子带进行比特分配;
根据各编码子带的幅值包络量化指数计算出各编码子带重要性初始值,并利用编码子带重要性对各编码子带进行比特分配,得到编码子带的比特分配数;解码端的比特分配方法和编码端的比特分配方法完全相同。在比特分配过程中,比特分配步长及比特分配后编码子带重要性降低的步长是变化的。
在完成上述比特分配过程后,根据编码端的比特分配修正迭代次数count值和各编码子带的重要性,对编码子带再进行count次比特分配修正,然后比特分配全过程结束。
在比特分配及修正过程中,对比特分配数为0的编码子带分配比特时的比特分配步长及比特分配修正的步长是1个比特,比特分配及比特分配修正后重要性降低的步长为1,对比特分配数大于0且小于某个阈值的编码子带追加分配比特时的比特分配步长及比特分配修正的步长为0.5个比特,比特分配及比特分配修正后重要性降低的步长也为0.5,对比特分配数大于等于该阈值的编码子带追加分配比特时的比特分配步长及比特分配修正的步长为1,比特分配及比特分配修正后重要性降低的步长也为1;
将编码子带划分为若干个噪声填充子带,根据编码子带比特分配结果,为有效噪声填充子带分配比特;噪声填充子带的划分方法及噪声填充子带的比特分配方法与编码方法相同,在此不再赘述。
403:对噪声水平编码比特进行解码反量化得到零比特编码子带的噪声水平,以及对频域系数编码比特进行解码反量化得到MDCT频域系数;
404:对零比特编码子带进行频带复制,根据零比特编码子带的幅值包络控制该编码子带的整体填充能量水平,并根据该编码子带所在的噪声填充子带的噪声水平,控制各零比特编码子带频带复制及噪声填充能量的比例,获得重构的零比特编码子带的频域系数;
该步骤详细过程见以下图5说明。
对分配了比特的有效噪声填充子带中的零比特编码子带进行频带复制并控制复制后得到的频域系数的能量水平及噪声填充的能量水平,对未分配比特的有效噪声填充子带中的零比特编码子带进行噪声填充。
405:对频谱重构后的频域系数进行IMDCT(Inverse Modified DiscreteCosine Transform,修正离散余弦逆变换),得到最终的音频输出信号。
以下结合图5对步骤404进行详细说明:
如图5所示,步骤404具体包括:
步骤501:对有效噪声填充子带的零比特编码子带进行频带复制;
在MDCT频域系数中搜索音频信号的某个音调所在的位置,以0频点到音调位置的频点的带宽为频带复制周期,将从0频点向后偏移copyband_offset个频点到音调位置向后偏移所述copyband_offset个频点的频段作为频带复制源频段,对零比特编码子带进行频带复制。如果需要进行频带复制的零比特编码子带内部的最高频率小于搜索到的音调的频率,则该频点只采用噪声填充进行频谱重构。
频域系数按频率从低到高的顺序排列,向后偏移即向频率高的位置偏移。
以下对该频带复制方法进行详细说明:
a、在MDCT频域系数中搜索音频信号的某个音调所在的位置;
本发明优选的搜索音调所在的位置的方法是对MDCT频域系数进行平滑滤波:对低频的某个特定频段的MDCT频域系数取绝对值或平方值,并进行平滑滤波;根据平滑滤波的结果,搜索滤波输出值的最大极值所在的位置,将该最大极值所在的位置作为音调所在的位置;
本发明所说的音频信号的音调指音频信号的基音或基音的某个谐波。
这里所说的特定频段可以是根据频谱特性确定的能量比较集中的频段,称为第一频段。这里的低频指的是小于二分之一信号总带宽的频谱成分。
这里的频域系数是步骤403解码后的MDCT频域系数,频率从低到高排列。
对该第一频段的频域系数取绝对值进行平滑滤波的运算公式如下:
或,对该第一频段的频域系数平方值进行平滑滤波的运算公式如下
其中,μ为平滑滤波系数,其取值范围为(0,1),可取值为0.125。X_ampi(k)表示第i帧的第k个频点的滤波输出值,为第i帧的第k个频点解码后的MDCT系数,且i=0时,X_ampi-1(k)=0。
搜索第一频段滤波输出值的最大极值所在的位置有以下两种方法:
(1)直接从第一频段对应的频域系数的滤波输出值中搜索初始最大值,将该最大值作为第一频段滤波输出值的最大极值,将对应的频点的序号作为最大极值(即音调)的位置;
(2)搜索最大极值时,将该第一频段的其中一段作为第二频段,从第二频段对应的频域系数的滤波输出值中搜索初始最大值,并将该初始最大值作为第一频段滤波输出值的最大极值,将对应的频点的序号作为最大极值(即音调)的位置。
第二频段的起点位置要大于第一频段的起点,第二频段的终点位置要小于第一频段的终点,优选地,第一频段和第二频段中频率系数的个数不小于8。
为了防止找到的初始最大值对应的频域系数不是音频信号的音调所在的位置,在进行音调位置搜索时,先从该第二频段的滤波输出值中搜索初始最大值,并根据该初始最大值对应的频域系数的位置进行不同的处理:
(a)如果该初始最大值为第二频段最低频率的频域系数的滤波输出值,则将该第二频段最低频率的频域系数的滤波输出值与在第一频段中前一个更低频率的频域系数的滤波输出值相比较,依次向前比较,直到当前频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则认为该当前频域系数为音调所在的位置,即该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最低频率的频域系数的滤波输出值大于后一个频域系数的滤波输出值时,则认为第一频段的最低频率的频域系数为音调所在的位置,即第一频段的最低频率的频域系数的滤波输出值为最终确定的最大极值;
(b)如果该初始最大值为第二频段最高频率的频域系数的滤波输出值,则将该第二频段最高频率的频域系数的滤波输出值与在第一频段中后一个更高频率的频域系数的滤波输出值相比较,依次向后比较,直到当前频域系数的滤波输出值比后一个频域系数的滤波输出值大时,则认为当前频域系数为音调所在的位置,即该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最高频率的频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则认为第一频段的最高频率的频域系数为音调所在的位置,即第一频段的最高频率的频域系数的滤波输出值为最终确定的最大极值;
(c)如果该初始最大值为第二频段最低频率与最高频率之间的频域系数的滤波输出值,则该初始最大值对应的频域系数为音调所在的位置,即,该初始最大值为最终确定的最大极值。
以下以第一频段的频域系数为第24个到第64个MDCT频域系数,第二频段的频域系数为第33个到第56个MDCT频域系数为例对确定音频信号位置的方法进行说明:
从第33到56个MDCT频域系数的滤波输出值中搜索其最大值;如果最大值对应第33个频域系数,判断第32个频域系数的检波输出结果是否比第33个频域系数的大,如果是将继续向前比,看是否第31个频域系数的检波输出结果是否比第32个频域系数的大,按照这种方法依次向前比较直到当前频域系数的滤波输出值比前一个的大;或者直到找到第24个频域系数的滤波输出值大于第25个频域系数的滤波输出值,则当前频域系数或第24个频域系数为音调的位置;
如果最大值是56将采用类似的方法依次向后寻找,直到当前频域系数的滤波输出值比后一个的大,则该当前频域系数为音调的位置,或直到找到第64个频域系数的滤波输出值并且其值大于第63个频域系数的滤波输出值,则该第64个频域系数为音调的位置;
如果最大值在33到56之间,该最大值对应的频域系数为音调的位置。
该位置的值记为Tonal_pos即最大极值对应的频点的序号。
b、以0频点到音调位置的频点的带宽为周期,将从0频点向后偏移copyband_offset个频点到音调位置的频点向后偏移所述copyband_offset个频点的频段作为源频段对零比特编码子带进行频带复制;
即,源频段的频点的起始序号copyband_offset,结束序号为copyband_offset+Tonal_pos。
本发明中,频带复制偏移(记为copyband_offset)的值为预先设定,copyband_offset≥0,当预先设定的copyband_offset=0零时,源频段即为从0频点到音调位置的频点的频段,为了减少复制频带的频谱跳变,将copyband_offset设为大于零,则源频段是0频点的向后偏移一个小范围(记为copyband_offset)的频点到最大极值所在位置的频点向后偏移一个相同小范围(记为copyband_offset)的频点的频段的MDCT频域系数,对于某个频点以上的有效噪声填充子带(如序号为1、2、3、4)内部的零比特编码子带的频谱填充都从源频段中复制。
对应于图2的流程,对于第一个噪声填充子带的零比特编码子带采用随机噪声填充方法进行频谱重构,对于序号为1、2、3、4的噪声填充子带的零比特编码子带,采用频域系数复制结合噪声填充的方法进行频谱重构;
进行频带复制时,先根据源频段和需要进行频带复制的零比特编码子带的起始序号计算该零比特编码子带的源频段复制起始序号,再以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性复制到零比特编码子带。
确定源频段复制起始序号的方法为:
首先,从需要复制的第一个零比特编码子带开始,获得需要重构频域系数的零比特编码子带的起始MDCT频域系数的频点的序号,记为fillband_start_freq,将音调对应的频点的序号记为Tonal_pos,频带的复制周期记为copy_period。copy_period等于Tonal_pos加1。如果需要进行频带复制的零比特编码子带内部的最高频率小于搜索到的音调的频率,则该频点只采用噪声填充进行频谱重构,不进行频带复制。将频带复制偏移记为copyband_offset,将fillband_start_freq的值循环减去copy_period,直到其值落在源频段的序号的值区间,该值则为源频段复制起始序号,记为copy_pos_mod。
源频段复制起始序号copy_pos_mod可以通过下面的伪代码算法获得:
令copy_pos_mod=fillband_start_freq;
当copy_pos_mod大于(Tonal_pos+copyband_offset)
{
copy_pos_mod=copy_pos_mod-copy_period;
}
完成运算后copy_pos_mod则为源频段复制起始序号。
复制时,将以源频段复制起始序号开始的频域系数依次向后复制到以fillband_start_freq为起始位置的零比特编码子带上,直到源频段复制的频点到达Tonal_pos+copyband_offset频点后,重新将从第copyband_offset个频点开始的频域系数继续向后复制到该零比特编码子带上,依此类推,直到完成当前零比特编码子带的所有频域系数的频带复制。
设定频带复制偏移copyband_offset为10时,将从copy_pos_mod开始的频带按频率从低到高排列复制到以fillband_start_freq为起始位置的零比特编码子带上,直到Tonal_pos+10频点后重新从第10个频域系数开始复制,依此类推,该零比特编码子带的所有的信号都从10到Tonal_pos+10频域系数中复制,频点10到Tonal_pos+10的频域系数为频带复制的源频段。
采用上面的方法,为序号为1、2、3、4的噪声填充子带的所有零比特编码子带复制频谱。
除以上频带复制方法外,其他的频带复制方法同样适用于本发明,对本发明的实现并无影响。
步骤502:根据解码得到的噪声水平对各个噪声填充子带内部的零比特编码子带复制后得到的频域系数进行能量调整;
计算零比特编码子带复制后得到的频域系数的幅值包络,记为sbr_rms(r)。能量调整后的频域系数的计算公式为:
其中,表示零比特编码子带r的能量调整后的频域系数,X_sbr(r)表示零比特编码子带r复制后得到的频域系数,sbr_rms(r)是零比特编码子带r复制后的得到的频域系数X_sbr(r)的幅值包络(也就是其均方根),rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,sbr_lev_scale(r)为零比特编码子带r的频带复制的能量控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),本实例中取值为0.2。为解码反量化得到的噪声填充子带j的噪声水平,其可以根据噪声水平编码比特从表3的量化范围中得到反量化值,本实例中一个实现例子如表10:
表10 噪声水平反量化值
其中j为零比特编码子带r所在的噪声填充子带的序号。
步骤503:在能量调整后的频域系数上叠加白噪声形成最后的重构频域系数。
其中,表示零比特编码子带r重构的频域系数,表示零比特编码子带r的能量调整后的频域系数,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,random()为随机相位发生器,产生随机相位值,其返回值为+1或-1,noise_lev_scale(r)为零比特编码子带r的噪声水平控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定。具体计算公式如下:
其中,fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),本实例中取值为0.2。为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号。
当然还应对未分配比特的有效噪声填充子带(如序号为0的噪声填充子带)中的零比特编码子带进行白噪声填充以实现频域系数重构,在此不再赘述。
本发明还提供了一种噪声水平的估计方法,该方法包括:
根据待编码音频信号的频域系数估计待编码音频信号的功率谱;
根据估计所得的功率谱估计零比特编码子带音频信号的噪声水平,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例;其中,零比特编码子带指分配到的比特数为零的编码子带。可以为每个零比特编码子带计算一个噪声水平,也可以几个噪声子带计算一个共用的噪声水平。
进一步地,所述零比特编码子带音频信号的噪声水平指零比特编码子带估计得到的噪声成分功率与零比特编码子带内估计得到的音调成分功率的比值。
进一步地,根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,第i帧的频点k的功率估计的公式如下:
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2,其中当i等于0时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
进一步地,将待编码音频信号的频域系数划分成一个或若干个噪声填充子带,根据估计的待编码音频信号的功率谱计算某个有效噪声填充子带的噪声水平的过程具体包括:
计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数的功率的平均值,得到平均功率P_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);
计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值P_noise_rate(j),得到该有效噪声填充子带的噪声水平。
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
三、编码系统
为实现以上编码方法,本发明还提供了一种音频编码系统,如图6所示,该系统包括修正离散余弦变换(MDCT)单元、幅值包络计算单元、幅值包络量化和编码单元、比特分配单元、频域系数编码单元、噪声水平估计单元及比特流复用器(MUX);其中:
MDCT单元,用于对音频信号进行修正离散余弦逆变换变换生成频域系数;
幅值包络计算单元,与所述MDCT单元连接,用于将所述MDCT生成的频域系数划分为若干个编码子带,并计算各编码子带的幅值包络;
幅值包络计算单元划分编码子带时,将所述MDCT变换后的频域系数分成若干个等间隔的编码子带,或者按照听觉感知特性划分成若干个非均匀编码子带。
幅值包络量化和编码单元,与所述幅值包络计算单元连接,用于将各编码子带的幅值包络值进行量化和编码,生成各编码子带幅值包络的编码比特;
比特分配单元,与所述幅值包络量化和编码单元连接,用于进行比特分配,得到各编码子带中为每个频域系数所分配的编码比特数;
具体地,比特分配单元包括相连接的重要性计算模块及比特分配模块,其中:
重要性计算模块用于根据编码子带幅值包络值计算各编码子带重要性的初始值;
所述比特分配模块用于根据各编码子带的重要性对编码子带中每个频域系数进行比特分配,且在比特分配过程中,比特分配步长及比特分配后重要性降低的步长均是变化的。
所述重要性计算模块计算所述重要性初始值时,先计算单个频域系数的比特消耗平均值;再根据码率失真理论计算在最大量化信噪比增益条件下的最佳比特值;之后再根据所述比特消耗平均值及最佳比特指计算各编码子带在比特分配中的重要性初始值;
所述比特分配模块根据各编码子带的重要性对各编码子带进行比特分配:增加重要性最大的编码子带中每个频域系数的编码比特数,并降低该编码子带的重要性;直至所有编码子带所消耗比特数的总和满足可提供比特限制条件下的最大值。
所述比特分配模块进行比特分配时,低比特编码子带的比特分配步长及比特分配后的重要性降低步长小于零比特编码子带和高比特编码子带的比特分配步长及比特分配后的重要性降低步长。如:所述比特分配模块进行比特分配时,低比特编码子带的比特分配步长及比特分配后的重要性降低步长均为0.5;零比特编码子带和高比特编码子带的比特分配步长及比特分配后的重要性降低步长均为1。
频域系数量化编码单元,与MDCT单元、比特分配单元及幅值包络量化和编码单元连接,用于对各编码子带中所有频域系数进行归一化、量化及编码处理,生成频域系数编码比特;
噪声水平估计单元,与MDCT单元及比特分配单元连接,用于根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,进而估计零比特编码子带音频信号的噪声水平,并量化编码得到噪声水平编码比特;其中,该噪声水平用于在解码时控制噪声填充和频带复制能量的比例,详见图7;
所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值。
比特流复用器(MUX),与所述幅值包络量化和编码单元、频域系数编码单元及噪声水平估计单元连接,用于将各编码子带的编码比特以及频域系数的编码比特及噪声水平编码比特复用并发送到解码端。
比特流复用器对编码后的比特复用打包的顺序依次为幅值包络霍夫曼编码标识、频域系数霍夫曼编码标识、比特分配修正迭代次数、幅值包络的编码比特、频域系数的编码比特以及噪声水平编码比特。
如图7所示,噪声水平估计单元具体包括:
功率谱估计模块,用于根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱;
所述功率谱估计模块采用以下公式估计第i帧的频点k的功率:
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2,其中当i等于0时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
噪声水平计算模块,与所述功率谱估计模块连接,用于根据所述功率谱估计模块估计的功率谱估计分配到比特的噪声填充子带的音频信号的噪声水平;
噪声水平编码模块,与所述噪声水平计算模块连接,用于对所述噪声水平计算模块计算的噪声水平进行量化编码,获得噪声水平编码比特。
进一步地,待编码音频信号的频域系数划分成一个或若干个噪声填充子带,所述噪声水平计算模块的功能具体包括:用于计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数功率的平均值,得到平均功率P_aveg(j);用于计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);用于计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分的平均功率P_noise_aveg(j);用于计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值,得到该有效噪声填充子带的噪声水平;
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
所述噪声水平估计单元还包括与噪声水平计算模块及噪声水平编码模块连接的比特分配模块,用于为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特,以及通知噪声水平计算模块及噪声水平编码模块;所述噪声水平计算模块仅为分配了比特的噪声填充子带计算噪声水平;所述噪声水平编码模块利用比特分配模块分配的比特对所述噪声水平进行量化编码。
四、解码系统
为了实现以上解码方法,本发明还提供了一种音频解码系统,如图8所示,该系统包括比特流解复用器(DeMUX)、编码子带幅值包络解码单元、比特分配单元、频域系数解码单元、频谱重构单元、修正离散余弦逆变换(IMDCT)单元,其中:
比特流解复用器(DeMUX),用于从待解码比特流中分离出幅值包络编码比特、频域系数编码比特以及噪声水平编码比特;
幅值包络解码单元,与所述比特流解复用器连接,用于对所述比特流解复用器输出的幅值包络的编码比特进行解码,得到各编码子带的幅值包络量化指数;
比特分配单元,与所述幅值包络解码单元连接,用于为各编码子带分配比特以及为含有零比特编码子带的噪声填充子带分配比特;
比特分配单元包括重要性计算模块及比特分配模块及比特分配修正模块,其中:
重要性计算模块用于根据编码子带幅值包络值计算各编码子带重要性的初始值;
所述比特分配模块用于根据各编码子带的重要性初始值对编码子带中每个频域系数进行比特分配,且在比特分配过程中,比特分配步长及比特分配后重要性降低的步长均是变化的;
比特分配修正模块,用于在进行比特分配之后,根据编码端的比特分配修正迭代次数count值和各编码子带的重要性,对编码子带再进行count次比特分配修正。
所述比特分配模块进行比特分配时,低比特编码子带的比特分配步长及比特分配后的重要性降低步长小于零比特编码子带和高比特编码子带的比特分配步长及比特分配后的重要性降低步长。
所述比特分配修正模块进行比特修正时,低比特编码子带的比特修正步长及比特修正后的重要性降低步长小于零比特编码子带和高比特编码子带的比特修正步长及比特修正后的重要性降低步长。
所述比特分配单元为噪声填充子带分配比特时,根据编码器的分配方法为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特。
频域系数解码单元,与幅值包络解码单元和比特分配单元连接,用于对编码子带进行解码、反量化及反归一化以得到频域系数;
噪声水平解码单元,与所述比特流解复用器及比特分配单元连接,用于对噪声水平编码比特进行解码反量化获得噪声水平;
频谱重构单元:与噪声水平解码单元、频域系数解码单元、幅值包络解码单元及比特分配单元连接,用于对零比特编码子带进行频带复制,并根据幅值包络解码单元输出的幅值包络控制该编码子带的整体能量填充水平,根据噪声水平解码单元输出的噪声水平控制噪声填充和频带复制的能量的比例,获得重构的零比特编码子带的频域系数;
修正离散余弦逆变换(IMDCT)单元,与所述频谱重构单元连接,用于对完成零比特编码子带的频谱重构后的频域系数进行IMDCT,得到音频信号。
如图9所示,所述频谱重构单元具体包括依次连接的频带复制子单元、能量调整子单元及噪声填充子单元,其中:
频带复制子单元,用于对零比特编码子带进行频带复制;
能量调整子单元,用于计算零比特编码子带频带复制后得到的频域系数的幅值包络,记为sbr_rms(r);以及根据噪声水平解码单元输出的噪声水平对复制后得到的频域系数进行能量调整,能量调整后的频域系数为:
其中,表示零比特编码子带r的能量调整后的频域系数,X_sbr(r)表示零比特编码子带r通过复制得到的频域系数,sbr_rms(r)是零比特编码子带r复制后得到的频域系数X_sbr(r)的幅值包络,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,sbr_lev_scale(r)为零比特编码子带r的频带复制的能量控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号。
噪声填充子单元,用于根据噪声水平解码单元输出的噪声水平对能量调整后的频域系数进行噪声填充,噪声填充的公式为:
其中,表示零比特编码子带r重构频域系数,表示零比特编码子带r的能量调整后的频域系数,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,random()为随机相位发生器,产生随机相位值,其返回值为+1或-1,noise_lev_scale(r)为零比特编码子带r的噪声水平控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
其中,fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1),本实例中取值为0.2。为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号。
所述频带复制子单元根据比特分配单元的比特分配结果对分配了比特的噪声填充子带中的零比特编码子带进行频带复制;所述能量调整子单元对频带复制后得到的频域系数进行能量调整;所述噪声填充子单元对能量调整后的频域系数及未分配比特的噪声填充子带中的零比特编码子带进行噪声填充。
进一步地,如图9所示,所述频带复制子单元包括依次连接的音调位置搜索模块、周期及源频段计算模块、源频段复制起始序号计算模块及频带复制模块,其中:
音调位置搜索模块,用于在MDCT频域系数中搜索音频信号的某个音调所在的位置,具体包括:对第一频段的MDCT频域系数取绝对值或平方值,并进行平滑滤波;根据平滑滤波的结果,搜索第一频段滤波输出值的最大极值所在的位置,该最大极值所在的位置即音调所在的位置;
周期及源频段计算模块,用于根据音调所在位置确定用于复制的频带复制周期及源频段,该频带复制周期为0频点到音调位置的频点的带宽,所述源频段为0频点向后偏移频带复制偏移copyband_offset的频点到音调位置的频点向后偏移所述copyband_offset的频点的频段;
若将音调位置的频点的序号记为Tonal_pos,预先设定频带复制偏移记为copyband_offset,则源频段的频域系数的起始序号copyband_offset,结束序号为copyband_offset+Tonal_pos。
源频段复制起始序号计算模块,用于根据源频段和需要进行频带复制的零比特编码子带的起始序号计算该零比特编码子带的源频段复制起始序号。
所述频带复制模块用于以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性复制到零比特编码子带;
如果需要进行频带复制的零比特编码子带内部的最高频率小于搜索到的音调的频率,则该频点只采用噪声填充进行频谱重构,不进行频带复制。
所述音调位置搜索模块采用如下方法搜索音调所在位置:对第一频段的MDCT频域系数取绝对值或平方值,并进行平滑滤波;根据平滑滤波的结果,搜索第一频段滤波输出值的最大极值所在的位置,该最大极值所在的位置即音调所在的位置;
进一步地,
所述音调位置搜索模块对该第一频段的MDCT频域系数取绝对值进行平滑滤波的运算公式为:
或,对该第一频段的频域系数平方值进行平滑滤波的运算为:
进一步地,所述第一频段是根据频谱的统计特性确定的能量比较集中的低频的频段,其中低频指小于二分之一信号总带宽的频谱成分。
进一步地,所述音调位置搜索模块直接从第一频段对应的频域系数的滤波输出值中搜索初始最大值,将该最大值作为第一频段滤波输出值的最大极值。
进一步地,所述音调位置搜索模块确定滤波输出值的最大极值时,将该第一频段的其中一段作为第二频段,先从第二频段对应的频域系数的滤波输出值中搜索初始最大值,再根据该初始最大值对应的频域系数的位置进行不同的处理:
a.如果该初始最大值为第二频段最低频率的频域系数的滤波输出值,则将该第二频段最低频率的频域系数的滤波输出值与在第一频段中前一个更低频率的频域系数的滤波输出值相比较,依次向前比较,直到当前频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最低频率的频域系数的滤波输出值大于后一个频域系数的滤波输出值时,则第一频段的最低频率的频域系数的滤波输出值为最终确定的最大极值;
b.如果该初始最大值为第二频段最高频率的频域系数的滤波输出值,则将该第二频段最高频率的频域系数的滤波输出值与在第一频段中后一个更高频率的频域系数的滤波输出值相比较,依次向后比较,直到当前频域系数的滤波输出值比后一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最高频率的频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则第一频段的最高频率的频域系数的滤波输出值为最终确定的最大极值;
c.如果该初始最大值为第二频段最低频率与最高频率之间的频域系数的滤波输出值,则该初始最大值对应的频域系数为音调所在的位置,即,该初始最大值为最终确定的最大极值。
进一步地,所述源频段复制起始序号计算模块计算需要进行频带复制的零比特编码子带的源频段复制起始序号的过程包括:获得当前需要重构频域系数的零比特编码子带的起始频点的序号,记为fillband_start_freq,将音调对应的频点的序号记为Tonal_pos,将Tonal_pos加1得到复制周期copy_period,将源频段起始序号记为copyband_offset,将fillband_start_freq的值循环减去copy_period,直到该值落在源频段的序号的值区间,该值记为copy_pos_mod,为源频段复制起始序号。
进一步地,所述频带复制模块进行频带复制时,具体包括:
将以源频段复制起始序号开始的频域系数依次向后复制到以fillband_start_freq为起始位置的零比特编码子带上,直到源频段复制的频点到达Tonal_pos+copyband_offset频点后,重新将从第copyband_offset个频点开始的频域系数继续向后复制到该零比特编码子带上,依此类推,直到完成当前零比特编码子带的所有频域系数复制。
Claims (38)
1.一种噪声水平估计方法,其特征在于,该方法包括:
根据待编码音频信号的频域系数估计待编码音频信号的功率谱;
根据计算得到的功率谱估计零比特编码子带音频信号的噪声水平,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例;其中,零比特编码子带指分配到的比特数为零的编码子带;
所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值。
2.如权利要求1所述的方法,其特征在于:
根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,第i帧的频点k的功率计算公式如下:
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2,其中当i等于0时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
3.如权利要求1所述的方法,其特征在于:
将待编码音频信号的频域系数划分成一个或若干个噪声填充子带,根据估计的待编码音频信号的功率谱计算某个有效噪声填充子带的噪声水平的过程具体包括:
计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数的功率的平均值,得到平均功率P_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);
计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值P_noise_rate(j),得到该有效噪声填充子带的噪声水平;
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
4.一种音频编码方法,其特征在于,该方法包括:
A、将待编码音频信号的MDCT频域系数划分为若干个编码子带,对各编码子带的幅值包络值进行量化编码,得到幅值包络编码比特;
B、对各编码子带进行比特分配,并对非零比特编码子带进行量化编码,得到MDCT频域系数编码比特;
C、根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,进而估计零比特编码子带音频信号的噪声水平,并量化编码得到噪声水平编码比特;其中,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例,零比特编码子带指分配到的比特数为零的编码子带;
D、将各编码子带的幅值包络编码比特和频域系数编码比特及噪声水平编码比特复用打包后,传送给解码端;
步骤C中,所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带内估计得到的音调成分功率的比值。
5.如权利要求4所述的方法,其特征在于:
根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,第i帧的频点k的功率估计的算法如下:
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2,其中当i等于0,时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
6.如权利要求4所述的方法,其特征在于,步骤B中,将待编码音频信号的频域系数划分成一个或若干个噪声填充子带,并在对各编码子带分配比特后,为有效噪声填充子带分配比特;步骤C中,根据估计的待编码音 频信号的功率谱计算某个有效噪声填充子带的噪声水平的过程具体包括:
计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数的平均值,得到平均功率P_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);
计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);
计算噪声成分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值P_noise_rate(j),得到该有效噪声填充子带的噪声水平;
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
7.如权利要求6所述的方法,其特征在于:
划分噪声填充子带时,均匀划分或根据人耳听觉特性进行非均匀划分,一个噪声填充子带包含一个或多个编码子带。
8.如权利要求6所述的方法,其特征在于:步骤B中为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特;步骤C中计算分配了比特的有效噪声填充子带的噪声水平;步骤D中使用该分配的比特对噪声水平编码比特复用打包。
9.如权利要求6所述的方法,其特征在于:各有效噪声填充子带分配相同的比特数或根据听觉特性分配不同的比特数。
10.一种音频解码方法,其特征在于,该方法包括:
A2、对待解码比特流中各幅值包络编码比特进行解码反量化,得到各编码子带的幅值包络;
B2、对各编码子带进行比特分配,对噪声水平编码比特进行解码反量化得到零比特编码子带音频信号的噪声水平,对频域系数编码比特进行解码反量化得到非零比特编码子带的频域系数;
所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值;
C2、对零比特编码子带进行频带复制,并根据各零比特编码子带的幅值包络控制该编码子带的整体能量填充水平,根据该零比特编码子带音频信号的噪声水平控制噪声填充和频带复制的能量的比例,获得重构的零比特编码子带的频域系数;
D2、对非零比特编码子带的频域系数和重构的零比特编码子带的频域系数进行修正离散余弦逆变换IMDCT,得到最终的音频信号。
11.如权利要求10所述的方法,其特征在于,步骤C2中,频带复制时,在MDCT频域系数中搜索音频信号的某个音调所在的位置,以0频点到音调位置的频点的带宽为频带复制周期,并以0频点向后偏移copyband_offset个频点到音调位置的频点向后偏移所述copyband_offset个频点的频段作为源频段,对零比特编码子带进行频带复制,如果零比特编码子带内部的最高频率小于搜索到的音调的频率,则该零比特编码子带只采用噪声填充进行频谱重构。
12.如权利要求11所述的方法,其特征在于,步骤C2中,
对第一频段的频域系数取绝对值或平方值并进行平滑滤波;
根据平滑滤波的结果,搜索第一频段滤波输出值的最大极值所在的位置,将该最大极值所在的位置作为某个音调所在的位置。
14.如权利要求12所述的方法,其特征在于,所述第一频段是根据频谱的统计特性确定的能量比较集中的低频的频段,其中低频指小于二分之一信号总带宽的频谱成分。
15.如权利要求12所述的方法,其特征在于,采用以下方法确定滤波输出值的最大极值:直接从第一频段对应的频域系数的滤波输出值中搜索初始最大值,将该最大值作为第一频段滤波输出值的最大极值。
16.如权利要求12所述的方法,其特征在于,采用以下方法确定滤波输出值的最大极值:
将该第一频段的其中一段作为第二频段,从第二频段对应的频域系数的滤波输出值中搜索初始最大值,根据该初始最大值对应的频域系数的位置进行不同的处理:
a.如果该初始最大值为第二频段最低频率的频域系数的滤波输出值,则将该第二频段最低频率的频域系数的滤波输出值与在第一频段中前一个更低频率的频域系数的滤波输出值相比较,依次向前比较,直到当前频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最低频率的频域系数的滤波输出值大于后一个频域系数的滤波输出值时,则第一频段的最低频率的频域系数的滤波输出值为最终确定的最大极值;
b.如果该初始最大值为第二频段最高频率的频域系数的滤波输出值,则将该第二频段最高频率的频域系数的滤波输出值与在第一频段中后一个更高频率的频域系数的滤波输出值相比较,依次向后比较,直到当前频域系数的滤波输出值比后一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最高频率的频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则第一频段的最高频率的频域系数的滤波输出值为最终确定的最大极值;
c.如果该初始最大值为第二频段最低频率与最高频率之间的频域系数的滤波输出值,则该初始最大值对应的频域系数为音调所在的位置,即,该初始最大值为最终确定的最大极值。
17.如权利要求11所述的方法,其特征在于,步骤C2中,对零比特编码子带进行频带复制时,先根据源频段和需要进行频带复制的零比特编码子带的起始序号计算该零比特编码子带的源频段复制起始序号,再以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性地复制到零比特编码子带。
18.如权利要求17所述的方法,其特征在于,步骤C2中计算该零比特编码子带的源频段复制起始序号的方法为:
获得需要重构频域系数的零比特编码子带的起始MDCT频域系数的频点的序号,记为fillband_start_freq,将音调对应的频点的序号记为Tonal_pos,将Tonal_pos加1得到复制周期copy_period,将频带复制偏移记为copyband_offset,将fillband_start_freq的值循环减去copy_period,直到该值落在源频段的序号的值区间,该值为源频段复制起始序号,记为copy_pos_mod。
19.如权利要求18所述的方法,其特征在于,步骤C2中以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性复制到零比特编码子带的方法为:
将以源频段复制起始序号开始的频域系数依次向后复制到以fillband_start_freq为起始位置的零比特编码子带上,直到源频段复制的频点到达Tonal_pos+copyband_offset频点后,重新将从第copyband_offset个频点开始的频域系数继续向后复制到该零比特编码子带上,依此类推,直到完成当前零比特编码子带的所有频域系数的频带复制。
20.如权利要求10所述的方法,其特征在于,步骤C2中,采用以下方法对零比特编码子带复制后得到的频域系数进行能量调整:
计算零比特编码子带频带复制后得到的频域系数的幅值包络,记为 sbr_rms(r);
对复制后得到的频域系数进行能量调整的公式为:
其中, 表示零比特编码子带r的能量调整后的频域系数,X_sbr(r)表示零比特编码子带r通过复制后得到的频域系数,sbr_rms(r)是零比特编码子带r复制后得到的频域系数X_sbr(r)的幅值包络,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,sbr_lev_scale(r)为零比特编码子带r的频带复制的能量控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
21.如权利要求10所述的方法,其特征在于,步骤C2中,根据以下公式对能量调整后的频域系数进行噪声填充:
其中, 表示零比特编码子带r重构频域系数, 表示零比特编码子带r的能量调整后的频域系数,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,random()为随机相位发生器,产生随机相位值,其返回值为+1或-1,noise_lev_scale(r)为零比特编码子带r的噪声水平控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
22.如权利要求11所述的方法,其特征在于:步骤B2中,对各编码子带进行比特分配后,将编码子带划分为若干个噪声填充子带,对有效噪声填充子带进行比特分配,步骤C2中,对分配了比特的有效噪声填充子带中的零比特编码子带进行频带复制并控制所复制频域系数的能量水平及噪声填充的能量水平,对未分配比特的有效噪声填充子带中的零比特编码子带进行噪声填充,其中有效噪声填充子带指含有零比特编码子带的噪声填充子带。
23.一种音频编码系统,该系统包括修正离散余弦变换MDCT单元、幅值包络计算单元、幅值包络量化和编码单元、比特分配单元、频域系数编码单元及比特流复用器MUX,其特征在于,该系统还包括噪声水平估计单元,其中:
MDCT单元,用于对音频信号进行修正离散余弦逆变换变换生成频域系数;
幅值包络计算单元,与所述MDCT单元连接,用于将所述MDCT生成的频域系数划分为若干个编码子带,并计算各编码子带的幅值包络值;
幅值包络量化和编码单元,与所述幅值包络计算单元连接,用于将各编码子带的幅值包络值进行量化和编码,生成各编码子带幅值包络的编码比特;
比特分配单元,与所述幅值包络量化和编码单元连接,用于对各编码子带分配比特;
频域系数量化编码单元,与MDCT单元、比特分配单元及幅值包络量化和编码单元连接,用于对各编码子带中所有频域系数进行归一化、量化及编码处理,生成频域系数编码比特;
噪声水平估计单元,与MDCT单元及比特分配单元连接,用于根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱,进而估计零比特编码子带音频信号的噪声水平,并量化编码得到噪声水平编码比特;其中,该噪声水平用于在解码时控制噪声填充和频带复制的能量的比例;
比特流复用器MUX,与所述幅值包络量化和编码单元、频域系数编码 单元及噪声水平估计单元连接,用于将各编码子带的编码比特以及频域系数的编码比特复用并发送到解码端;
所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值。
24.如权利要求23所述的系统,其特征在于,所述噪声水平估计单元具体包括:
功率谱估计模块,用于根据待编码音频信号的MDCT频域系数估计待编码音频信号的功率谱;
噪声水平计算模块,与所述功率谱估计模块连接,用于根据所述功率谱估计模块估计的功率谱估计零比特编码子带音频信号的噪声水平;
噪声水平编码模块,与所述噪声水平计算模块连接,用于对所述噪声水平计算模块计算的噪声水平进行量化编码,获得噪声水平编码比特。
25.如权利要求24所述的系统,其特征在于:所述功率谱估计模块采用以下公式估计第i帧的频点k的功率,公式如下:
Pi(k)=λPi-1(k)+(1-λ)Xi(k)2,其中当i等于0时Pi-1(k)=0;Pi(k)表示第i帧的第k个频点估计得到的功率值;Xi(k)表示第i帧的第k个频点的MDCT系数,λ为单极平滑滤波器的滤波系数。
26.如权利要求24所述的系统,其特征在于:
待编码音频信号的频域系数划分成一个或若干个噪声填充子带,所述噪声水平计算模块的功能具体包括:用于计算该有效噪声填充子带中所有或部分零比特编码子带的所有频域系数功率的平均值,得到平均功率P_aveg(j);用于计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)大于平均功率P_aveg(j)的所有频域系数的功率的平均值,得到该有效噪声填充子带中零比特编码子带的音调成分平均功率P_signal_aveg(j);用于计算该有效噪声填充子带所有或部分零比特编码子带中功率Pi(k)小于或等于平均功率P_aveg(j)的所有频域系数的功率Pi(k)的平均值,得到该有效噪声填充子带中零比特编码子带的噪声成分平均功率P_noise_aveg(j);用于计算噪声成 分平均功率P_noise_aveg(j)和音调成分平均功率P_signal_aveg(j)的比值,得到该有效噪声填充子带的噪声水平;
其中,有效噪声填充子带指含有零比特编码子带的噪声填充子带。
27.如权利要求24所述的系统,其特征在于:所述噪声水平估计单元还包括与噪声水平计算模块及噪声水平编码模块连接的比特分配模块,用于为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分配比特,以及通知噪声水平计算模块及噪声水平编码模块;所述噪声水平计算模块仅为分配了比特的噪声填充子带计算噪声水平;所述噪声水平编码模块利用比特分配模块分配的比特对所述噪声水平进行量化编码。
28.一种音频解码系统,该系统包括比特流解复用器DeMUX、编码子带幅值包络解码单元、比特分配单元、频域系数解码单元、频谱重构单元、修正离散余弦逆变换IMDCT单元,其特征在于:
所述DeMUX,用于从待解码比特流中分离出幅值包络编码比特、频域系数编码比特以及噪声水平编码比特;
所述幅值包络解码单元,与所述DeMUX连接,用于对所述比特流解复用器输出的幅值包络编码比特进行解码,得到各编码子带的幅值包络量化指数;
所述比特分配单元,与所述幅值包络解码单元连接,用于进行比特分配,得到各编码子带中为每个频域系数所分配的编码比特数;
频域系数解码单元,与幅值包络解码单元和比特分配单元连接,用于对编码子带进行解码、反量化及反归一化以得到频域系数;
噪声水平解码单元,与所述比特流解复用器及比特分配单元连接,用于对噪声水平编码比特进行解码反量化获得噪声水平;
所述频谱重构单元,与所述噪声水平解码单元、频域系数解码单元、幅值包络解码单元及比特分配单元连接,用于对零比特编码子带进行频带复制,并根据幅值包络解码单元输出的幅值包络控制该编码子带的整体能量填 充水平,根据噪声水平解码单元输出的零比特编码子带音频信号的噪声水平控制噪声填充和频带复制的能量的比例,获得重构的零比特编码子带的频域系数;
IMDCT单元,与所述频谱重构单元连接,用于对完成零比特编码子带的频谱重构后的频域系数进行IMDCT,得到的音频信号;
所述零比特编码子带音频信号的噪声水平指零比特编码子带内估计得到的噪声成分功率与零比特编码子带估计得到的音调成分功率的比值。
29.如权利要求28所述的系统,其特征在于:
所述频谱重构单元包括依次连接的频带复制子单元、能量调整子单元及噪声填充子单元,其中:
频带复制子单元,用于对零比特编码子带进行频带复制;
能量调整子单元,用于计算零比特编码子带频带复制后得到的频域系数的幅值包络,记为sbr_rms(r);以及根据噪声水平解码单元输出的噪声水平对复制后得到的频域系数进行能量调整,能量调整的公式为:
其中, 表示零比特编码子带r的能量调整后的频域系数,X_sbr(r)表示零比特编码子带r复制后得到的频域系数,sbr_rms(r)是零比特编码子带r复制后得到的频域系数X_sbr(r)的幅值包络,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,sbr_lev_scale(r)为零比特编码子带r的频带复制的能量控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
fill_energy_saclefactor为填充能量比例因子,用于调整整体的填充能量的增益,其取值范围为(0,1), 为解码反量化得到的噪声填充子带j的噪声水平,其中j为零比特编码子带r所在的噪声填充子带的序号;
噪声填充子单元,用于根据噪声水平解码单元输出的噪声水平对能量调整后的频域系数进行噪声填充,噪声填充的公式为:
其中, 表示零比特编码子带r重构频域系数, 表示零比特编码子带r的能量调整后的频域系数,rms(r)是零比特编码子带r的编码前频域系数的幅值包络,由幅值包络量化指数反量化得到,random()为随机相位发生器,产生随机相位值,其返回值为+1或-1,noise_lev_scale(r)为零比特编码子带r的噪声水平控制比例因子,其值由零比特编码子带r所在的噪声填充子带的噪声水平决定,具体计算公式如下:
30.如权利要求28所述的系统,其特征在于:所述频带复制子单元包括依次连接的音调位置搜索模块、周期及源频段计算模块、源频段复制起始序号计算模块及频带复制模块,其中:
音调位置搜索模块,用于在MDCT频域系数中搜索音频信号的某个音调所在的位置,
周期及源频段计算模块,用于根据音调所在位置确定用于复制的频带复制周期及源频段,该频带复制周期为0频点到音调位置的频点的带宽,所述源频段为0频点向后偏移频带复制偏移copyband_offset的频点到音调位置的频点向后偏移所述copyband_offset的频点的频段;
源频段复制起始序号计算模块,用于根据源频段和需要进行频带复制的零比特编码子带的起始序号计算该零比特编码子带的源频段复制起始序号;
所述频带复制模块用于以频带复制周期为周期,从源频段复制起始序号开始将源频段的频域系数周期性复制到零比特编码子带;如零比特编码子带内部的最高频率小于搜索到的音调的频率,则该频点只采用噪声填充进行频谱重构。
31.如权利要求30所述的系统,其特征在于:所述音调位置搜索模块采用如下方法搜索音调所在位置:对第一频段的MDCT频域系数取绝对值或平方值,并进行平滑滤波;根据平滑滤波的结果,搜索第一频段滤波输出值的最大极值所在的位置,该最大极值所在的位置即音调所在的位置。
33.如权利要求30所述的系统,其特征在于,所述第一频段是根据频谱的统计特性确定的能量比较集中的低频的频段,其中低频指小于二分之一信号总带宽的频谱成分。
34.如权利要求30所述的系统,其特征在于:所述音调位置搜索模块计算模块直接从第一频段对应的频域系数的滤波输出值中搜索初始最大值,将该最大值作为第一频段滤波输出值的最大极值。
35.如权利要求30所述的系统,其特征在于:所述音调位置搜索模块确定滤波输出值的最大极值时,将该第一频段的其中一段作为第二频段,先从第二频段对应的频域系数的滤波输出值中搜索初始最大值,再根据该初始最大值对应的频域系数的位置进行不同的处理:
a.如果该初始最大值为第二频段最低频率的频域系数的滤波输出值,则将该第二频段最低频率的频域系数的滤波输出值与在第一频段中前一个更低频率的频域系数的滤波输出值相比较,依次向前比较,直到当前频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最低频率 的频域系数的滤波输出值大于后一个频域系数的滤波输出值时,则第一频段的最低频率的频域系数的滤波输出值为最终确定的最大极值;
b.如果该初始最大值为第二频段最高频率的频域系数的滤波输出值,则将该第二频段最高频率的频域系数的滤波输出值与在第一频段中后一个更高频率的频域系数的滤波输出值相比较,依次向后比较,直到当前频域系数的滤波输出值比后一个频域系数的滤波输出值大时,则该当前频域系数的滤波输出值为最终确定的最大极值,或,直到比较得出第一频段的最高频率的频域系数的滤波输出值比前一个频域系数的滤波输出值大时,则第一频段的最高频率的频域系数的滤波输出值为最终确定的最大极值;
c.如果该初始最大值为第二频段最低频率与最高频率之间的频域系数的滤波输出值,则该初始最大值对应的频域系数为音调所在的位置,即,该初始最大值为最终确定的最大极值。
36.如权利要求30所述的系统,其特征在于:
所述源频段复制起始序号计算模块计算需要进行频带复制的零比特编码子带的源频段复制起始序号的过程包括:获得当前需要重构频域系数的零比特编码子带的起始频点的序号,记为fillband_start_freq,将音调对应的频点的序号记为Tonal_pos,将Tonal_pos加1得到复制周期copy_period,将频带复制偏移copyband_offset作为源频段起始序号,将fillband_start_freq的值循环减去copy_period,直到该值落在源频段的序号的值区间,该值为源频段复制起始序号,记为copy_pos_mod。
37.如权利要求36所述的系统,其特征在于:频带复制模块进行频带复制时,将以源频段复制起始序号开始的频域系数依次向后复制到以fillband_start_freq为起始位置的零比特编码子带上,直到源频段复制的频点到达Tonal_pos+copyband_offset频点后,重新将从第copyband_offset个频点开始的频域系数继续向后复制到该零比特编码子带上,依此类推,直到完成当前零比特编码子带的所有频域系数复制。
38.如权利要求28所述的系统,其特征在于:
所述比特分配单元还用于为所有有效噪声填充子带分配比特或跳过一个或几个低频的有效噪声填充子带,为后续的较高频的有效噪声填充子带分 配比特;所述能量调整子单元对频带复制后得到的频域系数进行能量调整;所述噪声填充子单元对能量调整后的频域系数及未分配比特的噪声填充子带中的零比特编码子带进行噪声填充。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010191850619A CN102194457B (zh) | 2010-03-02 | 2010-03-02 | 音频编解码方法、系统及噪声水平估计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010191850619A CN102194457B (zh) | 2010-03-02 | 2010-03-02 | 音频编解码方法、系统及噪声水平估计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102194457A CN102194457A (zh) | 2011-09-21 |
CN102194457B true CN102194457B (zh) | 2013-02-27 |
Family
ID=44602411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010191850619A Active CN102194457B (zh) | 2010-03-02 | 2010-03-02 | 音频编解码方法、系统及噪声水平估计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102194457B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11842743B2 (en) | 2015-03-13 | 2023-12-12 | Dolby International Ab | Decoding audio bitstreams with enhanced spectral band replication metadata in at least one fill element |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103918029B (zh) * | 2011-11-11 | 2016-01-20 | 杜比国际公司 | 使用过采样谱带复制的上采样 |
CN103137133B (zh) * | 2011-11-29 | 2017-06-06 | 南京中兴软件有限责任公司 | 非激活音信号参数估计方法及舒适噪声产生方法及系统 |
CN102594701A (zh) * | 2012-03-14 | 2012-07-18 | 中兴通讯股份有限公司 | 一种频谱重构的确定方法及系统 |
CN104704559B (zh) * | 2012-10-01 | 2017-09-15 | 日本电信电话株式会社 | 编码方法以及编码装置 |
CN105976824B (zh) | 2012-12-06 | 2021-06-08 | 华为技术有限公司 | 信号解码的方法和设备 |
CN103903634B (zh) * | 2012-12-25 | 2018-09-04 | 中兴通讯股份有限公司 | 激活音检测及用于激活音检测的方法和装置 |
CN103971694B (zh) * | 2013-01-29 | 2016-12-28 | 华为技术有限公司 | 带宽扩展频带信号的预测方法、解码设备 |
WO2014118175A1 (en) | 2013-01-29 | 2014-08-07 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Noise filling concept |
EP2830061A1 (en) * | 2013-07-22 | 2015-01-28 | Fraunhofer Gesellschaft zur Förderung der angewandten Forschung e.V. | Apparatus and method for encoding and decoding an encoded audio signal using temporal noise/patch shaping |
EP2963645A1 (en) | 2014-07-01 | 2016-01-06 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Calculator and method for determining phase correction data for an audio signal |
EP2980792A1 (en) | 2014-07-28 | 2016-02-03 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Apparatus and method for generating an enhanced signal using independent noise-filling |
CN108109629A (zh) * | 2016-11-18 | 2018-06-01 | 南京大学 | 一种基于线性预测残差分类量化的多描述语音编解码方法和系统 |
CN107945811B (zh) * | 2017-10-23 | 2021-06-01 | 北京大学 | 一种面向频带扩展的生成式对抗网络训练方法及音频编码、解码方法 |
CN112290975B (zh) * | 2019-07-24 | 2021-09-03 | 北京邮电大学 | 一种用于音频信息隐藏系统的噪声估计接收方法和装置 |
CN110992739B (zh) * | 2019-12-26 | 2021-06-01 | 上海松鼠课堂人工智能科技有限公司 | 学生在线听写系统 |
CN113539281B (zh) * | 2020-04-21 | 2024-09-06 | 华为技术有限公司 | 音频信号编码方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1462429A (zh) * | 2001-05-08 | 2003-12-17 | 皇家菲利浦电子有限公司 | 声频编码 |
CN1677492A (zh) * | 2004-04-01 | 2005-10-05 | 北京宫羽数字技术有限责任公司 | 一种增强音频编解码装置及方法 |
CN101281748A (zh) * | 2008-05-14 | 2008-10-08 | 武汉大学 | 用编码索引实现的空缺子带填充方法及编码索引生成方法 |
CN101393741A (zh) * | 2007-09-19 | 2009-03-25 | 中兴通讯股份有限公司 | 一种宽带音频编解码器中的音频信号分类装置及分类方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2571024B1 (en) * | 2007-08-27 | 2014-10-22 | Telefonaktiebolaget L M Ericsson AB (Publ) | Adaptive transition frequency between noise fill and bandwidth extension |
-
2010
- 2010-03-02 CN CN2010191850619A patent/CN102194457B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1462429A (zh) * | 2001-05-08 | 2003-12-17 | 皇家菲利浦电子有限公司 | 声频编码 |
CN1677492A (zh) * | 2004-04-01 | 2005-10-05 | 北京宫羽数字技术有限责任公司 | 一种增强音频编解码装置及方法 |
CN101393741A (zh) * | 2007-09-19 | 2009-03-25 | 中兴通讯股份有限公司 | 一种宽带音频编解码器中的音频信号分类装置及分类方法 |
CN101281748A (zh) * | 2008-05-14 | 2008-10-08 | 武汉大学 | 用编码索引实现的空缺子带填充方法及编码索引生成方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11842743B2 (en) | 2015-03-13 | 2023-12-12 | Dolby International Ab | Decoding audio bitstreams with enhanced spectral band replication metadata in at least one fill element |
Also Published As
Publication number | Publication date |
---|---|
CN102194457A (zh) | 2011-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102194457B (zh) | 音频编解码方法、系统及噪声水平估计方法 | |
CN101878504B (zh) | 使用时间分辨率能选择的低复杂性频谱分析/合成 | |
CN101276587B (zh) | 声音编码装置及其方法和声音解码装置及其方法 | |
JP4950210B2 (ja) | オーディオ圧縮 | |
CN101425294B (zh) | 声音编解码与发送接收设备及编码方法、通信终端和基站 | |
JP4861196B2 (ja) | Acelp/tcxに基づくオーディオ圧縮中の低周波数強調の方法およびデバイス | |
JP6980871B2 (ja) | 信号符号化方法及びその装置、並びに信号復号方法及びその装置 | |
US10311884B2 (en) | Advanced quantizer | |
CN109313908B (zh) | 用于对音频信号进行编码的音频编码器以及方法 | |
Ravelli et al. | Union of MDCT bases for audio coding | |
EP1852851A1 (en) | An enhanced audio encoding/decoding device and method | |
CN101390159A (zh) | 在解码器和相应设备中可靠识别和衰减数字信号中的回声的方法 | |
CN103366755A (zh) | 对音频信号进行编码和解码的方法和设备 | |
CN102208188A (zh) | 音频信号编解码方法和设备 | |
CN105518776A (zh) | 用于使用重构频带的能量信息值对音频信号进行解码或编码的设备及方法 | |
CN102859589A (zh) | 多模式音频编译码器及其适用的码簿激励线性预测编码 | |
JP2013015598A (ja) | オーディオ符号化/復号化方法、システム及びノイズレベルの推定方法 | |
EP2814028B1 (en) | Audio and speech coding device, audio and speech decoding device, method for coding audio and speech, and method for decoding audio and speech | |
CN102918590B (zh) | 编码方法和装置、以及解码方法和装置 | |
EP2227682A1 (en) | An encoder | |
EP3008725A1 (en) | Apparatus and method for audio signal envelope encoding, processing and decoding by splitting the audio signal envelope employing distribution quantization and coding | |
WO2014198726A1 (en) | Apparatus and method for audio signal envelope encoding, processing and decoding by modelling a cumulative sum representation employing distribution quantization and coding | |
KR20080034817A (ko) | 부호화/복호화 장치 및 방법 | |
KR20160098597A (ko) | 통신 시스템에서 신호 코덱 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |