2011-08-09 44 views

回答

9

這是一個挑戰,它是音樂技術研究的一個活躍領域。

在某種程度上這是可能的,但這當然不容易。由於許多重要信息在壓縮中丟失,使用mp3會尤其困難。

你要做的是被稱爲音源分離或聲源分離。它追求將錄音分離成其組成部分。這些元素可以是演講(幾個人同時在說話 - 「雞尾酒會問題」)或樂器(在一個錄音中,一個樂器與另一個樂器分開)。

您可以採用多種方法,其中一些方法基於聲音的頻域特徵,其他方法基於空間屬性。

如果您嘗試分離低音鼓和長笛(即您的FFT的低頻段將是低音鼓和分配給長笛的高頻段),則頻域方法可能顯得非常簡單實際上,聲音很少整齊地分隔成有用的頻率區域。例如,低音鼓將具有正弦頻譜上的諧波含量。因此這些類型的解決方案在數學上非常複雜並且通常涉及統計建模。沉重的東西。

基於聲音空間屬性的分離通常依賴於某些先前已知的每個源在錄製之前的位置(這是「非盲」)。通常需要有多個麥克風(至少立體聲錄音)。使用一些聰明的數學方法,可以根據每個麥克風上的信號關係,根據對空間來源的瞭解來分離源。這也是一種稱爲波束形成的技術的基礎,通過這種技術,可以使用一組麥克風來確定源的位置。

所以,回到正軌。人們正在努力去做,但它很複雜,使用mp3會讓你的生活變得困難!

我怕我真的不知道夠更好地解釋方法,但我能找到一些參考,讓你開始:

http://www.cs.tut.fi/~tuomasv/demopage.html

http://www.cs.northwestern.edu/~pardo/courses/eecs352/lectures/source%20separation.pdf(PDF警告!)

祝你好運!

+0

進一步的鏈接:http://itakura.kes.tul.cz/zbynek/tddeconv.htm < - 這傢伙把一些matlab代碼放在一起 – Speedy

3

對於聲樂和低音,您可以使用它們通常位於立體聲混音中心的事實,這意味着它在左右聲道中將具有完全相同的波形。如果你從另一個通道中減去一個通道,你將會得到一個通常沒有聲音和低音的新通道。

喜歡的東西:

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(差)。

也許這會朝着你所追求的效果邁出一小步?