彭科 (中国广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦中兴通讯股份有限公司转交, Guangdong 7, 518057, CN)
CHEN, Guoming (ZTE Plaza Keji Road South, Hi-Tech Industrial Park, Nansha, Shenzhen Guangdong 7, 518057, CN)
陈国明 (中国广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦中兴通讯股份有限公司转交, Guangdong 7, 518057, CN)
YUAN, Hao (ZTE Plaza Keji Road South, Hi-Tech Industrial Park, Nansha, Shenzhen Guangdong 7, 518057, CN)
中兴通讯股份有限公司 (中国广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦, Guangdong 7, 518057, CN)
PENG, Ke (ZTE Plaza Keji Road South, Hi-Tech Industrial Park, Nansha, Shenzhen Guangdong 7, 518057, CN)
彭科 (中国广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦中兴通讯股份有限公司转交, Guangdong 7, 518057, CN)
CHEN, Guoming (ZTE Plaza Keji Road South, Hi-Tech Industrial Park, Nansha, Shenzhen Guangdong 7, 518057, CN)
陈国明 (中国广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦中兴通讯股份有限公司转交, Guangdong 7, 518057, CN)
| 权 利 要 求 书 1、 一种可分层音频编码方法, 包括: 对当前帧的音频信号进行瞬态判决; 瞬态判决为稳态信号时, 对加窗后的音频信号直接进行时频变换得到总 的频域系数; 瞬态判决为瞬态信号时, 将音频信号分成 个子帧, 对每个子 帧进行时频变换, 变换得到的 组频域系数构成当前帧总的频域系数, 对总 的频域系数按照编码子带从低频到高频的顺序进行重排, 其中, 所述总的频 域系数包括核心层频域系数和扩展层频域系数, 所述编码子带包括核心层编 码子带和扩展层编码子带, 核心层频域系数构成若干个核心层编码子带, 扩 展层频域系数构成若干个扩展层编码子带; 对核心层编码子带和扩展层编码子带的幅值包络值进行量化和编码, 得 到核心层编码子带和扩展层编码子带的幅值包络量化指数及其编码比特; 其 中, 若为稳态信号, 则对核心层编码子带和扩展层编码子带的幅值包络值进 行统一量化; 若为瞬态信号, 则对核心层编码子带和扩展层编码子带的幅值 包络值分别进行单独量化, 以及对核心层编码子带的幅值包络量化指数和扩 展层编码子带的幅值包络量化指数分别进行重排; 根据核心层编码子带的幅值包络量化指数对核心层编码子带进行比特分 配,然后对核心层频域系数进行量化和编码得到核心层频域系数的编码比特; 对前述核心层中经过矢量量化的频域系数进行反量化, 并与原始的经过 时频变换后得到的频域系数进行差计算, 得到核心层残差信号; 根据核心层编码子带的幅值包络量化指数和比特分配数计算核心层残差 信号的幅值包络量化指数; 根据核心层残差信号的幅值包络量化指数和扩展层编码子带的幅值包络 量化指数对扩展层编码信号的编码子带进行比特分配, 然后对扩展层编码信 号进行量化和编码得到扩展层编码信号的编码比特, 其中, 所述扩展层编码 信号由核心层残差信号和扩展层频域系数构成; 将核心层和扩展层编码子带的幅值包络编码比特、 核心层频域系数编码 比特和扩展层编码信号的编码比特复用打包后, 传送给解码端。 2、 如权利要求 1所述的方法, 其中, 当瞬态判决为瞬态信号时, 构成当 前帧总的频域系数的步骤包括: 将当前帧的 N点时域釆样信号 x(n)与上一帧的 N点时域釆样信号 Xouin) 组成 2N点时域釆样信号 《) , 然后对 《)实施加窗和时域抗混叠处理得到 N 点时域釆样信号 x(n); 对时域信号 做对称变换, 接着在信号两端各添加一段零序列, 将加 长后的信号分成 个互相交迭的子帧,然后对每个子帧的时域信号实施加窗、 时域抗混叠处理和时频变换,得到 组频域系数,构成当前帧总的频域系数。 3、 如权利要求 1所述的方法, 其中, 当瞬态判决为瞬态信号, 对频域系 数进行重排时, 在核心层和扩展层范围内按照编码子带从低频到高频的顺序 分别进行频域系数的重排。 4、 如权利要求 1所述的方法,其中, 所述对幅值包络量化指数进行重排 包括: 将同一子帧内的编码子带的幅值包络量化指数按照频率递增或递减的顺 序重新排列在一起, 在子帧连接处釆用分属于两个子帧的代表对等频率的两 个编码子带来连接。 5、 如权利要求 1所述的方法, 其中, 该方法还包括: 当瞬态判决为稳态 信号时, 对量化得到的核心层编码子带的幅值包络量化指数进行霍夫曼编码, 若 所有核心层编码子带的幅值包络量化指数经过霍夫曼编码后所消耗比特的总 数小于所有核心层编码子带的幅值包络量化指数经过自然编码所消耗比特的 总数, 则使用霍夫曼编码, 否则使用自然编码, 并设置核心层编码子带的幅 值包络霍夫曼编码标识信息; 对量化得到的扩展层编码子带的幅值包络量化指数进行霍夫曼编码, 若 所有扩展层编码子带的幅值包络量化指数经过霍夫曼编码后所消耗比特的总 数小于所有扩展层编码子带的幅值包络量化指数经过自然编码所消耗比特的 总数, 则使用霍夫曼编码, 否则使用自然编码, 并设置扩展层编码子带的幅 值包络霍夫曼编码标识信息。 6、 如权利要求 1所述的方法, 其中, 该方法还包括: 釆用如下方式计算 核心层残差信号编码子带的幅值包络量化指数: 根据核心层编码子带的比特分配数, 推算核心层残差信号幅值包络量化 指数的修正值; 对核心层编码子带的幅值包络量化指数和对应编码子带的核 心层残差信号幅值包络量化指数的修正值进行差计算, 得到核心层残差信号 幅值包络量化指数; 各编码子带的核心层残差信号幅值包络量化指数修正值大于等于 0, 且 对应核心层编码子带的比特分配数增加时不减小; 当某个核心层编码子带的比特分配数为 0时, 核心层残差信号幅值包络 量化指数修正值为 0 , 当某个核心层编码子带的比特分配数为所限定的最大 比特分配数时, 对应的核心层残差信号的幅值包络值为零。 7、 如权利要求 1所述的方法,其中, 所述对核心层频域系数进行量化和 编码包括: 对核心层所有使用塔型格型矢量量化得到的量化索引进行霍夫曼编码; 若所有使用塔型格型矢量量化得到的量化索引经过霍夫曼编码后所消耗 比特的总数小于所有使用塔型格型矢量量化得到的量化索引经过自然编码所 消耗比特的总数, 则使用霍夫曼编码, 利用霍夫曼编码节省下来的比特、 初 次比特分配剩余比特数、 对单个频域系数所分配到的比特数为 1或 2的所有 编码子带编码所节省比特的总数对编码子带的比特分配数进行修正, 以及对 修正了比特分配数的编码子带再次进行矢量量化和霍夫曼编码; 否则使用自 然编码, 利用初次比特分配剩余比特数、 对单个频域系数所分配到的比特数 为 1或 2的所有编码子带编码所节省比特的总数对编码子带的比特分配数进 行修正,以及对修正了比特分配数的编码子带再次进行矢量量化和自然编码; 所述对扩展层编码信号进行量化和编码包括: 对扩展层所有使用塔型格型矢量量化得到的量化索引进行霍夫曼编码; 若所有使用塔型格型矢量量化得到的量化索引经过霍夫曼编码后所消耗 比特的总数小于所有使用塔型格型矢量量化得到的量化索引经过自然编码所 消耗比特的总数, 则使用霍夫曼编码, 利用霍夫曼编码节省下来的比特、 初 次比特分配剩余比特数、 对单个频域系数所分配到的比特数为 1或 2的所有 编码子带编码所节省比特的总数对编码子带的比特分配数进行修正, 以及对 修正了比特分配数的编码子带再次进行矢量量化和霍夫曼编码; 否则使用自 然编码, 利用初次比特分配剩余比特数、 对单个频域系数所分配到的比特数 为 1或 2的所有编码子带编码所节省比特的总数对编码子带的比特分配数进 行修正,以及对修正了比特分配数的编码子带再次进行矢量量化和自然编码。 8、 一种可分层音频解码方法, 该方法包括: 对编码端传送过来的比特流进行解复用, 对核心层编码子带和扩展层编 码子带的幅值包络编码比特解码, 得到核心层编码子带和扩展层编码子带的 幅值包络量化指数; 若瞬态判决信息表明为瞬态信号, 还对核心层编码子带 和扩展层编码子带的幅值包络量化指数按照频率从小到大的顺序分别进行重 排; 根据核心层编码子带的幅值包络量化指数, 对核心层编码子带进行比特 分配, 并由此计算核心层残差信号的幅值包络量化指数, 根据核心层残差信 号的幅值包络量化指数和扩展层编码子带的幅值包络量化指数对扩展层编码 信号的编码子带进行比特分配; 根据核心层编码子带和扩展层编码信号的编码子带的比特分配数, 分别 对核心层频域系数的编码比特和扩展层编码信号的编码比特解码, 得到核心 层频域系数和扩展层编码信号, 将扩展层编码信号按照子带顺序重新排列, 并和核心层频域系数相加, 得到全体带宽的频域系数; 若所述瞬态判决信息表明为稳态信号, 则对全体带宽的频域系数直接进 行时频逆变换, 得到输出的音频信号; 若所述瞬态判断信息表明为瞬态信号, 则将全体带宽的频域系数进行重排, 然后分成 组频域系数, 对每一组频域 系数进行时频逆变换, 根据变换得到的 组时域信号计算得到最终的音频信 号。 9、 如权利要求 8所述的方法,其中, 所述计算核心层残差信号的幅值包 络量化指数的步骤包括: 根据核心层编码子带的比特分配数, 推算核心层残 差信号幅值包络量化指数的修正值; 对核心层编码子带的幅值包络量化指数 和对应编码子带的核心层残差信号幅值包络量化指数的修正值进行差计算, 得到核心层残差信号幅值包络量化指数; 各编码子带的核心层残差信号幅值包络量化指数修正值大于等于 0, 且 对应核心层编码子带的比特分配数增加时不减小; 当某个核心层编码子带的比特分配数为 0时, 核心层残差信号幅值包络 量化指数修正值为 0 , 当某个核心层编码子带的比特分配数为所限定的最大 比特分配数时, 对应的核心层残差信号的幅值包络值为零。 10、 如权利要求 8所述的方法,其中,若瞬态判决信息表明为瞬态信号, 则将全体带宽的频域系数进行重排, 包括: 将属于同一子帧的频域系数按照 编码子带从低频到高频的顺序排列,得到 组频域系数后,再将 组频域系 数按照子帧的顺序排列。 11、 如权利要求 8所述的方法,其中,若瞬态判决信息表明为瞬态信号, 根据变换得到的 组时域信号计算得到最终的音频信号的过程包括: 对每一 组时域信号进行逆时域抗混叠处理,接着对这 组得到的信号进行加窗处理, 然后对这 M组加窗后信号进行交迭相加, 得到 N点时域釆样信号 ; 对时域信号 进行逆时域抗混叠处理和加窗处理, 对相邻两帧进行交 迭相加, 得到最终的音频输出信号。 12、 一种瞬态信号的可分层音频编码方法, 该方法包括: 将音频信号分成 个子帧,对每个子帧进行时频变换, 变换得到的 组 频域系数构成当前帧总的频域系数, 对总的频域系数按照编码子带从低频到 高频的顺序进行重排, 其中, 所述总的频域系数包括核心层频域系数和扩展 层频域系数, 所述编码子带包括核心层编码子带和扩展层编码子带, 核心层 频域系数构成若干个核心层编码子带, 扩展层频域系数构成若干个扩展层编 码子带; 对核心层编码子带和扩展层编码子带的幅值包络值进行量化和编码, 得 到核心层编码子带和扩展层编码子带的幅值包络量化指数及其编码比特, 其 中对核心层编码子带和扩展层编码子带的幅值包络值分别进行单独量化, 以 及对核心层编码子带的幅值包络量化指数和扩展层编码子带的幅值包络量化 指数分别进行重排; 根据核心层编码子带的幅值包络量化指数对核心层编码子带进行比特分 配,然后对核心层频域系数进行量化和编码得到核心层频域系数的编码比特; 对前述核心层中经过矢量量化的频域系数进行反量化, 并与原始的经过 时频变换后得到的频域系数进行差计算, 得到核心层残差信号; 根据核心层编码子带的幅值包络量化指数和核心层编码子带的比特分配 数计算核心层残差信号编码子带的幅值包络量化指数; 根据核心层残差信号的幅值包络量化指数和扩展层编码子带的幅值包络 量化指数对扩展层编码信号的编码子带进行比特分配, 然后对扩展层编码信 号进行量化和编码得到扩展层编码信号的编码比特, 其中, 所述扩展层编码 信号由核心层残差信号和扩展层频域系数构成; 将核心层编码子带和扩展层编码子带的幅值包络编码比特、 核心层频域 系数的编码比特和扩展层编码信号的编码比特复用打包后, 传送给解码端。 13、 如权利要求 12所述的方法,其中,构成当前帧总的频域系数的步骤 包括: 将当前帧的 N点时域釆样信号 χ(η)与上一帧的 Ν点时域釆样信号 Xouin) 组成 2N点时域釆样信号 《) , 然后对 《)实施加窗和时域抗混叠处理得到 N 点时域釆样信号^ 对时域信号 做对称变换, 接着在信号两端各添加一段零序列, 将加 长后的信号分成 个互相交迭的子帧,然后对每个子帧的时域信号实施加窗、 时域抗混叠处理和时频变换,得到 组频域系数,构成当前帧总的频域系数。 14、 如权利要求 12所述的方法,其中,在核心层和扩展层范围内按照编 码子带从低频到高频的顺序分别进行频域系数的重排。 15、 如权利要求 12所述的方法,其中, 所述对幅值包络量化指数进行重 排包括: 将同一子帧内的编码子带的幅值包络量化指数按照频率递增或递减的顺 序重新排列在一起, 在子帧连接处釆用分属于两个子帧的代表对等频率的两 个编码子带来连接。 16、 一种瞬态信号的可分层解码方法, 该方法包括: 对编码端传送过来的比特流进行解复用, 对核心层编码子带和扩展层编 码子带的幅值包络编码比特解码, 得到核心层编码子带和扩展层编码子带的 幅值包络量化指数, 对核心层编码子带和扩展层编码子带的幅值包络量化指 数按照频率从 、到大的顺序分别进行重排; 根据重排后的核心层编码子带的幅值包络量化指数, 对核心层编码子带 进行比特分配, 并由此计算核心层残差信号的幅值包络量化指数; 根据核心层残差信号的幅值包络量化指数和重排后的扩展层编码子带的 幅值包络量化指数对扩展层编码子带进行比特分配; 根据核心层编码子带和扩展层编码信号的编码子带的比特分配数, 分别 对核心层频域系数编码比特和扩展层编码信号编码比特解码, 得到核心层频 域系数和扩展层编码信号, 将扩展层编码信号按照子带顺序重新排列, 并和 核心层频域系数相加, 得到全体带宽的频域系数; 将全体带宽的频域系数进行重排, 然后分成 组, 对每一组频域系数进 行时频逆变换, 根据变换得到的 组时域信号计算得到最终的音频信号。 17、 如权利要求 16所述的方法,其中,将全体带宽的频域系数进行重排 的步骤包括: 将属于同一子帧的频域系数按照编码子带从低频到高频的顺序 排列, 得到 组频域系数后, 再将 组频域系数按照子帧的顺序排列。 18、 如权利要求 16所述的方法, 其中, 根据变换得到的 M组时域信号 计算得到最终的音频信号的过程包括: 对每一组进行逆时域抗混叠处理, 接 着对这 组得到的信号进行加窗处理,然后对这 组加窗后信号进行交迭相 加 , 得到 N点时域釆样信号 ; 对时域信号 进行逆时域抗混叠处理和加窗处理, 对相邻两帧进行交 迭相加, 得到最终的音频输出信号。 19、 一种可分层音频编码系统, 该系统包括: 频域系数生成单元、 幅值包络计算单元、 幅值包络量化和编码单元、 核 心层比特分配单元、核心层频域系数矢量量化和编码单元以及比特流复用器; 该系统还包括: 瞬态判决单元、 扩展层编码信号生成单元、 残差信号幅值包 络生成单元、扩展层比特分配单元以及扩展层编码信号矢量量化和编码单元; 其中: 所述瞬态判决单元设置为: 对当前帧的音频信号进行瞬态判决; 所述频域系数生成单元, 与所述瞬态判决单元连接, 所述频域系数生成 单元设置为: 瞬态判决为稳态信号时, 对加窗后的音频信号直接进行时频变 换得到总的频域系数; 瞬态判决为瞬态信号时, 将音频信号分成 个子帧, 对每个子帧进行时频变换, 变换得到的 M组频域系数构成当前帧总的频域系 数, 对总的频域系数按照编码子带从低频到高频的顺序进行重排, 其中, 所 述总的频域系数包括核心层频域系数和扩展层频域系数, 所述编码子带包括 核心层编码子带和扩展层编码子带, 核心层频域系数构成若干个核心层编码 子带, 扩展层频域系数构成若干个扩展层编码子带; 所述幅值包络计算单元, 与所述频域系数生成单元连接, 所述幅值包络 计算单元设置为: 计算核心层编码子带和扩展层编码子带的幅值包络值; 所述幅值包络量化和编码单元, 与所述幅值包络计算单元以及瞬态判决 单元连接, 所述幅值包络量化和编码单元设置为: 对核心层编码子带和扩展 层编码子带的幅值包络值进行量化和编码, 得到核心层编码子带和扩展层编 码子带的幅值包络量化指数及其编码比特; 其中, 若为稳态信号, 则对核心 层编码子带和扩展层编码子带的幅值包络值进行统一量化; 若为瞬态信号, 则对核心层编码子带和扩展层编码子带的幅值包络值分别进行单独量化, 以 及对核心层编码子带的幅值包络量化指数和扩展层编码子带的幅值包络量化 指数分别进行重排; 所述核心层比特分配单元, 与所述幅值包络量化和编码单元连接, 所述 核心层比特分配单元设置为: 根据核心层编码子带的幅值包络量化指数对核 心层编码子带进行比特分配, 得到核心层编码子带的比特分配数; 所述核心层频域系数矢量量化和编码单元, 与所述频域系数生成单元、 幅值包络量化和编码单元及核心层比特分配单元连接, 所述核心层频域系数 矢量量化和编码单元设置为: 使用根据核心层编码子带的幅值包络量化指数 重建的核心层编码子带的量化幅值包络值和核心层编码子带的比特分配数对 核心层编码子带的频域系数进行归一化、 矢量量化和编码, 得到核心层频域 系数编码比特; 所述扩展层编码信号生成单元, 与所述频域系数生成单元及核心层频域 系数矢量量化和编码单元连接, 所述扩展层编码信号生成单元设置为: 生成 核心层残差信号, 得到由核心层残差信号和扩展层频域系数构成的扩展层编 码信号; 所述残差信号幅值包络生成单元, 与所述幅值包络量化和编码单元及核 心层比特分配单元连接, 所述残差信号幅值包络生成单元设置为: 根据核心 层编码子带的幅值包络量化指数与对应的核心层编码子带的比特分配数, 得 到核心层残差信号的幅值包络量化指数; 所述扩展层比特分配单元, 与所述残差信号幅值包络生成单元及幅值包 络量化和编码单元连接, 所述扩展层比特分配单元设置为: 根据核心层残差 信号幅值包络量化指数和扩展层编码子带的幅值包络量化指数对扩展层编码 信号编码子带进行比特分配, 得到扩展层编码信号编码子带的比特分配数; 所述扩展层编码信号矢量量化和编码单元, 与所述幅值包络量化和编码 单元、 扩展层比特分配单元、 残差信号幅值包络生成单元及扩展层编码信号 生成单元连接, 所述扩展层编码信号矢量量化和编码单元设置为: 使用根据 扩展层编码信号编码子带的幅值包络量化指数重建的扩展层编码信号编码子 带的量化幅值包络值和扩展层编码信号编码子带的比特分配数对扩展层编码 信号进行归一化、 矢量量化和编码, 得到扩展层编码信号编码比特; 所述比特流复用器与所述幅值包络量化和编码单元、 核心层频域系数矢 量量化和编码单元、扩展层编码信号矢量量化和编码单元连接, 所述比特流 复用器设置为: 将核心层边信息比特、核心层编码子带的幅值包络的编码比 特、 核心层频域系数编码比特、 扩展层边信息比特, 扩展层编码子带的幅值 包络的编码比特和扩展层编码信号编码比特进行打包。 20、 如权利要求 19所述的系统, 其中, 所述扩展层编码信号生成单元还包括残差信号生成模块和扩展层编码信 号合成模块; 所述残差信号生成模块设置为:对核心层频域系数的量化值进行反量化, 并与核心层频域系数进行差计算, 得到核心层残差信号; 所述扩展层编码信号合成模块设置为: 将核心层残差信号和扩展层的频 域系数按频带的顺序合成, 得到扩展层编码信号。 21、 如权利要求 19所述的系统, 其中, 所述残差信号幅值包络生成单元还包括量化指数修正值获取模块和残差 信号幅值包络量化指数计算模块; 所述量化指数修正值获取模块设置为: 根据核心层编码子带的比特分配 数, 推算残差信号编码子带的量化指数修正值, 各编码子带的量化指数修正 值大于等于 0 , 且当对应的核心层编码子带的比特分配数增加时不减, 如果 核心层的某个编码子带的比特分配数为 0, 则核心层残差信号在该编码子带 的量化指数修正值为 0 , 如果核心层编码子带的比特分配数为所限定的最大 比特分配数, 则核心层残差信号在该编码子带的幅值包络值为零; 所述残差信号幅值包络量化指数计算模块设置为: 将核心层编码子带的 幅值包络量化指数与对应编码子带的量化指数修正值进行差计算, 得到核心 层残差信号编码子带的幅值包络量化指数。 22、 如权利要求 19所述的系统, 其中, 所述比特流复用器还设置为: 将 扩展层编码信号编码比特按照扩展层编码信号编码子带重要性的初始值从大 到小的顺序写入码流, 对于具有相同重要性的编码子带, 低频编码子带的编 码比特优先写入码流。 23、 如权利要求 19所述的系统, 其中, 所述频域系数生成单元设置为: 获取当前帧总的频域系数时, 将当前帧的 N点时域釆样信号 与上一帧的 N点时域釆样信号 x。w(«)组成 2N点时域釆样信号 ^τή , 然后对 ^τή实施加窗 和时域抗混叠处理得到 N点时域釆样信号 ("); 以及对时域信号^ 做对称 变换, 接着在信号两端各添加一段零序列, 将加长后的信号分成 个互相交 迭的子帧, 然后对每个子帧的时域信号实施加窗、 时域抗混叠处理和时频变 换, 得到 组频域系数, 构成当前帧总的频域系数。 24、 如权利要求 19所述的系统,其中,所述频域系数生成单元还设置为: 对频域系数进行重排时, 在核心层和扩展层范围内按照编码子带从低频到高 频的顺序分别进行频域系数的重排。 25、 如权利要求 19所述的系统,其中, 所述幅值包络量化和编码单元是 设置为: 对幅值包络量化指数进行重排指: 将同一子帧内的编码子带的幅值 包络量化指数按照频率递增或递减的顺序重新排列在一起, 在子帧连接处釆 用分属于两个子帧的代表对等频率的两个编码子带来连接。 26、 一种可分层音频解码系统, 该系统包括: 比特流解复用器、 幅值包 络解码单元、 核心层比特分配单元、 核心层解码和反量化单元; 该系统还包 括: 残差信号幅值包络生成单元、 扩展层比特分配单元、 扩展层编码信号解 码和反量化单元、 全体带宽频域系数恢复单元、 噪声填充单元和音频信号恢 复单元; 其中: 所述幅值包络解码单元, 与所述比特流解复用器连接, 所述幅值包络解 码单元设置为: 对所述比特流解复用器输出的核心层和扩展层编码子带的幅 值包络编码比特进行解码, 得到核心层编码子带和扩展层编码子带的幅值包 络量化指数; 若瞬态判决信息表明为瞬态信号, 还对核心层编码子带和扩展 层编码子带的幅值包络量化指数按照频率从小到大的顺序进行重排; 所述核心层比特分配单元, 与所述幅值包络解码单元连接, 所述核心层 比特分配单元设置为: 根据核心层编码子带的幅值包络量化指数, 对核心层 编码子带进行比特分配, 得到核心层编码子带的比特分配数; 所述核心层解码和反量化单元, 与所述比特流解复用器、 幅值包络解码 单元及核心层比特分配单元连接, 所述核心层解码和反量化单元设置为: 根 据核心层编码子带的幅值包络量化指数计算得到核心层编码子带的量化幅值 包络值, 使用核心层编码子带的比特分配数和量化幅值包络值对所述比特流 解复用器输出的核心层频域系数编码比特进行解码、反量化及反归一化处理, 得到核心层频域系数; 所述残差信号幅值包络生成单元, 与所述幅值包络解码单元及核心层比 特分配单元连接, 所述残差信号幅值包络生成单元设置为: 根据核心层编码 子带的幅值包络量化指数与对应核心层编码子带的比特分配数, 查找核心层 残差信号幅值包络量化指数的修正值统计表, 得到核心层残差信号的幅值包 络量化指数; 所述扩展层比特分配单元, 与所述残差信号幅值包络生成单元及幅值包 络解码单元连接, 所述扩展层比特分配单元设置为: 根据核心层残差信号的 幅值包络量化指数和扩展层编码子带的幅值包络量化指数进行扩展层编码信 号编码子带的比特分配, 得到扩展层编码信号编码子带的比特分配数; 所述扩展层编码信号解码和反量化单元, 与比特流解复用器、 所述幅值 包络解码单元、 扩展层比特分配单元及残差信号幅值包络生成单元连接, 所 述扩展层编码信号解码和反量化单元设置为: 使用扩展层编码信号编码子带 的幅值包络量化指数计算得到扩展层编码信号编码子带的量化幅值包络值, 使用扩展层编码信号编码子带的比特分配数和量化幅值包络值对所述比特流 解复用器输出的扩展层编码信号编码比特进行解码、反量化及反归一化处理, 得到扩展层编码信号; 所述全体带宽频域系数恢复单元, 与所述核心层解码和反量化单元以及 扩展层编码信号解码和反量化单元连接, 所述全体带宽频域系数恢复单元设 置为: 根据子带顺序对所述扩展层编码信号解码和反量化单元输出的扩展层 编码信号进行重新排序, 然后与所述核心层解码和反量化单元输出的核心层 频域系数做和计算, 得到全体带宽频域系数; 所述噪声填充单元, 与所述全体带宽频域系数恢复单元及幅值包络解码 单元连接, 所述噪声填充单元设置为: 对编码过程中未分配编码比特的子带 进行噪声填充; 所述音频信号恢复单元, 与所述噪声填充单元连接, 所述音频信号恢复 单元设置为: 若所述瞬态判决信息表明为稳态信号, 对全体带宽的频域系数 直接进行时频逆变换, 得到输出的音频信号; 若所述瞬态判决信息表明为瞬 态信号, 将全体带宽的频域系数进行重排, 然后分成 组频域系数, 对每一 组频域系数进行时频逆变换, 根据变换得到的 组时域信号计算得到最终的 音频信号。 27、 如权利要求 26所述的系统, 其中, 所述残差信号幅值包络生成单元还包括量化指数修正值获取模块和残差 信号幅值包络量化指数计算模块; 所述量化指数修正值获取模块设置为: 根据核心层编码子带的比特分配 数, 推算残差信号编码子带的量化指数修正值, 各编码子带的量化指数修正 值大于等于 0 , 且当对应的核心层编码子带的比特分配数增加时不减小, 如 果核心层的某个编码子带的比特分配数为 0, 则核心层残差信号在该编码子 带的量化指数修正值为 0 , 如果某个核心层编码子带的比特分配数为所限定 的最大比特分配数, 则核心层残差信号在该编码子带的幅值包络值为零; 所述残差信号幅值包络量化指数计算模块设置为: 将核心层编码子带的 幅值包络量化指数与对应编码子带的量化指数修正值进行差计算, 得到核心 层残差信号编码子带的幅值包络量化指数。 28、 如权利要求 26所述的系统, 其中, 所述扩展层编码信号解码和反量化单元还设置为: 对扩展层编码信号的 编码子带解码的顺序是根据扩展层编码信号的编码子带重要性的初始值决定 的, 重要性大的扩展层编码信号的编码子带优先解码, 如果有两个扩展层编 码信号的编码子带具有相同的重要性, 则低频编码子带优先解码, 解码过程 中计算已解码的比特数, 当已解码的比特数满足总比特数要求时停止解码。 29、 如权利要求 26所述的系统,其中,所述音频信号恢复单元是设置为: 对全体带宽的频域系数进行重排指: 将属于同一子帧的频域系数按照编码子 带从低频到高频的顺序排列,得到 组频域系数后,再将 组频域系数按照 子帧的顺序排列。 30、 如权利要求 26所述的系统,其中,所述音频信号恢复单元是设置为: 若瞬态判决信息表明为瞬态信号, 根据变换得到的 M组时域信号计算得到最 终的音频信号的过程包括: 对每一组时域信号进行逆时域抗混叠处理, 接着 对这 组得到的信号进行加窗处理,然后对这 组加窗后信号进行交迭相加, 得到 N点时域釆样信号 ;对时域信号 进行逆时域抗混叠处理和加窗 处理, 对相邻两帧进行交迭相加, 得到最终的音频输出信号。 |
技术领域
本发明涉及音频编解码技术, 尤其涉及一种可分层音频编解码方法、 系 统及瞬态信号可分层编解码方法。 背景技术
可分层音频编码是指以分层的方式组织音频编 码的码流, 一般分成一个 核心层和若干个扩展层, 解码器可以在没有高层(譬如扩展层)编码码 流的 情况下实现只对低层 (譬如核心层)编码码流进行解码, 解码的层数越多, 音质提高得越大。
可分层编码技术对于通信网络有非常重要的实 用价值。 一方面, 数据的 传输可以由不同信道共同合作完成, 而每个信道的丟包率都有可能不同, 这 时候往往需要对数据进行可分层处理, 将数据中重要的部分放在丟包率相对 较低的稳定信道中传输, 而将数据中次要的部分放在丟包率相对较高的 非稳 定信道中传输, 从而保证当非稳定信道丟包时只会产生相对的 音质下降, 而 不会出现一帧数据完全无法解码的情况。 另一方面, 某些通信网络(比如因 特网) 的带宽很不稳定, 不同用户之间的带宽各不相同, 不能釆用一个固定 的码率来兼顾不同带宽用户的需求, 而釆用可分层的编码方案就可以使得不 同用户在各自所拥有的带宽条件下获得最佳的 音质享受。
传统的可分层音频编码方案, 比如国际电信联合会 ( International Telecommunication Union, ITU ) 的标准 G.729.1和 G.VBR, 都没有针对瞬态 信号帧实施针对性的处理, 因此对于含有较多瞬态成分的信号 (比如打击乐 信号)编码效果较低, 尤其是在中低码率的传输条件下。
发明内容
本发明所要解决的技术问题是, 提供一种高效的可分层音频编码、 解码 方法及系统及瞬态信号可分层编解码方法,以 改善可分层音频编解码的质量。 为解决上述问题, 本发明提供了一种可分层音频编码方法, 包括: 对当前帧的音频信号进行瞬态判决;
瞬态判决为稳态信号时, 对加窗后的音频信号直接进行时频变换得到总 的频域系数; 瞬态判决为瞬态信号时, 将音频信号分成 个子帧, 对每个子 帧进行时频变换, 变换得到的 组频域系数构成当前帧总的频域系数, 对总 的频域系数按照编码子带从低频到高频的顺序 进行重排, 其中, 所述总的频 域系数包括核心层频域系数和扩展层频域系数 , 所述编码子带包括核心层编 码子带和扩展层编码子带, 核心层频域系数构成若干个核心层编码子带, 扩 展层频域系数构成若干个扩展层编码子带;
对核心层编码子带和扩展层编码子带的幅值包 络值进行量化和编码, 得 到核心层编码子带和扩展层编码子带的幅值包 络量化指数及其编码比特; 其 中, 若为稳态信号, 则对核心层编码子带和扩展层编码子带的幅值 包络值进 行统一量化; 若为瞬态信号, 则对核心层编码子带和扩展层编码子带的幅值 包络值分别进行单独量化, 以及对核心层编码子带的幅值包络量化指数和 扩 展层编码子带的幅值包络量化指数分别进行重 排;
根据核心层编码子带的幅值包络量化指数对核 心层编码子带进行比特分 配,然后对核心层频域系数进行量化和编码得 到核心层频域系数的编码比特; 对前述核心层中经过矢量量化的频域系数进行 反量化, 并与原始的经过 时频变换后得到的频域系数进行差计算, 得到核心层残差信号;
根据核心层编码子带的幅值包络量化指数和比 特分配数计算核心层残差 信号的幅值包络量化指数;
根据核心层残差信号的幅值包络量化指数和扩 展层编码子带的幅值包络 量化指数对扩展层编码信号的编码子带进行比 特分配, 然后对扩展层编码信 号进行量化和编码得到扩展层编码信号的编码 比特, 其中, 所述扩展层编码 信号由核心层残差信号和扩展层频域系数构成 ;
将核心层和扩展层编码子带的幅值包络编码比 特、 核心层频域系数编码 比特和扩展层编码信号的编码比特复用打包后 , 传送给解码端。
为解决上述问题, 本发明还提供了一种可分层音频解码方法, 该方法包 括:
对编码端传送过来的比特流进行解复用, 对核心层编码子带和扩展层编 码子带的幅值包络编码比特解码, 得到核心层编码子带和扩展层编码子带的 幅值包络量化指数; 若瞬态判决信息表明为瞬态信号, 还对核心层编码子带 和扩展层编码子带的幅值包络量化指数按照频 率从小到大的顺序分别进行重 排;
根据核心层编码子带的幅值包络量化指数, 对核心层编码子带进行比特 分配, 并由此计算核心层残差信号的幅值包络量化指 数, 根据核心层残差信 号的幅值包络量化指数和扩展层编码子带的幅 值包络量化指数对扩展层编码 信号的编码子带进行比特分配;
根据核心层编码子带和扩展层编码信号的编码 子带的比特分配数, 分别 对核心层频域系数的编码比特和扩展层编码信 号的编码比特解码, 得到核心 层频域系数和扩展层编码信号, 将扩展层编码信号按照子带顺序重新排列, 并和核心层频域系数相加, 得到全体带宽的频域系数;
若所述瞬态判决信息表明为稳态信号, 则对全体带宽的频域系数直接进 行时频逆变换, 得到输出的音频信号; 若所述瞬态判断信息表明为瞬态信号, 则将全体带宽的频域系数进行重排, 然后分成 组频域系数, 对每一组频域 系数进行时频逆变换, 根据变换得到的 组时域信号计算得到最终的音频信 号。
为解决上述问题,本发明还提供了一种瞬态信 号的可分层音频编码方法, 该方法包括:
将音频信号分成 个子帧,对每个子帧进行时频变换, 变换得到的 组 频域系数构成当前帧总的频域系数, 对总的频域系数按照编码子带从低频到 高频的顺序进行重排, 其中, 所述总的频域系数包括核心层频域系数和扩展 层频域系数, 所述编码子带包括核心层编码子带和扩展层编 码子带, 核心层 频域系数构成若干个核心层编码子带, 扩展层频域系数构成若干个扩展层编 码子带;
对核心层编码子带和扩展层编码子带的幅值包 络值进行量化和编码, 得 到核心层编码子带和扩展层编码子带的幅值包 络量化指数及其编码比特, 其 中对核心层编码子带和扩展层编码子带的幅值 包络值分别进行单独量化, 以 及对核心层编码子带的幅值包络量化指数和扩 展层编码子带的幅值包络量化 指数分别进行重排;
根据核心层编码子带的幅值包络量化指数对核 心层编码子带进行比特分 配,然后对核心层频域系数进行量化和编码得 到核心层频域系数的编码比特; 对前述核心层中经过矢量量化的频域系数进行 反量化, 并与原始的经过 时频变换后得到的频域系数进行差计算, 得到核心层残差信号;
根据核心层编码子带的幅值包络量化指数和核 心层编码子带的比特分配 数计算核心层残差信号编码子带的幅值包络量 化指数;
根据核心层残差信号的幅值包络量化指数和扩 展层编码子带的幅值包络 量化指数对扩展层编码信号的编码子带进行比 特分配, 然后对扩展层编码信 号进行量化和编码得到扩展层编码信号的编码 比特, 其中, 所述扩展层编码 信号由核心层残差信号和扩展层频域系数构成 ;
将核心层编码子带和扩展层编码子带的幅值包 络编码比特、 核心层频域 系数的编码比特和扩展层编码信号的编码比特 复用打包后, 传送给解码端。
为解决上述问题, 本发明还提供了一种瞬态信号的可分层解码方 法, 该 方法包括:
对编码端传送过来的比特流进行解复用, 对核心层编码子带和扩展层编 码子带的幅值包络编码比特解码, 得到核心层编码子带和扩展层编码子带的 幅值包络量化指数, 对核心层编码子带和扩展层编码子带的幅值包 络量化指 数按照频率从 、到大的顺序分别进行重排;
根据重排后的核心层编码子带的幅值包络量化 指数, 对核心层编码子带 进行比特分配, 并由此计算核心层残差信号的幅值包络量化指 数;
根据核心层残差信号的幅值包络量化指数和重 排后的扩展层编码子带的 幅值包络量化指数对扩展层编码子带进行比特 分配;
根据核心层编码子带和扩展层编码信号的编码 子带的比特分配数, 分别 对核心层频域系数编码比特和扩展层编码信号 编码比特解码, 得到核心层频 域系数和扩展层编码信号, 将扩展层编码信号按照子带顺序重新排列, 并和 核心层频域系数相加, 得到全体带宽的频域系数;
将全体带宽的频域系数进行重排, 然后分成 组, 对每一组频域系数进 行时频逆变换, 根据变换得到的 组时域信号计算得到最终的音频信号。
为解决上述问题, 本发明还提供了一种可分层音频编码系统, 该系统包 括:
频域系数生成单元、 幅值包络计算单元、 幅值包络量化和编码单元、 核 心层比特分配单元、核心层频域系数矢量量化 和编码单元以及比特流复用器; 该系统还包括: 瞬态判决单元、 扩展层编码信号生成单元、 残差信号幅值包 络生成单元、扩展层比特分配单元以及扩展层 编码信号矢量量化和编码单元; 其中:
所述瞬态判决单元设置为: 对当前帧的音频信号进行瞬态判决; 所述频域系数生成单元, 与所述瞬态判决单元连接, 所述频域系数生成 单元设置为: 瞬态判决为稳态信号时, 对加窗后的音频信号直接进行时频变 换得到总的频域系数; 瞬态判决为瞬态信号时, 将音频信号分成 个子帧, 对每个子帧进行时频变换, 变换得到的 M组频域系数构成当前帧总的频域系 数, 对总的频域系数按照编码子带从低频到高频的 顺序进行重排, 其中, 所 述总的频域系数包括核心层频域系数和扩展层 频域系数, 所述编码子带包括 核心层编码子带和扩展层编码子带, 核心层频域系数构成若干个核心层编码 子带, 扩展层频域系数构成若干个扩展层编码子带;
所述幅值包络计算单元, 与所述频域系数生成单元连接, 所述幅值包络 计算单元设置为: 计算核心层编码子带和扩展层编码子带的幅值 包络值; 所述幅值包络量化和编码单元, 与所述幅值包络计算单元以及瞬态判决 单元连接, 所述幅值包络量化和编码单元设置为: 对核心层编码子带和扩展 层编码子带的幅值包络值进行量化和编码, 得到核心层编码子带和扩展层编 码子带的幅值包络量化指数及其编码比特; 其中, 若为稳态信号, 则对核心 层编码子带和扩展层编码子带的幅值包络值进 行统一量化; 若为瞬态信号, 则对核心层编码子带和扩展层编码子带的幅值 包络值分别进行单独量化, 以 及对核心层编码子带的幅值包络量化指数和扩 展层编码子带的幅值包络量化 指数分别进行重排;
所述核心层比特分配单元, 与所述幅值包络量化和编码单元连接, 所述 核心层比特分配单元设置为: 根据核心层编码子带的幅值包络量化指数对核 心层编码子带进行比特分配, 得到核心层编码子带的比特分配数;
所述核心层频域系数矢量量化和编码单元, 与所述频域系数生成单元、 幅值包络量化和编码单元及核心层比特分配单 元连接, 所述核心层频域系数 矢量量化和编码单元设置为: 使用根据核心层编码子带的幅值包络量化指数 重建的核心层编码子带的量化幅值包络值和核 心层编码子带的比特分配数对 核心层编码子带的频域系数进行归一化、 矢量量化和编码, 得到核心层频域 系数编码比特;
所述扩展层编码信号生成单元, 与所述频域系数生成单元及核心层频域 系数矢量量化和编码单元连接, 所述扩展层编码信号生成单元设置为: 生成 核心层残差信号, 得到由核心层残差信号和扩展层频域系数构成 的扩展层编 码信号;
所述残差信号幅值包络生成单元, 与所述幅值包络量化和编码单元及核 心层比特分配单元连接, 所述残差信号幅值包络生成单元设置为: 根据核心 层编码子带的幅值包络量化指数与对应的核心 层编码子带的比特分配数, 得 到核心层残差信号的幅值包络量化指数;
所述扩展层比特分配单元, 与所述残差信号幅值包络生成单元及幅值包 络量化和编码单元连接, 所述扩展层比特分配单元设置为: 根据核心层残差 信号幅值包络量化指数和扩展层编码子带的幅 值包络量化指数对扩展层编码 信号编码子带进行比特分配, 得到扩展层编码信号编码子带的比特分配数; 所述扩展层编码信号矢量量化和编码单元, 与所述幅值包络量化和编码 单元、 扩展层比特分配单元、 残差信号幅值包络生成单元及扩展层编码信号 生成单元连接, 所述扩展层编码信号矢量量化和编码单元设置 为: 使用根据 扩展层编码信号编码子带的幅值包络量化指数 重建的扩展层编码信号编码子 带的量化幅值包络值和扩展层编码信号编码子 带的比特分配数对扩展层编码 信号进行归一化、 矢量量化和编码, 得到扩展层编码信号编码比特; 所述比特流复用器与所述幅值包络量化和编码 单元、 核心层频域系数矢 量量化和编码单元、扩展层编码信号矢量量化 和编码单元连接, 所述比特流 复用器设置为: 将核心层边信息比特、核心层编码子带的幅值 包络的编码比 特、 核心层频域系数编码比特、 扩展层边信息比特, 扩展层编码子带的幅值 包络的编码比特和扩展层编码信号编码比特进 行打包。
为解决上述问题, 本发明还提供了一种可分层音频解码系统, 该系统包 括: 比特流解复用器、 幅值包络解码单元、 核心层比特分配单元、 核心层解 码和反量化单元; 该系统还包括: 残差信号幅值包络生成单元、 扩展层比特 分配单元、扩展层编码信号解码和反量化单元 、全体带宽频域系数恢复单元、 噪声填充单元和音频信号恢复单元; 其中:
所述幅值包络解码单元, 与所述比特流解复用器连接, 所述幅值包络解 码单元设置为: 对所述比特流解复用器输出的核心层和扩展层 编码子带的幅 值包络编码比特进行解码, 得到核心层编码子带和扩展层编码子带的幅值 包 络量化指数; 若瞬态判决信息表明为瞬态信号, 还对核心层编码子带和扩展 层编码子带的幅值包络量化指数按照频率从小 到大的顺序进行重排;
所述核心层比特分配单元, 与所述幅值包络解码单元连接, 所述核心层 比特分配单元设置为: 根据核心层编码子带的幅值包络量化指数, 对核心层 编码子带进行比特分配, 得到核心层编码子带的比特分配数;
所述核心层解码和反量化单元, 与所述比特流解复用器、 幅值包络解码 单元及核心层比特分配单元连接, 所述核心层解码和反量化单元设置为: 根 据核心层编码子带的幅值包络量化指数计算得 到核心层编码子带的量化幅值 包络值, 使用核心层编码子带的比特分配数和量化幅值 包络值对所述比特流 解复用器输出的核心层频域系数编码比特进行 解码、反量化及反归一化处理, 得到核心层频域系数;
所述残差信号幅值包络生成单元, 与所述幅值包络解码单元及核心层比 特分配单元连接, 所述残差信号幅值包络生成单元设置为: 根据核心层编码 子带的幅值包络量化指数与对应核心层编码子 带的比特分配数, 查找核心层 残差信号幅值包络量化指数的修正值统计表, 得到核心层残差信号的幅值包 络量化指数; 所述扩展层比特分配单元, 与所述残差信号幅值包络生成单元及幅值包 络解码单元连接, 所述扩展层比特分配单元设置为: 根据核心层残差信号的 幅值包络量化指数和扩展层编码子带的幅值包 络量化指数进行扩展层编码信 号编码子带的比特分配, 得到扩展层编码信号编码子带的比特分配数;
所述扩展层编码信号解码和反量化单元, 与比特流解复用器、 所述幅值 包络解码单元、 扩展层比特分配单元及残差信号幅值包络生成 单元连接, 所 述扩展层编码信号解码和反量化单元设置为: 使用扩展层编码信号编码子带 的幅值包络量化指数计算得到扩展层编码信号 编码子带的量化幅值包络值, 使用扩展层编码信号编码子带的比特分配数和 量化幅值包络值对所述比特流 解复用器输出的扩展层编码信号编码比特进行 解码、反量化及反归一化处理, 得到扩展层编码信号;
所述全体带宽频域系数恢复单元, 与所述核心层解码和反量化单元以及 扩展层编码信号解码和反量化单元连接, 所述全体带宽频域系数恢复单元设 置为: 根据子带顺序对所述扩展层编码信号解码和反 量化单元输出的扩展层 编码信号进行重新排序, 然后与所述核心层解码和反量化单元输出的核 心层 频域系数做和计算, 得到全体带宽频域系数;
所述噪声填充单元, 与所述全体带宽频域系数恢复单元及幅值包络 解码 单元连接, 所述噪声填充单元设置为: 对编码过程中未分配编码比特的子带 进行噪声填充; 所述音频信号恢复单元, 与所述噪声填充单元连接, 所述音频信号恢复 单元设置为: 若所述瞬态判决信息表明为稳态信号, 对全体带宽的频域系数 直接进行时频逆变换, 得到输出的音频信号; 若所述瞬态判决信息表明为瞬 态信号, 将全体带宽的频域系数进行重排, 然后分成 组频域系数, 对每一 组频域系数进行时频逆变换, 根据变换得到的 组时域信号计算得到最终的 音频信号。
综上所述, 本发明通过在可分层音频编解码方法中引入针 对瞬态信号帧 的处理方法, 对瞬态信号帧进行分段时频变换, 然后对变换得到的频域系数 在核心层和扩展层范围内分别进行重排, 以便与稳态信号帧进行相同的比特 分配、 频域系数编码等后续编码处理, 提高了瞬态信号帧的编码效率, 改善 了可分层音频编解码的质量。
附图概述
图 1是本发明可分层音频编码方法的示意图;
图 2是本发明可分层音频编码方法实施例的流程 ;
图 3是本发明矢量量化后进行比特分配修正的方 流程图;
图 4是本发明可分层编码码流的示意图;
图 5是本发明根据频带范围分层和根据码率分层 关系示意图; 图 6是本发明可分层音频编码系统的结构示意图
图 7是本发明可分层音频解码方法的示意图;
图 8是本发明可分层音频解码方法实施例的流程 ;
图 9是本发明可分层音频解码系统的结构示意图
本发明的较佳实施方式
本发明可分层音频编解码方法和系统的主要思 想是通过在可分层音频编 解码方法中弓 I入针对瞬态信号帧的处理方法, 对瞬态信号帧进行分段时频变 换, 然后对变换得到的频域系数在核心层和扩展层 范围内分别进行重排, 以 便与稳态信号帧进行相同的比特分配、 频域系数编码等后续编码处理, 提高 了瞬态信号帧的编码效率, 改善了可分层音频编解码的质量。
编码方法及系统
如图 1所示, 基于以上发明思想, 本发明可分层音频编码方法包括以下 步骤:
步骤 10: 对当前帧的音频信号进行瞬态判决;
步骤 20: 根据瞬态判决结果对音频信号进行处理, 获得核心层和扩展层 频域系数;
具体地, 瞬态判决为稳态信号时, 对加窗后的音频信号直接进行时频变 换得到总的频域系数; 瞬态判决为瞬态信号时, 将音频信号分成 个子帧, 对每个子帧进行时频变换, 变换得到的 M组频域系数构成当前帧总的频域系 数, 对总的频域系数按照编码子带从低频到高频的 顺序进行重排, 其中, 所 述总的频域系数包括核心层频域系数和扩展层 频域系数, 所述编码子带包括 核心层编码子带和扩展层编码子带, 核心层频域系数构成若干个核心层编码 子带, 扩展层频域系数构成若干个扩展层编码子带。
当瞬态判决为瞬态信号时, 当前帧总的频域系数的获取方法为: 将当前帧的 N点时域釆样信号 x(n)与上一帧的 N点时域釆样信号 Xouin) 组成 2N点时域釆样信号 《) , 然后对 《)实施加窗和时域抗混叠处理得到 N 点时域釆样信号 x(n);
对时域信号 做对称变换, 接着在信号两端各添加一段零序列, 将加 长后的信号分成 个互相交迭的子帧,然后对每个子帧的时域信 号实施加窗、 时域抗混叠处理和时频变换,得到 组频域系数,构成当前帧总的频域系数。
当瞬态判决为瞬态信号时, 对频域系数进行重排时, 在核心层和扩展层 范围内按照编码子带从低频到高频的顺序分别 进行频域系数重排。
步骤 30: 对核心层编码子带和扩展层编码子带的幅值包 络值进行量化和 编码, 得到核心层编码子带和扩展层编码子带的幅值 包络量化指数及其编码 比特;
具体地, 对核心层编码子带和扩展层编码子带的幅值包 络值进行量化和 编码, 得到核心层编码子带和扩展层编码子带的幅值 包络量化指数及其编码 比特; 其中, 若为稳态信号, 则对核心层编码子带和扩展层编码子带的幅值 包络值进行统一量化; 若为瞬态信号, 则对核心层编码子带和扩展层编码子 带的幅值包络值分别进行单独量化, 以及对核心层编码子带的幅值包络量化 指数和扩展层编码子带的幅值包络量化指数分 别进行重排。
所述对幅值包络量化指数进行重排具体包括:
将同一子帧内的编码子带的幅值包络量化指数 按照频率递增或递减的顺 序重新排列在一起, 在子帧连接处釆用分属于两个子帧的代表对等 频率的两 个编码子带来连接。
当瞬态判决为稳态信号时, 对量化得到的核心层编码子带的幅值包络量 化指数进行霍夫曼编码, 若所有核心层编码子带的幅值包络量化指数经 过霍 夫曼编码后所消耗比特的总数小于所有核心层 编码子带的幅值包络量化指数 经过自然编码所消耗比特的总数, 则使用霍夫曼编码, 否则使用自然编码, 并设置核心层编码子带的幅值包络霍夫曼编码 标识信息; 对量化得到的扩展 层编码子带的幅值包络量化指数进行霍夫曼编 码, 若所有扩展层编码子带的 幅值包络量化指数经过霍夫曼编码后所消耗比 特的总数小于所有扩展层编码 子带的幅值包络量化指数经过自然编码所消耗 比特的总数, 则使用霍夫曼编 码, 否则使用自然编码, 并设置扩展层编码子带的幅值包络霍夫曼编码 标识 信息。
步骤 40: 根据核心层编码子带的幅值包络量化指数对核 心层编码子带进 行比特分配, 然后对核心层频域系数进行量化和编码得到核 心层频域系数的 编码比特;
得到核心层频域系数编码比特的方法为:
根据由核心层编码子带的幅值包络量化指数重 建的核心层编码子带的量 化幅值包络值对核心层频域系数进行归一化, 根据编码子带的比特分配数分 别使用塔型格型矢量量化方法和球型格型矢量 量化方法进行量化和编码, 得 到核心层频域系数的编码比特;
对核心层所有使用塔型格型矢量量化得到的量 化索引进行霍夫曼编码; 若所有使用塔型格型矢量量化得到的量化索引 经过霍夫曼编码后所消耗 比特的总数小于所有使用塔型格型矢量量化得 到的量化索引经过自然编码所 消耗比特的总数, 则使用霍夫曼编码, 利用霍夫曼编码节省下来的比特、 初 次比特分配剩余比特数、 对单个频域系数所分配到的比特数为 1或 2的所有 编码子带编码所节省比特的总数对核心层编码 子带的比特分配数进行修正, 以及对修正了比特分配数的核心层编码子带再 次进行矢量量化和霍夫曼编 码; 否则使用自然编码, 利用初次比特分配剩余比特数、 对单个频域系数所 分配到的比特数为 1或 2的所有编码子带编码所节省比特的总数对核 层编 码子带的比特分配数进行修正, 以及对修正了比特分配数的核心层编码子带 再次进行矢量量化和自然编码。
步骤 50: 对前述核心层中经过矢量量化的频域系数进行 反量化, 并与原 始的经过时频变换后得到的频域系数进行差计 算, 得到核心层残差信号; 步骤 60: 根据核心层编码子带的幅值包络量化指数和核 心层编码子带的 比特分配数计算核心层残差信号的幅值包络量 化指数;
釆用如下方法计算核心层残差信号编码子带的 幅值包络量化指数: 根据核心层编码子带的比特分配数, 推算核心层残差信号幅值包络量化 指数的修正值; 对核心层编码子带的幅值包络量化指数和对应 编码子带的核 心层残差信号幅值包络量化指数的修正值进行 差计算, 得到核心层残差信号 幅值包络量化指数。
各编码子带的核心层残差信号幅值包络量化指 数修正值大于等于 0, 且 对应核心层编码子带的比特分配数增加时不减 小;
当某个核心层编码子带的比特分配数为 0时, 核心层残差信号幅值包络 量化指数修正值为 0 , 当某个核心层编码子带的比特分配数为所限定 的最大 比特分配数时, 对应的核心层残差信号的幅值包络值为零。
步骤 70: 根据核心层残差信号的幅值包络量化指数和扩 展层编码子带的 幅值包络量化指数对扩展层编码信号的编码子 带进行比特分配, 然后对扩展 层编码信号进行量化和编码得到扩展层编码信 号的编码比特, 其中, 所述扩 展层编码信号由核心层残差信号和扩展层频域 系数构成;
得到扩展层编码信号编码比特的方法为:
根据由扩展层编码信号编码子带的幅值包络量 化指数重建的扩展层编码 信号编码子带的量化幅值包络值对扩展层编码 信号进行归一化 , 根据扩展层 编码信号各编码子带的比特分配数分别使用塔 型格型矢量量化方法和球型格 型矢量量化方法进行量化和编码, 得到扩展层编码信号的编码比特。
在对核心层频域系数和扩展层编码信号进行量 化和编码的过程中, 对比 特分配数小于分类阔值的编码子带的待量化矢 量釆用塔型格型矢量量化方法 进行量化和编码, 对比特分配数大于所述分类阔值的编码子带的 待量化矢量 釆用球型格型矢量量化方法进行量化和编码;
比特分配数是一个编码子带中单个系数所分配 到的比特数。
可理解地, 对于扩展层编码信号来说, 其是由核心层残差信号及扩展层 频域系数构成的, 某种意义上核心层残差信号也是由系数构成的 。 对扩展层所有使用塔型格型矢量量化得到的量 化索引进行霍夫曼编码; 若所有使用塔型格型矢量量化得到的量化索引 经过霍夫曼编码后所消耗 比特的总数小于所有使用塔型格型矢量量化得 到的量化索引经过自然编码所 消耗比特的总数, 则使用霍夫曼编码, 利用霍夫曼编码节省下来的比特、 初 次比特分配剩余比特数、 对单个频域系数所分配到的比特数为 1或 2的所有 编码子带编码所节省比特的总数对扩展层编码 信号编码子带的比特分配数进 行修正, 以及对修正了比特分配数的扩展层编码信号编 码子带再次进行矢量 量化和霍夫曼编码; 否则使用自然编码, 利用初次比特分配剩余比特数、 对 单个频域系数所分配到的比特数为 1或 2的所有编码子带编码所节省比特的 总数对扩展层编码信号编码子带的比特分配数 进行修正, 以及对修正了比特 分配数的扩展层编码信号编码子带再次进行矢 量量化和自然编码。
进行核心层编码子带和扩展层编码信号编码子 带比特分配时, 根据编码 子带的幅值包络量化指数对各编码子带进行变 步长比特分配;
在比特分配过程中, 对比特分配数为 0的编码子带分配比特的步长是 1 个比特, 比特分配后重要性降低的步长为 1 , 对比特分配数大于 0且小于分 类阔值的编码子带追加分配比特时的比特分配 步长为 0.5 个比特, 比特分配 后重要性降低的步长为 0.5 ,对比特分配数大于等于所述分类阔值的编码 带 追加分配比特时的比特分配步长为 1 , 比特分配后重要性降低的步长为 1 ; 所述对编码子带的比特分配数进行修正的过程 如下:
计算可用于修正的比特数;
在所有编码子带中寻找重要性最大的编码子带 , 如果该编码子带所分配 的比特数已经达到可能分配给与的最大值, 则将该编码子带的重要性调整到 最低, 不再对该编码子带修正比特分配数, 否则对该重要性最大的编码子带 进行比特分配修正;
在比特分配修正过程中, 对比特分配数为 0的编码子带分配 1个比特, 比特分配后重要性降低 1 ; 对比特分配数大于 0且小于 5的编码子带分配 0.5 个比特, 比特分配后重要性降低 0.5; 对比特分配数大于 5的编码子带分配 1 个比特, 比特分配后重要性降低 1。
比特分配数每修正 1次, 则将比特分配修正迭代次数 co ί加 1 , 当比特 分配修正迭代次数 count达到预设上限值或可用于修正的剩余比特 小于比 特分配修正所需要的比特数时, 比特分配修正流程结束。
步骤 80: 将核心层和扩展层编码子带的幅值包络编码比 特、 核心层频域 系数的编码比特和扩展层编码信号的编码比特 复用打包后, 传送给解码端。
按照如下码流格式进行复用打包:
首先将核心层的边信息比特写入码流的帧头后 面, 将核心层编码子带的 幅值包络编码比特写入比特流复用器 MUX (Multiplexer), 然后将核心层频域 系数的编码比特写入 MUX;
然后将扩展层的边信息比特写入 MUX,然后将扩展层频域系数的编码子 带的幅值包络编码比特写入 MUX, 然后将扩展层编码信号的编码比特写入 MUX;
根据所要求的码率, 将满足码率要求的比特数传送到解码端。
下面将结合附图和实施例对本发明进行详细描 述。
图 2是本发明第一实施例可分层音频编码方法的 程图。 本实施例中以 帧长为 20ms、釆样率为 32kHz的音频流为例具体说明本发明的可分层音 编 码方法。 在其它帧长和釆样率条件下, 本发明的方法同样适用。 如图 2所示, 该方法包括:
101 : 对帧长为 20ms、 釆样率为 32kHz的音频流进行瞬态判决, 判断该 帧音频信号是瞬态信号还是稳态信号, 当判断该帧信号是瞬态信号时, 置瞬 态判决标识位 ¾7gjra«we«i = 1 ; 当判断该帧信号是稳态信号时,置瞬态判决 标识位 Flag transient = 0; 杂的技术, 包括但不限于感知熵方法、 多级判决方法等。
102: 对帧长为 20ms、 釆样率为 32kHz的音频流实施时频变换得到 N个 频域釆样点上的频域系数; 本步骤的具体实现方式可以是:
将当前帧的 N点时域釆样信号 x(n)与上一帧的 N点时域釆样信号 Xouin) 组成 2N点时域釆样信号 , 2Ν点的时域釆样信号可由下式表示:
« = 0,1,···, N-1
( 1 )
[χ(η-Ν) η二 Ν,Ν + 1,···,2ΝΛ 对 《)实施加窗处理, 得到加窗后的信号:
x w (n) = h(n)x(n) (2)
其中 是窗函数, 定义为:
π
h(n) = sin n + - « = 0,...,2N-1 (3)
2 2N 加窗后的 40ms帧信号 x w 使用时域抗混叠处理变换为 20ms帧长的信号 i 操作方法如下
0 0
X =
L 一J、
(4)
1 0 0 1
0 1 1 0
(ΛΓ/2)χ(ΛΓ/2) (ΛΓ/2)χ(ΛΓ/2) 如果瞬态判决标识位 ¾^—/^¾«£^为 0,则表示当前帧为稳态信号,直 接对时域抗混叠信号 进行 IV类离散余弦变换 ( DCT IV 变换 )或其他类离 散余弦变换, 得到如下频域系数:
如果瞬态判决标识位^/^—/^^^/ 1 为 1, 则表示当前帧为瞬态信号, 需 要首先对时域抗混叠信号 做对称变换以减少寄生的时域和频域响应。 接 着, 在信号两端各添加长度为 N/8的零序列, 将加长后的信号分成 4个互相 交迭的等长子帧。 每个子帧的长度是 N/2, 以 50%的比例互相交迭。 两个中 间的子帧各用一个长度为 NI2的正弦窗实施加窗, 两端的两个子帧各用长度 为 N/4的半个正弦窗对内侧的半个子帧实施加窗。 然后, 对每个加窗后的子 帧信号进行时域抗混叠处理和 DCT IV 变换,得到 4组长度为 N/4的频域系数, 构成总长度为 N的频域系数 i^), k = 0,...,N_l。
此外, 当帧长为 20ms, 釆样率为 32kHz时, N=640 (其他帧长及釆样率 可同样算出相应的 N ) 。
103 :将 N点频域系数分成若干个编码子带,计算各个 码子带的频域幅 值包络(简称幅值包络) ;
所述编码子带可以是均匀划分, 也可以是非均匀划分, 在本实施例中釆 用非均匀子带划分。
本步骤可以釆用如下子步骤实现:
103a: 将所需编码的频带范围内的频域系数分成 个子带 (可以称为编 码子带) ;
本实施例中, 所需编码的频带范围是 0 ~ 13.6kHz, 可以按照人耳感知特 性进行非均勾子带划分, 表 1 和表 2 分别给出了当瞬态判决标识位 Flag transient为 0和 1时一种具体的划分方式。
在表 1和表 2中, 将 0 ~ 13.6kHz频带范围内的频域系数划分成 30个编 码子带, 即 = 30; 并将 13.6kHz以上的频域系数置为 0。
在本实施例中, 还划分出核心层的频域范围。 当瞬态判决标识位 Flag transient为 0和 1时, 分别选择表 1和表 2中的 0 ~ 17号子带作为核心 层的子带,核心层编码子带的个数 — re=l 8。核心层的频带范围是 0 ~ 7kHz。
当瞬态判决标识位 Flag transient为 1时, 对所需编码的频带范围内的 4 组频域系数进行子带划分, 再对核心层的频带范围和扩展层的频带范围内 的 频域系数按照编码子带从低频到高频的顺序分 别进行重排。 当组内剩余的频 域系数不够构成一个子带(如表 2 , 少于 16个) 时, 则用下一组频域系数中 相同或相近频率的频域系数进行补充, 如表 2中的核心层子带 16、 17。 表 2 中的编码子带即为完成重排的一种具体结果。
可理解地, 组成核心层编码子带的频域系数称为核心层频 域系数, 组成 扩展层编码子带的频域系数称为扩展层频域系 数, 也可描述为, 将频域系数 划分为核心层频域系数和扩展层频域系数, 将核心层频域系数划分为若干个 核心层编码子带, 将扩展层频域系数划分为若干个扩展层编码子 带。 可理解 地, 频域系数层 (指核心层和扩展层) 的划分与编码子带的划分的先后顺序 并不影响本发明的实现。 表 1 当瞬态判决标识位 Flag transient为 0时的子带划分示例
17 272 287 16
18 288 303 16
19 304 319 16
20 320 335 16
21 336 351 16
22 352 367 16
23 368 383 16
24 384 399 16
25 400 415 16
26 416 447 32
27 448 479 32
28 480 511 32
29 512 543 32 表 2 当瞬态判决标识位 Flag transient为 1时的子带划分示例
18 72 87 16
19 232 247 16
20 392 407 16
21 552 567 16
22 88 103 16
23 248 263 16
24 408 423 16
25 568 583 16
26 104 135 32
27 264 295 32
28 424 455 32
29 584 615 32
103b: 按照以下公式计算各编码子带的幅值包络值: i ( 6 )
其中, LIndex(J和 分别表示第 j个编码子带的起始频域系数索引 和结束频域系数索引, 其具体数值如表 1 (当瞬态判决标识位 Flag— transient 为 0时)和表 2 (当瞬态判决标识位 ¾^— ira¾v e«i为 1时)所示。
104: 当瞬态判决标识位 ira¾v e«i为 1时, 对核心层编码子带和扩 展层编码子带的幅值包络值进行量化和编码, 得到核心层编码子带和扩展层 编码子带的幅值包络量化指数和核心层编码子 带和扩展层编码子带的幅值包 络编码比特, 核心层编码子带的幅值包络编码比特和扩展层 编码子带的幅值 包络编码比特需要传送到比特流复用器(MUX ) 中;
当瞬态判决标识位 ira¾v e«i为 0时,对核心层编码子带和扩展层编 码子带的幅值包络值进行统一量化; 瞬态判决标识位 Flag transient为 1时, 对核心层编码子带和扩展层编码子带的幅值包 络值分别进行单独量化, 以及 对核心层编码子带的幅值包络量化指数和扩展 层编码子带的幅值包络量化指 数分别进行重排。
以下对核心层编码子带的幅值包络量化编码的 过程进行说明: 釆用以下公式( 7 )对各编码子带幅值包络进行量化, 得到各编码子带幅 值包络的量化指数, 即量化器的输出值:
[ j表示向下取整。 7 (0)为第一个核心层编码子带的幅值包络量化指 数, 将其范围限制在 [ - 5, 34]内,即当 Th q (0) < - 5时,令 = -5; 当 Th q (0) > 34时, 令 = 34。 当瞬态判决标识位 ira¾v e«i为 1时,对核心层编码子带的幅值包络 量化指数进行重排, 以使下述对核心层编码子带的幅值包络量化指 数进行差 分编码的效率更高。
具体重排示例见表 3。
表 3 核心层幅值包络重排示例
13 5
14 12
15 14
16 4
17 13 使用 6比特对第一个编码子带的幅值包络量化指数 7¾(0)进行编码, 即 消耗 6比特。
核心层编码子带幅值包络量化指数间的差分运 算值釆用如下公式计算: Δ7¾ ) = Th q (j +\)-Th q (j) 7 =0,···, L_ core -2 (8) 可以对幅值包络进行如下修正以保证 Δ ¾( ·)的范围在[ - 15, 16]之内:
^口果 Δ ¾ (_/·)<—15 , 则令
Δ7¾ 9 0) = -15, ^0) = ¾ 9 0 + 1) + 15, j = L—隱 -2,-·-,0
^口果 Δ7¾(_/')>16 , 则令 Δ7¾( ) = 16, Th q (j + \) = Th q (j) + \6J = 0,...,L_core-2; 对 Δ7¾ 9 (_/·),_/· = 0,..., — core- 2进行霍夫曼 ( Huffinan )编码, 并计算此时所 消耗的比特数(称为霍夫曼编码比特, Huffman coded bits ) 。 如果此时霍夫 曼编码比特大于或等于固定分配的比特数(在 本实施例中大于或等于 ( ― core - I)x 5 ) , 则不使用霍夫曼编码方式对 A7¾ g (j'),j' = 0,...,J— core- 2进行编码, 并 置霍夫曼编码标识位 Flag huff—rms core = 0; 否则利用霍夫曼编码对 ATh q (j), j = Q,...,L_ core— 2进行编码, 并置霍夫曼编码标识位 Flag huff —画 core = 1。 核心层编码子带的幅值包络量化指数的编码比 特(即第一个 子带的幅值包络和幅值包络差分值的编码比特 )和霍夫曼编码标识位需要被 传送到 MUX中。
以下对扩展层编码子带的幅值包络量化编码的 过程进行说明:
当瞬态判决标识位 Flag transient 为 0 时, 对幅值包络差分值 A q (j) J = L—core - 1, L - 2进行霍矢曼 (Huffman )编码, 并计算此时所消耗 的比特数(称为霍夫曼编码比特, Huffman coded bits") 。 如果此时霍夫曼编 码比特大于或等于固定分配的比特数(在本实 施例中大于或等于 ( -L core) X 5 ) , 贝' J不使用霍夫曼编码方式对 Δ7¾。(_/·),_/· = — core_l,..., 一 2进行编码, 并 置霍夫曼编码标识位 Flag huff—rms ext = 0; 否则利用霍夫曼编码对 ATh q (jl j = L—core - 1, ..., J - 2进行编码, 并置霍夫曼编码标识位 Flag huff― ext= \
当瞬态判决标识位^/^—/^^^/ 1 为 1时,按照以下公式对扩展层编码子 带的幅值包络进行量化, 得到扩展层编码子带幅值包络的量化指数, 即量化 器的输出值:
Th q (j) = 2 log 2 j = L_ core,…, - 1 (9) 其中 Th q (L—core为扩展层频域系数所构成的第一个 编码子带的幅值包络 量化指数, 将其范围限制在 [-5, 34]内。 对扩展层编码子带的幅值包络量化 指数进行重排, 以使下述对扩展层编码子带的幅值包络量化指 数进行差分编 码的效率更高。 具体重排示例见表 4。
表 4扩展层编码子带幅值包络重排示例
使用 6比特对扩展层频域系数所构成的第一个编码 带的幅值包络量化 指数 TT^ L— core)进行编码, 即消耗 6比特。 扩展层频域系数所构成的扩展层 编码子带幅值包络量化指数间的差分运算值釆 用如下公式计算:
Δ7¾ ) = Th (j + 1)— Th (j) j=L_ core,…, - 2 ( 10) 可以对幅值包络进行如下修正以保证 Δ ¾( ·)的范围在 [_ 15, 16]之内: 如果 ATh q (j)<-\5 , 则令 Δ7¾(_/') = _15, Th q (j) = Th q (j + \) + \5, j = L—匿 ,"',L-1 ^口果 ATh q (j)>\6 , 则令 Δ7¾( ) = 16, + 1) = 7¾( ) + 16,_/'= — c e,"',J-2。 然后, 对 ATh q (J j = L—core,… , L - 2进行霍 曼 ( Huffman )编码, 并计算此时所消耗的 比特数(称为霍夫曼编码比特, Huffman coded bits ) 。 如果此时霍夫曼编码 比特大于或等于固定分配的比特数(在本实施 例中大于或等于 ( -L core - 1) X 5 ) , 则不使用霍夫曼编码方式对 Δ7¾ 9 (_/·),_/· = — core ..,J-2进行编码, 并 置霍夫曼编码标识位 Flag huff—rms ext = 0; 否则利用霍夫曼编码对 ATh q 0), j = L—core,… , J - 2进行编码,并置霍夫曼编码标识位 Flag_huff_rms ext 0 扩展层频域系数所构成的幅值包络量化指数的 编码比特和霍夫曼编码标 识位需要被传送到 MUX中。
105:根据码率失真理论和核心层编码子带幅值 络信息计算核心层编码 子带重要性的初始值, 并根据核心层编码子带的重要性进行核心层的 比特分 配。
本步骤可以釆用如下子步骤实现:
105a: 计算核心层单个频域系数的比特消耗平均值:
从 20ms帧长可提供的总的比特数 bits available中抽出用于核心层编码 的比特数 bits available core, 扣除核心层边信息消耗的比特数 bit sides core 和核心层编码子带幅值包络量化指数所消耗掉 的比特数 bits Th— core,得到剩 余的可用于核心层频域系数编码的比特数 bits— left— core , 即:
bits left core = bits available core - bit sides core - bits Th core (11 ) 边信息包括霍夫曼编码标识 Flag huff—丽 core、 Flag huff PLVQ— core 和迭代次数 count core的比特。 Flag huff rms core用于标识是否对核心层编 码子带幅值包络量化指数使用了霍夫曼编码; Flag huff— PLVQ— core用于标识 是否在对核心层频域系数进行矢量编码时使用 了霍夫曼编码, 而迭代次数 count core 用于标识核心层比特分配爹正时的迭代次数( 详见后续步骤中的 描述) 。
计算核心层单个频域系数的比特消耗平均值为 _ core : 其中, L_ core为核心层编码子带的个数。
105b: 根据码率失真理论计算在最大量化信噪比增益 条件下的最佳比特 值:
通过拉格朗日方法优化基于独立高斯分布随机 变量的码率失真度, 可计 算得到该码率失真度界限下各编码子带的最大 量化信噪比增益条件下的最佳 比特值为:
rr _ core( j) = [R_ core + R min _ core( j)] , y = 0, · · · , L _ core— 1 ( 13 ) 其中,
R min _ core(j) = [Th q (j) - mean _ Th q _ core] j = Q,''、L— core _ 1 ( 14) 以及
1 L_core-\
mean Th core Th (i)[HIndex(i) - LIndex(i) + 1]
_ HIndex{L _ core— 1) + 1 ~^
( 15 ) "
105c: 计算核心层编码子带在进行比特分配时的重要 性初始值:
使用上述最佳比特值, 以及符合人耳感知特性的比例因子, 可以得到在 实际比特分配中用于控制比特分配的核心层编 码子带重要性的初始值:
rk{j) = xrr _ core(j) = [R _ core + _ core(j)], j = 0, · · · , Z _ core— 1 ( 16) 其中 为比例因子, 该因子跟编码码率相关, 可通过统计分析得到, 通 常 0< <1, 在本实施例中 取值为 0.7; 表示在进行比特分配时第 ·个编 码子带的重要性。
105d: 根据核心层编码子带的重要性进行核心层的比 特分配。 具体描述 下:
首先从各 中找到最大值所在的核心层编码子带, 假设该编码子带的 编号为 然后增加该核心层编码子带中每个频域系数的 比特分配数 region _bit(j k ), 并降低该核心层编码子带的重要性; 同时计算该子带编码消耗 比特总数 Wt_to _ M> «^ );最后计算所有核心层编码子带所消耗比特 的总 和 sum bit band used (f) j=Q , ... ,L core - 1; 重复上述过程直至消耗比特数的 总和满足可提供比特限制条件下的最大值。
本步骤中的比特分配方法可以由如下伪代码表 示:
令 region b it(j) =0, j=0,l,■··,∑_ core - 1;
对于编码子带 0,1,..., core- \:
寻找 j k = arg max[rk( j)];
J=0,-,L- 如 region—bitjk)<分类阔值
^口果 region_bit(jk)=0 " region bitijk) = region _bit(jk) + 1; if ^-bit band usedijk) = region bitijk) * BandWidthijk);
否则 ¾口果 region bit(J k )>=\ " region bitijk)) = region bitijk) + 0.5; b it band usedijk) = region bitijk) * BandWidthijk)^^).5;
^rk(j k ) = rkijk) - 0.5; 否则如果 region bitj k )>=分类阔值
令 region—bitijk = region bitijk) + 1;
入 on _ bit( j k ) < MaxBit
rk 一 ;
b it band usedijk) = region bitijk) x BandWidthijk);
计算 bit used all = sum (bit_band_used(j)) 7=0,1 , ... ,L_core― 1; 如果 bit used all < bits left core - 16, 返回并在各编码子带中重新寻找 j k , 循环计算比特分配数(或称为编码比特数) ; 其中 16为核心层编码子带 比特数的最大值。
否则, 结束循环, 计算比特分配数, 输出此时的比特分配数。
最后,根据子带的重要性, 将剩余的不到 16个比特按如下原则分配给满 足要求的核心层编码子带, 在比特分配为 1的核心层编码子带中给每个频域 系数分配 0.5 个比特, 同时降低该核心层编码子带的重要性 0.5, 直至 bit— left— core - bit used all < 8, 比特分配结束。此时最终剩余的比特记为核心 层初次分配剩余比特数 remain b Us—core。
上述分类阔值的取值范围为大于等于 2且小于等于 8, 本实施例中可以 为 5。
其中, MaxBU为核心层编码子带中单个频域系数所能分 到的最大的比 特分配数, 单位为 bit/频域系数。 本实施例中釆用 MaxBit=9。 这个值可以根 据编解码器的编码码率适当调整。 regW n— (J j个核心层编码子带中单 个频域系数所分配的比特数, 也就是该子带中单个频域系数的比特分配数。
此外, 本步骤中也可以将 ¾( 、 或将 ^^1(¾ 2 [7¾( ]+1」作为核心层编码 子带的比特分配重要性初始值进行核心层的比 特分配, j=Q,...,L core - V, 以下步骤 106至步骤 107中所说的编码子带均为核心层编码子带。
106:用根据核心层编码子带的幅值包络量化指 重建的量化幅值包络值 对核心层编码子带中的频域系数进行归一化计 算, 然后对归一化的频域系数 进行分组, 组成若干个矢量;
对于所有 j=Q,.."L—core - 1,使用编码子带 j的量化幅值包络 7 ^^ 2 对该 编码子带中所有频域系数 Xj进行归一化处理:
norm alized ― X J
X J = 2 Th q { j) ,2 ; ( 17) 将编码子带中连续的 8个系数分组构成 1个 8维矢量。 根据表 1对编码 子带的划分,编码子带 ·中的系数正好可以分组构成 Lattice D8( ^个 8维矢量。 各个归一化后分组的 8维待量化矢量可表示为 , 其中 m表示该 8维矢量 在编码子带中的位置, 其范围在 0到 Lattwe—D8( )A之间。
107: 对于所有 j=Q,...,L cord 判断编码子带 j 所分配比特数 region bit{j ]大小, 如果所分配比特数 region bit(}'、于分类阔值, 则称该编 码子带为低比特编码子带, 并对该低比特编码子带中待量化矢量釆用塔型 格 型矢量量化方法进行量化和编码; 如果所分配比特数 region— bit(j)大于^等于 该阔值, 则称该编码子带为高比特编码子带, 并对该高比特编码子带中的待 量化矢量釆用球型格型矢量量化方法进行量化 和编码; 本实施例的阔值釆用 5比特。
以下对塔型格型矢量量化和编码方法进行说明 :
对低比特编码子带釆用塔型格型矢量量化方法 进行量化, 此时子带 ·所 分配到的比特数满足: Y<=region bit(f)<5。
本发 : 其中 Z 8 表示 8维的整数空间。 将 8维矢量映射到 (即量化到) /¾格点的 基本方法描述如下:
设 X为任意实数, x)表示取和 X相邻的两个整数中相距较近的整数的取 整量化, 表示取相邻的两个整数中相距较远的整数的取 整量化。 对任意 矢量 =( ^,..., ^^,同样可定义/ ( ) = (/^),/( ),...,/( 》。 在 )中选择 取整量化误差的绝对值最大的分量中的最小下 标, 记为 由此定义 (^ = (/^),/( ), j( ¾ ),...,/(x s 》, 则 )或 g ( )中有一个且只有一个是/ ¾格 点的数值, 此时量 值为: 将待量化矢量量化到 /¾格点的方法及求解 /¾格点索引的具体步骤如下: a: 待量化矢量的能量规整; 量化之前需要对待量化矢量进行能量规整。 根据待量化矢量所在编码子 带 j所分配的比特数 region—bitif), 从表 2中查询到该比特数所对应的码本序 号 index和能量缩放因子 scale 然后根据下面的公式对待量化矢量进行能量 规整:
c ale = (Y; - a) * scaleiindex) ( 20 ) 其中, 1 表示编码子带 中第 个归一化后的待量化 8维矢量, ¾ ∞fe 表 示对】 进行能量规整后的 8维矢量, a = (2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 )。
表 5塔式格型矢量量化比特数与码本序号、 能量缩放因子及最大塔面能 量半径的对应关系
b : 对规整后的矢量进行格点量化; 将能量规整后的 8维矢量 ¾L fe 量化到 /¾格点 上:
Ϋ; = fnA ca!e (21 ) 其中, /¾(·)表示将某个 8维矢量映射到 /¾格点的量化算子。
c : 根据/ ¾格点¾"的塔面能量对^¾ ∞/6 的能量进行截断 ;
计算 /¾格点 的能量并和编码码本中的最大塔面能量半径 flrgefOifex)进行比较。 如果不大于最大塔面能量半径, 则计算该格点在码 本中的索引; 否则将该编码子带规整后的待量化矢量 i¾ ∞fe 进行能量截断, 直到能量截断后的待量化矢量的量化格点的能 量不大于最大塔面能量半径; 这时对能量截断后的待量化矢量持续增加其自 身的一个小能量, 直至其量化 到 /¾格点的能量超过最大塔面能量半径;取最后 一个能量不超过最大塔面能 量半径的 /¾格点作为待量化矢量的量化值。 具体过程可以用下面伪代码描 述:
计算 的塔面能量,即求编码子带 j中第 m个矢量的各分量绝对值之和, temp K = sum Ϋ;'
Ybak = Y J m
Kbak = temp _ K
If temp— K> LargeK(index)
While temp—K> LargeK{index)
j , scale j, scale ,
Ybak = Y J m
Kbak = temp _ K
While temp_K<= LargeK{index)
Ybak = Y" Kbak = temp _ K j , scale
j J j , scale ) temp _K = sum Ϋ"
Y 二
J m Ybak temp _K = Kbak 这时的 是最后一个能量不超过最大塔面能量半径的 ¾格点, temp _ K是该格点的能量。
d : 生成/ ¾格点¾ "在码本中的量化索引; 根据以下步骤, 通过计算得到/ ¾格点 在码本中的索引。 具体步骤如 下:
步骤 1: 根据塔面能量的大小, 分别对各个塔面上的格点进行标号。
对于维数为 L的整数格点网格 ZL , 定义能量半径为 f的塔面为:
S(L,K) = {Y = (y„y 2 ,...,y L )G Z L |∑\y t \=K} (22)
记 N(J, Q为^; ^)中格点的个数, 对于整数格 ^来说, N(J, Q有如下的 递推关系:
N(J,0) = 1 (L≥ 0), N(0,K) = 0 (K≥l)
N(L, K) = N(L - K) + N(L -1,^-1) + N(L, K-\) (L≥\K≥\)
对于能量半径为 K 的塔面上的整数格点; = (n...,_yj e z £ , 用
[0,1,....,NL,^)-1]中的某一个数 来标识, 并称 b为该格点的标号。 求解标号 b的步骤如下:
步骤 1.1: 令 b=0, i=l, k=K, l=L, 根据上述的递推公式, 计算 NO,«), (m<=L,n<=K)。 定义: N(l-l,k-l);
如果y,|>l, 则
l-sgn(^)
N(/— ΐϋ Ι)
2 步骤 1.3: k = 则停止搜索, b为 Y的 标号, 否则继续步骤 1.2)。
步骤 2: 对所有塔面上的格点进行统一标号。
根据各个塔面的格点数和每个格点在各自塔面 上的标号, 计算每个格点 在全体塔面中的标号:
其中, kk为偶数。 此时的 zwifex— b(, )即为/ ¾格点¾^在码本中的索引。 也就是编码子带 中第 w个 8维矢量的索引。
e: 重复步骤& ~(1, 直到所有编码比特大于 0的编码子带的各个 8维矢量 都完成索引生成;
f: 根据塔型格型矢量量化方法得到各个编码子带 中每个 8维矢量的矢量 量化索引 index b(j,k),其中 表示编码子带 j的第 个 8维矢量,分以下几种 情况对量化索引 mdex—b( ,k)进行霍矢曼编码:
1 )在单个频域系数所分配到的比特数为大于 1小于 5但除去 2的所有编 码子带中, 对每个矢量量化索引的自然二进制码中每 4位分成一组并对其进 行霍夫曼编码。 2 )在单个频域系数所分配到的比特数为 2的所有编码子带中, 对每个 8 维矢量的塔型格型矢量量化索引使用 15个比特进行编码。 在 15个比特中, 对 3组 4位比特和 1组 3位比特分别进行霍夫曼编码。 因此, 在单个频域系 数所分配到的比特数为 2的所有编码子带中, 对每个 8维矢量的编码都节省 了 1个比特。
3 )当编码子带的单个频域系数所分配到的比特 为 1时, 如果量化索引 小于 127 ,则对量化索引使用 7个比特进行编码,把 7个比特分成 1组 3比特 和 1组 4比特, 分别对两组进行霍夫曼编码; 如果量化索引等于 127 , 则它 的自然二进制码值为" 1111 1110", 把前面 7个 1分成 1组 3比特和 1组 4比 特, 分别对两组进行霍夫曼编码; 如果量化索引等于 128 , 则它的自然二进 制码值为" 1111 1111", 把前面 7个 1分成 1组 3比特和 1组 4比特, 分别对 两组进行霍夫曼编码。
对量化索引进行霍夫曼编码的方法可用如下伪 代码描述:
在所有的 region—biti ) =1.5和 2〈region bit(j"}〈5的编码子带内
n在 [0 , region bitij) x 8/4 - 1]的范围内, 步长为 1递增, 做如下循环:
将 index bij c)右移 4*"位,
计算 "ifex— b( , :)低 4比特位 i ;?, ^LtJt tmp = md(index b(j k), 15) 计算 tmp在码本中的码字及其比特消耗数:
plvq codebookij i) = plvq code(tmp+ 1 );
plvq countij i) = plvq bit count(tmp+ 1 );
其中 plvq codebook(j,k), 和 plvq count(j,k、分 _/子带第 :个 8维矢量 的霍夫曼编码码本中的码字和比特消耗数; plvq bit count和 plvq code根据 表 6查找。
更新釆用霍夫曼编码后的比特消耗总数:
bit—used uff— all = bit—used uff— all + plvq bit _count{tmp+ 1 ); 在 region—biti) =2的编码子带内
n在 [0, region bitij) x 8/4 - 2]的范围内, 步长为 1递增, 做如下循环:
将 index bij c)右移 4*"位,
计算 "ifex— b(, :)低 4比特位 i ;?, ^LtJt tmp = md(index b(jk), 15) 计算 tmp在码本中的码字及其比特消耗:
plvq countij i) = plvq bit count (tmp+1);
plvq codebookij i) = plvq code (tmp+1);
其中 plvq countij i), 和 plvq—codebook(j,k)^^ ^ ·子带第 :个 8维矢量 的霍夫曼比特消耗数和码字; plvq bit count和 plvq code根据表 6查找。
更新釆用霍夫曼编码后的比特消耗总数:
bit—used uff— all = bit—used uff— all + plvq bit _count{tmp+ 1 );
下面需要处理一个 3比特情况:
在 index— b(j ,ΐή右移 [region— bit(f) x 8/4 - 2]*4位后,
计算 "ifex—b(, )低 3比特位 i/w?, 也就 tmp = and(index—b(JJc), 7) 计算 tmp在码本中的码字及其比特消耗:
plvq countij i) = plvq bit count—r2— 3 (tmp+1);
plvq codebookij i) = plvq code—r2— 3 (tmp+1);
其中 plvq countijji), 和 plvq—codebook(j,k)^^ ^ 7·子带第 :个 8维矢量 的霍夫曼比特消耗数和码字; plvq bit count r2 3和 plvq code r 2 3根据表 7 查找。 更新釆用霍夫曼编码后的比特消耗总数:
bit—used— huff—all = bit—used— huff—all + plvq bit _count{tmp+ 1 );
在 region bit( ) =1的编码子带内
如果 index _b(j,k)<\21
计算 "ifex— b(, :)低 4比特位 i ;?, ^LtJt tmp = md(index b(jk , 15) 计算 tmp在码本中的码字及其比特消耗:
plvq countij i) = plvq bit count rl 4(tmp+\);
plvq codebookij i) = plvq code rl 4(tmp+\);
其中 plvq countij i), 和 plvq—codebook(j,k)^^ ^ ·子带第 :个 8维矢量 的霍夫曼比特消耗数和码字; plvq bit count rl 4和 plvq code rl 4根据表 8 查找。
更新釆用霍夫曼后的比特消耗总数:
bit—used mff— all = bit—used mff— all + plvq bit _count{tmp+ 1 );
下面需要处理一个 3比特情况:
将 index b{j,k右 4位,
计算 "ifex—b(, )低 3比特位 i/w?, 也就 tmp = and(index—b(JJc), 7) 计算 tmp在码本中的码字及其比特消耗:
plvq countij i) = plvq bit count r7 3(tmp+l); plvq_codebook(j,k) = plvq code r7 3(tmp+l);
其中 plvq countij i), 和 plvq—codebook(j,k)^^ ^ ·子带第 :个 8维矢量 的霍夫曼比特消耗数和码字; 码本 plvq bit count rl 3和 plvq code r 1 3根 据表 9查找。
更新釆用霍夫曼后的比特消耗总数:
bit—used uff— all = bit—used uff— all + plvq bit _count{tmp+ 1 );
如
对于前三个 "1"和后四个 "1"分别查找表 9和表 8的霍夫曼码表 : 计算方法同前面 index b(j,k)< 下的情况.
更新釆用霍夫曼后的比特消耗总数: 总共需要 8个比特.
如果 index _b(j,k)=\2S
对于前三个 "1"和后四个 "1"分别查找表 7和表 6的霍夫曼码表, 计算 方法同前面 index—b{j,k〈Un下的情况.
更新釆用霍夫曼后的比特消耗总数: 总共需要 8个比特.
因此, 在单个频域系数所分配到的比特数为 1的所有编码子带中, 对每 个 8维矢量的编码, 当 index b(J,ky U,时, 节省 1个比特。
表 6塔式矢量量化霍夫曼码表
Tmp Plvq bit count plvq code
0 2 0 1 4 6
2 4 1
3 4 5
4 4 3
5 4 7
6 4 13
7 4 10
8 4 11
9 5 30
10 5 25
11 5 18
12 5 9
13 5 14
14 5 2
15 4 15
表 7 塔式矢量量化霍夫曼码表
Tmp Plvq bit count r2 3 p q code r2 3
0 1 0
1 4 1
2 4 15
3 5 25
4 3 3
5 3 5
6 4 7
7 5 9 表 8塔式矢量量化霍夫曼码表
Tmp Plvq bit count rl 4 p q code rl 4
0 3 7
1 5 13
2 5 29
3 4 14
4 4 3
5 4 6
6 4 1
7 4 0
8 4 8
9 4 12
10 4 4
11 4 10
12 4 9
13 4 5
14 4 11
15 4 2 表 9塔式矢量量化霍夫曼码表
Tmp Plvq bit count rl 3 p q code rl 3
0 2 1
1 3 0
2 3 2
3 4 7 4 4 15
5 3 6
6 3 4
7 3 3 g: 判断霍夫曼编码是否节省比特;
将所有低比特编码子带的集合记为 C , 计算以上步骤 f的 2 ) 、 3 ) 中所 述的对单个频域系数所分配到的比特数为 1或 2的所有编码子带编码所节省 的比特, 记为硬节省比特数 bz— r7» /— core , 计算属于 C中所有编 码子带的 8 维矢量的量化矢量索引经过霍夫曼编码后消耗 比特的总数 bit _ used _ huff _ all; 将 bit _ used _ huff _ all和自然编码所需消耗比特的总数 bit used nohuff all进行比较, 如^^ bit—used—huff—all < bit—used iohuff— all , 则传输霍夫曼编码后的量化矢量索引, 同时设置霍夫曼编码标识 Flag— huff— PLVQ— core为 ,否则, 直接对量化矢量索引进行自然编码, 并设置 霍 曼編码标识 Mag— huff— PLVQ— core为 0。
上述 bit— used— nohuff— all等于给 C中所有编码子带所分配比特数的总数 sum(bit _ band _ used(j), j e C)减去 bit—saved—r 1—r2—all 々差值。
h: 比特分配数的修正;
若霍 曼编码标识 Flag— huff— PLVQ— core为 0 , 则利用初次分配剩余比特 数 remain bits core 硬节省 t匕特数 bit saved r 1 _r2 all core对编码子带的 t匕 特分配进行修正。 若霍夫曼编码标识 ¾^— ½#— core为 1 , 则利用初次 分配剩余比特数 remain bits core , 硬节省比特数 bit saved r 1 _r2 all core和 以下对球型格型矢量量化和编码方法进行说明 : 对高比特编码子带釆用球型格型矢量量化方法 进行量化, 此时子带 j 所 分配到的比特数满足: 5<=region bit(f) <=9。
此处同样釆用基于/ ¾格的 8维格型矢量量化。
a:根据编码子带 j中单个频域系数所分配到的比特数 regzow— bz ( )对该编 码子带归一化后的第 m 个待量化矢量 I 进行如下能量规整:
7; =^( -a) (24) 其中 , a = (2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 ,2- 6 ) ,
\
β =—— - ~~ ,
scale(region _ bit(j)) 而 scale(region _ bit(J )表示编码子带中单个频域系数的比特分配数 region _bit(j)时的能量缩放因子, 根据表 10可查到它们的对应关系。
表 10 球型格型矢量量化的比特分配数与能量缩放因 子的对应关系
b: 生成/ ¾格点的索引矢量
将编码子带 j中进行能量缩放后的第 m个待量化矢量 映射到 /¾的格 点 上:
判断/ Α 0^/2 °" ίω )是否为零矢量, 即它的各个分量是否都为零, 如 果是则称为零矢量条件满足, 否则称为零矢量条件不满足。
如果零矢量条件满足,那么索引矢量可由下面 的索引矢量生成公式得到: k = (f G- 1 ) mod glon - hltU) (26 ) 输出此时/ ¾格点 的索引矢量 k, 其中 G为/ ¾格点的生成矩阵, 形式 下: 2 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0
1 0 0 1 0 0 0 0
G
1 0 0 0 1 0 0 0
1 0 0 0 0 1 0 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 如果零矢量条件不满足, 将矢量 ^ 的值除以 2, 直至零矢量条件
/ A (f/72 ° ίω )成立; 并备份^ 2 自身的小倍数值为 然后对缩减后的矢 量 加上备份的小倍数值 w, 再量化到/ ¾格点, 判断零矢量条件是否满足; 如果零矢量条件不满足, 则根据索引矢量计算公式得到最近满足零矢量 条件 的 /¾格点的索引矢量 k, 否则继续对矢量 增加备份的小倍数值 w, 然后 再量化到/ ¾格点, 直至零矢量不条件满足; 最后根据索引矢量计算公式得到 最近满足零矢量条件的 /¾格点的索引矢量 k; 输出 /¾格点 的索引矢量 k。 这个过程也可通过下面的伪代码描述:
temp _D = f Dg (7/ 12 region - bit(j) )
Ybak = Y j m
Dbak = temp _ D While temp _D≠0
temp— D二 ¾ (7//2^
w = Y I\6
Ybak = T: Dbak = temp _ D
While temp _ D = 0
Ybak = Y j m
Dbak = temp _ D
Y m = f Ds (Y m ) temp _ D = f Dg (7/ 1 2 region - bit(j) )
Y J m 二 Ybak
k = (^ G - i) mod ¾ c: 对高比特编码子带的矢量量化索引进行编码, 此时子带 j所分配的比 特数满足: 5<=region bit(j)<=9 0
根据球型格型矢量量化的方法, 对比特分配数为 5到 9的编码子带中的 8维矢量进行量化后得到矢量索引 k={kl, k2, k3, k4, k5, k6, k7, k8} ,根据单个 频域系数所分配到的比特数对索引矢量 k的各个分量进行自然编码, 得到该 矢量的编码比特。
如图 3所示, 比特分配修正流程具体包括如下步骤:
301 :计算可用于比特分配修正的比特数 bz— co / core。若霍夫曼编 码标 i?、 Flag— huff— PLVQ— core为 0 , 则
diff bit count core = remain bits core+bit saved r 1 _r2 all core 若霍 曼编码标识 Flag— huff— PLVQ— core为 1 , 则
diff bit count core = remain bits core+bit saved r 1 _r2 all core + (bit—usedjwhuff— all-bit—used— huff—all) 令 count=0:
302: 如果 diff bit count core大于零, 则在各 rk( j ( j=0, ... ,L_core - 1 ) 中寻找最大值 用公式表示为:
303 : 判断 regzow— bz ) +1是否小于或等于 9 , 如果是则执行下一步, 否 则将 J k 对应的编码子带的重要性调整到最低(例 如令 rk{jk)= - 100 ) , 表示无 需再对该编码子带的比特分配数进行修正, 并跳转至步骤 302;
304: 判断 diff bit count core是否大于或等于修正编码子带 j k 的比特分 配数所需要多消耗的比特(若 Flag—huff—PLVQ core为 0 ,则按自然编码计算; 务 Flag huff— PLVQ— core为 \ , 则按霍夫曼编码计算) , 如果是, 则执行步骤 305 ,修正编码子带 Λ 的比特分配数 rWo«_½ ) ,降低子带重要性^ )的值,, 并对编码子带 Λ 重新进行矢量量化和自然编码或霍夫曼编 码, 最后更新 diff bit count core的值; 否则比特分配修正流程结束;
305: 在比特分配修正过程中, 对比特分配数为 0的编码子带分配 1个比 特, 比特分配后重要性降低 1 , 对比特分配数大于 0且小于 5的编码子带分 配 0.5个比特, 比特分配后重要性降低 0.5 , 对比特分配数大于 5的编码子带 分配 1个比特, 比特分配后重要性降氐 1。
306: 令 count=count+ , 判断 co ί是否小于或等于 Moxco ί, 如果是, 则跳转至步骤 302 , 否则比特分配修正流程结束。
H Maxcount为循环迭代次数上限值,该值由编码比 流及其釆样率决 定,本实施例中,若霍夫曼编码标识 ¾^— ½#— 为 0 ,则釆用 Maxcount=, 若霍夫曼编码标识 Flag huff PL 为 1 , 则釆用 Maxcount=31。
108: 对前述核心层中经过矢量量化的频域系数进行 反量化, 并与原始的 经过时频变换后得到的频域系数进行差计算, 得到核心层的残差信号, 并用 核心层残差信号和扩展层频域系数构成扩展层 编码信号;
可理解地, 构成扩展层编码信号的步骤(步骤 108 )也可以在完成扩展 层编码信号的比特分配(步骤 110 )之后执行。
109: 对核心层的残差信号进行与频域系数相同的子 带划分, 根据核心层 的编码子带幅值包络量化指数和核心层的比特 分配数(即各 region—bitij , j=0,...,L core- \ )计算出核心层残差信号编码子带的幅值包络 化指数。
本步骤可以釆用如下子步骤实现:
109a:根据核心层编码子带中单个频域系数所分 的比特数 region bit{j , 7=0,..., L core- 1查找核心层残差信号幅值包络量化指数的修 值统计表,得 到核心层残差信号幅值包络量化指数的修正值 dtff[r eg wn—bU{j ) , j=0,...,L_core - 1;
其中, region _bit(j)= 1 , 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 6, 7, S,j=0,...,L core - 1 , 而幅值包络量化指数修正值可通过以下规则进 行设置:
di氛 region—bitif) >0; 且
当 region bit{f)H diff{region bit()) 着 regow— bz ()值的增大而不 减。
为了得到更好的编解码效果, 可以对各比特分配数 region bit(j 下计 算出的子带幅值包络量化指数和直接从残差信 号计算出的子带幅值包络量化 指数的差值进行统计, 得到概率最高的幅值包络量化指数修正值统计 表, 如 表 11所示:
表 11 幅值包络量化指数修正值统计表
region bit diff
1 1
1.5 2
2 3
2.5 4
3 5
3.5 5
4 6
4.5 7
5 7
6 9
7 10
8 12
109b: 根据核心层中编码子带 j的幅值包络量化指数和表 8中的量化指 数修正值, 计算出核心层残差信号第 个子带的幅值包络量化指数:
Tfi q (j) = Th q )― diff(region _ bit(j)) ,户 0, ... ,L core― 1 其中, 是核心层中编码子带 J的幅值包络量化指数。
需要注意的是, 当核心层中某个编码子带的比特分配数为 0时, 则无需 对核心层残差信号的编码子带幅值包络进行^ ί 正, 这时核心层的残差信号子 带幅值包络值与核心层的编码子带幅值包络值 相同。
此外, 当核心层中某个编码子带比特分配数 regzow— bz ( )=9时, 置核心层 残差信号第 个编码子带的量化幅值包络值为零。
110: 在扩展层中对扩展层编码信号的编码子带进行 比特分配: 扩展层子带划分由表 1或表 2决定。 子带 0, ... ,L core - l中的编码信号 是核心层残差信号, — re, ... , - 1中的编码信号是扩展层编码子带中的频域 系数。 子带 0至 -1也称为扩展层编码信号的编码子带。
根据计算出的核心层残差信号的幅值包络量化 指数、 扩展层编码子带的 幅值包络量化指数以及扩展层可用比特数, 釆用与核心层相同的比特分配方 案在整个扩展层频带范围内计算扩展层编码信 号的编码子带重要性的初始 值, 并对扩展层编码信号的编码子带进行比特分配 。
本实施例中,扩展层频带范围是 0 ~ 13.6kHz。音频流的总码率为 64kbps, 核心层的码率为 32kbps, 则扩展层的最大码率为 64kbps。 根据核心层码率和 扩展层最大码率计算出扩展层中总的可用的比 特数, 然后进行比特分配, 直 至比特完全消耗。
111 :根据扩展层编码信号编码子带的幅值包络量 指数和相应的比特分 配数, 对扩展层编码信号进行归一化、 矢量量化和编码, 得到编码信号的编 码比特。 其中, 扩展层中编码信号的矢量构成、 矢量量化方法和编码方法分 别与核心层中频域系数的矢量构成、 矢量量化方法和编码方法相同。
112: 构造可分层编码码流, 根据码率的大小构造码率层。
如图 4所示, 釆用如下方式构造可分层编码码流: 首先将核心层的边信 息按如下顺序写入比特流复用器 MUX: Flag transient , Flag huff—丽 core、 Flag huff PLVQ core和 count core, 然后将核心层的编码子带幅值包络编码 比特写入 MUX, 然后将核心层频域系数的编码比特写入 MUX; 然后将扩展 层的边信息按如下顺序写入 MUX:扩展层编码子带的幅值包络霍夫曼编码标 识位 Flag huff—rms ext、 频域系数霍夫曼编码标识位 Flag huff PLVQ ext和 比特分配修正迭代次数 count ext, 然后将扩展层编码子带 ( L core, ... ,L ~ l ) 的幅值包络编码比特写入 MUX , 然后将扩展层编码信号的编码比特写入 MUX; 最后将按上述顺序写成的可分层码流传送到解 码端;
其中, 扩展层编码信号编码比特的写入顺序按照扩展 层编码信号的编码 子带重要性的初始值排序。 即重要性初始值大的扩展层编码信号的编码子 带 的编码比特优先写入码流, 对于具有相同重要性的编码子带, 低频编码子带 优先。
由于扩展层中的残差信号的幅值包络是由核心 层编码子带的幅值包络和 比特分配数计算出来的, 因此不用传送到解码端。 这样既可以增加核心层带 宽的编码精度又不必附加比特用以传送残差信 号的幅值包络值。 根据所要求传送的码率, 把比特流复用器后部不必要的比特舍去后, 将 满足码率要求的比特数传送到解码端。 即按照编码子带重要性从小到大的顺 序舍去不必要的比特。
在本实施例中, 编码频带范围为 0 ~ 13.6kHz, 最大码率为 64kbps , 按码 率分层的方法如下:
将编码频带范围 0 ~ 7kHz内的频域系数划分成核心层, 核心层所对应的 最大码率是 32kbps , 记为 L0层; 扩展层的编码频带范围为 0 ~ 13.6kHz, 其 最大码率为 64kbps , 记为 Li— 5层;
在送到解码端之前, 根据舍去比特数的多少可以将码率划分为 —1层, 对应 36kbps , Lj_2层, 对应 40kbps , _3层, 对应 48kbps , _ 层, 对应 56kbps及 Li— 5层, 对应 64kbps。
图 5表示了根据频带范围分层和根据码率分层的 系。
图 6是本发明可分层音频编码系统的结构示意图 如图 6所示, 该系统 包含: 瞬态判决单元、 频域系数生成单元、 幅值包络计算单元、 幅值包络量 化和编码单元、核心层比特分配单元、核心层 频域系数矢量量化和编码单元、 扩展层编码信号生成单元、 残差信号幅值包络生成单元、 扩展层比特分配单 元、 扩展层编码信号矢量量化和编码单元、 比特流复用器; 其中:
所述瞬态判决单元, 用于对当前帧的音频信号进行瞬态判决;
所述频域系数生成单元, 与所述瞬态判决单元连接, 瞬态判决为稳态信 号时, 用于对加窗后的音频信号直接进行时频变换得 到的总的频域系数; 瞬 态判决为瞬态信号时, 用于将音频信号分成 个子帧, 对每个子帧进行时频 变换, 变换得到的 组频域系数构成当前帧总的频域系数, 对总的频域系数 按照编码子带从低频到高频的顺序进行重排, 其中, 所述总的频域系数包括 核心层频域系数和扩展层频域系数, 所述编码子带包括核心层编码子带和扩 展层编码子带, 核心层频域系数构成若干个核心层编码子带, 扩展层频域系 数构成若干个扩展层编码子带;
所述幅值包络计算单元, 与所述频域系数生成单元连接, 用于计算核心 层编码子带和扩展层编码子带的幅值包络值; 所述幅值包络量化和编码单元, 与所述幅值包络计算单元以及瞬态判决 单元连接, 用于对核心层编码子带和扩展层编码子带的幅 值包络值进行量化 和编码, 得到核心层编码子带的和扩展层编码子带的幅 值包络量化指数及其 编码比特; 其中, 若为稳态信号, 则对核心层编码子带和扩展层编码子带的 幅值包络值进行统一量化; 若为瞬态信号, 则对核心层编码子带和扩展层编 码子带的幅值包络值分别进行单独量化, 以及对核心层编码子带的幅值包络 量化指数和扩展层编码子带的幅值包络量化指 数分别进行重排;
所述核心层比特分配单元, 与所述幅值包络量化和编码单元连接, 用于 根据核心层编码子带的幅值包络量化指数对核 心层编码子带进行比特分配, 得到核心层编码子带的比特分配数;
所述核心层频域系数矢量量化和编码单元, 与所述频域系数生成单元、 幅值包络量化和编码单元及核心层比特分配单 元连接, 用于使用根据核心层 编码子带的幅值包络量化指数重建的核心层编 码子带的量化幅值包络值和比 特分配数对核心层编码子带的频域系数进行归 一化、 矢量量化和编码, 得到 核心层频域系数的编码比特;
所述扩展层编码信号生成单元, 与所述频域系数生成单元及核心层频域 系数矢量量化和编码单元连接, 用于生成残差信号, 得到由残差信号和扩展 层频域系数构成的扩展层编码信号;
所述残差信号幅值包络生成单元, 与所述幅值包络量化和编码单元以及 核心层比特分配单元连接, 用于根据核心层编码子带的幅值包络量化指数 与 对应编码子带的比特分配数, 得到核心层残差信号的幅值包络量化指数; 所述扩展层比特分配单元, 与所述残差信号幅值包络生成单元及幅值包 络量化和编码单元连接, 用于根据核心层残差信号幅值包络量化指数和 扩展 层编码子带的幅值包络量化指数对扩展层编码 子带进行比特分配, 得到扩展 层编码子带的比特分配数;
所述扩展层编码信号矢量量化和编码单元, 与所述幅值包络量化和编码 单元、 扩展层比特分配单元、 残差信号幅值包络生成单元及扩展层编码信号 生成单元连接, 用于使用根据扩展层编码信号编码子带的幅值 包络量化指数 重建的扩展层编码信号编码子带的量化幅值包 络值和比特分配数对扩展层编 码信号进行归一化、 矢量量化和编码, 得到扩展层编码信号的编码比特; 所述比特流复用器与所述幅值包络量化和编码 单元、 核心层频域系数矢 量量化和编码单元、扩展层编码信号矢量量化 和编码单元连接, 用于将核心 层边信息比特、核心层编码子带的幅值包络的 编码比特、核心层频域系数的 编码比特、扩展层边信息比特, 扩展层编码子带的幅值包络的编码比特和扩 展层编码信号的编码比特进行打包。
所述频域系数生成单元获取当前帧总的频域系 数时, 用于将当前帧的 N 点时域釆样信号 与上一帧的 N点时域釆样信号 x。 w («)组成 2N点时域釆样 信号 《) , 然后对 《)实施加窗和时域抗混叠处理得到 N点时域釆样信号 ^") ; 以及对时域信号 做对称变换, 接着在信号两端各添加一段零序列, 将加长后的信号分成 M个互相交迭的子帧, 然后对每个子帧的时域信号实施 加窗、 时域抗混叠处理和时频变换, 得到 组频域系数, 构成当前帧总的频 域系数。
所述频域系数生成单元对频域系数进行重排时 , 在核心层和扩展层范围 内按照编码子带从低频到高频的顺序分别进行 频域系数的重排。
所述幅值包络量化和编码单元对幅值包络量化 指数进行重排具体指: 将 同一子帧内的编码子带的幅值包络量化指数按 照频率递增或递减的顺序重新 排列在一起, 在子帧连接处釆用分属于两个子帧的代表对等 频率的两个编码 子带来连接。
所述比特流复用器按照如下码流格式进行复用 打包:
首先将核心层的边信息比特写入码流的帧头后 面, 将核心层编码子带的 幅值包络编码比特写入比特流复用器 MUX,然后将核心层频域系数的编码比 特写入 MUX;
然后将扩展层的边信息比特写入 MUX,然后将扩展层频域系数编码子带 的幅值包络编码比特写入 MUX, 然后将扩展层编码信号的编码比特写入 MUX;
根据所要求的码率, 将满足码率要求的比特数传送到解码端。
核心层的边信息包括瞬态判决标识位比特、 核心层编码子带的幅值包络 的霍夫曼编码标志位比特、 核心层频域系数的霍夫曼编码标志位比特和核 心 层比特分配修正迭代次数比特;
扩展层的边信息包括扩展层编码子带的幅值包 络的霍夫曼编码标识位比 特、 扩展层编码信号的霍夫曼编码标识位比特和扩 展层比特分配修正迭代次 数比特。
所述扩展层编码信号生成单元还包括残差信号 生成模块和扩展层编码信 号合成模块;
所述残差信号生成模块用于对核心层频域系数 的量化值进行反量化, 并 与核心层频域系数进行差计算, 得到核心层残差信号;
所述扩展层编码信号合成模块用于将核心层残 差信号和扩展层的频域系 数按频带的顺序合成, 得到扩展层的编码信号。
所述残差信号幅值包络生成单元还包括量化指 数修正值获取模块和残差 信号幅值包络量化指数计算模块;
所述量化指数修正值获取模块用于根据核心层 编码子带比特分配数, 查 找核心层残差信号幅值包络量化指数的修正值 统计表, 得到残差信号编码子 带的量化指数修正值, 各编码子带的量化指数修正值大于等于 0, 且当核心 层对应编码子带的比特分配数增加时不减, 如果核心层的编码子带的比特分 配数为 0, 则核心层残差信号在该编码子带的量化指数修 正值为 0, 如果子带 的比特分配数为所限定的最大比特分配数, 则残差信号在该子带的幅值包络 值为零;
所述残差信号幅值包络量化指数计算模块用于 将核心层编码子带的幅值 包络量化指数与对应编码子带的量化指数修正 值进行差计算, 得到核心层残 差信号编码子带的幅值包络量化指数。
所述比特流复用器将扩展层编码信号编码比特 按照各扩展层编码信号的 编码子带重要性的初始值从大到小的顺序写入 码流, 对于具有相同重要性的 编码子带 , 低频编码子带的编码比特优先写入码流。
图 6中的各单元(模块) 的具体功能详见对图 2所示流程的描述。
解码方法和系统 基于本发明思想, 本发明可分层音频解码方法, 如图 7所示, 该解码方 法包括以下步骤:
步骤 701 : 对编码端传送过来的比特流进行解复用, 对核心层编码子带 和扩展层编码子带的幅值包络编码比特解码, 得到核心层编码子带和扩展层 编码子带的幅值包络量化指数; 若瞬态判决信息表明为瞬态信号, 还对核心 层编码子带和扩展层编码子带的幅值包络量化 指数按照频率从小到大的顺序 分别进行重排;
步骤 702: 根据核心层编码子带的幅值包络量化指数, 对核心层编码子 带进行比特分配, 并由此推算核心层残差信号的幅值包络量化指 数, 根据核 心层残差信号的幅值包络量化指数和扩展层编 码子带的幅值包络量化指数对 扩展层编码信号编码子带进行比特分配;
计算残差信号的幅值包络量化指数的方法为: 根据核心层比特分配数, 查找核心层残差信号幅值包络量化指数的修正 值统计表, 得到核心层残差信 号幅值包络量化指数的修正值; 对核心层编码子带的幅值包络量化指数和对 应编码子带的核心层残差信号幅值包络量化指 数的修正值进行差计算, 得到 核心层残差信号幅值包络量化指数;
各编码子带的核心层残差信号幅值包络量化指 数修正值大于等于 0, 且 对应核心层编码子带的比特分配数增加时不减 小;
当某个核心层编码子带的比特分配数为 0时, 核心层残差信号幅值包络 量化指数修正值为 0 , 当某个核心层编码子带的比特分配数为所限定 的最大 比特分配数时, 对应的核心层残差信号的幅值包络值为零。
步骤 703 : 根据核心层和扩展层的比特分配数, 分别对核心层频域系数 编码比特和扩展层编码信号的编码比特解码, 得到核心层频域系数和扩展层 编码信号, 将扩展层编码信号按照子带顺序重新排列, 并和核心层频域系数 相加, 得到全体带宽的频域系数;
步骤 704: 若所述瞬态判决信息表明为稳态信号, 则对全体带宽的频域 系数直接进行时频逆变换, 得到输出的音频信号; 若所述瞬态判断信息表明 为瞬态信号, 则将全体带宽的频域系数进行重排, 然后分成 组频域系数, 对每一组频域系数进行时频逆变换, 根据变换得到的 组时域信号计算得到 最终的音频信号。
釆用如下顺序对扩展层编码信号的编码比特进 行解码:
在扩展层中, 扩展层编码信号编码比特的解码顺序是根据对 应的扩展层 编码信号的编码子带重要性的初始值决定的, 重要性大的扩展层编码信号的 编码子带优先解码,如果有两个扩展层编码信 号编码子带具有相同的重要性, 则低频编码子带优先解码, 解码过程中计算已解码的比特数, 当已解码的比 特数满足总比特数要求时停止解码。
图 8是本发明可分层音频解码方法实施例的流程 。 如图 8所示, 该方 法包括:
801 :从编码端传送过来的可分层码流中(即从比 流解复用器 DeMUX, Demultiplexer中)提取一帧的编码比特;
提取出编码比特后, 首先对边信息进行解码, 然后根据 Flag huff core 的值对该帧中核心层的各幅值包络编码比特进 行霍夫曼 解码或直接解码, 得到核心层编码子带的幅值包络量化指数 7¾( ) , j=0,…, — core — 1
802:根据核心层编码子带的幅值包络量化指数 算出核心层编码子带重 要性初始值, 并利用子带重要性对核心层编码子带进行比特 分配, 得到核心 层的比特分配数;解码端的比特分配方法和编 码端的比特分配方法完全相同。 在比特分配过程中, 比特分配步长及比特分配后编码子带重要性降 低的步长 是变化的。
在完成上述比特分配过程后, 根据编码端核心层的比特分配修正次数 count core 值和核心层编码子带的重要性, 对核心层编码子带再进行 count core次比特分配, 然后比特分配全过程结束。
在比特分配过程中, 对比特分配数为 0的编码子带分配比特的步长是 1 个比特, 比特分配后重要性降低的步长为 1 , 对比特分配数大于 0且小于某 个阔值的编码子带追加分配比特时的比特分配 步长为 0.5 个比特, 比特分配 后重要性降低的步长也为 0.5 ,对比特分配数大于等于该阔值的编码子带追 分配比特时的比特分配步长为 1 , 比特分配后重要性降低的步长也为 1 ;
803 :利用核心层编码子带的比特分配数和核心层 码子带的量化幅值包 络值, 并根据 Flag huff PL VQ core对核心层频域系数的编码比特进行解码、 反量化及反归一化处理, 得到核心层频域系数。
804: 在对核心层频域系数的编码比特进行解码、 反量化时, 根据核心层 编码子带比特分配数将核心层编码子带划分成 低比特编码子带和高比特编码 子带, 对低比特编码子带和高比特编码子带分别使用 塔型格型矢量量化反量 化方法和球型格型矢量量化反量化方法进行反 量化;
根据核心层边信息, 对低比特编码子带进行霍夫曼解码或者直接进 行自 然解码得到低比特编码子带的塔型格型矢量量 化的索引, 对所有塔型格型矢 量量化的索引进行反量化及反归一化, 得到该编码子带的频域系数。 以下对 塔型格型矢量量化反量化过程进行说明:
a: 对于所有户0, ... ,L—core - 1 , 如果 Flag huff PLVQ— core =0 , 直接解码 得到低比特编码子带 j 的第 m 个矢量量化的索引 index b(]',m) , 如果 Flag huff PL VQ core =1 ,那么根据编码子带单个频域系数的比特分配 所对 应的霍夫曼编码码表, 得到低比特编码子带 j 的第 m 个矢量量化的索引 index _b(j,m) ;
当编码子带的单个频域系数所分配到的比特数 为 1时, 如果量化索引的 自然二进制码值小于 "1111 111",则按照自然二进制码值计算量化索引; 如果 量化索引的自然二进制码值等于" 1111 111",则继续读入下一位比特,如果下 一位比特是 0 , 则量化索引值为 127 , 如果下一位比特是 1 , 则量化索引值为 128。
b: 对该量化索引的塔式格型矢量反量化的过程实 际上是矢量量化过程 108的逆过程, 反量化过程如下:
1 ) 确定矢量量化索引所在的能量塔面及在该能量 塔面上的标号: 在塔面能量从 2到 LargeK(regwn bU(i))中寻找 kk, 使得下面的不等式满 足:
N(8,kk) <= index _b(j,m) < N(8,^+2), 如果找到这样的^ , M K=kk为量化智 ^Unde X —b(j,m) 所对应 D 8 格点所 在塔面的能量, b= index—b(j,m)-N(8,kk)为该 D 8 格点在所在塔面上的索引标号; 如果找不到这样的^ ,则量化索引 index b(j,m、 所对应 D 8 格点的塔面能 量 K=0及索引标号 b=0;
2 )求解塔面能量为 K和索引标号为 b的 D 8 格点矢量 Y=(yl, y2 y3, y4, y5, y6, y7, y8,)的具体步骤如下:
步骤 1: 令 Y=(0,0,0,0,0,0,0,0), xb=0, i=l, k=K, 1=8;
步骤 2: 如果 b=xb那么 yi=0;跳转至步骤 6;
步骤 3 : 如果 b<xb+N(l-l,k), 则 yi=0,跳转至步骤 5;
否则 , xb=xb+N(l-l ,k);令 j=l;
步骤 4: 如果 b<xb+2*N(l-l,k-j),则
^口果 xb<=b<xb+N(l-l,k-j), 则 yi=j ;
如果 b>=xb+N(l-l,k-j), 则 yi=-j , xb=xb+N(l-l, k-j);
否则 xb=xb+2*N(l-l, k-j)J=j+l ; 继续本步骤;
步骤 5: 更新 k=k-|yi|, 1=1-1, i=i+l , 如果 k>0, 则跳转到步骤 2;
步骤 6: 如果 k>0, 则 y8=k-| yi| , Y=( yl, y2, ... , y8)为所求格点。
3 )对所求 D 8 格点进行能量反规整, 得到
Y 1 = {Υ + Ά) Ι scale{index) 其中, a = (2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 ) , scale{index)是缩放因子, 可从 表 5查找到。
4 )对 Ϋ 进行反归一化处理, 得到解码端恢复出的编码子带 的第 m个 矢量的频域系数: j ― j
其中, 为第 个编码子带的幅值包络量化指数。
对高比特编码子带的编码比特直接进行自然解 码得到高比特编码子带 _; 的第 m个索引矢量 k, 对该索引矢量进行球型格型矢量量化的反量化 过程实 际上是量化过程的逆过程, 具体步骤如下:
a: 计算 x= *G, 并计算 _yte /?=x/(2 A (regzo«— bz()); 其中, 为矢量量化 的索引矢量, r o«_ t /)表示编码子带 · 中单个频域系数的比特分配数; G 为/ ¾格点的生成矩阵, 形式如下:
2 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0
1 0 0 1 0 0 0 0
G
1 0 0 0 1 0 0 0
1 0 0 0 0 1 0 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 b: it(j));
c: 对所求 D 8 格点进行能量反规整, 得到
= ca/e(reg謂— )/(2 。" - ) + a ,
其中, a = (2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 , 2- 6 ) , scale(region _ bit(j))是缩放因 子, 可从表 10查找到。
d: 对 进行反归一化处理, 得到解码端恢复出的编码子带 的第 w个 矢量的频域系数: j ― j
其中, 为第 个编码子带的幅值包络量化指数。
805:利用核心层编码子带的幅值包络量化指数 核心层编码子带的比特 分配数计算核心层残差信号的子带幅值包络量 化指数; 解码端的计算方法与 编码端的计算方法完全相同;
根据 Flag huff rms ext的值对扩展层编码子带的幅值包络编码比特 进行 霍夫曼解码或直接解码, 得到扩展层编码子带的幅值包络量化指数 Th q (j , j=,L_core, ...,L— 1。
806: 扩展层编码信号是由核心层残差信号和扩展层 频域系数构成, 根据 扩展层编码信号编码子带的幅值包络量化指数 计算扩展层编码信号编码子带 重要性的初始值, 并使用扩展层编码信号编码子带的重要性初始 值对扩展层 编码信号编码子带进行比特分配, 得到扩展层编码信号编码子带的比特分配 数;
解码端的编码子带重要性初始值的计算和比特 分配方法与编码端的编码 子带重要性初始值的计算方法和比特分配方法 相同。
807: 计算扩展层编码信号:
利用扩展层编码信号的比特分配数对编码信号 的编码比特进行解码和反 量化, 并利用扩展层编码信号编码子带的量化幅值包 络值对反量化后的数据 进行反归一化, 得到扩展层编码信号。
扩展层的解码及反量化的方法和核心层的解码 及反量化的方法相同。 本步骤中, 扩展层编码信号的编码子带解码的顺序是根据 扩展层编码信 号的编码子带重要性的初始值决定的。 如果有两个扩展层编码信号的编码子 带具有相同的重要性, 则低频编码子带优先解码, 同时计算已解码的比特数, 当已解码的比特数满足总比特数要求时停止解 码。
例如, 从编码端送往解码端的码率为 64kbps, 但是由于网络原因, 解码 端只能得到码流前面 48kbps的信息, 或解码端只支持 48kbps的解码, 所以 当解码端解码到 48kbps时就停止解码。
808: 将扩展层解码得到的编码信号按频率大小重新 排列, 并将相同频率 下的核心层频域系数和扩展层编码信号相加得 到频域系数输出值。
809:对编码过程中未分配编码比特的子带或传 过程中丟失了的子带进 行噪声填充。
810: 当瞬态判决标识位 ¾^— ira¾v e«i为 1时,对频域系数进行重排, 即 将表 2中的 L个子带所对应的所有频域系数按照原始频域 数索引序号对应 的位置重新排列, 表 2中没有提及的频域系数索引对应的频域系数 置为 0。
811 : 对频域系数进行时频逆变换, 得到最终的音频输出信号。 具体步骤 下:
当瞬态判决标识位 ira¾v e«i为 0时,对 N点频域系数进行长度为 N 的逆 DCTiv变换, 得到 x q (n),n = 0, ... , N— 1。 当瞬态判决标识位^/^—/^^ ^/ 1 为 1时,首先将 N点频域系数分成等长 的 4组, 对每一组频域系数进行长度为 N/4的逆 DCT IV 变换和逆时域抗混叠 处理, 接着对这 4组得到的信号进行加窗处理(窗结构同编码 ) , 然后对 这 4组力口窗后信号进行交迭相力口, 得到 j^ («)," = o,...,N_l。
对^» = 0,..., -1进行逆时域抗混叠处理和加窗处理 (窗结构同编码 端) 。 对相邻两帧进行交迭相加, 得到最终的音频输出信号。
图 9是本发明可分层音频解码系统的结构示意图 如图 9所示, 该系统 包含: 比特流解复用器(DeMUX ) 、 核心层编码子带的幅值包络解码单元、 核心层比特分配单元、 核心层解码和反量化单元、 残差信号幅值包络生成单 元、 扩展层比特分配单元、 扩展层编码信号解码和反量化单元、 全体带宽频 域系数恢复单元、 噪声填充单元、 音频信号恢复单元; 其中:
所述幅值包络解码单元, 与所述比特流解复用器连接, 用于对所述比特 流解复用器输出的核心层和扩展层编码子带的 幅值包络编码比特进行解码, 得到核心层编码子带和扩展层编码子带的幅值 包络量化指数; 若瞬态判决信 息表明为瞬态信号, 还对核心层编码子带和扩展层编码子带的幅值 包络量化 指数按照频率从 d、到大的顺序分别进行重排;
所述核心层比特分配单元, 与所述幅值包络解码单元连接, 用于根据核 心层编码子带的幅值包络量化指数, 对核心层编码子带进行比特分配, 得到 核心层编码子带的比特分配数;
所述核心层解码和反量化单元, 与所述比特流解复用器、 幅值包络解码 单元及核心层比特分配单元连接, 用于根据核心层编码子带的幅值包络量化 指数计算得到核心层编码子带的量化幅值包络 值, 使用核心层编码子带的比 特分配数和量化幅值包络值对所述比特流解复 用器输出的核心层频域系数编 码比特进行解码、 反量化及反归一化处理, 得到核心层的频域系数;
所述残差信号幅值包络生成单元, 与所述幅值包络解码单元及核心层比 特分配单元连接, 用于根据核心层编码子带的幅值包络量化指数 与对应编码 子带的比特分配数,查找核心层残差信号幅值 包络量化指数的修正值统计表, 得到核心层残差信号幅值包络量化指数; 所述扩展层比特分配单元, 与所述残差信号幅值包络生成单元及幅值包 络解码单元连接, 用于根据核心层残差信号幅值包络量化指数和 扩展层编码 子带的幅值包络量化指数进行扩展层编码信号 编码子带的比特分配, 得到扩 展层编码信号编码子带的比特分配数;
所述扩展层编码信号解码和反量化单元, 与比特流解复用器、 所述幅值 包络解码单元、 扩展层比特分配单元及残差信号幅值包络生成 单元连接, 用 于使用扩展层编码信号编码子带的幅值包络量 化指数计算得到扩展层编码信 号编码子带的量化幅值包络值, 使用扩展层编码信号编码子带的比特分配数 和量化幅值包络值对所述比特流解复用器输出 的扩展层编码信号的编码比特 进行解码、 反量化及反归一化处理, 得到扩展层编码信号;
所述全体带宽频域系数恢复单元, 与所述核心层解码和反量化单元以及 扩展层编码信号解码和反量化单元连接, 用于根据编码子带顺序对所述扩展 层编码信号解码和反量化单元输出的扩展层的 编码信号进行重新排序, 然后 与所述核心层解码和反量化单元输出的核心层 频域系数做和计算, 得到全体 带宽频域系数;
所述噪声填充单元, 与所述全体带宽频域系数恢复单元及幅值包络 解码 单元连接, 用于对编码过程中未分配编码比特的子带进行 噪声填充;
音频信号恢复单元, 与所述噪声填充单元连接, 若所述瞬态判决信息表 明为稳态信号, 用于对全体带宽的频域系数直接进行时频逆变 换, 得到输出 的音频信号; 若所述瞬态判断信息表明为瞬态信号, 用于将全体带宽的频域 系数进行重排,然后分成 组频域系数,对每一组频域系数进行时频逆变 换, 根据变换得到的 组时域信号计算得到最终的音频信号。
所述残差信号幅值包络生成单元还包括量化指 数修正值获取模块和残差 信号幅值包络量化指数计算模块;
所述量化指数修正值获取模块用于根据核心层 编码子带比特分配数查找 核心层残差信号幅值包络量化指数的修正值统 计表, 得到残差信号编码子带 的量化指数修正值, 各编码子带的量化指数修正值大于等于 0, 且当核心层 对应编码子带的比特分配数增加时不减小, 如果核心层的某个编码子带的比 特分配数为 0, 则核心层残差信号在该编码子带的量化指数修 正值为 0, 如果 某个核心层编码子带的比特分配数为所限定的 最大比特分配数, 则残差信号 在该编码子带的幅值包络值为零;
所述残差信号幅值包络量化指数计算模块用于 将核心层编码子带的幅值 包络量化指数与对应编码子带的量化指数修正 值进行差计算, 得到核心层残 差信号编码子带的幅值包络量化指数。
所述扩展层编码信号解码和反量化单元对扩展 层编码信号的编码子带解 码的顺序是根据扩展层编码信号的编码子带重 要性的初始值决定的, 重要性 大的扩展层编码信号的编码子带优先解码, 如果有两个扩展层编码信号的编 码子带具有相同的重要性, 则低频编码子带优先解码, 解码过程中计算已解 码的比特数, 当已解码的比特数满足总比特数要求时停止解 码。
所述扩展层编码信号解码和反量化单元对扩展 层编码信号编码子带解码 的顺序是根据扩展层编码信号的编码子带重要 性的初始值决定的, 重要性大 的扩展层编码信号的编码子带优先解码, 如果有两个扩展层编码信号的编码 子带具有相同的重要性, 则低频编码子带优先解码, 解码过程中计算已解码 的比特数, 当已解码的比特数满足总比特数要求时停止解 码。
所述音频信号恢复单元对全体带宽的频域系数 进行重排具体指将属于同 一子帧的频域系数按照编码子带从低频到高频 的顺序排列, 得到 组频域系 数后, 再将 组频域系数按照子帧的顺序排列。
若瞬态判决信息表明为瞬态信号, 所述音频信号恢复单元根据变换得到 的 组时域信号计算得到最终的音频信号的过程具 体包括: 对每一组进行逆 时域抗混叠处理,接着对这 M组得到的信号进行加窗处理, 然后对这 M组加 窗后信号进行交迭相加, 得到 N点时域釆样信号 ; 对时域信号 进行 逆时域抗混叠处理和加窗处理, 对相邻两帧进行交迭相加, 得到最终的音频 输出信号。
本发明还提供以下针对瞬态信号的可分层编码 及解码方法:
本发明瞬态信号的可分层音频编码方法, 包括:
Al、 将音频信号分成 个子帧, 对每个子帧进行时频变换, 变换得到的 M组频域系数构成当前帧总的频域系数, 对总的频域系数按照编码子带从低 频到高频的顺序进行重排, 其中, 所述总的频域系数包括核心层频域系数和 扩展层频域系数, 所述编码子带包括核心层编码子带和扩展层编 码子带, 核 心层频域系数构成若干个核心层编码子带, 扩展层频域系数构成若干个扩展 层编码子带;
B1、对核心层编码子带和扩展层编码子带的幅 包络值进行量化和编码, 得到核心层编码子带和扩展层编码子带的幅值 包络量化指数及其编码比特, 其中对核心层编码子带和扩展层编码子带的幅 值包络值分别进行单独量化, 以及对核心层编码子带的幅值包络量化指数和 扩展层编码子带的幅值包络量 化指数分别进行重排;
C1、 根据核心层编码子带的幅值包络量化指数对核 心层编码子带进行比 特分配, 然后对核心层频域系数进行量化和编码得到核 心层频域系数的编码 比特;
Dl、 对前述核心层中经过矢量量化的频域系数进行 反量化, 并与原始的 经过时频变换后得到的频域系数进行差计算, 得到核心层残差信号;
E1、 根据核心层编码子带的幅值包络量化指数和比 特分配数计算核心层 残差信号编码子带的幅值包络量化指数;
F1、 根据核心层残差信号的幅值包络量化指数和扩 展层编码子带的幅值 包络量化指数对扩展层编码信号的编码子带进 行比特分配, 然后对扩展层编 码信号进行量化和编码得到扩展层编码信号的 编码比特, 其中, 所述扩展层 编码信号由核心层残差信号和扩展层频域系数 构成;
Fl、 将核心层和扩展层编码子带的幅值包络编码比 特、 核心层频域系数 的编码比特和扩展层编码信号的编码比特复用 打包后, 传送给解码端。
步骤 A1中, 当前帧总的频域系数的获取方法为:
将当前帧的 N点时域釆样信号 x(n)与上一帧的 N点时域釆样信号 Xouin) 组成 2N点时域釆样信号 《) , 然后对 《)实施加窗和时域抗混叠处理得到 N 点时域釆样信号^
对时域信号 做对称变换, 接着在信号两端各添加一段零序列, 将加 长后的信号分成 个互相交迭的子帧,然后对每个子帧的时域信 号实施加窗、 时域抗混叠处理和时频变换,得到 组频域系数,构成当前帧总的频域系数。 步骤 A1 中, 对频域系数进行重排时, 在核心层和扩展层范围内按照编 码子带从低频到高频的顺序分别进行频域系数 的重排。
步骤 B1中, 所述对幅值包络量化指数进行重排具体包括:
将同一子帧内的编码子带的幅值包络量化指数 按照频率递增或递减的顺 序重新排列在一起, 在子帧连接处釆用分属于两个子帧的代表对等 频率的两 个编码子带来连接。
步骤 F1中, 按照如下码流格式进行复用打包:
首先将核心层的边信息比特写入码流的帧头后 面, 将核心层编码子带的 幅值包络编码比特写入比特流复用器 MUX,然后将核心层频域系数的编码比 特写入 MUX;
然后将扩展层的边信息比特写入 MUX,然后将扩展层频域系数编码子带 的幅值包络编码比特写入 MUX, 然后将扩展层编码信号的编码比特写入 MUX;
根据所要求的码率, 将满足码率要求的比特数传送到解码端。
核心层的边信息包括瞬态判决标识位比特、 核心层编码子带的幅值包络 的霍夫曼编码标志位比特、 核心层频域系数的霍夫曼编码标志位比特和核 心 层比特分配修正迭代次数比特; 扩展层的边信息包括扩展层编码子带的幅值包 络的霍夫曼编码标识位比 特、 扩展层编码信号的霍夫曼编码标识位比特和扩 展层比特分配修正迭代次 数比特。
本发明瞬态信号可分层解码方法, 包括:
步骤 A2、对编码端传送过来的比特流进行解复用, 对核心层编码子带和 扩展层编码子带的幅值包络编码比特解码, 得到核心层编码子带和扩展层编 码子带的幅值包络量化指数, 对核心层编码子带和扩展层编码子带的幅值包 络量化指数按照频率从 d、到大的顺序分别进行重排;
步骤 B2、 根据重排后的核心层编码子带的幅值包络量化 指数, 对核心层 编码子带进行比特分配, 并由此计算核心层残差信号的幅值包络量化指 数; 步骤 C2、根据核心层残差信号的幅值包络量化指数 重排后的扩展层编 码子带的幅值包络量化指数对扩展层编码信号 的编码子带进行比特分配; 步骤 D2、根据核心层和扩展层的比特分配数, 分别对核心层频域系数编 码比特和扩展层编码信号的编码比特解码, 得到核心层频域系数和扩展层编 码信号, 将扩展层编码信号按照子带顺序重新排列, 并和核心层频域系数相 加, 得到全体带宽的频域系数;
步骤 E2、将全体带宽的频域系数进行重排, 然后分成 组, 对每一组频 域系数进行时频逆变换, 根据变换得到的 组时域信号计算得到最终的音频 信号。
步骤 E2中,将全体带宽的频域系数进行重排具体指 属于同一子帧的频 域系数按照编码子带从低频到高频的顺序排列 , 得到 组频域系数后, 再将 组频域系数按照子帧的顺序排列。
步骤 E2中, 根据变换得到的 M组时域信号计算得到最终的音频信号的 过程包括: 对每一组进行逆时域抗混叠处理, 接着对这 组得到的信号进行 加窗处理, 然后对这 组加窗后信号进行交迭相加, 得到 N点时域釆样信号 x q (n); 对时域信号 进行逆时域抗混叠处理和加窗处理, 对相邻两帧进行 交迭相加, 得到最终的音频输出信号。
工业实用性
本发明通过在可分层音频编解码方法中引入针 对瞬态信号帧的处理方 法, 对瞬态信号帧进行分段时频变换, 然后对变换得到的频域系数在核心层 和扩展层范围内分别进行重排, 以便与稳态信号帧进行相同的比特分配、 频 域系数编码等后续编码处理, 提高了瞬态信号帧的编码效率, 改善了可分层 音频编解码的质量。
Next Patent: METHOD FOR MANUFACTURING WEBPAGE, SYSTEM, CLIENT AND SERVER THEREOF
