一种用于音频信号的快速处理方法

实用新型 · 2020-04-23
申请号:CN202010015986.5 申请日:20200108 公开号:CN110807169A 公开日:20200218 授权公告号:CN110807169B 授权公告日:20200403 申请人地址:310051 浙江省杭州市滨江区浦沿街道伟业路3号A幢707室 国家/省市:86(杭州) 代理机构:33261 主分类号:G06F17/14 代理人:贺龙萍 申请人:易兆微电子(杭州)有限公司 当前权利人:易兆微电子(杭州)有限公司 发明人:左罡;胡晨光 分类号:G06F17/14;G10L19/02 范畴分类:40B; 简要说明:为了节省音频处理运算量,本发明设计一种用于音频信号的快速处理方法,其包含以下步骤:步骤1、按频率抽取FFT/IFFT;步骤2、按频域抽取FFT蝶形运算数据地址的变化规律:对于基4的DIFFFT,每级计算都是由四个数据为一组构成的N个输入数据,进入蝶形运算得到个N个输出数据。步骤3、获取基4的DIF旋转因子的变化规律:对于按频率抽取的FFT算法,除最后一级外,其余各级蝶形单元的计算结果均需要与旋转因子相乘,获取基4的DIFFFT/IFFT输出数据排序的规律。步骤4、执行混合基DIFFFT/IFFT;步骤5、实序列的FFT运算方案包括:用一个N‑FFT同时计算两个N点实序列FFT;用一个N‑FFT计算一个2N点实序列的FFT。 主权利要求:1.一种用于音频信号的快速处理方法,其特征是包含以下步骤:步骤1、按频率抽取FFT/IFFT:设定所输入音频信号序列x(n)的长度为N=4L,L为整数,按照对执行DFT的X(k)中k除以4余数的不同进行分解,其基4运算都是有一定规律的,每一级的运算皆由N/4个蝶形运算构成,(2-1)在上式(2-1)中,m表示第m级蝶形运算,k为数据所在的行数,N为所要计算的数据的点数,为旋转因子,令,,,,可得基4按频率抽取的蝶形运算,由式(2-1)可知,一次基4蝶形运算需要3次复数乘法和4次复数加/减法运算,综上所述,由基4按频率抽取算法计算N点FFT时需要log4N=L级运算;步骤2、按频域抽取FFT蝶形运算数据地址的变化规律:对于基4DIFFFT,每级计算都是由四个数据为一组构成的N个输入数据,进入蝶形运算得到个N个输出数据,第1级进行蝶形运算的四个数据中相邻数据之间相差值为4,第2级进行蝶形运算的四个数据中相邻数据之间相差值为1,设此差值为D,蝶形运算所在的级数为P,则对于N=4L点FFT,共有log4N=L级运算,每级运算有N/4个蝶形运算单元,因此,D与P的关系为:D=4L-P;步骤3、获取基4的DIF旋转因子的变化规律:对于按频率抽取的FFT算法,除最后一级外,其余各级蝶形单元的计算结果均需要与旋转因子相乘,第2级蝶形运算不需要与旋转因子相乘,第1级蝶形运算则需要与相应的4组旋转因子相乘,各级对应的组数分别为(N,N/4,N/16....1)各级蝶形因子的指数分别为:////1,获取基4的DIFFFT/IFFT输出数据排序的规律:基4DIFFFT/IFFT输出顺序就是输入按照4进制的倒序,对于所有的基四FFT/IFFT,输出都是将最后一级运算结果按4进制数倒序得到;步骤4、执行混合基DIFFFT/IFFT:设输入序列x(n)的长度为N=4L*2,L为整数,在基4的基础上在最后一级加入基2运算即可实现,最后一级的基2运算的蝶形运算数据地址差值为1,它的运算公式如下:(3-1);步骤5、计算实序列的FFT:前面提到的FFT算法的输入的都是复数,但是对于音频信号,输入都是实数,实序列的FFT运算方案包括:用一个N-FFT同时计算两个N点实序列FFT;用一个N-FFT计算一个2N点实序列的FFT。 当前状态:1 代理机构:杭州橙知果专利代理事务所(特殊普通合伙) 33261 权利要求,1.一种用于音频信号的快速处理方法,其特征是包含以下步骤:步骤1、按频率抽取FFT/IFFT:设定所输入音频信号序列 x(n)的长度为N=4 L,L为整数,按照对执行DFT的 X(k)中k除以4余数的不同进行分解,其基4运算都是有一定规律的,每一级的运算皆由N/4个蝶形运算构成, (2-1) 在上式(2-1)中,m表示第m级蝶形运算,k为数据所在的行数,N为所要计算的数据的点数, 为旋转因子,令 , , , ,可得基 4 按频率抽取的蝶形运算, 由式(2-1)可知,一次基 4 蝶形运算需要 3 次复数乘法和4次复数加/减法运算,综上所述,由基 4 按频率抽取算法计算N点FFT时需要log 4N=L级运算; 步骤2、按频域抽取FFT蝶形运算数据地址的变化规律:对于基4 DIF FFT,每级计算都是由四个数据为一组构成的N个输入数据,进入蝶形运算得到个N个输出数据,第1级进行蝶形运算的四个数据中相邻数据之间相差值为4,第2级进行蝶形运算的四个数据中相邻数据之间相差值为1,设此差值为D,蝶形运算所在的级数为P,则对于N=4 L点FFT,共有log 4N=L级运算,每级运算有N/4个蝶形运算单元,因此,D与P的关系为:D=4 L-P; 步骤3、获取基4的DIF旋转因子的变化规律:对于按频率抽取的FFT算法,除最后一级外,其余各级蝶形单元的计算结果均需要与旋转因子相乘,第2级蝶形运算不需要与旋转因子相乘,第1级蝶形运算则需要与相应的4组旋转因子相乘,各级对应的组数分别为(N,N/4,N/16....1)各级蝶形因子的指数分别为: / / / /1, 获取基4的DIF FFT/IFFT输出数据排序的规律:基4 DIF FFT/IFFT输出顺序就是输入按照4进制的倒序,对于所有的基四FFT/IFFT,输出都是将最后一级运算结果按4进制数倒序得到;步骤4、执行混合基 DIF FFT/IFFT:设输入序列 x(n)的长度为N=4 L*2,L为整数,在基4的基础上在最后一级加入基2运算即可实现,最后一级的基2运算的蝶形运算数据地址差值为1,它的运算公式如下: (3-1) ; 步骤5、计算实序列的FFT:前面提到的FFT算法的输入的都是复数,但是对于音频信号,输入都是实数,实序列的FFT运算方案包括:用一个N-FFT同时计算两个N点实序列FFT;用一个N-FFT计算一个2N点实序列的FFT。 说明书, 一种用于音频信号的快速处理方法 技术领域 本发明主要是利用混合基FFT/IFFT原理来实现对音频数据信号的快速运算处理。 背景技术 目前,对音频数据信号的处理算法(比如降噪、回声消除等)一般都是在频域中实现。而在对音频数据的数字信号处理上,时频转换都需要做FFT/IFFT运算。因为音频处理算法是通过分帧实现的。每帧音频数据均对应不同的采样率,采样点数一般为64/128/256点,所以音频信号常用基2的方法实现64/128/256点FFT/IFFT。 已有技术的缺陷:基2 FFT/IFFT运算量大于基4 和混合基的FFT/IFFT;FFT/IFFT默认输入都是复数,没有利用音频是实数信号的特点简化FFT/IFFT的运算量;已有算法一般都是浮点的,运算开销比定点大。 快速傅里叶变换(FFT)/傅里叶逆变换(IFFT)原理:时域信号通过傅里叶变换获得频域信号;频域信号利用傅里叶逆变换得到时域信号。长度为N的数据序列 x(n)的离散傅里叶变换 X(k)可表示为: (1-1) 相应地,由 X(k)通过离散傅里叶逆变换(IDFT)到 x(n)可表示为: (1-2) 其中, 为旋转因子。快速傅里叶变换(FFT)的基本思想是把原始的N点序列,依次分解成一系列的短序列。充分利用DFT中旋转因子的特性:对称性、周期性和可约性,求出这些短序列的DFT并进行适当组合,达到去除重复计算、减少乘法运算和简化结构的目的。可知IFFT的计算就是将输入取共轭后做FFT运算,然后对结果除以IFFT点数N即可。 发明内容 为了解决以上缺陷,本发明设计一种用于音频信号的快速处理方法,其包含以下步骤: 步骤1、按频率抽取FFT/IFFT:设定所输入音频信号序列 x(n)的长度为N=4 L,L为整数,按照对执行DFT的 X(k)中k除以4余数的不同进行分解,其基4运算都是有一定规律的,每一级的运算皆由N/4个蝶形运算构成,每一个蝶形运算的基本迭代公式如式(1-1)所示。 (2-1) 在上式(2-1)中,m表示第m级蝶形运算,k为数据所在的行数,N为所要计算的数据的点数, 为旋转因子,令 , , , ,可得基 4 按频率抽取的蝶形运算如图 2 所示。 由式(2-1)可知,一次基 4 蝶形运算需要 3 次复数乘法和4次复数加/减法运算。综上所述,由基 4 按频率抽取算法计算N点FFT时需要log 4N=L级运算。图2是个16点基四FFT流程图。 步骤2、按频域抽取FFT蝶形运算数据地址的变化规律:对于基4 DIF FFT,每级计算都是由四个数据为一组构成的N个输入数据,进入蝶形运算得到个N个输出数据。在图2中,第1级进行蝶形运算的四个数据中相邻数据之间相差值为4,第2级进行蝶形运算的四个数据中相邻数据之间相差值为1,设此差值为D,蝶形运算所在的级数为P,则对于N=4 L点FFT,共有log 4N=L级运算,每级运算有N/4个蝶形运算单元,因此,D与P的关系为:D=4 L-P; 步骤3、获取基4的DIF旋转因子的变化规律:对于按频率抽取的FFT算法,除最后一级外,其余各级蝶形单元的计算结果均需要与旋转因子相乘。在图2中,第2级蝶形运算不需要与旋转因子相乘,第1级蝶形运算则需要与相应的4组旋转因子相乘。各级对应的组数分别为(N,N/4,N/16....1)各级蝶形因子的指数分别为: / / / /1, 获取基4的DIF FFT/IFFT输出数据排序的规律:由图2可知,基4 DIF FFT/IFFT输出顺序就是输入按照4进制的倒序,如03(4进制)对应的就是30(4进制)。对于所有的基四FFT/IFFT,输出都是将最后一级运算结果按4进制数倒序得到。 步骤4、执行混合基 DIF FFT/IFFT:设输入序列 x(n)的长度为N=4 L*2,L为整数。对于这种情况,如32点,128点FFT/IFFT,在基4的基础上,本专利在最后一级加入基2运算即可实现。最后一级的基2运算的蝶形运算数据地址差值为1。它的运算公式如下: (3-1) 步骤5、计算实序列的FFT:前面提到的FFT算法的输入的都是复数,但是对于音频信号,输入都是实数。实序列的FFT运算方案包括:用一个N-FFT同时计算两个N点实序列FFT;用一个N-FFT计算一个2N点实序列的FFT。 附图说明 图1是基4 DIF的蝶形运算流图; 图2是16点基4 DIF FFT运算流程图; 图3是FFT/IFFT实现定点化方案原理框图。 具体实施方式 本发明的具体技术方案将在结合附图描述的基础上更好地体现,本发明的方法包括以下步骤: 步骤1、按频率抽取FFT/IFFT:设定所输入音频信号序列 x(n)的长度为N=4 L,L为整数,按照对执行DFT的 X(k)中k除以4余数的不同进行分解,其基4运算都是有一定规律的,每一级的运算皆由N/4个蝶形运算构成,每一个蝶形运算的基本迭代公式如下列式(2-1)所示。 (2-1) 在上式(2-1)中,m表示第m级蝶形运算,k为数据所在的行数,N为所要计算的数据的点数, 为旋转因子,令 , , , ,可得基 4 按频率抽取的蝶形运算如图 2 所示。 由式(2-1)可知,一次基 4 蝶形运算需要 3 次复数乘法和4次复数加/减法运算。综上所述,由基 4 按频率抽取算法计算N点FFT时需要log 4N=L级运算。图2是个16点基四FFT流程图。 步骤2、按频域抽取FFT蝶形运算数据地址的变化规律:对于基4 DIF FFT,每级计算都是由四个数据为一组构成的N个输入数据,进入蝶形运算得到个N个输出数据。在图2中,第1级进行蝶形运算的四个数据中相邻数据之间相差值为4,第2级进行蝶形运算的四个数据中相邻数据之间相差值为1,设此差值为D,蝶形运算所在的级数为P,则对于N=4 L点FFT,共有log 4N=L级运算,每级运算有N/4个蝶形运算单元,因此,D与P的关系为:D=4 L-P; 步骤3、获取基4的DIF旋转因子的变化规律:对于按频率抽取的FFT算法,除最后一级外,其余各级蝶形单元的计算结果均需要与旋转因子相乘。在图2中,第2级蝶形运算不需要与旋转因子相乘,第1级蝶形运算则需要与相应的4组旋转因子相乘。各级对应的组数分别为(N,N/4,N/16....1)各级蝶形因子的指数分别为: / / / /1, 获取基4的DIF FFT/IFFT输出数据排序的规律:由图2可知,基4 DIF FFT/IFFT输出顺序就是输入按照4进制的倒序,如03(4进制)对应的就是30(4进制)。对于所有的基四FFT/IFFT,输出顺序都是将最后一级的数据地址按4进制数倒序得到。 步骤4、执行混合基 DIF FFT/IFFT:设输入序列 x(n)的长度为N=4 L*2,L为整数。对于这种情况,如32点,128点FFT/IFFT,在基4的基础上,本专利在最后一级加入基2运算即可实现。最后一级的基2运算的蝶形运算数据地址差值为1。它的运算公式如下: (3-1) 下面以32点为例,介绍混合基的FFT实现:1)32点混合基FFT可用4X4X2三级实现,前两级基4运算,最后一级基2;2)各级的相邻数据的差值依次为:8/2/1;3)各级对应的组数分别位8/2/1, 每组里的蝶形运算单元循环使用同一套蝶形因子。各级蝶形因子的指数为: / /1;4)对于最后一级的输出数据。把数据地址转换为2进制,前4位按4进制倒序,最后1位按2进制倒序,即可得到FFT/IFFT的输出顺序。 步骤5、计算实序列的FFT:前面提到的FFT算法的输入的都是复数,但是对于音频信号,输入都是实数。对于实序列n,一般可以当作n+j0,然后去做FFT运算。下面提到两种算法可以减少实数信号做FFT的复杂度和运算量:1)用一个N-FFT同时计算两个N点实序列,左右声道信号同时做FFT运算:假设有两个N点实信号: ;FFT后对应的频域信号为 0≤k≤N-1。 令: , 其中 都是复数序列。可知: 对应的: (4-1) 2)用一个N-FFT计算一个2N点实序列的FFT:假设有一个2N点实信号: 令: 对应的: , (4-2) 图3是一个DIF基4蝶形运算单元的定点化方案,其中的auto scaling指的是动态溢出检查方案,如果把每一级蝶形运算的输入和输出都设定为(16,15),这样输入信号大的时候很容易溢出。所以计算每一级运算后,对所有的值进行遍历,如果发现有超过溢出允许输入值的变量A,则对整个数组进行右移一位;如果发现有超过溢出允许输入值的变量2A,则对整个数组进行右移两位。这样就保证了数值较小的输入不会被过度缩放,而数值很大的数据也能够通过FFT运算。

文章推荐:

一种基于生物技术的多级发酵装置

智能笔记本

陶瓷茶杯(一辈子顺杯)

一种基于法律知识图谱的裁判文书相似性判断方法及系统

一种风光热电力互补系统

发表评论