在语音处理进行短时傅里叶变换的时候,对窗函数是有一定要求的,这篇文章将对这方面的问题进行简单的阐述。

一、背景描述

常用的语音处理需要进行这样处理:

stft分帧会对信号产生截断,为尽可能避免这种影响,应考虑考虑加合适的窗

这种方法叫 overlap and add ,或者 OLA

由上图可以看到,信号需要经过两次加窗(分析窗和合成窗,一般用一样的),另外加窗处理之后还要能重建,则需要对窗函数有特殊要求,这种要求叫 COLA compliance ,全称 Constant Overlap-Add (COLA) Constraint

一些特殊的窗,加上特殊的hopsize(or overlap),才可能达到。也从上面可以给出结论:

至少要保证1/2及以上的重叠才能达到完美重建目的

二、Matlab中的例子

matlab里面专门有个函数 iscola,用来判断所设计的窗是否满足条件。举一个例子,窗长是120,每次hop 是一半:

window = sqrt(hann(120,'periodic')); %开方式因为每次操作会经过两遍一样的窗
noverlap = 60; 
[tf,m,maxDeviation] = iscola(window,noverlap)

我们通过作图来看看是否符合要求

这里可以做一个简单的推导证明:hann窗如下

注意到原始分析窗(or合成窗)是开方了的,所以经过两遍加窗,信号实际乘的窗还是回到w(n)

在0到N/2 这段(其它段以次类推),两部分窗由于叠加,他们的和是

