问题标签 [spectrum]

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 投票
4 回答
60867 浏览

python - 使用快速傅里叶变换分析音频

我正在尝试在 python 中创建一个图形频谱分析仪。

我目前正在读取 16 位双通道 44​​,100 Hz 采样率音频流的 1024 字节,并将 2 个通道的幅度平均在一起。所以现在我有一系列 256 条签名短裤。我现在想在该阵列上执行 fft,使用像 numpy 这样的模块,并使用结果创建图形频谱分析仪,开始时只有 32 个柱。

我已经阅读了关于快速傅里叶变换和离散傅里叶变换的维基百科文章,但我仍然不清楚结果数组代表什么。这是我使用 numpy 在我的数组上执行 fft 后数组的样子:

我想知道这些数字究竟代表什么,以及如何将这些数字转换为 32 个条形中每个条形的高度百分比。另外,我应该将两个通道平均在一起吗?

0 投票
5 回答
101140 浏览

math - 进行信号频谱分析时的傅立叶变换 (FFT) 单位

我的问题与对信号进行频谱分析或将信号放入 FFT 并使用合适的数值包解释结果的物理意义有关,

具体来说:

  • 取一个信号,比如一个随时间变化的电压 v(t)
  • 把它扔进一个 FFT(你得到一个复数序列)
  • 现在取模数 (abs) 并将结果平方,即 |fft(v)|^2。

所以你现在在 y 轴上有实数——我应该把这些称为频谱系数吗?

  • 使用采样分辨率,您可以按照食谱将频谱系数与频率相关联。
  • 此时,您有一个频谱 g(w),频率在 x 轴上,但是 y 轴上的物理单位是什么?

我的理解是,这个频谱显示了电压信号中存在多少各种频率——它们是频谱系数,因为它们是重构原始信号所需的各种频率的正弦和余弦系数。

所以第一个问题是,这些频谱系数的单位是什么?

这很重要的原因是频谱系数可能很小而且很大,所以我想使用 dB 标度来表示它们。

但要做到这一点,我必须做出选择:

  • 要么我使用 20log10 dB 转换,对应于现场测量,如电压。
  • 或者我使用 10log10 dB 转换,对应于能量测量,如功率。

我使用哪种缩放取决于单位是什么。

对此的任何启示将不胜感激!

0 投票
4 回答
3000 浏览

audio - “Winamp 风格”频谱​​分析仪

我有一个程序可以绘制信号的频谱分析(Amp/Freq),这几乎是 DFT 转换为极性的。但是,这并不完全是 winamp(右上角)或任何其他音频软件绘制的图表。我不确定这种图叫什么(如果它有一个不同的名称),所以我不确定要寻找什么。

我对频率轴以两个指数为底非常积极,但幅度轴让我感到困惑。

任何指针?

0 投票
4 回答
1298 浏览

apache-flex - Flex:带有流媒体的computeSpectrum?

我有一个我编写的 Flex3 应用程序,我正在通过 RTMP 从 Red5 服务器流式传输音频。我希望能够使用 SoundMixer.computeSpectrum(),但频谱数据全为零。Adobe 在一个位置写道,SoundMixer.computeSpectrum() 不适用于 RTMP 数据:

“对于从 RTMP 源加载的媒体,您不能使用 BitmapData.draw() 和 SoundMixer.computeSpectrum() 方法来提取运行时图形和声音数据。” http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000353.html

够清楚。除了 computeSpectrum() 的实际文档:

“此外,此方法不能用于从 RTMP 流中提取数据,即使它被与 RTMP 服务器位于同一域中的内容调用。[...] Flash Player 9.0 中的 RTMP 支持此方法。 115.0 及更高版本以及 Adob​​e AIR 中。”

嗯。这对我来说似乎很矛盾。

有什么建议吗?

0 投票
4 回答
17259 浏览

c++ - 频谱图 C++ 库

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

有什么建议么?谢谢。

0 投票
1 回答
3059 浏览

actionscript-3 - 用波形绘制色谱

我遇到了这个 ActionScript 示例,该示例演示了使用波形通过循环一次一行地绘制色谱图。

但是,每个 RGB 通道的波形位置会创建一个缺少颜色(纯黄色、青色和品红色)的色谱,因此该光谱是不完整的。

我该如何解决这个问题,以便绘制的色谱显示所有颜色?


更新的解决方案


对于任何有兴趣的人,以下是我为解决上述问题而编写的解决方案。RGB 波形不用于创建全色谱。此外,代码很灵活,因此您可以为生成的精灵分配自己的大小和颜色变量。此示例中的颜色变量为红色、黄色、绿色、青色、蓝色、品红色、红色,以生成完整的色谱

0 投票
2 回答
1463 浏览

actionscript-3 - AS3 计算频谱 fft true

我只是想了解从返回的值是什么computeSpectrum(bytes,true,0)意思。对于我从字节数组中读取的每个浮点数,我的值范围从 0 到 1,但每个值是否代表赫兹的范围。

0 投票
4 回答
5242 浏览

java - Java中信号幅度与时间的关系

为了解决一个棘手的问题(至少对我而言),我绞尽脑汁。

在播放音频文件(使用 Java)时,我希望根据时间显示信号幅度。

我的意思是我想实现一个显示某种示波器(频谱分析仪)的小面板。应该在时域中查看音频信号(纵轴是幅度,横轴是时间)。

有谁知道该怎么做?有没有我可以依赖的好教程?由于我对Java知之甚少,希望有人能帮助我。

更新:

基本上我想要的是幅度与时间的关系,而不是频率。应该在时域中查看音频信号(纵轴是幅度,横轴是时间)。

0 投票
2 回答
9013 浏览

c++ - 带 API 的实时频谱分析仪

我正在寻找可以在 Windows 上对波形进行实时频谱分析的 C 或 C++ API。

我不完全确定确定频率内容需要多大的样本窗口,但越小越好。例如,如果它可以处理 0.5 秒长的样本并确定频率内容到赫兹,那将是非常棒的。

0 投票
3 回答
26430 浏览

java - Clojure/Java:用于声音频谱分析的 Java 库?

我正在寻找一个可以接受大量音频数据并在给定频带内随时间返回平均幅度的库。

我已经在 comp.dsp 上问过这个问题,但我很清楚,获得使用基本 FFT 库自行构建它的诀窍将需要比我目前更多的时间和精力。这是我的原始问题,其中包含更多详细信息:http ://groups.google.com/group/comp.dsp/browse_thread/thread/e04f78d439e9e2bd

我找到了很多很好的声音播放库(我过去使用过 JSyn),但是这些库似乎都没有设置为返回关于声音样本的快速和肮脏的频谱信息。

任何指针将不胜感激。