标签: spectrum

创建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
查看次数

iOS FFT绘制光谱

我读过这些问题:

使用Apple FFT和加速框架

使用Accelerate框架进行FFT时如何设置缓冲区?

iOS FFT Accerelate.framework在播放期间绘制频谱

它们都描述了如何使用加速框架设置fft.在他们的帮助下,我能够设置fft并获得一个基本的频谱分析仪.现在,我正在显示我从fft获得的所有值.但是,我只想显示10-15或一个可变数量的条形图来确定某些频率.就像iTunes或WinAmp Level Meter一样.1.我是否需要从一系列频率中平均幅度值?或者他们只是向您展示特定频率条的幅度?2.此外,我是否需要将我的幅度值转换为db?3.如何将数据映射到特定范围.我是否映射了我的声音bitdepth的最大db范围?获取bin的最大值将导致跳转最大映射值.

我的RenderCallback:

static OSStatus PlaybackCallback(void *inRefCon,
                                 AudioUnitRenderActionFlags *ioActionFlags,
                                 const AudioTimeStamp *inTimeStamp,
                                 UInt32 inBusNumber,
                                 UInt32 inNumberFrames,
                                 AudioBufferList *ioData)
{
    UInt32 maxSamples = kAudioBufferNumFrames;

    UInt32 log2n = log2f(maxSamples); //bins
    UInt32 n = 1 << log2n;

    UInt32 stride = 1;
    UInt32 nOver2 = n/2;

    COMPLEX_SPLIT   A;
    float          *originalReal, *obtainedReal, *frequencyArray, *window, *in_real;

    in_real = (float *) malloc(maxSamples * sizeof(float));

    A.realp = (float *) malloc(nOver2 * sizeof(float));
    A.imagp = (float *) malloc(nOver2 * sizeof(float));
    memset(A.imagp, …
Run Code Online (Sandbox Code Playgroud)

fft core-audio spectrum ios vdsp

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

使用 linux 命令行从 WAV/RIFF 获取频谱

如何生成包含 wav/riff 声音文件频率频谱的文件?我想使用 linux 命令行。

我知道很酷的 sox 函数来生成 png 频谱图

sox sound.wav -n spectrogram
Run Code Online (Sandbox Code Playgroud)

但我不需要频率频谱的视觉表示。我只想在数据文件中获取频谱,以便我可以处理它们。我相信必须有使用 sox 的选项。Sox 需要在绘制数据之前生成该数据。如何得到这个?

不确定,也许第二个解决方案是将 wav 文件导出到 dat 文件中。来自 dat 文件的每个样本都是膜在某一时刻的位置的度量。所以这不是频谱。

sox sound.wav file.dat
Run Code Online (Sandbox Code Playgroud)

如何将这些膜位置转换为我需要的光谱?

谢谢。

linux audio spectrum sox spectrogram

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

通过频谱分析进行MP3比特率检测

是否有任何程序可以检测到MP3的比特率?我不是在谈论文件编码的有效比特率,而是只能通过频谱分析计算的实际比特率.

例如,如果我有一个128 kbps的MP3编码,其大小为1 MB,然后我将这个MP3转码为320 kpbs,其大小为3 MB,我将拥有相同的相同音轨,但具有不同的大小.

如果我有一个320 kbps的MP3并且我将其转码为128 kbps,我将失去一些质量,因此会丢失一些文件大小.

但是,我仍无法验证320 kbps是我的MP3的"真实"比特率.

详情请参阅本文:http: //www.fileden.com/files/2009/2/14/2321055/My%20Documents/MP3%20Bit%20Rate%20Quality%20Detection%20through%20Frequency.pdf

mp3 analysis detection bitrate spectrum

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

在Libgdx库中使用getSpectrum()

我知道你要做的第一件事是"在文档中寻找它",问题是文档不清楚它.

我使用该库来获取FFT,我从这个简短的指南开始:http: //www.digiphd.com/android-java-reconstruction-fast-fourier-transform-real-signal-libgdx-fft/

问题是它使用:

   fft.forward(array);
   fft_cpx=fft.getSpectrum();
   tmpi = fft.getImaginaryPart();
   tmpr = fft.getRealPart();
Run Code Online (Sandbox Code Playgroud)

"fft_cpx","tmpi","tmpr"都是浮点矢量.虽然"tmpi"和"tmpr"用于计算幅度,但"fft_cpx"不再使用.

我认为getSpectrum()是getReal和getImmaginary的联合,但值都是不同的.也许getSpectrum是复杂的价值观,但它们的代表性是什么?

我尝试没有这个行代码fft_cpx=fft.getSpectrum();,它似乎工作正常,但我想知道是否有必要和getSpectrum()和getReal()或getImmaginary()之间的区别.

这是文档:http: //libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html

public float [] getSpectrum()

返回:最后一个FourierTransform.forward()调用的频谱.

public float [] getRealPart()

返回:最后一个FourierTransform.forward()调用的实部.

public float [] getImaginaryPart()

返回:最后一个FourierTransform.forward()调用的虚部.

谢谢!

java android fft spectrum libgdx

10
推荐指数
1
解决办法
990
查看次数

如何从实时音频开发频谱分析仪?

我正在开发一个应用程序,实时从麦克风获取源音频,没有文件存储.基本上,我使用:

mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile("/dev/null");
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何从这个实时音频中创建频谱图形,没有文件.可以办到?

我读到的所有帖子都在分析缓冲文件.

谢谢你,对不起我的英语.

audio android spectrum

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

如何重新取样/重新组合频谱?

在Matlab中,我经常使用Welch的方法(pwelch)来计算功率谱,然后我将其显示在对数 - 对数图上.估计的频率pwelch是等间隔的,但对数间隔的点更适合于对数 - 对数图.特别是,当将绘图保存为PDF文件时,由于高频率点过多,这会导致文件太大.

从线性间隔频率到对数间隔频率重新采样(重新绑定)频谱的有效方案是什么?或者,有什么方法可以在PDF文件中包含高分辨率光谱而不会产生过大的文件大小?

显而易见的事情就是简单地使用interp1:

  rate = 16384; %# sample rate (samples/sec)  
  nfft = 16384; %# number of points in the fft

  [Pxx, f] =  pwelch(detrend(data), hanning(nfft), nfft/2, nfft, rate);

  f2 = logspace(log10(f(2)), log10(f(end)), 300);
  Pxx2 = interp1(f, Pxx, f2);

  loglog(f2, sqrt(Pxx2)); 
Run Code Online (Sandbox Code Playgroud)

然而,这是不希望的,因为它不能节省光谱中的功率.例如,如果两个新频率仓之间存在较大的谱线,则将简单地从得到的对数采样谱中排除.

为了解决这个问题,我们可以插入功率谱的积分:

  df = f(2) - f(1);
  intPxx = cumsum(Pxx) * df;                     % integrate
  intPxx2 = interp1(f, intPxx, f2);              % interpolate
  Pxx2 = diff([0 intPxx2]) ./ diff([0 …
Run Code Online (Sandbox Code Playgroud)

pdf math matlab fft spectrum

8
推荐指数
1
解决办法
4510
查看次数

可见光谱与gnuplot

所以我有这种数据

3.500E2 -0.956862
...
10.00E2 -1.95941
Run Code Online (Sandbox Code Playgroud)

在一个文件中.

如果我绘制它看起来像这样:

带线的gnuplot图

现在我希望曲线下方的区域充满可见光谱,如下所示:

填充曲线与可见光谱

我已经找到了这个论坛帖子,它为我绘制了一个很好的可见光谱,但我无法进一步添加自己的曲线,因为这似乎是一个pm3d情节.

我能做什么?

plot gnuplot visible spectrum

8
推荐指数
1
解决办法
1726
查看次数

将FFT频谱幅度归一化为0dB

我正在使用FFT从音频文件中提取每个频率分量的幅度.实际上,Audacity中已经有一个名为Plot Spectrum的函数可以帮助解决问题.以3kHz正弦和6kHz正弦组成的音频文件为例,频谱结果如下图所示.你可以看到峰值在3KHz和6kHz,没有额外的频率.

在此输入图像描述

现在我需要实现相同的功能并在Python中绘制类似的结果.我在帮助下接近Audacity结果,rfft但在得到这个结果后仍然有问题需要解决.

在此输入图像描述

  1. 第二张图中振幅的物理意义是什么?
  2. 如何将幅度标准化为0dB,就像Audacity中的那样?
  3. 为什么6kHz以上的频率具有如此高的幅度(≥90)?我可以将这些频率调整到相对较低的水平吗?

相关代码:

import numpy as np
from pylab import plot, show
from scipy.io import wavfile

sample_rate, x = wavfile.read('sine3k6k.wav')
fs = 44100.0

rfft = np.abs(np.fft.rfft(x))
p = 20*np.log10(rfft)
f = np.linspace(0, fs/2, len(p))

plot(f, p)
show()
Run Code Online (Sandbox Code Playgroud)

更新

我将Hanning窗口与整个长度信号相乘(这是正确的吗?)并得到它.裙子的大部分幅度都低于40.

在此输入图像描述

并按照@Mateen Ulhaq的说法将y轴缩放为分贝.结果更接近Audacity one.我可以将低于-90dB的幅度处理得如此之低以至于可以忽略吗?

更新的代码:

fs, x = wavfile.read('input/sine3k6k.wav')
x = x * np.hanning(len(x))

rfft = np.abs(np.fft.rfft(x))
rfft_max = max(rfft)
p = 20*np.log10(rfft/rfft_max)
f = np.linspace(0, fs/2, len(p))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


关于赏金

通过上面更新中的代码,我可以用分贝测量频率分量.最高可能值为0dB.但该方法仅适用于特定的音频文件,因为它使用rfft_max此音频.我想像Audacity那样在一个标准规则中测量多个音频文件的频率成分. …

python fft frequency audacity spectrum

8
推荐指数
1
解决办法
1256
查看次数

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

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

algorithm audio spectrum

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