FFT 的窗口大小与数据长度

2024-04-19

我正在尝试对流音频数据进行快速频谱分析以捕获元音(类似于 JLip-sync)。使用 PyAudio 在短时间内(0.0625 秒)捕获小块 (1024) 的语音数据。使用 numpy.fft 进行分析,并使用 numpy.hanning 窗口消除泄漏。我使用 4096*4 作为采样率(不是 44100 或 22050,也可以讨论;4096*4 最接近 22050)。

考虑到我感兴趣的频率(范围从 300 Hz 到 3000Hz),如何使用我正在寻找的数据长度和最小/最大频率来计算理想的窗口大小?

Thanks.

Kadir


@Kadir:

在使用离散傅里叶变换(DFT 或 FFT)处理数据之前对其进行加窗的目的是最大限度地减少频谱泄漏,这种情况在您尝试对非循环数据进行傅里叶变换时会发生。

窗口化的工作原理是在序列的开始和结束时强制数据平滑为零,但不是之前。缩短窗口会不必要地破坏信息。

因此,您的窗口长度应该与样本序列的长度相匹配。例如,对于 1024 个样本,窗口长度应为 1024。

如果您要解析的最高频率是 3 KHz,请在不同的采样率下使用 8192 个样本或更多样本,例如 16384 或 32768 个样本。

另外,尝试不同的FFT算法、不同的样本长度和不同的窗口,包括Hann(汉宁),还有其他旁瓣衰减更好的窗口,例如Blackman-Harris系列和Kaiser-Bessel系列等。

如果您的应用存在噪声,您可能必须在更好的噪声抑制窗口和更高的光谱分辨率窗口之间进行选择。因此,尝试不同的窗口是个好主意,这样您就可以找到最适合您的应用程序的窗口。

现在,写下每个设置的结果(即每个窗口、样本长度、采样率等),并寻找在多个设置中一致的结果。您将了解更多有关您的数据的信息,并且很可能找到问题的答案。

您可以使用 Matlab 来完成此操作:http://www.mathworks.com/help/techdoc/ref/fft.html http://www.mathworks.com/help/techdoc/ref/fft.html

或者使用此在线 FFT 频谱分析仪:http://www.sooeet.com/math/fft.php http://www.sooeet.com/math/fft.php

并且不要忘记在这里发布您的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FFT 的窗口大小与数据长度 的相关文章

  • 使用 jQuery 在单击另一个音频文件时停止/暂停音频

    我创建了一个网站 其中包含我拍摄的人物的图像缩略图 当访问者单击其中一个缩略图时 将使用 jQuery 显示完整图像 并播放音频介绍 我对每个缩略图 图像组合都有不同的音频介绍 目前有 15 个 每天都会添加更多 我想确保 如果访问者在上一
  • DPI 意识真的需要吗?

    我正在学习如何使用 GDI GDI 绘制 GUI 我发现了这个http msdn microsoft com en us library windows desktop dd756596 v vs 85 aspx step 2 declar
  • Tkinter - 窗口焦点丢失事件

    是否有事件触发tkinter窗口失去可以绑定到的焦点tkinter窗口使用 bind method 您正在寻找的活动是
  • 实时录制/将音频数据转换为 WAV

    我在音频信号处理方面是新手 目前 我已将设备连接到我的电脑 该电脑从麦克风 播放轨道向我发送音频数据 我已经使用 Steinberg ASIO SDK 2 3 创建了主机应用程序 该应用程序连接到设备并在重复回调中返回原始数据 信号是 24
  • 实时获取 macOS 输出设备音频缓冲区

    我试图tapmacOS 上当前选择的输出音频设备 因此我基本上有一个直通侦听器 可以监视当前正在输出的音频流而不影响它 我想将这些数据实时复制到环形缓冲区 以便我可以单独对其进行操作 Apple 文档和 过时 SO 答案的结合令人困惑 我是
  • 在新窗口中使用 jquery 显示从控制器返回的 PDF 流

    我有一个控制器操作 它读取 pdf从 azure blob 存储中读取文件并将流对象返回到 ajax method 控制器返回 var stream blobStorage OpenRead filepath await FileAsync
  • IE 不会在使用 window.open 创建的窗口中加载 PDF

    问题就在这里 仅发生在 Internet Explorer IE 中 我有一个页面 其中包含指向几种不同类型文件的链接 这些文件中的链接执行一个 Javascript 函数 该函数打开一个新窗口并加载特定文件 这非常有效 除非我需要在新窗口
  • 在 jupyter 中 for 循环播放音频

    我有大量需要注释的训练数据 为了做到这一点 我需要听一堆声音片段并记下我听到的内容 我在笔记本上为此写了一个小脚本 我的主要问题是 IPython 显示不循环显示 举个例子 import numpy import IPython displ
  • 本地播放 mp3 时 Android MediaPlayer 错误(1, -2147483648)

    Android 4 4 发布后不久 我的代码自 2 2 以来一直正常工作 突然出现了错误 我的代码将查询音乐数据库中给定的音乐文件 该路径在查询中返回 然后该路径被传递到 MediaPlayer Code String uri conten
  • 如何在Python中从声音中获取Pi-Phase以获得相消干涉

    第一 我不知道该把这个话题放在哪里 因为它是一个编程和声音问题 如果有错误的地方请评论 但这是我的问题 如何将声音加载到 Python 中并创建它的 反向声音 因此 当我播放原始文件和 pi 偏移 文件时 它们会产生破坏性干扰并相互抵消 因
  • 为什么我的音频不倒带?

    我在 Javascript 中倒带音频时遇到了一些问题 我基本上有一个倒计时 当倒计时接近结束时 每秒都会发出蜂鸣声 我尝试使用 var bip new Audio http www soundjay com button beep 7 w
  • 使用 WinAPI 在 C# 中隐藏任务栏窗口

    相信我 我用谷歌搜索过它 并期望它是一个相当容易找到的东西 事实证明并非如此 我有窗把手 但没有表格 我该怎么做 谢谢 声明这些 DllImport user32 dll SetLastError true static extern in
  • NAudio 音调变换

    我正在使用 NAudio DLL 并且正在寻找音调变换声音的示例代码 有一个使用的例子NAudio https github com naudio NAudio用于开源中的音高变换Skype 变声器 https github com mar
  • screen.availHeight 和 window.height() 之间的区别

    我正在我的浏览器 Firefox 上执行以下 Javascript console debug 屏幕高度 屏幕可用高度 输出770 console debug 窗口高度 窗口 height 输出210 我也在使用 jQuery 两者有什么区
  • 如何在Delphi 7中监听麦克风并检测声音响度

    我需要一个程序来捕获麦克风输入声音超过特定阈值时的事件 那么我可能需要不断地听麦克风 并以某种方式测量声音幅度 Delphi 7 中可以这样做吗 我建议您使用低音音频库 http www un4seen com bass html http
  • Android 中的音频交叉淡入淡出

    我正在开发一个媒体播放器用于我的学习目的 我希望在媒体播放器应用程序中具有交叉淡入淡出功能 但我不知道从哪里开始 我尝试在互联网上搜索但没有运气 我使用的是安卓MediaPlayer所有媒体播放器相关操作的类 任何人都知道任何解决方法可以实
  • 使用音频单元录制我的 iPhone 应用程序播放的声音

    我今天有很多有趣的事情iOS 和音频单元并发现了很多有用的资源 包括在内 首先 我对某些事情感到困惑 是否真的有必要创建一个音频图 with 混合器单元录制应用程序播放的声音 或者播放声音就足够了ObjectAL https github
  • 如何在AWS批处理中定义根卷大小

    我正在使用 AWS Batch 但发现根卷大小对于我的任务来说太小 我尝试创建一个新的计算环境 作业队列 但没有任何选项来设置卷大小 我尝试更改启动配置here https console aws amazon com ec2 autosc
  • ffmpeg 用于屏幕捕获?

    所以我有一个小程序来捕获屏幕和计算机麦克风的声音 然后屏幕截图被编码为 ScreenVideo2 声音被编码为 AAC 如何使用 ffmpeg 逐帧混合 然后将混合输出发送到 wowza 媒体服务器 如果用ffmpeg无法完成 您能提供一些
  • NumPy 中 exp(-x^2) 的快速傅立叶变换

    I have to calculate numerically the 2nd derivative of a Gaussian function I ve read every question on this topic here bu

