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) 我读过这些问题:
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) 如何生成包含 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)
如何将这些膜位置转换为我需要的光谱?
谢谢。
是否有任何程序可以检测到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
我知道你要做的第一件事是"在文档中寻找它",问题是文档不清楚它.
我使用该库来获取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()调用的虚部.
谢谢!
我正在开发一个应用程序,实时从麦克风获取源音频,没有文件存储.基本上,我使用:
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)
我的问题是,如何从这个实时音频中创建频谱图形,没有文件.可以办到?
我读到的所有帖子都在分析缓冲文件.
谢谢你,对不起我的英语.
在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) 所以我有这种数据
3.500E2 -0.956862
...
10.00E2 -1.95941
Run Code Online (Sandbox Code Playgroud)
在一个文件中.
如果我绘制它看起来像这样:

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

我已经找到了这个论坛帖子,它为我绘制了一个很好的可见光谱,但我无法进一步添加自己的曲线,因为这似乎是一个pm3d情节.
我能做什么?
我正在使用FFT从音频文件中提取每个频率分量的幅度.实际上,Audacity中已经有一个名为Plot Spectrum的函数可以帮助解决问题.以3kHz正弦和6kHz正弦组成的音频文件为例,频谱结果如下图所示.你可以看到峰值在3KHz和6kHz,没有额外的频率.
现在我需要实现相同的功能并在Python中绘制类似的结果.我在帮助下接近Audacity结果,rfft但在得到这个结果后仍然有问题需要解决.
相关代码:
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那样在一个标准规则中测量多个音频文件的频率成分. …
我正在构建一个基于节奏的游戏,并且在节奏检测方面面临很多问题.我收到了一首播放歌曲的当前频谱.它看起来像一个浮点数组,有512个浮点数.256表示左右声道表示.FFT也可用.但我不知道如何处理这些数据,我已经做了一些可视化的实验,但它给了我很少的信息.我已经搜索了一些现成的算法,但没有任何内容.请,有人可以帮我,也许,一些参考,材料,与节奏检测相关的文章,使用音频频谱.代码也非常有用.谢谢.
spectrum ×10
audio ×4
fft ×4
android ×2
algorithm ×1
analysis ×1
audacity ×1
bitrate ×1
core-audio ×1
detection ×1
frequency ×1
gnuplot ×1
html5 ×1
ios ×1
java ×1
javascript ×1
libgdx ×1
linux ×1
math ×1
matlab ×1
mp3 ×1
pdf ×1
plot ×1
python ×1
sox ×1
spectrogram ×1
vdsp ×1
visible ×1
youtube ×1