0.5(1-cos(2*pi*n/N) (上图蓝色部分) +  0.5(1-cos(2*pi*(n+N/2)/N) (上图红色部分平移到0-N/2)

= 0.5-0.5*cos(2*pi*n/N) + 0.5 - 0.5*cos(2*pi*n/N+pi)

=1-0.5*cos(2*pi*n/N)+ 0.5*cos(2*pi*n/N)[这边对上80后的统一暗号,纵变横不变,符号看象限!]

=1

对于1/2 overlap(用的最多)

在分析窗时,填充新数据在尾部,再乘以窗函数,合成时候,踢出前半段和保留数据做和,尾部橙色部分保留等下次再输出

三、一般长度的窗设计

如果我只有160个点输入,但是想用256点的加速FFT运算,那么需要怎么设计这个窗呢?

(当然也可以考虑补零到256,但是ifft回来之后怎么得到160个点?)

这种情况下,overlap = 256-160=96,可以设计 2*overlap的窗,对半劈开拉远,然后中间补1

具体代码如下:

nwin = 2*overlap; fftsize =256;

win = sqrt(hann(nwin,'periodic'));
nwin = length(win);
win1 = [win(1:0.5*nwin);ones(fftsize-noverlap*2,1);win(0.5*nwin+1:end)];
plot(win1);

tf = iscola(win1,noverlap);

设计一个256长的buffer,每次从尾部更新160个数据,要保留96个数据为下次使用

合成窗需要一个96的outbuffer用来做预输出,每次和加完窗之后的数据做和

stft的窗函数设计要求和方法(COLA)相关推荐

  1. 【DSP库窗函数】ARM官方最新DSP库中窗函数的使用方法

    文章目录 Ⅰ.DSP库更新介绍及下载 Ⅱ.DSP库移植 Ⅲ.DSP库窗函数使用示例 Ⅰ.DSP库更新介绍及下载 ARM官方最近更新的DSP库版本V1.14.3中新加入了许多窗函数供用户使用,提高了对于 ...

  2. stft isar成像 matlab,基于STFT和FRFT的运动目标雷达三维成像方法与流程

    本发明属于数字信号处理技术领域,特别涉及一种运动目标雷达三维成像方方法,可 用于对运动目标识别时,雷达ISAR对其三维成像. 背景技术: 逆合成孔径雷达ISAR是一种全天候.全天时的远程探测手段,具有 ...

  3. STFT的综合分析--滤波器组求和(FBS)和叠相相加(OLA)

    STFT 固定频率时的两种解释 第一种解释 STFT的公式可以表示为: X(n,w)=∑n=−∞n=∞x(m)w(n−m)e−jwmX(n,w)=\sum_{n=-\infty}^{n=\infty} ...

  4. 窗函数性能分析——MATLAB

    一.实验目的 1.掌握Matlah由各种窗数序列的生成方法; 2.掌握窗函数序列频率特性的计算与画图方法; 3.掌握窗函数的相关参数对窗函数频域性能的影响; 4.了解混合窗函数的定义.生成方法和频域性 ...

  5. 数字IC验证方法的分类

    验证方法的分类 验证的方法大体可以分为两类:动态验证和静态验证 动态验证 动态验证也叫仿真,是指从电路的描述提取模型,然后将外部激励信号或数据施加于此模型,通过观察该模型在外部的激励信号作用下的实时响 ...

  6. 电能质量分析方法与控制技术探讨

    0引言 随着国民经济的发展,科学技术的进步和生产过程的高度自动化,电网中各种非线性负荷及用户不断增长:各种复杂的.精密的,对电能质量敏感的用电设备越来越多.上述两方面的矛盾越来越突出,用户对电能质量的 ...

  7. FIR滤波器、单位冲激响应、线性相位、窗函数法

    1.FIR滤波器 (1.)有限脉冲响应滤波器,也就是该系统的单位脉冲响应h(n)的长度是有限的,而不是两边无限延伸. 线性时不变系统的输出:y(n)=x(n)与h(n)的卷积,其中h(n)为单位取样脉 ...

  8. emd断点效应matlab,EMD端点效应抑制方法

    引言EMD是由Huang等[1]于1998年提出的一种自适应的信号处理算法,其分解得到的IMF分量具有真实的物理意义,并且因其具有较好的自适应性.正交性.完备性和IMF分量的调制性等优点,而被广泛地应 ...

  9. 论文研究 | 基于机器视觉的汽车精密零件表面缺陷自动检测方法

    0 引言 略. 1 汽车精密零件表面缺陷的机器视觉采样和预处理 1.1表面缺陷的机器视觉采样 为了实现基于机器视觉的汽车精密零件表面缺陷 自动检测,结合工件材料的应力参数分析和光学视觉特 征采集方法, ...

最新文章

  1. Android APK反编译得到Java源代码或资源文件
  2. 016_CSS选择器列表
  3. python校园网登录_python实现校园网自动登录的示例讲解
  4. python发送文件到钉钉群_iOS python 自动化打包,并在钉钉群里发通知
  5. Winform中在使用VS+svn进行协同开发时添加引用时的相对路径和绝对路径的问题
  6. 10.17 linux 文件权限
  7. 视频豪横时代,应用如何快速构建视频点播能力?
  8. Java 8th 函数式编程:lambda 表达式
  9. java gui 连接mysql数据库
  10. 服务端解决跨域问题的方案(二)
  11. X Window Messing With The Mouse Cursor
  12. 【文本分类】 特征抽取之信息增益
  13. 【莓闻】芮成钢专访黑莓CEO巴尔西利
  14. 【Matlab优化预测】贝叶斯网络优化LSTM预测【含源码 1158期】
  15. Unity3D 官方资源包Standard Assets导入
  16. H5 微信分享显示标题和图标
  17. Java计算机毕业设计水果购物商城源码+系统+数据库+lw文档
  18. css3 移动端video视频全屏,横屏展示,适配微信/打包成app
  19. 机器学习做二元分类问题(二)
  20. 4字节 经纬度_北京54坐标系转经纬度坐标系教程

热门文章

  1. iphone13价格多少 iphone13系列内存规格
  2. 来给自己充电!推荐给程序员们的设计书目
  3. 如何判断对方列表里是不是好友_对方QQ是否把我删了不确定是否还在他的好友列表里...
  4. 【模型检测学习笔记】9:Binary Decision Diagrams
  5. 3分钟快速搭建ngrok服务器
  6. C++ zoj1962 How Many Fibs?
  7. C语言刷题训练营-自我补全
  8. 制药业CRM如何“对症下药”?
  9. 第七代英特尔处理器安装Windows7提示“不支持的硬件”的解决方法
  10. [附源码]Python计算机毕业设计Sketch2Mod网站Django(程序+LW)