标签: spectrum

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

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

我目前正在读取1024字节的16位双通道44,100 Hz采样率音频流,并将两个通道的幅度平均在一起.所以现在我有256个签名短裤阵列.我现在想要使用像numpy这样的模块在该阵列上预先形成一个fft,然后使用结果创建图形频谱分析器,开始时只需32个小节.

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

   [ -3.37260500e+05 +0.00000000e+00j   7.11787022e+05 +1.70667403e+04j
   4.10040193e+05 +3.28653370e+05j   9.90933073e+04 +1.60555003e+05j
   2.28787050e+05 +3.24141951e+05j   2.09781047e+04 +2.31063376e+05j
  -2.15941453e+05 +1.63773851e+05j  -7.07833051e+04 +1.52467334e+05j
  -1.37440802e+05 +6.28107674e+04j  -7.07536614e+03 +5.55634993e+03j
  -4.31009964e+04 -1.74891657e+05j   1.39384348e+05 +1.95956947e+04j
   1.73613033e+05 +1.16883207e+05j   1.15610357e+05 -2.62619884e+04j
  -2.05469722e+05 +1.71343186e+05j  -1.56779748e+04 +1.51258101e+05j
  -2.08639913e+05 +6.07372799e+04j  -2.90623668e+05 -2.79550838e+05j
  -1.68112214e+05 +4.47877871e+04j  -1.21289916e+03 +1.18397979e+05j
  -1.55779104e+05 +5.06852464e+04j   1.95309737e+05 +1.93876325e+04j
  -2.80400414e+05 +6.90079265e+04j   1.25892113e+04 -1.39293422e+05j
   3.10709174e+04 -1.35248953e+05j   1.31003438e+05 +1.90799303e+05j...
Run Code Online (Sandbox Code Playgroud)

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

python audio signal-processing fft spectrum

107
推荐指数
3
解决办法
6万
查看次数

在进行信号的频谱分析时的傅里叶变换(FFT)的单位

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

特别:

  • 发信号,说时变电压v(t)
  • 把它扔进FFT(你得到一系列复数)
  • 现在取模数(abs)并将结果平方,即| fft(v)| ^ 2.

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

  • 使用采样分辨率,您可以遵循食谱配方并将频谱系数与频率相关联.
  • 在这一点上,你有一个频率g(w),频率在x轴上,但y轴上的物理单位是多少?

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

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

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

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

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

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

任何关于此的光线都将非常感激!

math physics fft measurement spectrum

59
推荐指数
3
解决办法
9万
查看次数

如何在C++中使用fft生成音频频谱?

我想生成一个mp3音频文件的音频频谱(如本视频所示).基本上这个问题需要计算音频信号的fft.如何在C/C++中编程?

我看过几个开源库,比如FFTW,我真的不知道如何使用这些来解决我的问题.任何帮助将不胜感激.提前致谢!

c++ audio fft spectrum

31
推荐指数
1
解决办法
3万
查看次数

生成一系列2D电影帧的频谱图

我有一些数据由一系列视频帧组成,这些视频帧表示相对于移动基线的亮度随时间的变化.在这些视频中,可能会出现两种"事件" - "局部"事件,其中包括小组聚集像素中的亮度变化,以及影响帧中大多数像素的污染"漫反射"事件:

在此输入图像描述

我希望能够从漫反射事件中隔离亮度的局部变化.我打算通过减去每帧的适当低通滤波版本来做到这一点.为了设计一个最佳滤波器,我想知道我的帧的哪些空间频率在漫射和局部事件期间被调制,即我想生成我的电影随时间变化的频谱图.

我可以找到很多关于生成一维数据(例如音频)光谱图的信息,但是我没有太多关于生成二维数据的光谱图.到目前为止我所尝试的是从帧的傅立叶变换生成2D功率谱,然后对DC分量执行极坐标变换,然后跨角度平均以获得1D功率谱:

在此输入图像描述

然后我将它应用于我的电影中的每一帧,并生成随时间变化的光谱功率的光栅图:

在此输入图像描述

这看起来像是一种明智的做法吗?是否有更"标准"的方法对2D数据进行光谱分析?

这是我的代码:

import numpy as np
# from pyfftw.interfaces.scipy_fftpack import fft2, fftshift, fftfreq
from scipy.fftpack import fft2, fftshift, fftfreq
from matplotlib import pyplot as pp
from matplotlib.colors import LogNorm
from scipy.signal import windows
from scipy.ndimage.interpolation import map_coordinates

def compute_2d_psd(img, doplot=True, winfun=windows.hamming, winfunargs={}):

    nr, nc = img.shape
    win = make2DWindow((nr, nc), winfun, **winfunargs)

    f2 = fftshift(fft2(img*win))
    psd = np.abs(f2*f2)
    pol_psd = polar_transform(psd, centre=(nr//2, nc//2))

    mpow = np.nanmean(pol_psd, 0)
    stdpow = np.nanstd(pol_psd, 0)

    freq_r = fftshift(fftfreq(nr)) …
Run Code Online (Sandbox Code Playgroud)

numpy fft image-processing scipy spectrum

24
推荐指数
1
解决办法
1314
查看次数

Spectrogram C++库

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

有什么建议?谢谢.

c++ fft scientific-computing spectrum spectrogram

23
推荐指数
2
解决办法
1万
查看次数

iOS - 平滑变色过渡/动画

我希望有一个平滑的颜色过渡,遍及整个光谱(即红色,蓝色,绿色,黄色,橙色等)

还希望能够在特定光谱(即所有红色)中平滑过渡颜色.

是否有任何简单的算法/递归函数/公式可以帮助简化此过程?

colors transitions spectrum ios

21
推荐指数
2
解决办法
2万
查看次数

为什么在构建音频信号的功率谱时需要对窗口函数应用窗口函数?

我已经多次找到了以下获取音频信号功率谱的指南:

  • 收集N个样本,其中N是2的幂
  • 对样本应用合适的窗函数,例如汉宁
  • 将窗口样本传递给FFT例程 - 理想情况下,您需要一个实际到复数的FFT,但如果您只有一个是复杂到复杂的FFT,则为所有虚拟输入部分传递0
  • 计算FFT输出箱的平方幅度(re*re + im*im)
  • (可选)计算每个幅度平方输出仓的10*log10,得到以dB为单位的幅度值
  • 现在你已经拥有了你的功率谱,你只需要确定峰值,如果你有一个合理的信噪比,这应该非常简单.注意,频率分辨率随着N的增大而提高.对于上述44.1kHz采样率和N = 32768的示例,每个箱的频率分辨率为44100/32768 = 1.35Hz.

但是......为什么我需要对样本应用窗口函数?这到底意味着什么?

功率谱怎么样,它是采样率范围内每个频率的功率?(例如:windows media player声音可视化器?)

audio signal-processing fft spectrum window-functions

20
推荐指数
4
解决办法
2万
查看次数

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

我正在寻找一个可以接受一大块音频数据并在给定频段内返回平均幅度的库.

我已经在comp.dsp上问了这个问题,但我很清楚,使用基本的FFT库获取自己构建这个问题的技术诀窍将需要比现在更多的时间和精力.以下是我的原始问题以及更多详情:http://groups.google.com/group/comp.dsp/browse_thread/thread/e04f78d439e9e2bd

我发现了许多用于播放声音的漂亮库(过去我使用过JSyn),但似乎没有设置它们来返回有关声音样本的快速和脏的光谱信息.

任何指针都将非常感激.

java audio fft clojure spectrum

18
推荐指数
1
解决办法
2万
查看次数

将RGB三元组列表排序为频谱

我有一个RGB三元组列表,我想以这样的方式绘制它们,使它们形成像光谱一样的东西.

我把它们转换成了人们似乎推荐的HSV.

from PIL import Image, ImageDraw
import colorsys

def make_rainbow_rgb(colors, width, height):
    """colors is an array of RGB tuples, with values between 0 and 255"""

    img = Image.new("RGBA", (width, height))
    canvas = ImageDraw.Draw(img)

    def hsl(x):
        to_float = lambda x : x / 255.0
        (r, g, b) = map(to_float, x)
        h, s, l = colorsys.rgb_to_hsv(r,g,b)
        h = h if 0 < h else 1 # 0 -> 1
        return h, s, l

    rainbow = sorted(colors, key=hsl)

    dx = width / …
Run Code Online (Sandbox Code Playgroud)

python hsv spectrum color-space python-imaging-library

16
推荐指数
2
解决办法
6437
查看次数

创建youtube流HTML5的音频频谱

HTML5中的createMediaElementSource(绘制YouTube视频的可视化).那可能吗?

你能告诉我一个例子吗?我只是想添加一个传统的youtube播放器,在它下面的频谱/可视化,我在互联网上找到了一个mp3版本.

这是它的音频/ mp3版本,我不知道这是否适用于youtube视频流.

<style type="text/css">
div#mp3_player{ width:500px; height:60px; background:#000; padding:5px; margin:50px auto; }
div#mp3_player > div > audio{  width:500px; background:#000; float:left;  }
div#mp3_player > canvas{ width:500px; height:30px; background:#002D3C; float:left; }
</style>
<script>
// Create a new instance of an audio object and adjust some of its properties
var audio = new Audio();
audio.src = '613814.mp3';
audio.controls = true;
audio.loop = true;
audio.autoplay = false;
// Establish all variables that your Analyser will use
var canvas, ctx, source, context, analyser, …
Run Code Online (Sandbox Code Playgroud)

javascript youtube audio html5 spectrum

14
推荐指数
1
解决办法
1864
查看次数