2011-08-09 2 views
2

저는 음악 시각화 작업을하고 있으며 각 악기마다 다른 시각적 요소를 표시하고 싶습니다. 예를 들어 보컬을 나타내는 파란색 막대, 기타를 나타내는 빨간색 막대, 드럼을 나타내는 노란색 막대 등이 있습니다.MP3를 사용하면 FFT (Fast Fourier Transform)를 사용하여 다른 악기를 분리 할 수 ​​있습니까?

FFT 결과를 분석하여이 정보를 얻을 수있는 방법이 있습니까?

감사합니다.

+0

이렇게하려면 쉽지 않습니다. – nibot

답변

9

이것은 음악 기술 분야에서 활발하게 연구되고있는 과제입니다.

어느 정도까지는 가능하지만 확실히 쉽지는 않습니다. 많은 중요한 정보가 압축에서 손실되기 때문에 mp3를 사용하는 것이 특히 어려울 것입니다.

당신이하려고하는 것을 오디오 소스 분리 또는 사운드 소스 분리라고합니다. 오디오 레코딩을 구성 요소로 분리합니다.

이러한 요소는 (여러 사람이 동시에 말하는 '칵테일 파티 문제') 또는 악기 (녹음 '맹검 demixing'에서 다른 하나의 악기를 분리) 악기 수 있습니다.

다양한 방법을 사용할 수 있습니다.이 중 일부는 사운드의 주파수 도메인 특성을 기반으로하고 다른 일부는 공간 속성을 기반으로합니다.

베이스 드럼과 플루트를 분리하려는 경우 (즉, FFT의 저주파 대가베이스 드럼이되고 고주파 대가 플루트에 할당 된 경우) 주파수 영역 접근법이 상당히 직관적으로 보일 수 있습니다. 현실적으로 사운드는 유용한 주파수 영역으로 깔끔하게 분리되지 않습니다. 예를 들어베이스 드럼은 고주파 스펙트럼을 통해 주파수 스펙트럼을 향상시킵니다. 따라서 이러한 유형의 솔루션은 매우 수학적으로 복잡하며 종종 통계 모델링과 관련됩니다. 무거운 물건.

소리의 공간 특성을 기반으로하는 분리는 녹음하기 전에 각 음원의 위치에 대한 사전 지식 (종종 '맹검 (non-blind)')에 의존합니다. 종종 하나 이상의 마이크 (스테레오 녹음)가 필요합니다. 영리한 수학을 사용하면 각 마이크에서 신호의 관계를 기반으로 소스가 공간에 있는지에 대한 지식을 기반으로 소스를 분리하는 방식으로 접근 할 수 있습니다. 이것은 빔 포밍 (beamforming)이라고하는 기법의 기반이기도합니다. 빔 포밍 (beamforming)이라는 기법을 사용하면 소스 배열의 위치를 ​​마이크 배열을 사용하여 결정할 수 있습니다.

그래서 다시 트랙에. 사람들은 그것을하려하지만, 복잡하고 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 (차이).

어쩌면 이것은 당신이 효과가 있다는 것을 향해 작은 걸음 걸릴 것입니까?

관련 문제