标签: spectrum

通过分析音频频谱进行节奏检测

我正在构建一个基于节奏的游戏,并且在节奏检测方面面临很多问题.我收到了一首播放歌曲的当前频谱.它看起来像一个浮点数组,有512个浮点数.256表示左右声道表示.FFT也可用.但我不知道如何处理这些数据,我已经做了一些可视化的实验,但它给了我很少的信息.我已经搜索了一些现成的算法,但没有任何内容.请,有人可以帮我,也许,一些参考,材料,与节奏检测相关的文章,使用音频频谱.代码也非常有用.谢谢.

algorithm audio spectrum

7
推荐指数
1
解决办法
6729
查看次数

音乐样本中的谐波计数

为了确定声音的丰富程度,我想确定音乐样本中的谐波数量.为此,我正在使用Processing with Minim库,它为我提供了一个带有FFT的全谱.我想知道如何计算FFT产生的频谱中的所有峰值,我甚至对基频不感兴趣.

audio processing signal-processing spectrum minim

6
推荐指数
1
解决办法
277
查看次数

scipy.signal.spectrogram与matplotlib.pyplot.specgram比较

以下代码使用scipy.signal.spectrogram或生成频谱图matplotlib.pyplot.specgram

specgram但是,该功能的色彩对比度相当低。有办法增加吗?

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

# Generate data
fs = 10e3
N = 5e4
amp = 4 * np.sqrt(2)
noise_power = 0.01 * fs / 2
time = np.arange(N) / float(fs)
mod = 800*np.cos(2*np.pi*0.2*time)
carrier = amp * np.sin(2*np.pi*time + mod)
noise = np.random.normal(scale=np.sqrt(noise_power), size=time.shape)
noise *= np.exp(-time/5)
x = carrier + noise
Run Code Online (Sandbox Code Playgroud)

使用matplotlib.pyplot.specgram将产生以下结果:

Pxx, freqs, bins, im = plt.specgram(x, NFFT=1028, Fs=fs)
x1, x2, …
Run Code Online (Sandbox Code Playgroud)

signal-processing matplotlib scipy spectrum spectrogram

6
推荐指数
1
解决办法
3465
查看次数

为什么 numpy fft 返回错误的相位信息?

我比较了 Matlab 和 numpy 中的相位和幅度谱。我认为 Matlab 工作正确,但 numpy 计算正确的幅度谱,但相位谱很奇怪。我必须如何更改python代码才能通过numpy正确计算fft?

MATLAB:

fs = 1e4;
dt = 1 / fs;
t = 0:dt:0.5;
F = 1e3;

y = cos(2*pi*F*t);
S = fftshift(fft(y) / length(y));
f_scale = linspace(-1, 1, length(y)) * (fs / 2);

a = abs(S);
phi = (angle(S));

subplot(2, 1, 1)
plot(f_scale, a)
title('amplitude')

subplot(2, 1, 2)
plot(f_scale, phi)
title('phase')
Run Code Online (Sandbox Code Playgroud)

Python:

import numpy as np
import matplotlib.pyplot as plt

