2013-01-20 4 views
2

1) F = fft(x)S = spectrogram(x)을 사용하여 얻은 FFT 및 STFT 계수가 있다고 가정합니다. 이 계수는 오디오 기능으로 어떻게 사용될 수 있습니까? (여기서 오디오 기능은 패턴 인식과 같이 사용됩니다.)FFT, PSD 및 STFT를 사용한 오디오 피쳐 추출 및 가장 강력한 주파수 찾기

2) 다음 코드는 신호에서 PSD와 가장 강력한 주파수 (kHz)를 제공합니까? (2) 정상이면

Hs = spectrogram.periodogram; 
p = psd(Hs, x, 'Fs', 22050); 
[C, I] = max(p.data); 
max_f = p.Frequencies(I); 

3), 내가 어떻게 PSD를 이용하여 신호에서 가장 강력한 n 주파수를 찾을 수 있습니까?

4) PSD와 유사한 FFT 및/또는 STFT를 사용하여 가장 강력한 주파수를 어떻게 찾을 수 있습니까?

미리 감사드립니다.

+0

참조 : http://stackoverflow.com/questions/27546476/what-fft-descriptors-should-be-used-as-feature-to-implement-classification-or-cl/27546643#27546643 – DrKoch

답변

2

1) S = spectrogram(x)은 신호 x를 여러 부분으로 세분화하고 각 부분에 대한 PSD를 계산하여 시간의 함수로 FFT를 제공합니다. fft(X)은 한 번에 전체 신호에 대한 fft를 제공합니다. 전자는 주파수 내용의 변화를 추적 할 가능성이 높지만 후자는 전체 주파수 내용을 보는 것이 더 유용합니다. 필자는 오디오 프로세싱에 너무 익숙하지 않지만 두 신호가 동일한 파워 스펙트럼을 가지고 있어도 FFT의 복잡한 위상에서 사소한 변화가 발생하면 시간 영역에서 극적으로 다른 신호가 발생할 수 있습니다.

2) 구문은 내가 Matlab에서 익숙했던 것과 약간 다르게 보이지만 대답은 '예'입니다. 빈도의 단위는 사용한 정확한 구문에 따라 다릅니다.

exmaple 용 3) 상기 N 개의 가장 강한 주파수 빈들을 얻을 sort 함수를 사용할 수있다 .. [B,IX] = sort(p.data)freq_maxn = p.Frequencies(IX(1:n))

4) PSD = | FFT |^2/N. 즉, PSD는 단순히 FFT의 제곱 크기의 스케일 된 버전입니다. 그러나 실수 값 신호의 경우 나머지 절반이 단순히 복소 공액이므로 FFT의 절반 만 사용됩니다. 이 시퀀스를 얻으면 최대 주파수와 첫 번째 n 주파수의 계산은 (2)와 (3)과 동일하게 유지됩니다. 자세한 내용은 [periodogram] (http://www.mathworks.com/help/signal/ref/periodogram.html)을 참조하십시오.

+0

1) 이러한 변형이 오디오 기능으로 어떻게 사용되는지 알고 싶었지만 개념을 명확하게 설명하는 것이 좋습니다. 2) p.Frequencies에 오디오 파일의 정확한 주파수 범위가 포함되어 있는지 또는 스케일링이 필요한지 확실하지 않습니다. 4) FFT는 길이가 시간 영역 신호의 길이와 같은 배열을 제공합니다. 그래서 이것은 분명히 주파수 범위에서 아닙니다. 따라서 플롯 할 때 축을 정의하고 축척 할 수 있습니다. 그러나 그 값을 읽을 때, 다른 것 (리샘플링?)이 필요합니다. 방법 고마워. – groove

2

'오디오 기능'이 의미하는 바를 정의해야한다고 생각합니다. 성취하고자하는 것에 따라 다양한 유형의 기능이 있습니다 (예 : these papers에 소개 된 기능 중 일부 참조).

'가장 강력한 주파수'에 대해 이야기 할 때 나는 어떤 형태의 피치 감지를 원한다고 가정합니다. 그렇다면 PSD의 최고점이 실제로 가장 지배적 인 주파수를 제공 할 것이지만, 이는 반드시 당신이 듣는 피치는 아닙니다. 예를 들어 악기는 200, 400, 600, 800 등에서 스펙트럼 피크를 갖는 200Hz에서 음을 연주 할 수 있으며 200Hz가 최고 진폭 일 필요는 없습니다. 실제로 200Hz 성분을 제거하기 위해 저역 통과 필터를 적용 할 수 있습니다.이 음정을 피치로 인식 할 수 있습니다 (전화로 음악을 듣는 경우이 효과가 들리니 Virtual Pitch이라고합니다).

피치를 감지하려면 Pitch Estimation 알고리즘을 읽는 것이 좋습니다.

EDIT : 오디오 분류에 대한 연구가 많은 논문이 있으므로, Eric Scheirer, George Tzanetakis 및 Martin McKinney가 작업 한 내용은 search입니다.또한이 분야의 핵심 인물이 많기 때문에 MIR mailing list에 가입 할 예정이며 아카이브에는 유용한 자료가 많이 있습니다. '가장 강력한 빈도'에 대한 귀하의 질문에 관해서는, 당신이 의미하는 바를 잘 이해하지 못합니다. 하나 이상의 악기가 연주되는 음악을들을 때 일반적으로 지배적 인 주파수는 없습니다. 종종 믹스 덕분에 눈에 띄는 멜로디가 있지만, 그게 무슨 뜻인지는 확실하지 않습니다.

+0

나는 노래 분류를하고 싶다. 아티스트 예측, 장르 분류, 감정 탐지, 어쩌면 핑거 프린팅 등. 기능이란 MFCC와 같은 값으로 구성된 특징 벡터를 의미합니다. 피치 감지 부분에서 "가장 강력한 주파수"는 항상 우리가 듣는 피치가 아니라는 것을 알고 있습니다. 하지만 가장 강력한 주파수는 항상 기본 주파수 (예를 들어 200Hz)입니까? 그래서 우리는 무엇이 가장 강력한 것, 근본적인 것, 또는 조화를 듣고 있는가? 방법 고마워. – groove