stft的窗函数设计要求和方法(COLA)

news2024/11/23 23:34:32

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

一、背景描述

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

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用来做预输出,每次和加完窗之后的数据做和

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

互融云借条APP系统开发 六大系统优势全面保障

借条是指借个人或公家的现金或物品时写给对方的条子。它是一种凭证性文书,通常用于日常生活以及商业管理方面。借条的本质就是借款合同,只不过形式比较简单,那么电子借条也就是简单的电子借款合同。与传统的纸质合同相比,电子借条…

目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)

目录 (一)前言介绍 1.摘要 2.不同注意力步骤比较 (二)相关实验 (三)YOLOv5结合无参注意力SimAM 1.配置.yaml文件 2.配置common.py 3.修改yolo.py SimAM:无参数Attention助力分类/检测/分…

想带着学生做一个操作系统,可行性有多大?

有知乎网友提问如下: 想带着学生做一个操作系统,可行性有多大? 个人觉得可行性非常大,如果只是做着来玩,让学生了解操作系统时如何实现的话。但是,如果你打算今后商业化的话,那就另当别论了。就算你能做出来…

单片机实验——水塔自动抽水系统设计(基于Proteus仿真)

实验内容及要求 自来水供水是现代生活的一大特点,水塔作为储水装置是自来水系统必不可少的重要设施,让水塔保持一定的水量是自来水不断供的必要条件,本设计模拟自来水系统中水塔的自动抽水机制,设计分为控制系统和虚拟水塔两部分…

若依管理框架-漏洞复现

文章目录 0x00 介绍0x01 默认口令漏洞0x02 SQL注入0x03 Shiro反序列化漏洞0x04 任意文件读取/下载0x05 定时任务0x06 `swagger-ui.html`接口文档泄漏0x07 Druid未授权访问摘抄免责声明0x00 介绍 RuoYi 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Apa…

黑产工具情报的分析方式浅析

接下来我们以恶意爬虫、抢券工具和注册机三种工具来谈一下黑产工具情报的分析方式。 对于企业方面来说,黑产工具情报可以有效的提高业务安全的攻防效率。通过分析工具利用的业务接口,不仅可以将黑产作恶行为进行有效的追踪,对其进行有效的处…

Java本地搭建宝塔部署实战springboot自动化立体智慧仓库WMS源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的springboot自动化立体智慧仓库WMS源码。 技术架构 技术框架:SpringBoot layui HTML CSS JS运行环境:jdk8 IntelliJ IDEA maven3 宝塔面板 本地搭建教…

MongoDB入门与实战-第四章-SpringBoot集成MongoDB

目录参考MongoDB 连接java客户端方式引入驱动依赖测试创建客户端创建集合查询文档查询集合大小条件查询排序投影聚合查询复合聚合插入文档批量插入更新文档删除文档SpringDataMongoDB添加依赖配置文件新建实体映射插入文档修改文档删除参考 SpringBoot 整合 MongoDB 实战解说 …

[附源码]java毕业设计濒危物种科普系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

jq获取和设置偏移量:offset()、position()

jq获取和设置偏移量: js获取盒子的偏移量是:offsetLeft、offsetTop;jq获取盒子的偏移量的方法:offset()、position();offset():距离文…

去除有重复的行

【问题】 I have a csv file and I have duplicate as well as unique data getting add to it on a daily basis. This involves too many duplicates. I have to remove the duplicates based on specific columns. For eg: csvfile1: title1 title2 title3 title4 title5…

C++程序开启大地址(虚拟内存),让32位程序使用4G内存的方,虚拟内存概念及寻址范围详解

如何让 32 位程序突破 2G 内存限制 一般情况下,32 位程序的内存大小被限制在了 2G,不过可以通过以下的操作来突破这个限制。 修改操作系统参数 这一步骤只针对 32 位操作系统,64 位操作系统可以跳过 用管理员权限打开一个命令行窗口 执行…

【数据库原理及应用】——安全性与完整性(学习笔记)

📖 前言:随着计算机的普及,数据库的使用也越来越广泛。为了适应和满足数据共享的环境和要求,DBMS要对数据库进行保护,保证整个系统的正常运转,防止数据意外丢失、被窃取和不一致数据产生,以及当…

【Linux】---认识进程

文章目录进程的概念1、什么是进程2、PCB3、查看进程4、初始fork()创建进程5、kill杀死进程进程的状态普适的操作系统下的状态运行阻塞挂起Linux下的状态理解R--运行状态S--睡眠状态D--深度睡眠状态T--暂停状态t--追踪暂停状态X--死亡状态Z--僵尸状态孤儿进程进程优先级进程的其…

先广度后深度,打开编程视野

古人云 “读万卷书,行万里路。” 书籍是人类进步的阶梯、培养阅读习惯,当一个人爱上读书的时候,眼睛都是发光的。 在小编看来,学习理念是【先广度后深度】,先把Java知识体系的东西都了解到,工作上先会用&…

【数据结构与算法】之动态规划经典问题

前言 本文为 【数据结构与算法】动态规划 经典问题相关介绍 ,具体将对最长递增子序列问题,找零钱问题,0-1背包问题相关动态规划算法问题进行详尽介绍~ 📌博主主页:小新要变强 的主页 👉Java全栈学习路线可…

【LeetCode】No.91. Decode Ways -- Java Version

题目链接:https://leetcode.com/problems/decode-ways/ 1. 题目介绍(Decode Ways) A message containing letters from A-Z can be encoded into numbers using the following mapping: 【Translate】: 包含从A到z的字母的消息可…

C++之继承详解(万字讲解)

这里是目录呀前言一、继承的概念及定义1.继承的概念2.继承定义(1)定义格式(2)继承关系和访问限定符(3)继承基类成员访问方式的变化二、继承中的作用域三、基类和派生类对象赋值转换四、派生类的默认成员函数五、继承与友元六、继承与静态成员七.复杂的菱形继承及菱形虚拟继承1.…

暗猝灭剂BHQ-2 氨基,BHQ-2 amine,CAS:1241962-11-7

产品描述 1、名称 英文:BHQ-2 amine 中文:BHQ-2 氨基 2、CAS编号:1241962-11-7 3、所属分类:Other dyes 4、分子量:477.53 5、分子式:C24H27N7O4 6、质量控制:95% 7、储存: …

爱心html制作并部署github

手机也可以观看 效果预览地址 1.网页效果 心形优化 2.网页源码 源码地址 可以改变不同的图片&#xff0c;作者已经改为全局变量 <!DOCTYPE html> <html><head><title></title><script src"js/jquery-1.7.2.js"></script…