fs = 1e4
dt = 1 / fs
t = np.arange(0, 0.5, …
Run Code Online (Sandbox Code Playgroud)

python matlab numpy spectrum phase

6
推荐指数
1
解决办法
1578
查看次数

从哪里开始学习音频处理?

我已经尝试过一段时间了解我可能会如何解决这个问题,也许我在搜索中使用了错误的术语,或者对我来说太过先进了.我基本上希望能够实时分析音频文件.我对音频处理几乎一无所知,所以我应该从小做起,然后继续努力.最终,我希望能够显示与实时播放音频相关的功率(或频率?)频谱.基本上就像WinAmp的眼图(术语?)

任何一个或两个API建议的在线教程都将不胜感激.我发现了一些模糊的解释(主要是计算FFT然后将它们转换成某种东西......)就像我说的那样,我对音频处理知之甚少,所以知道从哪里开始会很棒.

选择语言:C++

audio fft spectrum

5
推荐指数
1
解决办法
1164
查看次数

Android 的 FFT 输出(可视化工具)的频谱不好?

我有一些关于 FFT 的问题(实际上我相信这更多是关于 Visualizer.getFFT() 的 Android FFT 输出)。

我为 Android 创建了一个带有自己的库功能的音乐播放器,其中包括很多东西(如流派、动态播放列表和可视化)。目前,在渲染当前音频流的频谱时,我创建的可视化遇到了一些问题。

我已经阅读了以下问题(和答案)来了解 Android 的 FFT:

我应该从 getFft 看到什么样的输出?

Android 2.3 Visualizer - 无法理解 getFft()

现在我的问题是:我从 getFFTs 系数获得的频谱似乎有些“奇怪”。我注意到,在播放歌曲时,我渲染的频谱似乎显示出很多“噪音”,因此我尝试使用一些测试声音。其中之一是简单的 8khz 声音,它应该只在图表中产生一个峰值。不幸的是,结果如下所示:

http://img4.imageshack.us/img4/4181/spectrum8khz.png

底部出现的噪声在图表的整个宽度上闪烁。高条保持在原位,仅在幅度上轻微闪烁。

当我使用从 1kHz 缓慢移动到 20kHz 的测试声音时,它看起来如下(大约 2-3kHz):

http://img846.imageshack.us/img846/7373/spectrum3khz1khz20khz.png

峰从左向右移动,每个峰的移动速度都快一点,因此随着时间的推移,峰之间的距离会逐渐增大。不可见的是,一旦峰值离开右侧屏幕(但幅度较小),它们就会返回并从右向左移动。此外,所有峰都在略大于屏幕 0.5 的位置处连接到一个大峰。

这是我用来检索数据的代码:

for (int i = 1; i < n / 2; i++) {           
        byte rfk = mRawSpecData[2*i];
        byte ifk = mRawSpecData[2*i+1];
        float magnitude = (float)Math.sqrt(rfk * rfk + ifk * ifk);

        mFormattedSpecData[i-1] = magnitude / 128f;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我的 mRawSpecData …

android fft spectrum android-sdk-2.3

5
推荐指数
1
解决办法
6615
查看次数

webrtc 上的网络音频分析器用于远程流

我们正在创建一个使用 webRTC 的音频视频应用程序。问题是我们无法显示远程的流频谱,但我们能够显示本地的流频谱。

 // setup a analyzer
    var analyser = audioCtx.createAnalyser();
    analyser.smoothingTimeConstant = 0.0;
    analyser.fftSize = 1024;

  // get the average for the first channel
        var array =  new Uint8Array(analyser.frequencyBinCount);
        analyser.getByteFrequencyData(array);
        var average = getAverageVolume(array);
Run Code Online (Sandbox Code Playgroud)

对于本地流,我们获取数组内的频率值,但对于远程流,我们获取数组内的零值。

如果有任何帮助,将不胜感激。

stream spectrum webrtc

5
推荐指数
1
解决办法
850
查看次数

用Gnuplot绘制红外光谱

我有一个感兴趣的化合物的红外光谱,我想绘制,我有一个包含所有数据点的spectrum.dat文件.它的形式如下:

    # X  Y     
    300  100
    301  100
    302   99
    303   70
    ...
    3999  98
    4000 100
Run Code Online (Sandbox Code Playgroud)

我想用一个典型的红外光谱的x轴来绘制这个图,但我很难这样做.如果您不熟悉,这就是典型的红外光谱可能看起来的样子(除了图表本身的标签).请注意,x轴是相反的,并且它突然将其缩放加倍到2000单位(倒数厘米)以上.有没有办法强迫Gnuplot以这种方式绘制我的数据?到目前为止,我已设法提出以下脚本:

    # Make an SVG of size 800x500
    set terminal svg size 800,500 fname 'CMU Sans Serif' fsize '10'
    set output 'ir.svg'
    # Color definitions
    set border linewidth 1.5
    set style line 1 lc rgb '#a0a0a0' lt 1 lw 2 pt 7 # gray
    # Format graph
    unset key
    set xlabel 'Wavenumbers'
    set ylabel 'Transmittance'
    set xrange [4000:300]
    # …
Run Code Online (Sandbox Code Playgroud)

plot gnuplot chemistry spectrum infrared

5
推荐指数
2
解决办法
2586
查看次数

绘制Siri的WaveForm效果

我一直试图了解如何在iOS中绘制Siri的波形效果并遇到了这个伟大的存储库.最终结果如下:

在此输入图像描述

但是我很难理解生成wave的代码发生了什么.我可以生成一个静态正弦波,但是,我似乎并不理解.

特别是当我们计算y的值时,为什么它必须是:

let y = scaling * maxAmplitude * normedAmplitude * sin(CGFloat(2 * M_PI) * self.frequency * (x / self.bounds.width) + self.phase) + self.bounds.height/2.0

源代码:

 //MARK : Properties 


let density : CGFloat =        1
let frequency : CGFloat =      1.5
var phase :CGFloat =           0
var phaseShift:CGFloat =      -0.15
var numberOfWaves:Int =        6
var primaryLineWidth:CGFloat = 1.5
var idleAmplitude:CGFloat =    0.01
var waveColor:UIColor =        UIColor.white
var amplitude:CGFloat =        1.0 {
    didSet {
        amplitude = max(amplitude, self.idleAmplitude)
        self.setNeedsDisplay() …
Run Code Online (Sandbox Code Playgroud)

graphics core spectrum ios swift

5
推荐指数
1
解决办法
2020
查看次数

如何阅读IRAF多谱图光谱?

我在Iraf生成的拟合文件中有一个光谱.波长轴在标题中编码为:

WAT0_001= 'system=multispec'
WAT1_001= 'wtype=multispec label=Wavelength units=angstroms'
WAT2_001= 'wtype=multispec spec1 = "1 1 2 1. 2.1919422441886 4200 0. 452.53 471'
WAT3_001= 'wtype=linear'
WAT2_002= '.60 1. 0. 3 3 1. 4200.00000000001 1313.88904209266 1365.65012876239 '
WAT2_003= '1422.67911152069 1479.0560707956 1535.24082980747 1584.94609332243'
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法将其加载到python中?

python spectrum astropy

4
推荐指数
1
解决办法
971
查看次数