Audio 给定MP3,是否可以使用快速傅立叶变换(FFT)分解不同的仪器?

Audio 给定MP3,是否可以使用快速傅立叶变换(FFT)分解不同的仪器?,audio,signal-processing,fft,Audio,Signal Processing,Fft,我正在开发一个音乐可视化工具,我想为每种乐器显示不同的视觉元素。例如,代表人声的蓝条,代表吉他的红条,代表鼓的黄条等等 有没有办法分析FFT的结果来获得这些信息 谢谢。这是一个挑战,也是音乐技术研究的一个活跃领域 在某种程度上,这是可能的,但肯定不容易。使用mp3尤其困难,因为许多重要信息在压缩过程中丢失 你要做的就是音源分离,或者音源分离。它追求将音频记录分离为其组成元素 这些元素可以是语音(几个人同时说话——鸡尾酒会问题)或乐器(在录音“盲分离”中将一种乐器与另一种乐器分开) 你可以采取多种

我正在开发一个音乐可视化工具,我想为每种乐器显示不同的视觉元素。例如,代表人声的蓝条,代表吉他的红条,代表鼓的黄条等等

有没有办法分析FFT的结果来获得这些信息


谢谢。

这是一个挑战,也是音乐技术研究的一个活跃领域

在某种程度上,这是可能的,但肯定不容易。使用mp3尤其困难,因为许多重要信息在压缩过程中丢失

你要做的就是音源分离,或者音源分离。它追求将音频记录分离为其组成元素

这些元素可以是语音(几个人同时说话——鸡尾酒会问题)或乐器(在录音“盲分离”中将一种乐器与另一种乐器分开)

你可以采取多种方法,其中一些是基于声音的频域特性,另一些是基于空间特性

如果您试图分离低音鼓和长笛(即FFT的低频单元是低音鼓,高频单元是分配给长笛的),频域方法可能看起来相当简单,但实际上声音很少整齐地分离到有用的频率区域。例如,低音鼓的谐波含量会一直上升到频谱。因此,这些类型的解决方案在数学上非常复杂,通常涉及统计建模。沉重的东西

基于声音空间特性的分离通常依赖于记录前每个声源所在位置的一些先验知识(这是“非盲”)。通常需要有多个麦克风(至少是立体声录音)。使用一些聪明的数学,可以根据每个麦克风上信号的关系,根据信号源在空间中的位置的知识来分离信号源。这也是一种称为波束形成的技术的基础,通过该技术,可以使用麦克风阵列确定源的位置

所以,回到正轨。人们都在尝试,但这很复杂,使用mp3会让你的生活变得困难

恐怕我真的不知道如何更好地解释这些方法,但我可以找到一些参考资料来帮助您开始:

(pdf警告!)


祝你好运

对于人声和低音,你可以利用它们通常位于立体声混音的中心这一事实,这意味着它在左右声道中的波形完全相同。如果你从另一个通道中减去一个通道,你将得到一个新的通道,通常没有人声和低音

比如:

sound = LoadMP3(...)
length = sound.SampleCount
left = sound.Channels[LEFT]
right = sound.Channels[RIGHT]
for i = 0:length
    difference[i] = left[i] - right[i]
现在,您可以看到显示FFT(左)、FFT(右)和FFT(差)的巧妙方法

也许这会朝着你想要的效果迈出一小步?

另一个链接: