问题标签 [spectrogram]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
10901 浏览

c++ - 将 FFT 转换为频谱图

我有一个音频文件,我正在遍历该文件并在每个步骤中采集 512 个样本,然后将它们传递给 FFT。

我将数据作为块 514 浮动很长(使用 IPP 的 ippsFFTFwd_RToCCS_32f_I),实部和虚部交错。

我的问题是,一旦我有了这些复数,我该怎么办?目前我正在为每个值做

这给出了一些稍微有用的东西,但我宁愿通过某种方式将值从 0 到 1 范围内。他上面的问题是峰值最终会回到大约 9 或更多。这意味着事情变得严重饱和,然后频谱图的其他部分几乎没有出现,尽管当我通过试听的频谱图运行音频时它们看起来非常强。我完全承认我不是 100% 确定 FFT 返回的数据是什么(除了它代表我传入的 512 个样本长块的频率值)。特别是我对复杂数字的确切含义缺乏了解。

任何建议和帮助将不胜感激!

编辑:只是为了澄清。我的大问题是如果不知道比例是多少,返回的 FFT 值是没有意义的。有人可以指点我计算出这个比例吗?

Edit2:通过执行以下操作,我得到了非常漂亮的结果:

在我看来,这甚至比我看过的大多数其他频谱图实现看起来更好。

我在做什么有什么重大问题吗?

0 投票
4 回答
17259 浏览

c++ - 频谱图 C++ 库

对于我目前在 C++/Qt 中的项目,我需要一个库(首选 LGPL),它可以从信号(基本上是双精度数组)计算频谱图。我已经将 Qwt 用于 GUI 部分。

有什么建议么?谢谢。

0 投票
1 回答
2925 浏览

matlab - 如何将频谱图转换为图像

使用 MATLAB,我们将图像转换为音频(.wav 格式)。该音频文件也被转换为频谱图图像。现在我们正在尝试将此频谱图转换为原始输入图像

0 投票
3 回答
868 浏览

database - 将频谱图存储为可以比较的数据结构的最佳方法是什么?

我创建了一个类似于 Shazam 的过程,它创建给定声音剪辑的频谱图。我试图找出一种将这些数据存储到数据库中的方法,以便我可以对其进行比较。(我不需要实际的代码,只是对过程的概念帮助)

对于那些不熟悉频谱图的人,它是 x 轴上的时间图和 y 轴上的频率图。我需要一种可以运行比较的方式来保存这些数据。此外,我不能简单地从左到右创建很长的频率值,因为在尝试使用大型数据集(基本上是 N^2 子字符串比较)对其进行搜索时,这会成为时间复杂度问题。

本质上,我正在考虑在声音剪辑上创建某种散列,并将数据保存为散列的 trie 或后缀树,但我不确定当时如何对其进行比较。

任何想法将不胜感激。

0 投票
3 回答
5651 浏览

matlab - Matlab的频谱图过时与频谱图替换

在 Matlabs 最新版本中,该specgram函数被替换为spectrogram,并且文档状态:

笔记。要为移除的谱图函数获得相同的结果,请指定长度为 256 的“Hann”窗口。

不幸的是,这似乎对我不起作用,如果我使用spectrogram(signal,hann(256)),结果与 不同specgram(signal),尽管两者非常相似。有没有办法获得完全相同的输出?

0 投票
3 回答
5638 浏览

python - Python + Qt 组合可以产生实时光谱分析工具吗?

我想开发一个工具来做以下事情。

  1. 进行现场录音
  2. 生成实时频谱图
  3. 显示时域信号
  4. 输出从光谱分析中提取的几个值

在录制语音时,所有这些都必须在窗口中保持更新。

我和 numpy 一起工作过。但我对 Qt 和其他 GUI 构建器工具完全陌生。鉴于这种情况,最好的方法是什么?在我向他们解释任务后,我的同事推荐了 Qt。如果有人知道用于此任务的 python 更好的工具,请告诉我。另外,请帮助我提供有关如何捕获实时流并在 python 中处理它的技术细节,这将显示在 GUI 窗口中。给我一些希望的链接是http://www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python- scipy 和 wckgraph/。但是有点难以理解。可能是一个不太密集的解决方案将帮助我入门。

0 投票
1 回答
5184 浏览

audio - 如何将 RAW/WAV 文件解码为数字列表?

如何将 RAW/WAV 文件解码为数字列表?

我需要这样做,因为我需要从音频文件创建频谱图/波形。

我想我可以使用数字列表并使用图表应用程序(例如 gnuplot)创建图像

0 投票
1 回答
787 浏览

audio - 音频文件频谱图,是时间与幅度还是时间与频率?

当我尝试创建音频文件的频谱图时,我应该绘制时间与幅度还是时间与频率?

0 投票
1 回答
919 浏览

iphone - 录音频谱图

我正在创建一个录音应用程序,其中显示了一个分贝计。但是,我想在 Dragon Dictate 或 Google 搜索应用程序中包含语音频谱图。

关于我可以在这方面从哪里开始的任何建议。在 FFT 或频谱图分析方面,我完全是个傻瓜。

期待任何建议。

0 投票
4 回答
7033 浏览

c# - 比较两个频谱图以找到它们匹配算法的偏移量

我每天录制来自互联网的 2 分钟广播。总是有相同的开始和结束的叮当声。由于无线电广播的确切时间可能会或多或少 6 分钟,因此我必须录制大约 15 分钟的广播。

我希望确定这些叮当声在 15 分钟记录中的确切时间,这样我就可以提取我想要的音频部分。

我已经启动了一个 C# 应用程序,在其中我将 MP3 解码为 PCM 数据并将 PCM 数据转换为基于http://www.codeproject.com/KB/audio-video/SoundCatcher.aspx的频谱图

我尝试对 PCM 数据使用互相关算法,但该算法在 6 分钟左右非常慢,步长为 10 毫秒,有时它无法找到叮当声的开始时间。

有什么算法可以比较两个频谱图进行匹配吗?还是找到叮当声开始时间的更好方法?

谢谢,

更新,抱歉耽搁了

首先,感谢所有的回答者,他们中的大多数都是相关的或有趣的想法。

我尝试实现 fonzo 提出的 Shazam 算法。但未能检测到频谱图中的峰值。这是来自三个不同记录的起始铃声的三个频谱图。我尝试了 AForge.NET 与 blob 过滤器(但它无法识别峰值),模糊图像并检查高度差异,拉普拉斯卷积,斜率分析,检测一系列垂直条(但有太多错误积极的)...

同时,我尝试了 Dave Aaron Smith 提出的 Hough 算法。我在哪里计算每列的 RMS。是的,是每一列,它是 O(N*M) 但 M << N (注意一列大约有 8k 个样本)。所以总体来说还不错,算法仍然需要大约 3 分钟,但从未失败过。

我可以采用那个解决方案,但如果可能的话,我更喜欢 Shazam,因为它是 O(N) 并且可能更快(也更酷)。多亏了添加评论,你们中的任何人是否都知道一种算法可以始终检测这些频谱图中的相同点(不一定是峰值)。

FFT 启动叮当 1

FFT开始叮当声2

FFT开始叮当声3

新更新

最后,我使用了上面解释的算法,我尝试实现 Shazam 算法,但未能在频谱图中找到合适的峰值,即从一个声音文件到另一个声音文件的识别点不是恒定的。理论上,Shazam 算法是这类问题的解决方案。Dave Aaron Smith 提出的 Hough 算法更加稳定有效。我拆分了大约 400 个文件,其中只有 20 个无法正确拆分。磁盘空间从 8GB 到 1GB。

谢谢你的帮助。