1.Spectral extension简介

Spectral extension是通过低频的transform coefficients合成高频transform coefficients的过程。

spectral extension的实现与channel coupling类似,但是由于只需要transmit一些用于合成高频transform coefficients的metadat,因此比coupling更能减少datarate。

而且spectral extension能用于mono signal,而coupling至少需要2个channel.

spectral extension的核心部分是band structure, spectral extension band接近于critical band. spectral extension基于band来计算energy ratio和band border.

原始信号的频谱如下图:

信号的频谱分为两个部分:baseband region和extension region. extension region基于band structure分为多个band,对于每一个band计算一个energy ratio.对于整个extension region,通过measure extension region的noise-like character得到一个noise blending parameter.计算出这些parameter后,原始信号的extension region的transform coefficient被discard.

接下来进行translation,其过程如下图:

translation将baseband region的transform coefficient copy到extension region.

baseband region中被copy的部分称为copy region.通常copy region会比extension region小,因此会将copy region进行多次copy来fill extension region,这种过程称为wrapping,在Figure 8中copy region被wrap了两次。wrap会导致translation过程中边界处频谱的不连续。由于每个band对应一个scale factor,如果wrapping发生在一个band内,scale factor并不能减少这种不连续。如果wrapping只发生在band  border,紧邻的两个bandd的scale factor可以减少不连续。因此translation确保wrapping发生在band之间。

简单的从baseband region copy到extension region不能产生natural sound signal.因为大部分signal在随着频率增大会更像noise.因此translated transform coefficients需要和noise spectrum根据noise-blending function 进行blend.

由于大部分signal在高频部分更像noise ,因此noise-blending function在高频权重更大。noise-blending function是线性的,其slope依赖于原始信号的bandwidth,其intercept依赖于noise blending parameter.

产生的noise spectrum的band energy和translated band相同,noise spectrum乘以noise-blending function得到的信号如下:

translated spectrum和inverse noise-blending function相乘的结果如下:

乘以了 noise-blending function后的translatged spectrum和noise spectrum进行blending如下图,注意每个blended band的energy和figure 8中的translated band的energy相等。

blending后的translated spectrum使用energy ratio进行scale后的spectrum与原始信号的banded envelop match:

2. Encoder Operation

Encoder分析extension region计算出noise-blending parameter,决定band structure,并simulates decoder translation来计算出energy ratio.

在encoder分析extension region的spectral envelop的两个条件:时间上angle precession的变化和magnitute 的变化。如果angle or magnitute变化不连续,原始信号的spectrum更像noise,所以在translation后会blending更多noise,否则则blending较少noise.在bitstream中, noise-blending parameter quantize为5 bit。

banding structure的一个band包含多个subband,每个subband包含12个transform coefficient. default banding structure接近于auditory critical band.

接下来计算energy ratio:

首先计算extension region的banded energy:

在encoder端,simulate translation过程,计算synthesized extension region的banded energy.

计算energy ratio:

3.Decoder Operation

Decoder基于baseband transform coefficients和encoder 传送的metadata合成高频部分的transform coefficients.

Spectral extension decoding 过程如下:

在decoder首先进行translation,将baseband copy region的transform coefficients copy到extension region。

接下来generate noise spectrum来与translated transform coefficients进行blending. noise spectrum 使用zero-mean, unity-variance pseudo-random noise generator来产生。

每个band的noise-blending factors由noise-blending parameter 得到:

通过noise-blending factors计算mixing coefficients.

接下来将translated transform coefficients 和noise spectrum 进行blending:

与noise spectrum blending后的transform coefficients乘以energy ratio得到高频部分的transform coefficients:

EAC3 spectral extension原理的更多相关文章

  1. EAC3 Spectral Extension Process

    1.overview 当使用Spectral extension时,channel中的高频部分的transform coefficients由低频部分合成. transform coefficient ...

  2. Category VS Extension 原理详解

    (一)Category 1.什么是Category? category是Objective-C 2.0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是 ...

  3. iOS中Category和Extension 原理详解

    (一)Category .什么是Category? category是Objective-C .0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是为已 ...

  4. Jerry的Fiori原创文章合集

    我曾经于2014年10月到2016年5月工作于SAP CRM Fiori应用的开发团队, 我所在的团队负责下列这8个Fiori应用的维护和持续开发: My Opportunities My Tasks ...

  5. 谱聚类(spectral clustering)原理总结

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  6. 谱聚类(Spectral Clustring)原理

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  7. EAC3 channel & program extension

    EAC3 bit stream syntax允许在single bitstream中存在time-multiplexed substreams. 在EAC3的signle bitstream中,允许s ...

  8. 线性判别分析LDA原理总结

    在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结.这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结. ...

  9. Java ClassLoader 原理详细分析(转)

    转载自:http://www.codeceo.com/article/java-classloader.html 一.什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管 ...

随机推荐

  1. PAT (Basic Level) Practice (中文)1087 有多少不同的值 (20 分) (set)

    当自然数 n 依次取 1.2.3.…….N 时,算式 ⌊ 有多少个不同的值?(注:⌊ 为取整函数,表示不超过 x 的最大自然数,即 x 的整数部分.) 输入格式: 输入给出一个正整数 N(2). 输出 ...

  2. jmeter测试出现端口占用

    原文地址:https://www.cnblogs.com/deepSleeping/p/12067654.html Jmeter测试会出现端口占用情况 这边在这里做个记录,每次都要百度查询,刚好需要整 ...

  3. 题解 AT3717 【[ABC081A] Placing Marbles】

    题目传送门. 分析 我们可以把字符串中所有数加起来输出,那么到底怎么把一个字符变成一个数字呢.我们只需要减去字符\(0\)就可以了. 详细步骤 定义字符串\(s\)并将其输入. string s; c ...

  4. afl-fuzz技术初探

    afl-fuzz技术初探 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/8280352.html 参考了: http://pwn4.fun/2017/09/21/ ...

  5. http断点续传Range与Content-Range

    今天用别人封装的libcurl库下载文件,发现下载下来的文件总是缺少头两个字节,用以下配置启用HTTP头信息打印后发现原来是设置了断点续传位置的原因 curl_easy_setopt(m_pCurl, ...

  6. c# 调用c++类库控制usb继电器

    网上找不到调用此类库的文章,简单写一下,以备后用. 下面是封装后的调用c++类库的类 public class UsbRelayDeviceHelper { /// <summary> / ...

  7. 批量获取mysql数据库实例指定参数的值

    需求:需要对比所有mysql数据库实例上面的指定参数配置情况,同时需要需要能看到如ip,端口,master or slave,毕竟主和从参数不一样还是有可能的. 说明:必须要有个数据库存储所有是数据库 ...

  8. babel plugin

    a = () => {}, // Support for the experimental syntax 'classProperties' isn't currently enabled ya ...

  9. 小程序y轴拖动

    需求场景 小程序在y轴方向 拖动 一小段距离 解决方案 1.监听 元素 2.绑定 点击 和 移动 事件 3.数据处理 代码 <view animation="{{item.animat ...

  10. 图灵,咕泡,鲁班学院--Java高级架构师-互联网企业级实战VIP课程(价值6380)

    课程介绍:        讲课内容涉及Java互联网技术工程框架.应用框架.        性能调优 (Tomcat Nginx JVM)         分布式框架(并发编程 Zookeeper N ...