随机推荐

  • 如何在 Vue.js 插槽范围内传递方法

    我在 vuejs 中使用插槽范围 效果很好 我可以将任何我想要的东西传递到插槽中 如下所示
  • pandas中groupby后按条件计数

    df pd DataFrame id 1 1 1 2 2 2 item 200 200 201 333 333 334 page 1 1 2 3 2 2 我想像这样将 df 转换为 df1 df pd DataFrame id 1 1 2
  • Solaris 9 上的 grep 命令

    我在 Solaris 9 上遇到 grep 命令的奇怪行为 例如 我有一个包含两行的主机文件 1 1 1 1 主机 1 2 3 4 主机 MY 我想 grep 仅包含主机字符串的行 而不是包含主机 MY 的其他行 我用 grep Fxq 主
  • iOS 4 通常向后兼容吗?

    我有以下问题 在不久的将来我需要为iPhone编写一些不是很复杂的应用程序 我目前没有 iPhone 因此我计划购买一部用于测试目的 简而言之 iPhone 4 是否允许我测试为旧版 iOS 版本编写的应用程序 有什么陷阱吗 或者我是否必须
  • 按日期过滤 Pandas 数据框

    我有一个带有 日期 列的 Pandas DataFrame 现在我需要过滤掉 DataFrame 中日期在未来两个月之外的所有行 本质上 我只需要保留接下来两个月内的行 实现这一目标的最佳方法是什么 If 日期列是索引 然后使用 loc 进
  • 与您的操作系统或架构不兼容:[电子邮件受保护]

    我使用的是 Ubuntu 15 04 运行以下命令时 npm install fsevents 我收到以下错误 npm WARN optional Skipping failed optional dependency chokidar f
  • NT 事件日志单条消息大小

    谁能告诉我 Windows NT 日志消息的最大大小是多少 我知道可以将事件日志的最大日志大小从 32 MB 重置 我对 NT 事件日志中单个消息可以保存的内存感兴趣 提前致谢 在 Windows Server 2008 中 单个事件日志条
  • JavaFX 过渡动画等待

    这么快 我正在做一个演示计算机图形绘制方法的程序 我需要创建时间线或操作历史记录 例如 placeVertex x y moveVertex newX newY 等 并迭代 向前和向后 自动或手动 我已经通过使用命令设计模式实现了这一点 但
  • WordPress 动态自定义菜单未显示正确的结果

    我正在创建一个动态自定义菜单 显示特定类别的所有帖子链接 例如侧边栏中的菜单小部件 它应该是动态的 这意味着每当我在该类别中发布帖子时 菜单都应该包含我发布的帖子 而无需我在菜单中物理拖放新帖子 这是我的代码 我想要的帖子的类别 ID 4
  • 在Virtualenv环境中安装python-numpy

    我想在 Virtualenv 环境中安装 python numpy 我的系统是Ubuntu 12 04 我的python是2 7 5 首先我安装了 Virtualenv sudo apt get install python virtual
  • 如何只获取Python函数的返回值?

    我正在尝试通过 Python 学习编程 我想知道是否可以只获取函数的返回值而不获取其其他部分 这是代码 比方说 这是主要功能 variable a 5 while variable a gt 0 input user raw input i
  • 如何解决 pandas 读取大 csv 文件时的内存问题

    我有一个 100GB 的 csv 文件 其中有数百万行 我需要在 pandas 数据框中一次读取 10 000 行 并将其分块写入 SQL 服务器 我按照建议使用了 chunksize 以及 iteartorhttp pandas docs
  • 使用 SQL Server AdoJobStore 配置 Quartz.NET

    我在尝试让 Quartz NET 与 AdoJobStore 一起使用时遇到问题 这里的其他问题似乎都没有遇到我遇到的问题 我能够在没有 AdoJobStore 配置的情况下正常工作 但希望最终保留所有内容 但是在尝试时出现错误GetSch
  • Spring Batch ItemReader 列表仅处理一次

    我正在尝试使用创建 Spring Batch 作业ListItemReader
  • 替换 & 为 &

    我正在尝试使用 W3C 验证系统进行验证 但出现错误 第 59 行 第 47 列 字符 是分隔符的第一个字符 但作为数据出现 我知道原因是 您使用了未转义的与号 这在某些情况下可能有效 但建议使用 amp 这始终是安全的 在表格中 我是这样
  • jQuery Tokeninput:只读不起作用

    我正在使用在以下位置找到的插件http loopj com jquery tokeninput http loopj com jquery tokeninput 在创建具有 Web 应用程序管理员访问权限的用户列表的字段中 搜索 添加和删除
  • Stop-Service Cmdlet 无法打开存在的服务

    我正在尝试编写一个 PowerShell 脚本来停止本地计算机上的服务 当我运行 get service cmdlet 时 它按预期工作 当我使用 stop service cmdlet 时 出现错误 指出不存在具有我指定名称的服务 如果这
  • 如何将文件的内容与列最后一个数字的增量连接起来

    我有一个包含一些内容的文件 需要重复第 n 次并添加最后一列号的增量 Input content of a file TCTA 7 ccta TCTA 1 TCTA 8 ccta TCTA 1 TCTA 9 ccta TCTA 1 TCTA
  • 如何为命令 net user 在列表中返回的每个用户运行批处理文件?

    我的目标是制作一个通用代码 循环遍历计算机中的所有用户帐户名称并将输出发送到批处理文件 net user 命令输出用户列表 但我想将每个用户名分配给一个参数 所以我应该使用for f命令去做 这可能看起来很简单 但请记住用户名可能在任何位置
  • FFT 的窗口大小与数据长度

    我正在尝试对流音频数据进行快速频谱分析以捕获元音 类似于 JLip sync 使用 PyAudio 在短时间内 0 0625 秒 捕获小块 1024 的语音数据 使用 numpy fft 进行分析 并使用 numpy hanning 窗口消