使用这个网站,我试图制作节拍检测引擎.http://www.gamedev.net/reference/articles/article1952.asp
{
ALfloat energy = 0;
ALfloat aEnergy = 0;
ALint beats = 0;
bool init = false;
ALfloat Ei[42];
ALfloat V = 0;
ALfloat C = 0;
ALshort *hold;
hold = new ALshort[[myDat length]/2];
[myDat getBytes:hold length:[myDat length]];
ALuint uiNumSamples;
uiNumSamples = [myDat length]/4;
if(alDatal == NULL)
alDatal = (ALshort *) malloc(uiNumSamples*2);
if(alDatar == NULL)
alDatar = (ALshort *) malloc(uiNumSamples*2);
for (int i = 0; i < uiNumSamples; i++)
{
alDatal[i] = hold[i*2];
alDatar[i] = hold[i*2+1];
}
energy …Run Code Online (Sandbox Code Playgroud) 我正在研究GPU合成音频的可行性,其中每个线程呈现一个样本.这对可以使用的算法提出了一些有趣的限制 - 任何引用前一组样本的算法都不能以这种方式实现.
过滤是这些算法之一.带通,低通或高通 - 所有这些都需要查看生成的最后几个样本以计算结果.这是不可能的,因为尚未生成那些样本.
这使得合成带限波形变得困难.一种方法是使用傅里叶级数对部分进行加法合成.但是,这在O(n)时间运行,并且在GPU上特别慢,以至于并行性增益丢失.如果有一个算法在O(1)时间运行,这将消除分支,并且在处理可听范围时可以快达1000倍.
我特意为锯齿寻找像DSF这样的东西.我一直在尝试手工制作傅里叶系列的简化,但这确实很难.主要是因为它涉及谐波数,AKA是Riemann-Zeta函数的唯一奇点.
是否可以实现恒定时间算法?如果没有,可以证明它不是吗?
algorithm parallel-processing gpgpu signal-processing audio-processing
有谁知道在Android上进行音频处理的库?我需要提取音调和语音功率(强度)。
如何OfflineAudioContext.startRendering()输出AudioBuffer包含我选择的位深度(16 位或 24 位)的 ?我知道我可以使用 轻松设置输出的采样率AudioContext.sampleRate,但如何设置位深度?
我对音频处理的理解非常有限,所以也许它并不像我想象的那么容易。
编辑#1:
实际上,AudioContext.sampleRate它是只读的,所以如果您知道如何设置输出的采样率,那就太好了。
编辑#2:
我猜采样率是在编码的 WAV 中的通道数之后插入的(在DataView)
我希望将音频文件(.wav格式)的速度更改为少量(±25%)。问题是我需要保留文件的先前采样率。两种解决方案都涉及速度和螺距的变化,以及仅速度变化(速度变化)的方法都可以使用,因为理想情况下,我想将两者分开进行。
出于项目目的,我正在录制舞台附近不同区域的音频剪辑(波形文件)。我需要检查源音频,即;使用从附近地点录制的音频,来自舞台的音频在舞台附近的位置具有很高的可听性。
更清楚的是,我在舞台附近的地方有麦克风,我有舞台和附近这些地方的音频剪辑。我如何检查来自舞台的声音是否被接收到附近的位置,或者我如何理解来自舞台的声音正在对附近的地方造成干扰。
目前,我正在尝试在 Python 中加载 280,000 个 MP3 音频文件,其中文件的平均持续时间约为 5 秒。我将Librosa用于此目的以及后续阶段的进一步处理(例如计算频谱图)。
但是,我意识到加载文件非常慢,因为加载、解压缩和重新采样每个文件平均需要 370 毫秒。如果我关闭重新采样(即librosa.load(..., sr=None)),大约需要 200 毫秒,但考虑到我拥有的大量文件,这仍然不是很好。不出所料,无需重新采样即可加载 wav 文件非常快(< 1 ms);但是如果我们执行重新采样,大约需要 160 毫秒。
现在我想知道是否有任何更快的方法来做到这一点,无论是直接在 Python 中还是在 Linux 中使用外部工具,条件是我以后可以将结果加载回 Python。
顺便说一下,我尝试使用multiprocessing大小为 4 的池并实现了 2-3 倍的加速,但我正在寻找更多(最好 > 10 倍)。
注:原始文件为人声,采样率为48KHz,码率为64Kbps;我想将它们下采样到 16KHz。
首先,我在Stack Exchange中问了这个问题,但我仅获得与概念相关的答案,而没有面向实现的答案。所以,我的问题是我试图创建高通滤波器,并使用Python实现。
from numpy import cos, sin, pi, absolute, arange
from scipy.signal import kaiserord, lfilter, firwin, freqz, firwin2
from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show
# Nyquist rate.
nyq_rate = 48000 / 2
# Width of the roll-off region.
width = 500 / nyq_rate
# Attenuation in the stop band.
ripple_db = 12.0
num_of_taps, beta = kaiserord(ripple_db, width)
# Cut-off frequency.
cutoff_hz = 5000.0
# Estimate the filter coefficients.
if num_of_taps % 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个Java声音可视化程序,但是我绝对不知道如何实时提取压缩后的音频中的字节。我可以将程序与wav文件同步,但这不是我想要的,我想用程序生成声音,然后播放,而不将其保存在任何地方。
谢谢您的帮助!
Mel滤波器组计算背后的逻辑是什么?有什么好的例子吗?我在互联网上找不到任何好的例子。